From ed19b23c9242378de1cc9e279029da5b9c073945 Mon Sep 17 00:00:00 2001 From: duck Date: Sat, 31 Jul 2010 15:24:13 +0000 Subject: [PATCH 001/650] Website revamp, work in progress. --- www.i2p2/pages/_layout.html | 49 +++- www.i2p2/pages/_menu.html | 347 ++++--------------------- www.i2p2/pages/index.html | 188 ++++++++------ www.i2p2/static/images/btn_left.png | Bin 0 -> 699 bytes www.i2p2/static/images/btn_right.png | Bin 0 -> 686 bytes www.i2p2/static/images/btn_stretch.png | Bin 0 -> 212 bytes www.i2p2/static/styles/960.css | 1 + www.i2p2/static/styles/default.css | 84 ++++++ www.i2p2/static/styles/mainmenu.css | 165 ++++++++++++ 9 files changed, 449 insertions(+), 385 deletions(-) create mode 100644 www.i2p2/static/images/btn_left.png create mode 100644 www.i2p2/static/images/btn_right.png create mode 100644 www.i2p2/static/images/btn_stretch.png create mode 100644 www.i2p2/static/styles/960.css create mode 100644 www.i2p2/static/styles/default.css create mode 100644 www.i2p2/static/styles/mainmenu.css diff --git a/www.i2p2/pages/_layout.html b/www.i2p2/pages/_layout.html index 0271a3af..b75ebf3f 100644 --- a/www.i2p2/pages/_layout.html +++ b/www.i2p2/pages/_layout.html @@ -1,27 +1,48 @@ -{% include "_urlify" %} +{% include "_urlify" -%} {% filter capture('title') %}{% block title %}{% endblock %}{% endfilter %} - I2P - - + + + + - - + + +
Skip navigation
- -

{{ title }}

- -
- {% block content %}{% endblock %} +
+ +
+
+ {% block content %}{% endblock %} +
diff --git a/www.i2p2/pages/_menu.html b/www.i2p2/pages/_menu.html index 6512639a..d0b066c1 100644 --- a/www.i2p2/pages/_menu.html +++ b/www.i2p2/pages/_menu.html @@ -1,293 +1,56 @@ -
-English -Deutsch -中文 -Français -
-Italiano -Nederlands -Русский -
+ -
Dark  -Light -
- -{% if lang == "de" %} -
Willkommen bei I2P
-
Download
-
News
- Ankündigungen
- - Entwicklertreffen
- Zeitplan
- Aufgabenliste
-
Über I2P
- FAQ
- Forum
- Prämien
- Beteilige dich
- Spende!
- - I2P Team
- Ruhmeshalle
-
Dokumentationen
- Wie funktioniert es?
- Tech-intro
- Howto Dokumente
- Anwendungen
-
Entwickeln
- API
- Lizenzen
- Trac - -

Syndie
-
Links
-
Mirror -
Mirror 2 -
Mirror 3 -
Secure Site -
Secure Mirror -
-
Impressum
- -{% elif lang == "it" %} -
Benvenuti su I2P! -
Download -
News
- Versioni
- - Incontraci
- Roadmap
- Cose-da-fare
-
Informazioni su I2P
- FAQ
- Forum
- Bounties
- Get Involved!
- Donazioni
- - Team I2P
- Hall of Fame
-
Documentazione
- Come funziona?
- Introduzione Tecnica
- Come funziona
- documenti

- Applicazioni
-
Sviluppo
- API
- Licenze
- Trac - -

Syndie
-
Links
-
Mirror 1 -
Mirror 2 -
Mirror 3 -
Secure Site -
Secure Mirror -
-
Impressum
- -{% elif lang == "nl" %} -
Welkom bij I2P
-
Download
-
Nieuws
- Aankondigingen
- Vergaderingen
- Routekaart
- Taken lijst
-
Over I2P
- FAQ
- Forum
- Premies
- Werk mee
- Doneer!
- - I2P Team
- Eregalerij
-
Documentation
- Hoe werkt het?
- Tech intro
- Howto docs
- Applicaties
-
Development
- API
- Licenties
- Trac - -

Syndie
-
Links
-
Mirror -
Mirror 2 -
Mirror 3 -
Beveiligde Site -
Beveiligde Mirror -
-
Impressum
- -{% elif lang == "zh" %} -
√ I2P首页
-
√ I2P下载
- - -
项目动态
- 公告
- - - 会议
- 路线图
- 任务
-
I2P简介
- √ 常见问题集
- i2p论坛
- 赏金项目
- 志愿者
- 捐助!
- - I2P团队
- 名人堂
-
技术文档
- 工作原理
- 技术内幕
- 安装指南
- 程序开发
-
开发
- API
- 许可证
- Trac - -

Syndie
-
链接
-
Mirror -
Mirror 2 -
Mirror 3 -
Secure Site -
Secure Mirror -
-
Impressum
- -{% elif lang == "fr" %} -
Bienvenue sur I2P
-
Téléchargement
- - -
Nouveautés
- Versions
- - - Rencontres i2p
- Roadmap
- Les choses à faire
-
A propos d'i2p
- Foire aux questions
- I2P forums
- Primes
- Contribuer
- Faire un don
- - L'équipe
- Panthéon des héros
-
Documentation
- Fonctionnement
- Intro technique
- Turoriaux (How to)
- Applications pour I2P
-
Développement
- API
- Licences
- Trac - -

Syndie
-
Liens
-
Mirror -
Mirror 2 -
Mirror 3 -
Secure Site -
Secure Mirror -
-
Impressum
- - -{% elif lang == "ru" %} -
Добро пожаловать
-
Скачать
- -
Новости
- Объявления
- Проектные митинги
- План развития
- Список задач
- -
О проекте I2P
- FAQ
- Форумы
- Премии за проекты
- Как стать участником
- Donate!
- - Команда I2P
- Зал Славы
- -
Документация
- Как это работает?
- Техническая вводная
- Howto docs
- Приложения
- -
Разработка
- API
- Лицензии
- Багтрекер - -

Syndie
-
Ссылки
-
Mirror -
Mirror 2 -
Mirror 3 -
Secure Site -
Secure Mirror -
-
Impressum
- - -{% else %} -
Welcome to I2P
-
Download
- -
News
- Announcements
- - - Meetings
- Roadmap
- Task list
-
About I2P
- FAQ
- Forums
- Bounties
- Get involved
- Donate!
- - I2P Team
- Hall of Fame
-
Documentation
- How does it work?
- Tech intro
- Howto docs
- Applications
-
Development
- API
- Licenses
- Trac - -

Syndie
-
Links
-
Mirror -
Mirror 2 -
Mirror 3 -
Secure Site -
Secure Mirror -
-
Impressum
-{% endif %} +
+
+English +Deutsch +中文 +Français +Italiano +Nederlands +Русский +
+
diff --git a/www.i2p2/pages/index.html b/www.i2p2/pages/index.html index 3805ef14..e2d97fc1 100644 --- a/www.i2p2/pages/index.html +++ b/www.i2p2/pages/index.html @@ -1,88 +1,118 @@ {% extends "_layout.html" %} {% block title %}I2P Anonymous Network{% endblock %} {% block content %} -
-
-Latest version:
-2010-07-12 - I2P 0.8 - {{ urlify("release-0.8", "Announcement", "html")}} -- Download
-2007-09-28 - Syndie 1.101a - - -- Download +
+
+

What can I2P do for you?

+ +

The I2P network provides strong privacy protections for communication over the Internet. Many activities that would risk your privacy on the public Internet can be conducted anonymously on I2P. Though suitable for general privacy-conscious usage, I2P is also designed to protect users under high risk, such as:

+ +
    +
  • + Activists
    + Coordinate on human rights, free speech, peace. +
  • +
  • + Marginalized groups
    + Associate without threat of ethnic, political, or religious persecution. +
  • +
+ +
-
-Latest News:
-2010-07-12 - I2P 0.8 -Released -
-2010-06-07 - I2P 0.7.14 -Released -
-2010-04-27 - I2P 0.7.13 -Released -
-2010-03-15 - I2P 0.7.12 -Released -
- -
-
-

I2P is an anonymizing network, offering a simple layer that identity-sensitive -applications can use to securely communicate. All data is wrapped with several -layers of encryption, and the network is both distributed and dynamic, with no trusted parties.

-

-Many applications are available that interface with I2P, including -mail, peer-peer, IRC chat, and others. -

-I2P is growing fast! There were nine releases in 2009, and traffic grew by a factor of 5: -

-

-2009 bandwidth -
-

- -

-The I2P project was formed in 2003 to support the efforts of -those trying to build a more free society by offering them an uncensorable, -anonymous, and secure communication system. I2P is a development effort -producing a low latency, fully distributed, autonomous, scalable, anonymous, -resilient, and secure network. The goal is to operate successfully in -hostile environments. even when an organization with substantial financial -or political resources attacks it. All aspects of the network are open source and -available without cost, as this should both assure the people using it that the software -does what it claims, as well as enable others to contribute and improve -upon it to defeat aggressive attempts to -stifle free speech. -

- -

Anonymity is not a boolean - we are not trying to make something -"perfectly anonymous", but instead are working at making attacks more and more -expensive to mount. I2P is a low latency mix network, -and there are limits to the anonymity offered by such a system, but the applications -on top of I2P, such as Syndie, I2P mail, -and I2PSnark extend it to offer both additional functionality and protection.

- -

I2P is still a work in progress. -It should not be relied upon for "guaranteed" anonymity at this time, -due to the relatively small size of the network and the lack of extensive academic review. -It is not immune to to attacks from those with unlimited resources, and may never be, -due to the inherent limitations of low-latency mix networks. -

- -

-I2P works by routing traffic through other peers, as shown in the following picture. -All traffic is encrypted end-to-end. -For more information about how I2P works, see the -Introduction. -

-

-
-end to end layered encryption +
+

Get started with I2P

-
+ +
+
+ Download Now +   +
+
+
+ +
+

How does I2P work?

+

+Network diagram

+

On the public Internet your external IP address is unique and provides a strong correlation between your online activities and your true identity. Effective privacy is hard to achieve because the Internet, by design, allows senders and receivers to see each other's external IP address. Another fundamental threat to privacy results from Internet-enabled applications that don't encrypt – or don't sufficiently encrypt – your sensitive communications.

+ +

I2P anonymizes Internet communications by: 1) employing many techniques to make it exceedingly difficult for a receiver to prove the IP address of a sender and vice versa; and 2) by strongly encrypting all communication between the sender and receiver.

+ +

To explore the workings of I2P in further detail please read A Gentle Introduction to the I2P Network. The technically-minded may wish to proceed to the I2P Network Technical Introduction.

+
+
+ +
+
+

Supported Applications

+ +
+ + + + +
{% endblock %} diff --git a/www.i2p2/static/images/btn_left.png b/www.i2p2/static/images/btn_left.png new file mode 100644 index 0000000000000000000000000000000000000000..9e49dd0028f4f784d39eaa1a55b0f46b03092af1 GIT binary patch literal 699 zcmV;s0!00ZP);#Ek>=2XNrVKjBYtZ~g#WkT~Q3;*>;!8>%WkdO$*;!XXuq z!ou!$-o)NIt0ctI$YXo_-kTXO$cToZv0AO}`~CjSY&KhOHk(K6IgS%zmQqF%frG)| zy4UNC%H{G^Hk2&(zd_I4GCLCZkzP=Eu?RI;lg*+S%ei(+JK>{I3 zM_^#qF8Gm<(PIo6jd3zSAq#^b;4)xf&m=*<;6QU=3>Q#ZAZaP=E3ncbG)a*d_MQs_ zjV7oxl4eO+%BO}fy(C1T^vzIQ7(kSS#Au*GsWc@Jh3>U*5kSUCX!Q8d4rFQy;!+y% zn4#5PGqtH>yy?23RYS?;(TF06Xs?0Jh@dtd0D{qK>*N-mPN$gKDz*vYdMYhEvgwl4 ztQ(Y|PL?N$=(gMKO{rA++-kMf$jdT_j*Q_wO41nVB$D>Oh1fu6E(I!$n0y0vAp4An zWL`m(Hnq@*Zw8tcUVe`{8Sx(Kx3Yd7csw58g{bsrsjN;sdmsEJ;rYJ*8dB^7(a{=T zLNwKQ>NO!MEAXZ6L@J-pdz4H>--!cseIYq3Rjbv$&`)2K$z(izV9d22>fgfpX1xFa002ovPDHLkV1mC>LoWaT literal 0 HcmV?d00001 diff --git a/www.i2p2/static/images/btn_right.png b/www.i2p2/static/images/btn_right.png new file mode 100644 index 0000000000000000000000000000000000000000..d4a6d2b8ae87fb30be8c369fec1352a74e9749c1 GIT binary patch literal 686 zcmV;f0#W^mP)2CB6ZLaFP2n1G8 z620o3oNqF78D}@#J#d)e%y+)?y7#bNuXiV1O?RjbvvqtR&02^ezDL&liI9cu2Y)#^T#NaAy*RQ zr;0JT?)UqENZ59}JqWr;C?2F1FdBuxQJhXEPZt9gI2gR7oMD4V0fTOha@LQLlW~l4 zGL_o`8#w~W#PN7!rr9u1DtJ^j!;C20ixFg|iUFeu>oVd*u{Z^2bq73Cj422w0VSNd z&8B&w^);Rei{kveK70666z6E-~sB`om12Sz> zKw{)(gxvaKE=~v)BWYD%39FYjqXMSW=_^`!vfXZHVEpJ7kw_$bTA+!1KA&8#*THNy z`z&g;+O@r;u(&V{TB6=^xeWUK{tbP+AMp6eWvo;xFFKvhn{KyzTP~Lyc>F8C068iw UvLE!R#{d8T07*qoM6N<$f#@c;k- literal 0 HcmV?d00001 diff --git a/www.i2p2/static/images/btn_stretch.png b/www.i2p2/static/images/btn_stretch.png new file mode 100644 index 0000000000000000000000000000000000000000..4dd0197e8eaa83b3ac66bdb5a0221ecdfe113ab4 GIT binary patch literal 212 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfx!3HGlw@oMqQY`6?zK#qG>ra@ocD)4hB}-f* zN`mv#O3D+9QW+dm@{>{(JaZG%Q-e|yQz{EjrrH1%rFptIhE&`t>Aon~puppN`-;E) zp9EgF0`fro1StS@$+x6Y9mQ}k0ZDjCt^>bP0 Hl+XkK>G4X? literal 0 HcmV?d00001 diff --git a/www.i2p2/static/styles/960.css b/www.i2p2/static/styles/960.css new file mode 100644 index 00000000..fe3d05f6 --- /dev/null +++ b/www.i2p2/static/styles/960.css @@ -0,0 +1 @@ +.container_12,.container_16{margin-left:auto;margin-right:auto;width:960px}.grid_1,.grid_2,.grid_3,.grid_4,.grid_5,.grid_6,.grid_7,.grid_8,.grid_9,.grid_10,.grid_11,.grid_12,.grid_13,.grid_14,.grid_15,.grid_16{display:inline;float:left;margin-left:10px;margin-right:10px}.push_1,.pull_1,.push_2,.pull_2,.push_3,.pull_3,.push_4,.pull_4,.push_5,.pull_5,.push_6,.pull_6,.push_7,.pull_7,.push_8,.pull_8,.push_9,.pull_9,.push_10,.pull_10,.push_11,.pull_11,.push_12,.pull_12,.push_13,.pull_13,.push_14,.pull_14,.push_15,.pull_15{position:relative}.container_12 .grid_3,.container_16 .grid_4{width:220px}.container_12 .grid_6,.container_16 .grid_8{width:460px}.container_12 .grid_9,.container_16 .grid_12{width:700px}.container_12 .grid_12,.container_16 .grid_16{width:940px}.alpha{margin-left:0}.omega{margin-right:0}.container_12 .grid_1{width:60px}.container_12 .grid_2{width:140px}.container_12 .grid_4{width:300px}.container_12 .grid_5{width:380px}.container_12 .grid_7{width:540px}.container_12 .grid_8{width:620px}.container_12 .grid_10{width:780px}.container_12 .grid_11{width:860px}.container_16 .grid_1{width:40px}.container_16 .grid_2{width:100px}.container_16 .grid_3{width:160px}.container_16 .grid_5{width:280px}.container_16 .grid_6{width:340px}.container_16 .grid_7{width:400px}.container_16 .grid_9{width:520px}.container_16 .grid_10{width:580px}.container_16 .grid_11{width:640px}.container_16 .grid_13{width:760px}.container_16 .grid_14{width:820px}.container_16 .grid_15{width:880px}.container_12 .prefix_3,.container_16 .prefix_4{padding-left:240px}.container_12 .prefix_6,.container_16 .prefix_8{padding-left:480px}.container_12 .prefix_9,.container_16 .prefix_12{padding-left:720px}.container_12 .prefix_1{padding-left:80px}.container_12 .prefix_2{padding-left:160px}.container_12 .prefix_4{padding-left:320px}.container_12 .prefix_5{padding-left:400px}.container_12 .prefix_7{padding-left:560px}.container_12 .prefix_8{padding-left:640px}.container_12 .prefix_10{padding-left:800px}.container_12 .prefix_11{padding-left:880px}.container_16 .prefix_1{padding-left:60px}.container_16 .prefix_2{padding-left:120px}.container_16 .prefix_3{padding-left:180px}.container_16 .prefix_5{padding-left:300px}.container_16 .prefix_6{padding-left:360px}.container_16 .prefix_7{padding-left:420px}.container_16 .prefix_9{padding-left:540px}.container_16 .prefix_10{padding-left:600px}.container_16 .prefix_11{padding-left:660px}.container_16 .prefix_13{padding-left:780px}.container_16 .prefix_14{padding-left:840px}.container_16 .prefix_15{padding-left:900px}.container_12 .suffix_3,.container_16 .suffix_4{padding-right:240px}.container_12 .suffix_6,.container_16 .suffix_8{padding-right:480px}.container_12 .suffix_9,.container_16 .suffix_12{padding-right:720px}.container_12 .suffix_1{padding-right:80px}.container_12 .suffix_2{padding-right:160px}.container_12 .suffix_4{padding-right:320px}.container_12 .suffix_5{padding-right:400px}.container_12 .suffix_7{padding-right:560px}.container_12 .suffix_8{padding-right:640px}.container_12 .suffix_10{padding-right:800px}.container_12 .suffix_11{padding-right:880px}.container_16 .suffix_1{padding-right:60px}.container_16 .suffix_2{padding-right:120px}.container_16 .suffix_3{padding-right:180px}.container_16 .suffix_5{padding-right:300px}.container_16 .suffix_6{padding-right:360px}.container_16 .suffix_7{padding-right:420px}.container_16 .suffix_9{padding-right:540px}.container_16 .suffix_10{padding-right:600px}.container_16 .suffix_11{padding-right:660px}.container_16 .suffix_13{padding-right:780px}.container_16 .suffix_14{padding-right:840px}.container_16 .suffix_15{padding-right:900px}.container_12 .push_3,.container_16 .push_4{left:240px}.container_12 .push_6,.container_16 .push_8{left:480px}.container_12 .push_9,.container_16 .push_12{left:720px}.container_12 .push_1{left:80px}.container_12 .push_2{left:160px}.container_12 .push_4{left:320px}.container_12 .push_5{left:400px}.container_12 .push_7{left:560px}.container_12 .push_8{left:640px}.container_12 .push_10{left:800px}.container_12 .push_11{left:880px}.container_16 .push_1{left:60px}.container_16 .push_2{left:120px}.container_16 .push_3{left:180px}.container_16 .push_5{left:300px}.container_16 .push_6{left:360px}.container_16 .push_7{left:420px}.container_16 .push_9{left:540px}.container_16 .push_10{left:600px}.container_16 .push_11{left:660px}.container_16 .push_13{left:780px}.container_16 .push_14{left:840px}.container_16 .push_15{left:900px}.container_12 .pull_3,.container_16 .pull_4{left:-240px}.container_12 .pull_6,.container_16 .pull_8{left:-480px}.container_12 .pull_9,.container_16 .pull_12{left:-720px}.container_12 .pull_1{left:-80px}.container_12 .pull_2{left:-160px}.container_12 .pull_4{left:-320px}.container_12 .pull_5{left:-400px}.container_12 .pull_7{left:-560px}.container_12 .pull_8{left:-640px}.container_12 .pull_10{left:-800px}.container_12 .pull_11{left:-880px}.container_16 .pull_1{left:-60px}.container_16 .pull_2{left:-120px}.container_16 .pull_3{left:-180px}.container_16 .pull_5{left:-300px}.container_16 .pull_6{left:-360px}.container_16 .pull_7{left:-420px}.container_16 .pull_9{left:-540px}.container_16 .pull_10{left:-600px}.container_16 .pull_11{left:-660px}.container_16 .pull_13{left:-780px}.container_16 .pull_14{left:-840px}.container_16 .pull_15{left:-900px}.clear{clear:both;display:block;overflow:hidden;visibility:hidden;width:0;height:0}.clearfix:after{clear:both;content:' ';display:block;font-size:0;line-height:0;visibility:hidden;width:0;height:0}* html .clearfix,*:first-child+html .clearfix{zoom:1} \ No newline at end of file diff --git a/www.i2p2/static/styles/default.css b/www.i2p2/static/styles/default.css new file mode 100644 index 00000000..4862060c --- /dev/null +++ b/www.i2p2/static/styles/default.css @@ -0,0 +1,84 @@ +html,body,h1,h2,h3,ol,ul,p{margin:0;padding:0} + +body { + font-family: sans-serif; +} + +p,ol,ul {margin-bottom:10px} + +img {border:0;} + +.hide { + display: none; +} + +#header { + border-bottom:1px solid black; /* give us a black border underneath */ + margin-bottom: 10px; +} + +#logo { + margin-top: 12px; + height: 42px; +} + +#slogan { + margin-top: 12px; + height: 42px; +} + +#searchbox { + margin-top: 18px; +} + +#searchbox form{ + float: right; +} + +#flags { + float: right; +} + +.content li { + margin-left: 1.4em; +} + +#try_i2p_now { + margin-top: 6px; + margin-bottom: 10px; +} + +#supported_applications { + font-size: smaller; +} + +#news { + font-size: smaller; +} + +.btn { + float: left; + clear: both; + background: url(../images/btn_left.png) no-repeat; + padding: 0 0 0 10px; + margin: 5px 0; +} +.btn a{ + float: left; + height: 40px; + background: url(../images/btn_stretch.png) repeat-x left top; + line-height: 40px; + padding: 0 10px; + color: #fff; + font-size: 1.5em; + font-weight: bold; + text-decoration: none; +} +.btn span { + background: url(../images/btn_right.png) no-repeat; + float: left; + width: 10px; + height: 40px; +} +.btn_download { background-color: red; } +.btn_donate { background-color: green; } diff --git a/www.i2p2/static/styles/mainmenu.css b/www.i2p2/static/styles/mainmenu.css new file mode 100644 index 00000000..7299b342 --- /dev/null +++ b/www.i2p2/static/styles/mainmenu.css @@ -0,0 +1,165 @@ +/*============================================================================== + + GRC multi-level script-free pure-CSS menuing system stylesheet. + This code is hereby placed into the public domain by its author + Steve Gibson. It may be freely used for any purpose whatsoever. + + Computed Geometries: with a default 12px font, 1.0em == 12px and + 1px == 0.08333em. + Thus, our 98px wide Freeware & Research buttons are 8.166666em wide. + + PUBLIC DOMAIN CONTRIBUTION NOTICE + This work has been explicitly placed into the Public Domain for the + benefit of anyone who may find it useful for any purpose whatsoever. + +==============================================================================*/ + + /*========================= TOP OF THE MENU CASCADE =========================*/ + +.menu { + position:relative; /* establish a menu-relative positioning context */ + float:left; /* play nicely with others */ + margin:0; + padding:0; + border:0; + height:24px; /* the menu's overall height */ +} + +.menu img { + vertical-align: top; /* prevent images from being pushed down by text */ +} + +.menu ul { + margin:0; + list-style-type:none; /* we don't want to view the list as a list */ + line-height:1.5em; /* globally set the menu's item spacing. note */ +} /* this must be 1.0 or 1.5 or 2.0 for Mozilla */ + +.menu li { + float:left; /* this creates the side-by-side array of top-level buttons */ + position:relative; /* create local positioning contexts for each button */ + margin:0; + margin-right: 2em; +} + +.drop { + display:block; + padding:0px 0.33em; /* this sets the l/r margins for our menu item */ + margin:0; + text-align:right; /* this right alignment goes with the float:left below */ + cursor:pointer; /* IE tries to switch back to an I-beam, don't let it */ + cursor:hand; /* IE5 only knows about "hand", so set it both ways */ +} + +.drop span { /* this simultaneously left and right aligns the text and */ + float:left; /* the >> in the drop-down menus which link to sub-menus */ +} + +.rightmenu { + position:relative; /* establish a local positioning context for YAH label */ + float:right; /* and right-align it at the top of our page */ +} + +/*======================== TOP LEVEL MENU DEFINITIONS ========================*/ + +.menu ul li ul { + display:none; /* initially hide the entire list hierarchy */ + padding:1px; /* this is our box border width */ +} + +.menu ul li a, +.menu ul li a:visited { /* unselected top-level menu items */ + display:block; + float:left; + text-decoration:none; + height:24px; +} + +/*======================== 2ND LEVEL MENU DEFINITIONS ========================*/ + +.menu ul li:hover ul, +.menu ul li a:hover ul { /* 2nd level drop-down box */ + display:block; + position:absolute; + margin:0; + top:24px; /* place us just up underneath the top-level images */ + left:-1px; /* left-align our drop-down to the previous button border */ + height:auto; /* the drop-down height will be determiend by line count */ + width:13.5em; + color:black; /* this sets the unselected-text color */ + background:black; /* this sets our menu's effective "border" color */ +} + +.menu ul li:hover ul.leftbutton, +.menu ul li a:hover ul.leftbutton {/* our first dropdown should not be skewed */ + left:0px; +} + +.menu ul li:hover ul.skinny, +.menu ul li a:hover ul.skinny { /* 2nd level skinny drop-down box */ + width:8.08333em; /* with a 12px default font, this is 97px width (97/12) */ +} + +.menu ul.rightmenu li:hover ul, +.menu ul.rightmenu li a:hover ul { /* 2nd level neighborhood drop-down box */ + left:auto; + right:0; /* nudge the right menu right to line up under the border */ + width:400px; /* with a 12px default font, this is 228px width (228/12) */ +} + +* html .menu ul.rightmenu li a:hover ul { /* IE5/6 needs a tweak here */ + right:-1px; +} + +.menu ul li:hover ul li a, +.menu ul li a:hover ul li a { /* 2nd level unselected items */ + border:0; + margin:0; + padding:0; + height:auto; + color:#000; /* this sets the unselected drop-down text color */ + background:#d8d8d8; /* this sets the drop-down menu background color */ + width:13.5em; +} + +.menu ul li:hover ul li:hover a, +.menu ul li a:hover ul li a:hover { /* 2nd level selected item */ + color:black; + background:white; +} + +.menu ul li:hover ul.skinny li a, +.menu ul li a:hover ul.skinny li a, +.menu ul li:hover ul.skinny li a:hover, +.menu ul li a:hover ul.skinny li a:hover { /* 2nd level un+selected items */ + width:8.08333em; +} + +/*======================== 3RD LEVEL MENU DEFINITIONS ========================*/ + +.menu ul li:hover ul li ul, +.menu ul li a:hover ul li a ul { /* hide inactive 3rd-level menus */ + visibility:hidden; +} + +.menu ul li:hover ul li:hover ul, +.menu ul li a:hover ul li a:hover ul { /* 3rd level drop-down box */ + visibility:visible; + position:absolute; + margin-top:-1px; /* bring the top edge of the 3rd level menu up one */ + top:0; + left:8.08333em; + width:14em; +} + +.menu ul li:hover ul li:hover ul li a, +.menu ul li a:hover ul li a:hover ul li a { /* 3rd level unselected items */ + width:14em; + background:#d8d8d8; +} + +.menu ul li:hover ul li:hover ul li a:hover, +.menu ul li a:hover ul li a:hover ul li a:hover { /* level3 selected items */ + width:14em; + background:white; +} From cdc3328bbf12f17633ecc3869511bdea40b3f2a4 Mon Sep 17 00:00:00 2001 From: dev Date: Wed, 5 Oct 2011 21:35:41 +0000 Subject: [PATCH 002/650] started working on the new version of the website --- app.py | 76 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 app.py diff --git a/app.py b/app.py new file mode 100644 index 00000000..e14803b3 --- /dev/null +++ b/app.py @@ -0,0 +1,76 @@ +from jinja2 import Environment, FileSystemLoader +from flask import Flask, request, session, g, redirect, url_for, abort, render_template, flash + +app=application=Flask(__name__, template_folder=TEMPLATE_DIR) +app.debug=bool(os.environ.get('APP_DEBUG', 'False')) + +@app.url_value_preprocessor +def pull_lang(endpoint, values): + if not values: + return + g.lang=values.pop('lang', None) + +@app.view('/') +def main_index(): + redirect(url_for('site_show', lang='en')) + +@app.view('//site/') +@app.view('//site/') +def site_show(page=''): + # TODO: set content_type + +@app.view('//meetings/') +def meetings_index(): + return render_template('meetings/index.html') + +@app.view('//meetings/') +def meetings_show(id): + # TODO: implement + +@app.view('//meetings//raw') +def meetings_show_raw(id): + # TODO: implement + +@app.view('//download') +def downloads_list(): + # TODO: implement + +@app.view('//download/') +def downloads_select(file): + # TODO: implement + +@app.view('/download//any/') +@app.view('/download///') +def downloads_redirect(protocol, file, mirror=None): + # TODO: implement + +@app.view('//blog/') +@app.view('//blog/page/') +def blog_index(page=0): + # TODO: implement + +@app.view('//blog/entry/') +def blog_entry(slug): + # TODO: implement + +@app.view('/feed/blog/rss') +def blog_rss(): + # TODO: implement + +@app.view('/feed/blog/atom') +def blog_atom(): + # TODO: implement + +@app.view('/'): +def legacy_show(f): + # TODO: redirect to correct new url + +@app.view('/meeting') +@app.view('/meeting.html') +def legacy_meeting(id): + redirect(url_for('meetings_show', id=id, lang='en')) + +@app.view('/status---') +@app.view('/status---.html') +def legacy_status(year, month, day): + redirect(url_for('blog_entry', lang='en', slug=('%s/%s/%s/status' % (year, month, day)))) From 894b9bb72b1b8c48e32b9491aa2983ae6b86c795 Mon Sep 17 00:00:00 2001 From: dev Date: Fri, 1 Jun 2012 21:15:42 +0000 Subject: [PATCH 003/650] finally! some progress --- app.py | 116 ++++++++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 87 insertions(+), 29 deletions(-) diff --git a/app.py b/app.py index e14803b3..7c79e524 100644 --- a/app.py +++ b/app.py @@ -1,8 +1,16 @@ from jinja2 import Environment, FileSystemLoader -from flask import Flask, request, session, g, redirect, url_for, abort, render_template, flash +from flask import Flask, request, session, g, redirect, url_for, abort, render_template, flash, send_from_directory, safe_join +import os.path +import fileinput + + +TEMPLATE_DIR = os.path.join(os.path.dirname(__file__), 'pages') +MEETINGS_DIR = os.path.join(os.path.dirname(__file__), 'meetings') + +app = application = Flask(__name__, template_folder=TEMPLATE_DIR) +app.debug = bool(os.environ.get('APP_DEBUG', 'False')) + -app=application=Flask(__name__, template_folder=TEMPLATE_DIR) -app.debug=bool(os.environ.get('APP_DEBUG', 'False')) @app.url_value_preprocessor def pull_lang(endpoint, values): @@ -10,67 +18,117 @@ def pull_lang(endpoint, values): return g.lang=values.pop('lang', None) -@app.view('/') +@app.route('/') def main_index(): - redirect(url_for('site_show', lang='en')) + return redirect(url_for('site_show', lang='en')) -@app.view('//site/') -@app.view('//site/') +@app.route('//site/') +@app.route('//site/') def site_show(page=''): # TODO: set content_type + pass -@app.view('//meetings/') +@app.route('//meetings/') def meetings_index(): return render_template('meetings/index.html') -@app.view('//meetings/') -def meetings_show(id): - # TODO: implement +@app.route('//meetings/') +def meetings_show(id, raw=False): + """ + Render the meeting X. + Either display the raw IRC .log or render as html and include .rst as header if it exists + """ + # generate file name for the raw meeting file(and header) + lname = str(id) + '.log' + hname = str(id) + '.rst' + lfile = safe_join(MEETINGS_DIR, lname) + hfile = safe_join(MEETINGS_DIR, hname) + + # check if meeting file exists and throw error if it does not.. + if not os.path.exists(lfile): + abort(404) + + log='' + header=None -@app.view('//meetings//raw') + # load log + with open(lfile, 'rb') as fd: + log = fd.read() + + # now try to load header if that makes sense + if os.path.exists(hfile): + with open(hfile, 'rb') as fd: + header = fd.read() + + + + # now only rendering left to do + if raw: + # hmm... maybe replace with something non-render_template like? + # return render_template('meetings/show_raw.html', log=log) + return send_from_directory(MEETINGS_DIR, lname, mimetype='text/plain') + else: + return render_template('meetings/show.html', log=log, header=header) + + +@app.route('//meetings//raw') def meetings_show_raw(id): - # TODO: implement + return meetings_show(id, raw=True) -@app.view('//download') +@app.route('//download') def downloads_list(): # TODO: implement + pass -@app.view('//download/') +@app.route('//download/') def downloads_select(file): # TODO: implement + pass -@app.view('/download//any/') -@app.view('/download///') +@app.route('/download//any/') +@app.route('/download///') def downloads_redirect(protocol, file, mirror=None): # TODO: implement + pass -@app.view('//blog/') -@app.view('//blog/page/') +@app.route('//blog/') +@app.route('//blog/page/') def blog_index(page=0): # TODO: implement + pass -@app.view('//blog/entry/') +@app.route('//blog/entry/') def blog_entry(slug): # TODO: implement + pass -@app.view('/feed/blog/rss') +@app.route('/feed/blog/rss') def blog_rss(): # TODO: implement + pass -@app.view('/feed/blog/atom') +@app.route('/feed/blog/atom') def blog_atom(): # TODO: implement + pass -@app.view('/'): -def legacy_show(f): - # TODO: redirect to correct new url -@app.view('/meeting') -@app.view('/meeting.html') + + +## legacy stuff: + +@app.route('/meeting') +@app.route('/meeting.html') def legacy_meeting(id): redirect(url_for('meetings_show', id=id, lang='en')) -@app.view('/status---') -@app.view('/status---.html') +@app.route('/status---') +@app.route('/status---.html') def legacy_status(year, month, day): redirect(url_for('blog_entry', lang='en', slug=('%s/%s/%s/status' % (year, month, day)))) + + +@app.route('/') +def legacy_show(f): + # TODO: redirect to correct new url + pass From a4571ab6dae8954c0112020dd86e80dc0deacc71 Mon Sep 17 00:00:00 2001 From: dev Date: Fri, 1 Jun 2012 23:15:41 +0000 Subject: [PATCH 004/650] more progress! --- app.py | 79 +++++++++++++++++++++++++++++++++++++++------------------- 1 file changed, 53 insertions(+), 26 deletions(-) diff --git a/app.py b/app.py index 7c79e524..263c26fb 100644 --- a/app.py +++ b/app.py @@ -1,16 +1,30 @@ -from jinja2 import Environment, FileSystemLoader +from jinja2 import Environment, FileSystemLoader, environmentfilter from flask import Flask, request, session, g, redirect, url_for, abort, render_template, flash, send_from_directory, safe_join import os.path +import os import fileinput +import codecs TEMPLATE_DIR = os.path.join(os.path.dirname(__file__), 'pages') +STATIC_DIR = os.path.join(os.path.dirname(__file__), 'static') + MEETINGS_DIR = os.path.join(os.path.dirname(__file__), 'meetings') -app = application = Flask(__name__, template_folder=TEMPLATE_DIR) +app = application = Flask(__name__, template_folder=TEMPLATE_DIR, static_url_path='/_static', static_folder=STATIC_DIR) app.debug = bool(os.environ.get('APP_DEBUG', 'False')) +@app.template_filter('restructuredtext') +def restructuredtext(env, value): + try: + from docutils.core import publish_parts + except ImportError: + print u"Install docutils!!11" + raise + parts = publish_parts(source=value, writer_name="html") + return parts['html_body'] + @app.url_value_preprocessor def pull_lang(endpoint, values): @@ -18,6 +32,10 @@ def pull_lang(endpoint, values): return g.lang=values.pop('lang', None) +#@app.url_value_preprocessor +#def fix_theme(endpoint, values): +# pass + @app.route('/') def main_index(): return redirect(url_for('site_show', lang='en')) @@ -33,7 +51,7 @@ def meetings_index(): return render_template('meetings/index.html') @app.route('//meetings/') -def meetings_show(id, raw=False): +def meetings_show(id, log=False, rst=False): """ Render the meeting X. Either display the raw IRC .log or render as html and include .rst as header if it exists @@ -48,32 +66,41 @@ def meetings_show(id, raw=False): if not os.path.exists(lfile): abort(404) - log='' - header=None - - # load log - with open(lfile, 'rb') as fd: - log = fd.read() - - # now try to load header if that makes sense - if os.path.exists(hfile): - with open(hfile, 'rb') as fd: - header = fd.read() - - - - # now only rendering left to do - if raw: + # if the user just wanted the .log + if log: # hmm... maybe replace with something non-render_template like? # return render_template('meetings/show_raw.html', log=log) return send_from_directory(MEETINGS_DIR, lname, mimetype='text/plain') - else: - return render_template('meetings/show.html', log=log, header=header) + + log='' + header=None + + # try to load header if that makes sense + if os.path.exists(hfile): + # if the user just wanted the .rst... + if rst: + return send_from_directory(MEETINGS_DIR, hname, mimetype='text/plain') + + # open the file as utf-8 file + with codecs.open(hfile, encoding='utf-8') as fd: + header = fd.read() + elif rst: + abort(404) + + # load log + with codecs.open(lfile, encoding='utf-8') as fd: + log = fd.read() + + return render_template('meetings/show.html', log=log, header=header, id=id) -@app.route('//meetings//raw') -def meetings_show_raw(id): - return meetings_show(id, raw=True) +@app.route('//meetings/.log') +def meetings_show_log(id): + return meetings_show(id, log=True) + +@app.route('//meetings/.rst') +def meetings_show_rst(id): + return meetings_show(id, rst=True) @app.route('//download') def downloads_list(): @@ -120,12 +147,12 @@ def blog_atom(): @app.route('/meeting') @app.route('/meeting.html') def legacy_meeting(id): - redirect(url_for('meetings_show', id=id, lang='en')) + return redirect(url_for('meetings_show', id=id, lang='en')) @app.route('/status---') @app.route('/status---.html') def legacy_status(year, month, day): - redirect(url_for('blog_entry', lang='en', slug=('%s/%s/%s/status' % (year, month, day)))) + return redirect(url_for('blog_entry', lang='en', slug=('%s/%s/%s/status' % (year, month, day)))) @app.route('/') From 7baf77ad1c381ca07c33218ccba123d5d8617b9d Mon Sep 17 00:00:00 2001 From: dev Date: Fri, 1 Jun 2012 23:36:38 +0000 Subject: [PATCH 005/650] first kinda working setup well.. kinda... /en/meetings/208 works and that's about it --- app.py | 35 ++++++++- .../pages/meeting208.html => meetings/208.log | 71 ------------------ .../_layout.html => pages/global/layout.html | 14 ++-- .../_menu.html => pages/global/menu.html | 22 +++--- www.i2p2/pages/_urlify => pages/global/urlify | 2 +- .../meetings/index.html | 2 +- {www.i2p2/static => static}/favicon.ico | Bin .../images/I2PTunnel-streamr.png | Bin .../images/add-key-terminal.png | Bin .../images/bandwidth2009.png | Bin {www.i2p2/static => static}/images/cz.png | Bin {www.i2p2/static => static}/images/dark.png | Bin .../static => static}/images/darkbluebg.png | Bin .../static => static}/images/darkbluetile.png | Bin .../images/darkerbluetile.png | Bin {www.i2p2/static => static}/images/de.png | Bin .../static => static}/images/download.png | Bin .../images/download_dark.png | Bin .../images/endToEndEncryption.png | Bin .../images/endToEndEncryption_fr.png | Bin .../images/endToEndEncryption_zh.png | Bin {www.i2p2/static => static}/images/es.png | Bin {www.i2p2/static => static}/images/eu.png | Bin .../images/firefox.options.jpg | Bin .../images/firefox.options_fr.png | Bin .../images/firefox.proxyports.jpg | Bin .../images/firefox.proxyports_fr.png | Bin {www.i2p2/static => static}/images/fr.png | Bin .../static => static}/images/garliccloves.png | Bin {www.i2p2/static => static}/images/help.png | Bin .../static => static}/images/help_dark.png | Bin .../static => static}/images/i2plogo.png | Bin .../images/i2ptunnel_peertopeer.png | Bin .../images/i2ptunnel_serverclient.png | Bin .../static => static}/images/i2pvstor_zh.png | Bin .../static => static}/images/ie.options.jpg | Bin .../images/ie.options_fr.png | Bin .../images/ie.proxyports.jpg | Bin .../images/ie.proxyports_fr.png | Bin {www.i2p2/static => static}/images/info.png | Bin .../static => static}/images/info_dark.png | Bin {www.i2p2/static => static}/images/it.png | Bin .../static => static}/images/itoopie.png | Bin .../images/konqueror.options.jpg | Bin .../images/konqueror.options_fr.jpg | Bin .../images/konqueror.proxyports.jpg | Bin .../images/konqueror.proxyports_fr.jpg | Bin .../static => static}/images/lang_ar.png | Bin {www.i2p2/static => static}/images/light.png | Bin .../images/lightbluetile.png | Bin {www.i2p2/static => static}/images/link.png | Bin .../static => static}/images/link_dark.png | Bin .../static => static}/images/logo07c.jpg | Bin {www.i2p2/static => static}/images/net.png | Bin {www.i2p2/static => static}/images/net_fr.png | Bin .../images/netdb_get_leaseset.png | Bin .../images/netdb_get_leaseset_fr.png | Bin .../images/netdb_get_routerinfo_1.png | Bin .../images/netdb_get_routerinfo_1_fr.png | Bin .../images/netdb_get_routerinfo_2.png | Bin .../images/netdb_get_routerinfo_2_fr.png | Bin {www.i2p2/static => static}/images/nl.png | Bin {www.i2p2/static => static}/images/plan.png | Bin .../images/protocol_stack.png | Bin .../images/protocol_stack_fr.png | Bin {www.i2p2/static => static}/images/ru.png | Bin .../static => static}/images/sqbullet.png | Bin .../images/stackoverflow_ad.png | Bin .../static => static}/images/tabletile.png | Bin .../images/tabletile_alt.png | Bin .../images/tabletitledark.png | Bin .../images/tabletitlelight-tall.png | Bin .../images/tabletitlelight.png | Bin {www.i2p2/static => static}/images/target.png | Bin .../images/tunnelSending.png | Bin .../static => static}/images/tunnels.png | Bin .../static => static}/images/tunnels_fr.png | Bin {www.i2p2/static => static}/images/udp.png | Bin {www.i2p2/static => static}/images/us.png | Bin {www.i2p2/static => static}/images/zh.png | Bin {www.i2p2/static => static}/news/news.xml | 0 {www.i2p2/static => static}/pdf/I2CP_spec.pdf | Bin {www.i2p2/static => static}/pdf/I2NP_spec.pdf | Bin .../pdf/I2P-PET-CON-2009.1.pdf | Bin .../static => static}/pdf/datastructures.pdf | Bin .../static => static}/pdf/i2p_philosophy.pdf | Bin .../pdf/polling_http_transport.pdf | Bin {www.i2p2/static => static}/styles/dark.css | 0 {www.i2p2/static => static}/styles/light.css | 0 .../static => static}/styles/light_ar.css | 0 .../static => static}/styles/light_zh.css | 0 91 files changed, 51 insertions(+), 95 deletions(-) rename www.i2p2/pages/meeting208.html => meetings/208.log (83%) rename www.i2p2/pages/_layout.html => pages/global/layout.html (59%) rename www.i2p2/pages/_menu.html => pages/global/menu.html (95%) rename www.i2p2/pages/_urlify => pages/global/urlify (79%) rename www.i2p2/pages/meetings.html => pages/meetings/index.html (99%) rename {www.i2p2/static => static}/favicon.ico (100%) rename {www.i2p2/static => static}/images/I2PTunnel-streamr.png (100%) rename {www.i2p2/static => static}/images/add-key-terminal.png (100%) rename {www.i2p2/static => static}/images/bandwidth2009.png (100%) rename {www.i2p2/static => static}/images/cz.png (100%) rename {www.i2p2/static => static}/images/dark.png (100%) rename {www.i2p2/static => static}/images/darkbluebg.png (100%) rename {www.i2p2/static => static}/images/darkbluetile.png (100%) rename {www.i2p2/static => static}/images/darkerbluetile.png (100%) rename {www.i2p2/static => static}/images/de.png (100%) rename {www.i2p2/static => static}/images/download.png (100%) rename {www.i2p2/static => static}/images/download_dark.png (100%) rename {www.i2p2/static => static}/images/endToEndEncryption.png (100%) rename {www.i2p2/static => static}/images/endToEndEncryption_fr.png (100%) rename {www.i2p2/static => static}/images/endToEndEncryption_zh.png (100%) rename {www.i2p2/static => static}/images/es.png (100%) rename {www.i2p2/static => static}/images/eu.png (100%) rename {www.i2p2/static => static}/images/firefox.options.jpg (100%) rename {www.i2p2/static => static}/images/firefox.options_fr.png (100%) rename {www.i2p2/static => static}/images/firefox.proxyports.jpg (100%) rename {www.i2p2/static => static}/images/firefox.proxyports_fr.png (100%) rename {www.i2p2/static => static}/images/fr.png (100%) rename {www.i2p2/static => static}/images/garliccloves.png (100%) rename {www.i2p2/static => static}/images/help.png (100%) rename {www.i2p2/static => static}/images/help_dark.png (100%) rename {www.i2p2/static => static}/images/i2plogo.png (100%) rename {www.i2p2/static => static}/images/i2ptunnel_peertopeer.png (100%) rename {www.i2p2/static => static}/images/i2ptunnel_serverclient.png (100%) rename {www.i2p2/static => static}/images/i2pvstor_zh.png (100%) rename {www.i2p2/static => static}/images/ie.options.jpg (100%) rename {www.i2p2/static => static}/images/ie.options_fr.png (100%) rename {www.i2p2/static => static}/images/ie.proxyports.jpg (100%) rename {www.i2p2/static => static}/images/ie.proxyports_fr.png (100%) rename {www.i2p2/static => static}/images/info.png (100%) rename {www.i2p2/static => static}/images/info_dark.png (100%) rename {www.i2p2/static => static}/images/it.png (100%) rename {www.i2p2/static => static}/images/itoopie.png (100%) rename {www.i2p2/static => static}/images/konqueror.options.jpg (100%) rename {www.i2p2/static => static}/images/konqueror.options_fr.jpg (100%) rename {www.i2p2/static => static}/images/konqueror.proxyports.jpg (100%) rename {www.i2p2/static => static}/images/konqueror.proxyports_fr.jpg (100%) rename {www.i2p2/static => static}/images/lang_ar.png (100%) rename {www.i2p2/static => static}/images/light.png (100%) rename {www.i2p2/static => static}/images/lightbluetile.png (100%) rename {www.i2p2/static => static}/images/link.png (100%) rename {www.i2p2/static => static}/images/link_dark.png (100%) rename {www.i2p2/static => static}/images/logo07c.jpg (100%) rename {www.i2p2/static => static}/images/net.png (100%) rename {www.i2p2/static => static}/images/net_fr.png (100%) rename {www.i2p2/static => static}/images/netdb_get_leaseset.png (100%) rename {www.i2p2/static => static}/images/netdb_get_leaseset_fr.png (100%) rename {www.i2p2/static => static}/images/netdb_get_routerinfo_1.png (100%) rename {www.i2p2/static => static}/images/netdb_get_routerinfo_1_fr.png (100%) rename {www.i2p2/static => static}/images/netdb_get_routerinfo_2.png (100%) rename {www.i2p2/static => static}/images/netdb_get_routerinfo_2_fr.png (100%) rename {www.i2p2/static => static}/images/nl.png (100%) rename {www.i2p2/static => static}/images/plan.png (100%) rename {www.i2p2/static => static}/images/protocol_stack.png (100%) rename {www.i2p2/static => static}/images/protocol_stack_fr.png (100%) rename {www.i2p2/static => static}/images/ru.png (100%) rename {www.i2p2/static => static}/images/sqbullet.png (100%) rename {www.i2p2/static => static}/images/stackoverflow_ad.png (100%) rename {www.i2p2/static => static}/images/tabletile.png (100%) rename {www.i2p2/static => static}/images/tabletile_alt.png (100%) rename {www.i2p2/static => static}/images/tabletitledark.png (100%) rename {www.i2p2/static => static}/images/tabletitlelight-tall.png (100%) rename {www.i2p2/static => static}/images/tabletitlelight.png (100%) rename {www.i2p2/static => static}/images/target.png (100%) rename {www.i2p2/static => static}/images/tunnelSending.png (100%) rename {www.i2p2/static => static}/images/tunnels.png (100%) rename {www.i2p2/static => static}/images/tunnels_fr.png (100%) rename {www.i2p2/static => static}/images/udp.png (100%) rename {www.i2p2/static => static}/images/us.png (100%) rename {www.i2p2/static => static}/images/zh.png (100%) rename {www.i2p2/static => static}/news/news.xml (100%) rename {www.i2p2/static => static}/pdf/I2CP_spec.pdf (100%) rename {www.i2p2/static => static}/pdf/I2NP_spec.pdf (100%) rename {www.i2p2/static => static}/pdf/I2P-PET-CON-2009.1.pdf (100%) rename {www.i2p2/static => static}/pdf/datastructures.pdf (100%) rename {www.i2p2/static => static}/pdf/i2p_philosophy.pdf (100%) rename {www.i2p2/static => static}/pdf/polling_http_transport.pdf (100%) rename {www.i2p2/static => static}/styles/dark.css (100%) rename {www.i2p2/static => static}/styles/light.css (100%) rename {www.i2p2/static => static}/styles/light_ar.css (100%) rename {www.i2p2/static => static}/styles/light_zh.css (100%) diff --git a/app.py b/app.py index 263c26fb..5108529b 100644 --- a/app.py +++ b/app.py @@ -14,9 +14,21 @@ MEETINGS_DIR = os.path.join(os.path.dirname(__file__), 'meetings') app = application = Flask(__name__, template_folder=TEMPLATE_DIR, static_url_path='/_static', static_folder=STATIC_DIR) app.debug = bool(os.environ.get('APP_DEBUG', 'False')) +@app.after_request +def call_after_request_callbacks(response): + for callback in getattr(g, 'after_request_callbacks', ()): + response = callback(response) + return response + +def after_this_request(f): + if not hasattr(g, 'after_request_callbacks'): + g.after_request_callbacks = [] + g.after_request_callbacks.append(f) + return f + @app.template_filter('restructuredtext') -def restructuredtext(env, value): +def restructuredtext(value): try: from docutils.core import publish_parts except ImportError: @@ -32,9 +44,24 @@ def pull_lang(endpoint, values): return g.lang=values.pop('lang', None) -#@app.url_value_preprocessor -#def fix_theme(endpoint, values): -# pass +@app.before_request +def detect_theme(): + theme = 'light' + if 'style' in request.cookies: + theme = request.cookies['style'] + if 'theme' in request.args.keys(): + theme = request.args['theme'] + if not os.path.isfile(safe_join('static/styles', '%s.css' % theme)): + theme = 'light' + g.theme = theme + @after_this_request + def remember_theme(resp): + if g.theme == 'light' and 'style' in request.cookies: + resp.delete_cookie('style') + elif g.theme != 'light': + resp.set_cookie('style', g.theme) + return resp + @app.route('/') def main_index(): diff --git a/www.i2p2/pages/meeting208.html b/meetings/208.log similarity index 83% rename from www.i2p2/pages/meeting208.html rename to meetings/208.log index 18448cd8..0d0f5157 100644 --- a/www.i2p2/pages/meeting208.html +++ b/meetings/208.log @@ -1,69 +1,3 @@ -{% extends "_layout.html" %} -{% block title %}I2P Development Meeting 208{% endblock %} -{% block content %}

I2P dev meeting, September 8, 2010

-
-

Quick recap

-
    -
  • Present: duck, eche|on, Mathiasdm, Moru (later on), superuser, whitenoise, zzz
  • -
  • - Website content progress: -

    - The website overhaul has taken 7 weeks so far. Progress is not fast enough. We need more people to join in! -

    -
  • -
  • - Website backend progress: -

    - No report yet, welterde could not attend the meeting. -

    -
  • -
  • - Location for development discussion: -

    - Most people agree that IRC is not an ideal location to post long-winded development discussions, it's too volatile, not backed up and not everyone can read it. All developers are advised to post their discussions (or a writeup) to another medium, like zzz.i2p, mailing lists or forum.i2p. - Opinions on the alternatives are a bit more divided. zzz.i2p is currently the location for most discussions, but a number of people also like the idea of a mailing list. No decision has been made on which alternative would be best suited. -

    -
  • -
  • - Task appointing and disagreements: -

    - Currently, people appoint themselves to a task by editing the team.html page (this requires monotone access, so there is at least a level of trust implied before being allowed to appoint yourself). - However, what happens if people disagree? -

    -

    - The discussion pointed out that when disagreeing, a discussion should be held (for example on zzz.i2p). If that doesn't resolve the issue, a vote is a possibility, or the Project Manager (zzz) or repository maintainers (welterde, eche|on) can make a decision. -

    -
  • -
  • - Status updates: -

    - Status updates will be started next weekend. They will mostly consist of a 'what work did you do last week?' and 'what work will you do next week?'. -

    -
  • -
  • - Development conferences: -

    - Nothing big was mentioned. -

    -
  • -
  • - Promoting the usage of the bittorrent protocol inside I2P: pros and cons: -

    - Filesharing in general and bittorrent more specifically can be either good or bad for I2P. - On one hand, they could give I2P a bad reputation. On the other hand, they could boost I2P popularity. - What to do? -

    -

    - Filesharing on I2P will not be promoted specifically. Instead, general usability should be looked at and improved. - If people decide to use filesharing on I2P (or any other service, like e-mail or browsing), it should become easier as a result of improving the usability. -

    -
  • -
-
-
-

Full IRC Log

-
-{% filter escape %}
 22:02 <@Mathiasdm> okay
 22:02 <@Mathiasdm> meeting time
 22:03 <@Mathiasdm> 0) Hello
@@ -327,8 +261,3 @@
 23:24 < eche|on> COOKIES!
 23:25 <@Mathiasdm> don't eat all of them
 23:25  * Mathiasdm pokes eche|on 
-{% endfilter %}
-{# TODO: pygments #}
-
-
-{% endblock %} diff --git a/www.i2p2/pages/_layout.html b/pages/global/layout.html similarity index 59% rename from www.i2p2/pages/_layout.html rename to pages/global/layout.html index 26fa7599..4889c68a 100644 --- a/www.i2p2/pages/_layout.html +++ b/pages/global/layout.html @@ -1,24 +1,24 @@ -{% include "_urlify" -%} +{% include "global/urlify" -%} - {% filter capture('title') %}{% block title %}{% endblock %}{% endfilter %} - I2P + {% block title %}{% endblock %} - I2P - - + + -

{{ title }}

+

{{ self.title() }}

{% block content %}{% endblock %} diff --git a/www.i2p2/pages/_menu.html b/pages/global/menu.html similarity index 95% rename from www.i2p2/pages/_menu.html rename to pages/global/menu.html index 046e00a2..86adfcae 100644 --- a/www.i2p2/pages/_menu.html +++ b/pages/global/menu.html @@ -1,20 +1,20 @@
-English -Deutsch -Castellano -中文 +English +Deutsch +Castellano +中文
-Français -Italiano -Nederlands -Русский +Français +Italiano +Nederlands +Русский
-Čeština -العربية +Čeština +العربية
Dark  -Light +Light
{% if lang == "de" %} diff --git a/www.i2p2/pages/_urlify b/pages/global/urlify similarity index 79% rename from www.i2p2/pages/_urlify rename to pages/global/urlify index a9bdbf3d..59ffe02c 100644 --- a/www.i2p2/pages/_urlify +++ b/pages/global/urlify @@ -1,4 +1,4 @@ -{% macro urlify url, title, suffix %} +{% macro urlify(url, title, suffix) %} {% if static %} {{title}} {% else %} diff --git a/www.i2p2/pages/meetings.html b/pages/meetings/index.html similarity index 99% rename from www.i2p2/pages/meetings.html rename to pages/meetings/index.html index 9e65b231..b8effc6b 100644 --- a/www.i2p2/pages/meetings.html +++ b/pages/meetings/index.html @@ -1,4 +1,4 @@ -{% extends "_layout.html" %} +{% extends "global/layout.html" %} {% block title %}Meetings{% endblock %} {% block content %}

Logs of past I2P meetings

diff --git a/www.i2p2/static/favicon.ico b/static/favicon.ico similarity index 100% rename from www.i2p2/static/favicon.ico rename to static/favicon.ico diff --git a/www.i2p2/static/images/I2PTunnel-streamr.png b/static/images/I2PTunnel-streamr.png similarity index 100% rename from www.i2p2/static/images/I2PTunnel-streamr.png rename to static/images/I2PTunnel-streamr.png diff --git a/www.i2p2/static/images/add-key-terminal.png b/static/images/add-key-terminal.png similarity index 100% rename from www.i2p2/static/images/add-key-terminal.png rename to static/images/add-key-terminal.png diff --git a/www.i2p2/static/images/bandwidth2009.png b/static/images/bandwidth2009.png similarity index 100% rename from www.i2p2/static/images/bandwidth2009.png rename to static/images/bandwidth2009.png diff --git a/www.i2p2/static/images/cz.png b/static/images/cz.png similarity index 100% rename from www.i2p2/static/images/cz.png rename to static/images/cz.png diff --git a/www.i2p2/static/images/dark.png b/static/images/dark.png similarity index 100% rename from www.i2p2/static/images/dark.png rename to static/images/dark.png diff --git a/www.i2p2/static/images/darkbluebg.png b/static/images/darkbluebg.png similarity index 100% rename from www.i2p2/static/images/darkbluebg.png rename to static/images/darkbluebg.png diff --git a/www.i2p2/static/images/darkbluetile.png b/static/images/darkbluetile.png similarity index 100% rename from www.i2p2/static/images/darkbluetile.png rename to static/images/darkbluetile.png diff --git a/www.i2p2/static/images/darkerbluetile.png b/static/images/darkerbluetile.png similarity index 100% rename from www.i2p2/static/images/darkerbluetile.png rename to static/images/darkerbluetile.png diff --git a/www.i2p2/static/images/de.png b/static/images/de.png similarity index 100% rename from www.i2p2/static/images/de.png rename to static/images/de.png diff --git a/www.i2p2/static/images/download.png b/static/images/download.png similarity index 100% rename from www.i2p2/static/images/download.png rename to static/images/download.png diff --git a/www.i2p2/static/images/download_dark.png b/static/images/download_dark.png similarity index 100% rename from www.i2p2/static/images/download_dark.png rename to static/images/download_dark.png diff --git a/www.i2p2/static/images/endToEndEncryption.png b/static/images/endToEndEncryption.png similarity index 100% rename from www.i2p2/static/images/endToEndEncryption.png rename to static/images/endToEndEncryption.png diff --git a/www.i2p2/static/images/endToEndEncryption_fr.png b/static/images/endToEndEncryption_fr.png similarity index 100% rename from www.i2p2/static/images/endToEndEncryption_fr.png rename to static/images/endToEndEncryption_fr.png diff --git a/www.i2p2/static/images/endToEndEncryption_zh.png b/static/images/endToEndEncryption_zh.png similarity index 100% rename from www.i2p2/static/images/endToEndEncryption_zh.png rename to static/images/endToEndEncryption_zh.png diff --git a/www.i2p2/static/images/es.png b/static/images/es.png similarity index 100% rename from www.i2p2/static/images/es.png rename to static/images/es.png diff --git a/www.i2p2/static/images/eu.png b/static/images/eu.png similarity index 100% rename from www.i2p2/static/images/eu.png rename to static/images/eu.png diff --git a/www.i2p2/static/images/firefox.options.jpg b/static/images/firefox.options.jpg similarity index 100% rename from www.i2p2/static/images/firefox.options.jpg rename to static/images/firefox.options.jpg diff --git a/www.i2p2/static/images/firefox.options_fr.png b/static/images/firefox.options_fr.png similarity index 100% rename from www.i2p2/static/images/firefox.options_fr.png rename to static/images/firefox.options_fr.png diff --git a/www.i2p2/static/images/firefox.proxyports.jpg b/static/images/firefox.proxyports.jpg similarity index 100% rename from www.i2p2/static/images/firefox.proxyports.jpg rename to static/images/firefox.proxyports.jpg diff --git a/www.i2p2/static/images/firefox.proxyports_fr.png b/static/images/firefox.proxyports_fr.png similarity index 100% rename from www.i2p2/static/images/firefox.proxyports_fr.png rename to static/images/firefox.proxyports_fr.png diff --git a/www.i2p2/static/images/fr.png b/static/images/fr.png similarity index 100% rename from www.i2p2/static/images/fr.png rename to static/images/fr.png diff --git a/www.i2p2/static/images/garliccloves.png b/static/images/garliccloves.png similarity index 100% rename from www.i2p2/static/images/garliccloves.png rename to static/images/garliccloves.png diff --git a/www.i2p2/static/images/help.png b/static/images/help.png similarity index 100% rename from www.i2p2/static/images/help.png rename to static/images/help.png diff --git a/www.i2p2/static/images/help_dark.png b/static/images/help_dark.png similarity index 100% rename from www.i2p2/static/images/help_dark.png rename to static/images/help_dark.png diff --git a/www.i2p2/static/images/i2plogo.png b/static/images/i2plogo.png similarity index 100% rename from www.i2p2/static/images/i2plogo.png rename to static/images/i2plogo.png diff --git a/www.i2p2/static/images/i2ptunnel_peertopeer.png b/static/images/i2ptunnel_peertopeer.png similarity index 100% rename from www.i2p2/static/images/i2ptunnel_peertopeer.png rename to static/images/i2ptunnel_peertopeer.png diff --git a/www.i2p2/static/images/i2ptunnel_serverclient.png b/static/images/i2ptunnel_serverclient.png similarity index 100% rename from www.i2p2/static/images/i2ptunnel_serverclient.png rename to static/images/i2ptunnel_serverclient.png diff --git a/www.i2p2/static/images/i2pvstor_zh.png b/static/images/i2pvstor_zh.png similarity index 100% rename from www.i2p2/static/images/i2pvstor_zh.png rename to static/images/i2pvstor_zh.png diff --git a/www.i2p2/static/images/ie.options.jpg b/static/images/ie.options.jpg similarity index 100% rename from www.i2p2/static/images/ie.options.jpg rename to static/images/ie.options.jpg diff --git a/www.i2p2/static/images/ie.options_fr.png b/static/images/ie.options_fr.png similarity index 100% rename from www.i2p2/static/images/ie.options_fr.png rename to static/images/ie.options_fr.png diff --git a/www.i2p2/static/images/ie.proxyports.jpg b/static/images/ie.proxyports.jpg similarity index 100% rename from www.i2p2/static/images/ie.proxyports.jpg rename to static/images/ie.proxyports.jpg diff --git a/www.i2p2/static/images/ie.proxyports_fr.png b/static/images/ie.proxyports_fr.png similarity index 100% rename from www.i2p2/static/images/ie.proxyports_fr.png rename to static/images/ie.proxyports_fr.png diff --git a/www.i2p2/static/images/info.png b/static/images/info.png similarity index 100% rename from www.i2p2/static/images/info.png rename to static/images/info.png diff --git a/www.i2p2/static/images/info_dark.png b/static/images/info_dark.png similarity index 100% rename from www.i2p2/static/images/info_dark.png rename to static/images/info_dark.png diff --git a/www.i2p2/static/images/it.png b/static/images/it.png similarity index 100% rename from www.i2p2/static/images/it.png rename to static/images/it.png diff --git a/www.i2p2/static/images/itoopie.png b/static/images/itoopie.png similarity index 100% rename from www.i2p2/static/images/itoopie.png rename to static/images/itoopie.png diff --git a/www.i2p2/static/images/konqueror.options.jpg b/static/images/konqueror.options.jpg similarity index 100% rename from www.i2p2/static/images/konqueror.options.jpg rename to static/images/konqueror.options.jpg diff --git a/www.i2p2/static/images/konqueror.options_fr.jpg b/static/images/konqueror.options_fr.jpg similarity index 100% rename from www.i2p2/static/images/konqueror.options_fr.jpg rename to static/images/konqueror.options_fr.jpg diff --git a/www.i2p2/static/images/konqueror.proxyports.jpg b/static/images/konqueror.proxyports.jpg similarity index 100% rename from www.i2p2/static/images/konqueror.proxyports.jpg rename to static/images/konqueror.proxyports.jpg diff --git a/www.i2p2/static/images/konqueror.proxyports_fr.jpg b/static/images/konqueror.proxyports_fr.jpg similarity index 100% rename from www.i2p2/static/images/konqueror.proxyports_fr.jpg rename to static/images/konqueror.proxyports_fr.jpg diff --git a/www.i2p2/static/images/lang_ar.png b/static/images/lang_ar.png similarity index 100% rename from www.i2p2/static/images/lang_ar.png rename to static/images/lang_ar.png diff --git a/www.i2p2/static/images/light.png b/static/images/light.png similarity index 100% rename from www.i2p2/static/images/light.png rename to static/images/light.png diff --git a/www.i2p2/static/images/lightbluetile.png b/static/images/lightbluetile.png similarity index 100% rename from www.i2p2/static/images/lightbluetile.png rename to static/images/lightbluetile.png diff --git a/www.i2p2/static/images/link.png b/static/images/link.png similarity index 100% rename from www.i2p2/static/images/link.png rename to static/images/link.png diff --git a/www.i2p2/static/images/link_dark.png b/static/images/link_dark.png similarity index 100% rename from www.i2p2/static/images/link_dark.png rename to static/images/link_dark.png diff --git a/www.i2p2/static/images/logo07c.jpg b/static/images/logo07c.jpg similarity index 100% rename from www.i2p2/static/images/logo07c.jpg rename to static/images/logo07c.jpg diff --git a/www.i2p2/static/images/net.png b/static/images/net.png similarity index 100% rename from www.i2p2/static/images/net.png rename to static/images/net.png diff --git a/www.i2p2/static/images/net_fr.png b/static/images/net_fr.png similarity index 100% rename from www.i2p2/static/images/net_fr.png rename to static/images/net_fr.png diff --git a/www.i2p2/static/images/netdb_get_leaseset.png b/static/images/netdb_get_leaseset.png similarity index 100% rename from www.i2p2/static/images/netdb_get_leaseset.png rename to static/images/netdb_get_leaseset.png diff --git a/www.i2p2/static/images/netdb_get_leaseset_fr.png b/static/images/netdb_get_leaseset_fr.png similarity index 100% rename from www.i2p2/static/images/netdb_get_leaseset_fr.png rename to static/images/netdb_get_leaseset_fr.png diff --git a/www.i2p2/static/images/netdb_get_routerinfo_1.png b/static/images/netdb_get_routerinfo_1.png similarity index 100% rename from www.i2p2/static/images/netdb_get_routerinfo_1.png rename to static/images/netdb_get_routerinfo_1.png diff --git a/www.i2p2/static/images/netdb_get_routerinfo_1_fr.png b/static/images/netdb_get_routerinfo_1_fr.png similarity index 100% rename from www.i2p2/static/images/netdb_get_routerinfo_1_fr.png rename to static/images/netdb_get_routerinfo_1_fr.png diff --git a/www.i2p2/static/images/netdb_get_routerinfo_2.png b/static/images/netdb_get_routerinfo_2.png similarity index 100% rename from www.i2p2/static/images/netdb_get_routerinfo_2.png rename to static/images/netdb_get_routerinfo_2.png diff --git a/www.i2p2/static/images/netdb_get_routerinfo_2_fr.png b/static/images/netdb_get_routerinfo_2_fr.png similarity index 100% rename from www.i2p2/static/images/netdb_get_routerinfo_2_fr.png rename to static/images/netdb_get_routerinfo_2_fr.png diff --git a/www.i2p2/static/images/nl.png b/static/images/nl.png similarity index 100% rename from www.i2p2/static/images/nl.png rename to static/images/nl.png diff --git a/www.i2p2/static/images/plan.png b/static/images/plan.png similarity index 100% rename from www.i2p2/static/images/plan.png rename to static/images/plan.png diff --git a/www.i2p2/static/images/protocol_stack.png b/static/images/protocol_stack.png similarity index 100% rename from www.i2p2/static/images/protocol_stack.png rename to static/images/protocol_stack.png diff --git a/www.i2p2/static/images/protocol_stack_fr.png b/static/images/protocol_stack_fr.png similarity index 100% rename from www.i2p2/static/images/protocol_stack_fr.png rename to static/images/protocol_stack_fr.png diff --git a/www.i2p2/static/images/ru.png b/static/images/ru.png similarity index 100% rename from www.i2p2/static/images/ru.png rename to static/images/ru.png diff --git a/www.i2p2/static/images/sqbullet.png b/static/images/sqbullet.png similarity index 100% rename from www.i2p2/static/images/sqbullet.png rename to static/images/sqbullet.png diff --git a/www.i2p2/static/images/stackoverflow_ad.png b/static/images/stackoverflow_ad.png similarity index 100% rename from www.i2p2/static/images/stackoverflow_ad.png rename to static/images/stackoverflow_ad.png diff --git a/www.i2p2/static/images/tabletile.png b/static/images/tabletile.png similarity index 100% rename from www.i2p2/static/images/tabletile.png rename to static/images/tabletile.png diff --git a/www.i2p2/static/images/tabletile_alt.png b/static/images/tabletile_alt.png similarity index 100% rename from www.i2p2/static/images/tabletile_alt.png rename to static/images/tabletile_alt.png diff --git a/www.i2p2/static/images/tabletitledark.png b/static/images/tabletitledark.png similarity index 100% rename from www.i2p2/static/images/tabletitledark.png rename to static/images/tabletitledark.png diff --git a/www.i2p2/static/images/tabletitlelight-tall.png b/static/images/tabletitlelight-tall.png similarity index 100% rename from www.i2p2/static/images/tabletitlelight-tall.png rename to static/images/tabletitlelight-tall.png diff --git a/www.i2p2/static/images/tabletitlelight.png b/static/images/tabletitlelight.png similarity index 100% rename from www.i2p2/static/images/tabletitlelight.png rename to static/images/tabletitlelight.png diff --git a/www.i2p2/static/images/target.png b/static/images/target.png similarity index 100% rename from www.i2p2/static/images/target.png rename to static/images/target.png diff --git a/www.i2p2/static/images/tunnelSending.png b/static/images/tunnelSending.png similarity index 100% rename from www.i2p2/static/images/tunnelSending.png rename to static/images/tunnelSending.png diff --git a/www.i2p2/static/images/tunnels.png b/static/images/tunnels.png similarity index 100% rename from www.i2p2/static/images/tunnels.png rename to static/images/tunnels.png diff --git a/www.i2p2/static/images/tunnels_fr.png b/static/images/tunnels_fr.png similarity index 100% rename from www.i2p2/static/images/tunnels_fr.png rename to static/images/tunnels_fr.png diff --git a/www.i2p2/static/images/udp.png b/static/images/udp.png similarity index 100% rename from www.i2p2/static/images/udp.png rename to static/images/udp.png diff --git a/www.i2p2/static/images/us.png b/static/images/us.png similarity index 100% rename from www.i2p2/static/images/us.png rename to static/images/us.png diff --git a/www.i2p2/static/images/zh.png b/static/images/zh.png similarity index 100% rename from www.i2p2/static/images/zh.png rename to static/images/zh.png diff --git a/www.i2p2/static/news/news.xml b/static/news/news.xml similarity index 100% rename from www.i2p2/static/news/news.xml rename to static/news/news.xml diff --git a/www.i2p2/static/pdf/I2CP_spec.pdf b/static/pdf/I2CP_spec.pdf similarity index 100% rename from www.i2p2/static/pdf/I2CP_spec.pdf rename to static/pdf/I2CP_spec.pdf diff --git a/www.i2p2/static/pdf/I2NP_spec.pdf b/static/pdf/I2NP_spec.pdf similarity index 100% rename from www.i2p2/static/pdf/I2NP_spec.pdf rename to static/pdf/I2NP_spec.pdf diff --git a/www.i2p2/static/pdf/I2P-PET-CON-2009.1.pdf b/static/pdf/I2P-PET-CON-2009.1.pdf similarity index 100% rename from www.i2p2/static/pdf/I2P-PET-CON-2009.1.pdf rename to static/pdf/I2P-PET-CON-2009.1.pdf diff --git a/www.i2p2/static/pdf/datastructures.pdf b/static/pdf/datastructures.pdf similarity index 100% rename from www.i2p2/static/pdf/datastructures.pdf rename to static/pdf/datastructures.pdf diff --git a/www.i2p2/static/pdf/i2p_philosophy.pdf b/static/pdf/i2p_philosophy.pdf similarity index 100% rename from www.i2p2/static/pdf/i2p_philosophy.pdf rename to static/pdf/i2p_philosophy.pdf diff --git a/www.i2p2/static/pdf/polling_http_transport.pdf b/static/pdf/polling_http_transport.pdf similarity index 100% rename from www.i2p2/static/pdf/polling_http_transport.pdf rename to static/pdf/polling_http_transport.pdf diff --git a/www.i2p2/static/styles/dark.css b/static/styles/dark.css similarity index 100% rename from www.i2p2/static/styles/dark.css rename to static/styles/dark.css diff --git a/www.i2p2/static/styles/light.css b/static/styles/light.css similarity index 100% rename from www.i2p2/static/styles/light.css rename to static/styles/light.css diff --git a/www.i2p2/static/styles/light_ar.css b/static/styles/light_ar.css similarity index 100% rename from www.i2p2/static/styles/light_ar.css rename to static/styles/light_ar.css diff --git a/www.i2p2/static/styles/light_zh.css b/static/styles/light_zh.css similarity index 100% rename from www.i2p2/static/styles/light_zh.css rename to static/styles/light_zh.css From b26bbd81d98b93f91282274c4e2d89a9168d18c9 Mon Sep 17 00:00:00 2001 From: dev Date: Sun, 3 Jun 2012 01:06:09 +0000 Subject: [PATCH 006/650] 1/2 of blog implementation done! --- app.py | 94 ++++++++++++++++--- .../2006/10/10/status.html | 9 +- blog/2006/10/10/status.rst | 6 ++ .../downloads/list.html | 2 +- pages/global/error_404.html | 21 +++++ pages/global/urlify | 2 + {www.i2p2/pages => pages/site}/index.html | 5 +- www.i2p2/pages/not_found.html | 5 - www.i2p2/pages/not_found_de.html | 5 - www.i2p2/pages/not_found_zh.html | 7 -- 10 files changed, 115 insertions(+), 41 deletions(-) rename www.i2p2/pages/status-2006-10-10.html => blog/2006/10/10/status.html (94%) create mode 100644 blog/2006/10/10/status.rst rename www.i2p2/pages/download.html => pages/downloads/list.html (99%) create mode 100644 pages/global/error_404.html rename {www.i2p2/pages => pages/site}/index.html (94%) delete mode 100644 www.i2p2/pages/not_found.html delete mode 100644 www.i2p2/pages/not_found_de.html delete mode 100644 www.i2p2/pages/not_found_zh.html diff --git a/app.py b/app.py index 5108529b..866b6308 100644 --- a/app.py +++ b/app.py @@ -1,5 +1,6 @@ from jinja2 import Environment, FileSystemLoader, environmentfilter from flask import Flask, request, session, g, redirect, url_for, abort, render_template, flash, send_from_directory, safe_join +from docutils.core import publish_parts import os.path import os import fileinput @@ -9,6 +10,7 @@ import codecs TEMPLATE_DIR = os.path.join(os.path.dirname(__file__), 'pages') STATIC_DIR = os.path.join(os.path.dirname(__file__), 'static') +BLOG_DIR = os.path.join(os.path.dirname(__file__), 'blog') MEETINGS_DIR = os.path.join(os.path.dirname(__file__), 'meetings') app = application = Flask(__name__, template_folder=TEMPLATE_DIR, static_url_path='/_static', static_folder=STATIC_DIR) @@ -29,11 +31,6 @@ def after_this_request(f): @app.template_filter('restructuredtext') def restructuredtext(value): - try: - from docutils.core import publish_parts - except ImportError: - print u"Install docutils!!11" - raise parts = publish_parts(source=value, writer_name="html") return parts['html_body'] @@ -44,6 +41,15 @@ def pull_lang(endpoint, values): return g.lang=values.pop('lang', None) +@app.url_defaults +def set_lang(endpoint, values): + if not values: + return + if 'lang' in values: + return + if hasattr(g, 'lang'): + values['lang'] = g.lang + @app.before_request def detect_theme(): theme = 'light' @@ -63,15 +69,30 @@ def detect_theme(): return resp +@app.errorhandler(404) +def page_not_found(error): + return render_template('global/error_404.html'), 404 + @app.route('/') def main_index(): return redirect(url_for('site_show', lang='en')) + + @app.route('//site/') @app.route('//site/') -def site_show(page=''): - # TODO: set content_type - pass +def site_show(page='index'): + if page.endswith('.html'): + return redirect(url_for('site_show', page=page[:-5])) + name = 'site/%s.html' % page + page_file = safe_join(TEMPLATE_DIR, name) + + # bah! those damn users all the time! + if not os.path.exists(page_file): + abort(404) + + # hah! + return render_template(name, page=page) @app.route('//meetings/') def meetings_index(): @@ -131,8 +152,8 @@ def meetings_show_rst(id): @app.route('//download') def downloads_list(): - # TODO: implement - pass + # TODO: read mirror list or list of available files + return render_template('downloads/list.html') @app.route('//download/') def downloads_select(file): @@ -145,6 +166,28 @@ def downloads_redirect(protocol, file, mirror=None): # TODO: implement pass + + +def render_blog_entry(slug): + """ + Render the blog entry + TODO: + - caching + - move to own file + """ + # check if that file actually exists + path = safe_join(BLOG_DIR, slug + ".rst") + if not os.path.exists(path): + abort(404) + + # read file + with codecs.open(path, encoding='utf-8') as fd: + content = fd.read() + + return publish_parts(source=content, source_path=BLOG_DIR, writer_name="html") + + + @app.route('//blog/') @app.route('//blog/page/') def blog_index(page=0): @@ -153,8 +196,15 @@ def blog_index(page=0): @app.route('//blog/entry/') def blog_entry(slug): - # TODO: implement - pass + # try to render that blog entry.. throws 404 if it does not exist + parts = render_blog_entry(slug) + + if parts: + # now just pass to simple template file and we are done + return render_template('blog/entry.html', parts=parts, title=parts['title'], body=parts['fragment']) + else: + abort(404) + @app.route('/feed/blog/rss') def blog_rss(): @@ -181,8 +231,24 @@ def legacy_meeting(id): def legacy_status(year, month, day): return redirect(url_for('blog_entry', lang='en', slug=('%s/%s/%s/status' % (year, month, day)))) +LEGACY_MAP={ + 'download': 'downloads_list' +} +@app.route('/_') +@app.route('/_.html') @app.route('/') +@app.route('/.html') def legacy_show(f): - # TODO: redirect to correct new url - pass + lang = 'en' + if hasattr(g, 'lang') and g.lang: + lang = g.lang + if f in LEGACY_MAP: + return redirect(url_for(LEGACY_MAP[f], lang=lang)) + else: + return redirect(url_for('site_show', lang=lang, page=f)) + + + +if __name__ == '__main__': + app.run(debug=True) diff --git a/www.i2p2/pages/status-2006-10-10.html b/blog/2006/10/10/status.html similarity index 94% rename from www.i2p2/pages/status-2006-10-10.html rename to blog/2006/10/10/status.html index 6578b642..a3c787e3 100644 --- a/www.i2p2/pages/status-2006-10-10.html +++ b/blog/2006/10/10/status.html @@ -1,7 +1,5 @@ -{% extends "_layout.html" %} -{% block title %}I2P Status Notes for 2006-10-10{% endblock %} -{% block content %}

I2P Status Notes for 2006-10-10

-
-----BEGIN PGP SIGNED MESSAGE-----
+
+-----BEGIN PGP SIGNED MESSAGE-----
 Hash: SHA1
 
 Hi y'all, brief status notes this week
@@ -79,7 +77,4 @@ iD8DBQFFK6hgzgi8JTPcjUkRAuG2AJ46vK/13GIEngzQe05KRuEP2ZYvRQCeJB3j
 VmEzybBbtZSpSrFcU4qdvks=
 =QlDy
 -----END PGP SIGNATURE-----
-
-
 
-{% endblock %} diff --git a/blog/2006/10/10/status.rst b/blog/2006/10/10/status.rst new file mode 100644 index 00000000..b77847b7 --- /dev/null +++ b/blog/2006/10/10/status.rst @@ -0,0 +1,6 @@ +=============================== +I2P STATUS NOTES FOR 2006-10-10 +=============================== + +.. raw:: html + :file: blog/2006/10/10/status.html diff --git a/www.i2p2/pages/download.html b/pages/downloads/list.html similarity index 99% rename from www.i2p2/pages/download.html rename to pages/downloads/list.html index 7f5f9201..f7e5667f 100644 --- a/www.i2p2/pages/download.html +++ b/pages/downloads/list.html @@ -1,4 +1,4 @@ -{% extends "_layout.html" %} +{% extends "global/layout.html" %} {% block title %}Download{% endblock %} {% block content %}

Download I2P

diff --git a/pages/global/error_404.html b/pages/global/error_404.html new file mode 100644 index 00000000..d8563c03 --- /dev/null +++ b/pages/global/error_404.html @@ -0,0 +1,21 @@ +{% extends "global/layout.html" %} +{% block title -%} +{% if g.lang == 'de' %} +Nicht gefunden +{% elif g.lang == 'zh' %} +未找到 +{% else %} +Not found +{% endif %} +{%- endblock %} + +{% block content %} +{% if g.lang == 'de' %} +Yep... die Information nach der du suchst, nennt sich anders, existiert nicht oder wurde entfernt. +{% elif g.lang == 'zh' %} +您搜索的页面或资源的名称不正确或不存在或已被删除。 +{% else %} +Yep... the resource, you were searching for, is named differently, doesn't exist or was removed. +{% endif %} + +{% endblock %} diff --git a/pages/global/urlify b/pages/global/urlify index 59ffe02c..e8c9cd78 100644 --- a/pages/global/urlify +++ b/pages/global/urlify @@ -1,7 +1,9 @@ {% macro urlify(url, title, suffix) %} + {% autoescape false %} {% if static %} {{title}} {% else %} {{title}} {% endif %} + {% endautoescape %} {% endmacro %} \ No newline at end of file diff --git a/www.i2p2/pages/index.html b/pages/site/index.html similarity index 94% rename from www.i2p2/pages/index.html rename to pages/site/index.html index 4c6debbf..c3df28ee 100644 --- a/www.i2p2/pages/index.html +++ b/pages/site/index.html @@ -1,10 +1,11 @@ -{% extends "_layout.html" %} +{% extends "global/layout.html" %} +{% from "global/urlify" import urlify as urlify %} {% block title %}I2P Anonymous Network{% endblock %} {% block content %} - + diff --git a/www.i2p2/pages/bounty_syndie2012.html b/i2p2www/pages/site/volunteer/bounties/syndie2012.html similarity index 96% rename from www.i2p2/pages/bounty_syndie2012.html rename to i2p2www/pages/site/volunteer/bounties/syndie2012.html index c9e0e807..5c3f0980 100644 --- a/www.i2p2/pages/bounty_syndie2012.html +++ b/i2p2www/pages/site/volunteer/bounties/syndie2012.html @@ -1,4 +1,4 @@ -{% extends "_layout.html" %} +{% extends "global/layout.html" %} {% block title %}Syndie development{% endblock %} {% block content %} diff --git a/www.i2p2/pages/bounty_syndie2012_de.html b/www.i2p2/pages/translations/bounty_syndie2012_de.html similarity index 100% rename from www.i2p2/pages/bounty_syndie2012_de.html rename to www.i2p2/pages/translations/bounty_syndie2012_de.html From 8b608ea750cefc13672bf5c4ec7e41518769a86c Mon Sep 17 00:00:00 2001 From: str4d Date: Fri, 14 Dec 2012 05:18:40 +0000 Subject: [PATCH 157/650] Prepare meetings_index() for pagination --- i2p2www/__init__.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/i2p2www/__init__.py b/i2p2www/__init__.py index 82dac44f..517844f6 100644 --- a/i2p2www/__init__.py +++ b/i2p2www/__init__.py @@ -265,7 +265,8 @@ def render_meeting_rst(id): # Meeting index @app.route('//meetings/') -def meetings_index(): +@app.route('//meetings/page/') +def meetings_index(page=0): meetings = get_meetings() return render_template('meetings/index.html', meetings=meetings) From 3f19792df777cce555236a299b0796d68e163e0a Mon Sep 17 00:00:00 2001 From: str4d Date: Fri, 14 Dec 2012 05:27:03 +0000 Subject: [PATCH 158/650] Use Werkzeug route level defaults to ensure unique urls --- i2p2www/__init__.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/i2p2www/__init__.py b/i2p2www/__init__.py index 517844f6..74f924fb 100644 --- a/i2p2www/__init__.py +++ b/i2p2www/__init__.py @@ -165,9 +165,9 @@ def main_index(): return redirect(url_for('site_show', lang='en')) # Site pages -@app.route('//site/') +@app.route('//site/', defaults={'page': 'index'}) @app.route('//site/') -def site_show(page='index'): +def site_show(page): if page.endswith('.html'): return redirect(url_for('site_show', page=page[:-5])) name = 'site/%s.html' % page @@ -264,9 +264,9 @@ def render_meeting_rst(id): # Meeting handlers # Meeting index -@app.route('//meetings/') +@app.route('//meetings/', defaults={'page': 1}) @app.route('//meetings/page/') -def meetings_index(page=0): +def meetings_index(page): meetings = get_meetings() return render_template('meetings/index.html', meetings=meetings) @@ -384,9 +384,9 @@ def downloads_select(file): obj.append(a) return render_template('downloads/select.html', mirrors=obj, file=file) -@app.route('/download//any/') +@app.route('/download//any/', defaults={'mirror': None}) @app.route('/download///') -def downloads_redirect(protocol, file, mirror=None): +def downloads_redirect(protocol, file, mirror): mirrors=read_mirrors() if not protocol in mirrors: abort(404) @@ -473,9 +473,9 @@ def render_blog_entry(slug): ############### # Blog handlers -@app.route('//blog/') +@app.route('//blog/', defaults={'page': 1}) @app.route('//blog/page/') -def blog_index(page=0): +def blog_index(page): entries = get_blog_entries() return render_template('blog/index.html', entries=entries) From fe76f20f0c4cdd880ca82aa868bb76d43500c237 Mon Sep 17 00:00:00 2001 From: str4d Date: Fri, 14 Dec 2012 06:26:21 +0000 Subject: [PATCH 159/650] Implemented pagination for meetings and blog entries --- i2p2www/__init__.py | 41 +++++++++++++++++++++++++------ i2p2www/helpers.py | 32 ++++++++++++++++++++++++ i2p2www/pages/blog/index.html | 2 ++ i2p2www/pages/global/macros | 26 ++++++++++++++++++++ i2p2www/pages/meetings/index.html | 2 ++ 5 files changed, 96 insertions(+), 7 deletions(-) create mode 100644 i2p2www/helpers.py diff --git a/i2p2www/__init__.py b/i2p2www/__init__.py index 74f924fb..c8d98b11 100644 --- a/i2p2www/__init__.py +++ b/i2p2www/__init__.py @@ -14,6 +14,7 @@ try: except ImportError: import simplejson as json +from helpers import Pagination TEMPLATE_DIR = os.path.join(os.path.dirname(__file__), 'pages') STATIC_DIR = os.path.join(os.path.dirname(__file__), 'static') @@ -21,6 +22,9 @@ STATIC_DIR = os.path.join(os.path.dirname(__file__), 'static') BLOG_DIR = os.path.join(os.path.dirname(__file__), 'blog') MEETINGS_DIR = os.path.join(os.path.dirname(__file__), 'meetings') +BLOG_ENTRIES_PER_PAGE = 20 +MEETINGS_PER_PAGE = 20 + MIRRORS_FILE = os.path.join(TEMPLATE_DIR, 'downloads/mirrors') app = application = Flask('i2p2www', template_folder=TEMPLATE_DIR, static_url_path='/_static', static_folder=STATIC_DIR) @@ -141,7 +145,15 @@ def utility_processor(): except KeyError: # The I2P site has no known clearnet address, so use an inproxy return value + '.to' - return dict(i2pconv=convert_url_to_clearnet) + + # Convert a paginated URL to that of another page + def url_for_other_page(page): + args = request.view_args.copy() + args['page'] = page + return url_for(request.endpoint, **args) + + return dict(i2pconv=convert_url_to_clearnet, + url_for_other_page=url_for_other_page) ################ @@ -156,6 +168,15 @@ def server_error(error): return render_template('global/error_500.html'), 500 +######################## +# General helper methods + +def get_for_page(items, page, per_page): + from_item = (page-1)*per_page + to_item = page*per_page + return items[from_item:to_item] + + ####################### # General page handlers @@ -267,9 +288,12 @@ def render_meeting_rst(id): @app.route('//meetings/', defaults={'page': 1}) @app.route('//meetings/page/') def meetings_index(page): - meetings = get_meetings() - - return render_template('meetings/index.html', meetings=meetings) + all_meetings = get_meetings() + meetings = get_for_page(all_meetings, page, MEETINGS_PER_PAGE) + if not meetings and page != 1: + abort(404) + pagination = Pagination(page, MEETINGS_PER_PAGE, len(all_meetings)) + return render_template('meetings/index.html', pagination=pagination, meetings=meetings) # Renderer for specific meetings @app.route('//meetings/') @@ -476,9 +500,12 @@ def render_blog_entry(slug): @app.route('//blog/', defaults={'page': 1}) @app.route('//blog/page/') def blog_index(page): - entries = get_blog_entries() - - return render_template('blog/index.html', entries=entries) + all_entries = get_blog_entries() + entries = get_for_page(all_entries, page, BLOG_ENTRIES_PER_PAGE) + if not entries and page != 1: + abort(404) + pagination = Pagination(page, BLOG_ENTRIES_PER_PAGE, len(all_entries)) + return render_template('blog/index.html', pagination=pagination, entries=entries) @app.route('//blog/entry/') def blog_entry(slug): diff --git a/i2p2www/helpers.py b/i2p2www/helpers.py new file mode 100644 index 00000000..bbd8a656 --- /dev/null +++ b/i2p2www/helpers.py @@ -0,0 +1,32 @@ +from math import ceil + +class Pagination(object): + def __init__(self, page, per_page, total_count): + self.page = page + self.per_page = per_page + self.total_count = total_count + + @property + def pages(self): + return int(ceil(self.total_count / float(self.per_page))) + + @property + def has_prev(self): + return self.page > 1 + + @property + def has_next(self): + return self.page < self.pages + + def iter_pages(self, left_edge=2, left_current=2, + right_current=5, right_edge=2): + last = 0 + for num in xrange(1, self.pages + 1): + if num <= left_edge or \ + (num > self.page - left_current - 1 and \ + num < self.page + right_current) or \ + num > self.pages - right_edge: + if last + 1 != num: + yield None + yield num + last = num diff --git a/i2p2www/pages/blog/index.html b/i2p2www/pages/blog/index.html index 2b8d7d05..06e99752 100644 --- a/i2p2www/pages/blog/index.html +++ b/i2p2www/pages/blog/index.html @@ -10,4 +10,6 @@
  • {{ entry[1] }} - {{ entry[2] }}
  • {%- endfor %} +{%- from "global/macros" import render_pagination with context -%} +{{ render_pagination(pagination) | safe }} {% endblock %} diff --git a/i2p2www/pages/global/macros b/i2p2www/pages/global/macros index 8fd460a6..a1470155 100644 --- a/i2p2www/pages/global/macros +++ b/i2p2www/pages/global/macros @@ -3,6 +3,7 @@ {%- else -%}{{ url_for('site_show', lang=g.lang) }} {%- endif -%} {%- endmacro -%} + {%- macro change_lang(lang) -%} {%- if request.endpoint == 'site_show' -%}{{ url_for('site_show', lang=lang, page=page) }} {%- elif request.endpoint == 'blog_entry' -%}{{ url_for('blog_entry', lang=lang, slug=slug) }} @@ -12,8 +13,33 @@ {%- else -%}{{ url_for('site_show', lang=lang) }} {%- endif -%} {%- endmacro -%} + {%- macro ver(string=None) -%} {%- if string -%}{{ string % '0.9.3' }} {%- else -%}{{ '0.9.3' }} {%- endif -%} {%- endmacro -%} + +{%- macro render_pagination(pagination) %} + +{%- endmacro -%} diff --git a/i2p2www/pages/meetings/index.html b/i2p2www/pages/meetings/index.html index 0046b71b..8ca96792 100644 --- a/i2p2www/pages/meetings/index.html +++ b/i2p2www/pages/meetings/index.html @@ -15,4 +15,6 @@
  • Meeting {{ meeting['id'] }}{% if meeting['date'] %} - {{ meeting['date'].strftime("%B %d, %Y") }}{% endif %}
  • {%- endfor %} +{%- from "global/macros" import render_pagination with context -%} +{{ render_pagination(pagination) | safe }} {% endblock %} From 3284f92ae34866087f4579b93f9c1965ad2656db Mon Sep 17 00:00:00 2001 From: str4d Date: Fri, 14 Dec 2012 07:56:28 +0000 Subject: [PATCH 160/650] New heading for middle column of front page --- i2p2www/pages/site/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/i2p2www/pages/site/index.html b/i2p2www/pages/site/index.html index 7f51efdc..0888c0ee 100644 --- a/i2p2www/pages/site/index.html +++ b/i2p2www/pages/site/index.html @@ -19,7 +19,7 @@
    -

    {{ _('Supported Software') }}

    +

    {{ _('What can you do with I2P?') }}

    • Email Integrated web mail interface, plugin for serverless email. From d129c789671cadee7776ea2f8176683097db5af0 Mon Sep 17 00:00:00 2001 From: str4d Date: Fri, 14 Dec 2012 08:00:02 +0000 Subject: [PATCH 161/650] "anonymously on I2P." -> "anonymously inside I2P." --- i2p2www/pages/site/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/i2p2www/pages/site/index.html b/i2p2www/pages/site/index.html index 0888c0ee..3c1fd9f5 100644 --- a/i2p2www/pages/site/index.html +++ b/i2p2www/pages/site/index.html @@ -3,7 +3,7 @@ {% block content_outer %}

      {% trans %}What does I2P do for you?{% endtrans %}

      -

      {% trans %}The I2P network provides strong privacy protections for communication over the Internet. Many activities that would risk your privacy on the public Internet can be conducted anonymously on I2P.{% endtrans %}

      +

      {% trans %}The I2P network provides strong privacy protections for communication over the Internet. Many activities that would risk your privacy on the public Internet can be conducted anonymously inside I2P.{% endtrans %}

      {% trans version=ver() %}Get I2P {{ version }}{% endtrans %}
      From 2bc59701cb33d333e6b248eecb494e890787481f Mon Sep 17 00:00:00 2001 From: str4d Date: Fri, 14 Dec 2012 21:39:59 +0000 Subject: [PATCH 162/650] Added missing lu flag --- i2p2www/static/images/lu.png | Bin 0 -> 481 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 i2p2www/static/images/lu.png diff --git a/i2p2www/static/images/lu.png b/i2p2www/static/images/lu.png new file mode 100644 index 0000000000000000000000000000000000000000..4cabba98ae70837922beadc41453b5f848f03854 GIT binary patch literal 481 zcmV<70UrK|P)?-#?r-wgj45C|ZESQtLMVW?~Zs{a4) zALIXj41fOq2a1uNeOQW%&E= z|DQh$fB%40fEE4z10q3;-;ClCKpOx8h=su~@}N>;ErcnO|V^hXG82+5i4Q+5aFU0|N&GK!5=N X;lz1sunOP500000NkvXXu0mjf*7env literal 0 HcmV?d00001 From cd5adeb8593cb1929cac1634d1b709d80d122b32 Mon Sep 17 00:00:00 2001 From: str4d Date: Fri, 14 Dec 2012 21:47:01 +0000 Subject: [PATCH 163/650] Reorganized flags and removed duplicates --- i2p2www/pages/downloads/select.html | 2 +- i2p2www/pages/global/lang.html | 24 +++++++++++------------ i2p2www/static/images/cz.png | Bin 476 -> 0 bytes i2p2www/static/images/{ => flags}/ar.png | Bin i2p2www/static/images/{ => flags}/cs.png | Bin i2p2www/static/images/{ => flags}/de.png | Bin i2p2www/static/images/{ => flags}/el.png | Bin i2p2www/static/images/{ => flags}/es.png | Bin i2p2www/static/images/{ => flags}/eu.png | Bin i2p2www/static/images/{ => flags}/fr.png | Bin i2p2www/static/images/{ => flags}/it.png | Bin i2p2www/static/images/{ => flags}/lu.png | Bin i2p2www/static/images/{ => flags}/nl.png | Bin i2p2www/static/images/{ => flags}/ru.png | Bin i2p2www/static/images/{ => flags}/sv.png | Bin i2p2www/static/images/{ => flags}/us.png | Bin i2p2www/static/images/{ => flags}/zh.png | Bin i2p2www/static/images/lang_ar.png | Bin 228 -> 0 bytes 18 files changed, 13 insertions(+), 13 deletions(-) delete mode 100644 i2p2www/static/images/cz.png rename i2p2www/static/images/{ => flags}/ar.png (100%) rename i2p2www/static/images/{ => flags}/cs.png (100%) rename i2p2www/static/images/{ => flags}/de.png (100%) rename i2p2www/static/images/{ => flags}/el.png (100%) rename i2p2www/static/images/{ => flags}/es.png (100%) rename i2p2www/static/images/{ => flags}/eu.png (100%) rename i2p2www/static/images/{ => flags}/fr.png (100%) rename i2p2www/static/images/{ => flags}/it.png (100%) rename i2p2www/static/images/{ => flags}/lu.png (100%) rename i2p2www/static/images/{ => flags}/nl.png (100%) rename i2p2www/static/images/{ => flags}/ru.png (100%) rename i2p2www/static/images/{ => flags}/sv.png (100%) rename i2p2www/static/images/{ => flags}/us.png (100%) rename i2p2www/static/images/{ => flags}/zh.png (100%) delete mode 100644 i2p2www/static/images/lang_ar.png diff --git a/i2p2www/pages/downloads/select.html b/i2p2www/pages/downloads/select.html index 3eaf46a9..2745a2b2 100644 --- a/i2p2www/pages/downloads/select.html +++ b/i2p2www/pages/downloads/select.html @@ -9,7 +9,7 @@
      diff --git a/i2p2www/pages/global/lang.html b/i2p2www/pages/global/lang.html index 1a930207..8e3d6572 100644 --- a/i2p2www/pages/global/lang.html +++ b/i2p2www/pages/global/lang.html @@ -1,14 +1,14 @@
        -
      • English
      • -
      • Castellano
      • -
      • Chinese
      • -
      • Deutsch
      • -
      • Français
      • -
      • Italiano
      • -
      • Nederlands
      • -
      • Russian
      • -
      • Svenska
      • -
      • Czech
      • -
      • Arabic
      • -
      • Greek
      • +
      • English
      • +
      • Castellano
      • +
      • Chinese
      • +
      • Deutsch
      • +
      • Français
      • +
      • Italiano
      • +
      • Nederlands
      • +
      • Russian
      • +
      • Svenska
      • +
      • Czech
      • +
      • Arabic
      • +
      • Greek
      diff --git a/i2p2www/static/images/cz.png b/i2p2www/static/images/cz.png deleted file mode 100644 index c8403dd21fd15f46d501a766a7a97733462f3b22..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 476 zcmV<20VDp2P)? z0048MLcfb{@Lpld*gfdL?Z zSQvhRtN^J#x6%GQNHxSfxHgc;AD{-1tAIKH0tl!9q}uD*5!1Kl8Kk6va!f$;fJ%WL z`2Cv^NdEc54D$xi27mx!VfgXqT8ME7!~2)OPy-`SXu#NiAkhzFFflLy1Q-A_8F>@M S6G{sJ00004#3RcVi4%-E25xf8IheWCU;o|NGe2%p zDuXgJv$GiU{zvZ7l1EK%#kfcxXgQOZl8~Tb`)j7-pVRT5cz&Edav Date: Fri, 14 Dec 2012 21:51:45 +0000 Subject: [PATCH 164/650] Fixed custom theme loader --- i2p2www/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/i2p2www/__init__.py b/i2p2www/__init__.py index c8d98b11..e512eb75 100644 --- a/i2p2www/__init__.py +++ b/i2p2www/__init__.py @@ -89,7 +89,7 @@ def detect_theme(): theme = request.cookies['style'] if 'theme' in request.args.keys(): theme = request.args['theme'] - if not os.path.isfile(safe_join('static/styles', '%s.css' % theme)): + if not os.path.isfile(safe_join(safe_join(STATIC_DIR, 'styles'), '%s.css' % theme)): theme = 'duck' g.theme = theme @after_this_request From 96df3373452da1e5716e4401be2bd0eee44f60cb Mon Sep 17 00:00:00 2001 From: str4d Date: Fri, 14 Dec 2012 22:00:12 +0000 Subject: [PATCH 165/650] Tweak to (unused in default theme) mainmenu.css to detect the menu --- i2p2www/static/styles/mainmenu.css | 64 +++++++++++++++--------------- 1 file changed, 32 insertions(+), 32 deletions(-) diff --git a/i2p2www/static/styles/mainmenu.css b/i2p2www/static/styles/mainmenu.css index 9d410985..ea350e57 100644 --- a/i2p2www/static/styles/mainmenu.css +++ b/i2p2www/static/styles/mainmenu.css @@ -16,7 +16,7 @@ /*========================= TOP OF THE MENU CASCADE =========================*/ -.menu { +#cssmenu { position:relative; /* establish a menu-relative positioning context */ float:left; /* play nicely with others */ margin:0; @@ -25,17 +25,17 @@ height:24px; /* the menu's overall height */ } -.menu img { +#cssmenu img { vertical-align: top; /* prevent images from being pushed down by text */ } -.menu ul { +#cssmenu ul { margin:0; list-style-type:none; /* we don't want to view the list as a list */ line-height:1.5em; /* globally set the menu's item spacing. note */ } /* this must be 1.0 or 1.5 or 2.0 for Mozilla */ -.menu li { +#cssmenu li { float:left; /* this creates the side-by-side array of top-level buttons */ position:relative; /* create local positioning contexts for each button */ margin:0; @@ -62,13 +62,13 @@ /*======================== TOP LEVEL MENU DEFINITIONS ========================*/ -.menu ul li ul { +#cssmenu ul li ul { display:none; /* initially hide the entire list hierarchy */ padding:1px; /* this is our box border width */ } -.menu ul li a, -.menu ul li a:visited { /* unselected top-level menu items */ +#cssmenu ul li a, +#cssmenu ul li a:visited { /* unselected top-level menu items */ display:block; float:left; text-decoration:none; @@ -77,8 +77,8 @@ /*======================== 2ND LEVEL MENU DEFINITIONS ========================*/ -.menu ul li:hover ul, -.menu ul li a:hover ul { /* 2nd level drop-down box */ +#cssmenu ul li:hover ul, +#cssmenu ul li a:hover ul { /* 2nd level drop-down box */ display:block; position:absolute; margin:0; @@ -90,29 +90,29 @@ background:black; /* this sets our menu's effective "border" color */ } -.menu ul li:hover ul.leftbutton, -.menu ul li a:hover ul.leftbutton {/* our first dropdown should not be skewed */ +#cssmenu ul li:hover ul.leftbutton, +#cssmenu ul li a:hover ul.leftbutton {/* our first dropdown should not be skewed */ left:0px; } -.menu ul li:hover ul.skinny, -.menu ul li a:hover ul.skinny { /* 2nd level skinny drop-down box */ +#cssmenu ul li:hover ul.skinny, +#cssmenu ul li a:hover ul.skinny { /* 2nd level skinny drop-down box */ width:8.08333em; /* with a 12px default font, this is 97px width (97/12) */ } -.menu ul.rightmenu li:hover ul, -.menu ul.rightmenu li a:hover ul { /* 2nd level neighborhood drop-down box */ +#cssmenu ul.rightmenu li:hover ul, +#cssmenu ul.rightmenu li a:hover ul { /* 2nd level neighborhood drop-down box */ left:auto; right:0; /* nudge the right menu right to line up under the border */ width:400px; /* with a 12px default font, this is 228px width (228/12) */ } -* html .menu ul.rightmenu li a:hover ul { /* IE5/6 needs a tweak here */ +* html #cssmenu ul.rightmenu li a:hover ul { /* IE5/6 needs a tweak here */ right:-1px; } -.menu ul li:hover ul li a, -.menu ul li a:hover ul li a { /* 2nd level unselected items */ +#cssmenu ul li:hover ul li a, +#cssmenu ul li a:hover ul li a { /* 2nd level unselected items */ border:0; margin:0; padding:0; @@ -122,28 +122,28 @@ width:13.5em; } -.menu ul li:hover ul li:hover a, -.menu ul li a:hover ul li a:hover { /* 2nd level selected item */ +#cssmenu ul li:hover ul li:hover a, +#cssmenu ul li a:hover ul li a:hover { /* 2nd level selected item */ color:black; background:white; } -.menu ul li:hover ul.skinny li a, -.menu ul li a:hover ul.skinny li a, -.menu ul li:hover ul.skinny li a:hover, -.menu ul li a:hover ul.skinny li a:hover { /* 2nd level un+selected items */ +#cssmenu ul li:hover ul.skinny li a, +#cssmenu ul li a:hover ul.skinny li a, +#cssmenu ul li:hover ul.skinny li a:hover, +#cssmenu ul li a:hover ul.skinny li a:hover { /* 2nd level un+selected items */ width:8.08333em; } /*======================== 3RD LEVEL MENU DEFINITIONS ========================*/ -.menu ul li:hover ul li ul, -.menu ul li a:hover ul li a ul { /* hide inactive 3rd-level menus */ +#cssmenu ul li:hover ul li ul, +#cssmenu ul li a:hover ul li a ul { /* hide inactive 3rd-level menus */ visibility:hidden; } -.menu ul li:hover ul li:hover ul, -.menu ul li a:hover ul li a:hover ul { /* 3rd level drop-down box */ +#cssmenu ul li:hover ul li:hover ul, +#cssmenu ul li a:hover ul li a:hover ul { /* 3rd level drop-down box */ visibility:visible; position:absolute; margin-top:-1px; /* bring the top edge of the 3rd level menu up one */ @@ -152,14 +152,14 @@ width:14em; } -.menu ul li:hover ul li:hover ul li a, -.menu ul li a:hover ul li a:hover ul li a { /* 3rd level unselected items */ +#cssmenu ul li:hover ul li:hover ul li a, +#cssmenu ul li a:hover ul li a:hover ul li a { /* 3rd level unselected items */ width:14em; background:#d8d8d8; } -.menu ul li:hover ul li:hover ul li a:hover, -.menu ul li a:hover ul li a:hover ul li a:hover { /* level3 selected items */ +#cssmenu ul li:hover ul li:hover ul li a:hover, +#cssmenu ul li a:hover ul li a:hover ul li a:hover { /* level3 selected items */ width:14em; background:white; } From 963cc90c6a75b9fb7185f75d58029d2567639b87 Mon Sep 17 00:00:00 2001 From: str4d Date: Sat, 15 Dec 2012 01:35:48 +0000 Subject: [PATCH 166/650] ".main" -> "#content", ".menu" -> "#cssmenu" in dark.css --- i2p2www/static/styles/dark.css | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/i2p2www/static/styles/dark.css b/i2p2www/static/styles/dark.css index 0b86749a..9466250d 100644 --- a/i2p2www/static/styles/dark.css +++ b/i2p2www/static/styles/dark.css @@ -38,7 +38,7 @@ div.logo { font-color: #fff; } -div.menu { +div#cssmenu { /* width: 8em; */ /* height: 5em; */ /* position: fixed; */ @@ -63,7 +63,7 @@ div.menu { } /* -div.menu a:link { +div#cssmenu a:link { border:1px solid #000022; border-left: 3px solid #000022; margin: 10px 0; @@ -76,13 +76,13 @@ background-color: #9999ff; */ /* -div.menu a:link{color:#99f;margin: 15px 0;padding: 0px 5px 0px 10px; border-left: 5px solid #99f;line-height: 240%; text-decoration: none;} +div#cssmenu a:link{color:#99f;margin: 15px 0;padding: 0px 5px 0px 10px; border-left: 5px solid #99f;line-height: 240%; text-decoration: none;} */ -div.menu a:link{color:#99f;} -div.menu a:visited{color:#60f} -div.menu a:hover{color:#ff6600;} -/* div.menu a:hover{color:#ff6600;border-left: 5px solid #fff;}*/ -div.menu a:active{color:#900} +div#cssmenu a:link{color:#99f;} +div#cssmenu a:visited{color:#60f} +div#cssmenu a:hover{color:#ff6600;} +/* div#cssmenu a:hover{color:#ff6600;border-left: 5px solid #fff;}*/ +div#cssmenu a:active{color:#900} div.warning { margin: 0em 1em 1em 12em; @@ -93,7 +93,7 @@ div.warning { color: inherit; } -div.main { +div#content { margin: 0px 0px 0px 0px; padding: 25px 40px 20px 190px; background-color: #001; @@ -103,7 +103,7 @@ div.main { border-bottom: 1px solid #99f; } -div.main h1 { +div#content h1 { text-align: left; color: #99f; padding-left: 10px; @@ -437,4 +437,4 @@ td.announce { .targetlist { list-style-image: url(/_static/images/target.png); -} \ No newline at end of file +} From f76b8998668413e84f7285af2ea756d7698532ce Mon Sep 17 00:00:00 2001 From: str4d Date: Sat, 15 Dec 2012 01:37:16 +0000 Subject: [PATCH 167/650] ".main" -> "#content", ".menu" -> "#cssmenu" in light.css --- i2p2www/static/styles/light.css | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/i2p2www/static/styles/light.css b/i2p2www/static/styles/light.css index d339a9c7..0c3bfec6 100644 --- a/i2p2www/static/styles/light.css +++ b/i2p2www/static/styles/light.css @@ -38,7 +38,7 @@ div.logo { font-color: #fff; } -div.menu { +div#cssmenu { /* width: 8em; */ /* height: 5em; */ /* position: fixed; */ @@ -63,7 +63,7 @@ div.menu { } /* -div.menu a:link { +div#cssmenu a:link { border:1px solid #000022; border-left: 3px solid #000022; margin: 10px 0; @@ -83,7 +83,7 @@ div.warning { color: inherit; } -div.main { +div#content { margin: 0px 0px 0px 0px; padding: 25px 40px 20px 190px; background-color: #eeeeff; @@ -93,7 +93,7 @@ div.main { border-bottom: 1px solid #000; } -div.main h1 { +div#content h1 { text-align: left; color: #000022; padding-left: 10px; From c42a4604f394962bd145c853cb4c0a04032edc85 Mon Sep 17 00:00:00 2001 From: str4d Date: Sat, 15 Dec 2012 01:38:09 +0000 Subject: [PATCH 168/650] ".main" -> "#content", ".menu" -> "#cssmenu" in light_ar.css --- i2p2www/static/styles/light_ar.css | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/i2p2www/static/styles/light_ar.css b/i2p2www/static/styles/light_ar.css index 88cedcec..6298e8e3 100644 --- a/i2p2www/static/styles/light_ar.css +++ b/i2p2www/static/styles/light_ar.css @@ -38,7 +38,7 @@ div.logo { font-color: #fff; } -div.menu { +div#cssmenu { /* width: 8em; */ /* height: 5em; */ /* position: fixed; */ @@ -63,7 +63,7 @@ div.menu { } /* -div.menu a:link { +div#cssmenu a:link { border:1px solid #000022; border-left: 3px solid #000022; margin: 10px 0; @@ -83,7 +83,7 @@ div.warning { color: inherit; } -div.main { +div#content { margin: 0px 0px 0px 0px; padding: 30px 200px 20px 19px; background-color: #eeeeff; @@ -93,7 +93,7 @@ div.main { border-bottom: 1px solid #000; } -div.main h1 { +div#content h1 { text-align: right; color: #000022; padding-left: 10px; From cfbc0cdd48aae022ad85c33f29118b676899e106 Mon Sep 17 00:00:00 2001 From: str4d Date: Sat, 15 Dec 2012 01:38:43 +0000 Subject: [PATCH 169/650] ".main" -> "#content", ".menu" -> "#cssmenu" in light_zh.css --- i2p2www/static/styles/light_zh.css | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/i2p2www/static/styles/light_zh.css b/i2p2www/static/styles/light_zh.css index 337ae867..cc8bc814 100644 --- a/i2p2www/static/styles/light_zh.css +++ b/i2p2www/static/styles/light_zh.css @@ -38,7 +38,7 @@ div.logo { font-color: #fff; } -div.menu { +div#cssmenu { width: 8em; /* height: 5em; */ /* position: fixed; */ @@ -64,7 +64,7 @@ div.menu { } /* -div.menu a:link { +div#cssmenu a:link { border:1px solid #000022; border-left: 3px solid #000022; margin: 10px 0; @@ -84,7 +84,7 @@ div.warning { color: inherit; } -div.main { +div#content { margin: 0px 0px 0px 0px; padding: 25px 40px 20px 190px; background-color: #eeeeff; @@ -95,7 +95,7 @@ div.main { line-height: 21px; } -div.main h1 { +div#content h1 { text-align: left; color: #000022; padding-left: 10px; From 05dfa49133f243f586ca53ac104f6cbf93b8b59c Mon Sep 17 00:00:00 2001 From: str4d Date: Sat, 15 Dec 2012 01:55:37 +0000 Subject: [PATCH 170/650] Apply the h1 theming to div.title in old themes (like on current site) --- i2p2www/static/styles/dark.css | 2 +- i2p2www/static/styles/light.css | 2 +- i2p2www/static/styles/light_ar.css | 2 +- i2p2www/static/styles/light_zh.css | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/i2p2www/static/styles/dark.css b/i2p2www/static/styles/dark.css index 9466250d..3e429ea5 100644 --- a/i2p2www/static/styles/dark.css +++ b/i2p2www/static/styles/dark.css @@ -172,7 +172,7 @@ ul { text-indent: -4em; } -h1 { +h1, div.title { color: #9999ff; text-shadow: 0px 0px 2px rgba(255, 255, 255, 0.9); text-align: right; diff --git a/i2p2www/static/styles/light.css b/i2p2www/static/styles/light.css index 0c3bfec6..bce6d6eb 100644 --- a/i2p2www/static/styles/light.css +++ b/i2p2www/static/styles/light.css @@ -160,7 +160,7 @@ ul { text-indent: -4em; } -h1 { +h1, div.title { color: #9999ff; /* text-shadow: 0px 0px 2px rgba(255, 255, 255, 0.9); */ text-align: right; diff --git a/i2p2www/static/styles/light_ar.css b/i2p2www/static/styles/light_ar.css index 6298e8e3..00c5d3ea 100644 --- a/i2p2www/static/styles/light_ar.css +++ b/i2p2www/static/styles/light_ar.css @@ -160,7 +160,7 @@ ul { text-indent: -4em; } -h1 { +h1, div.title { color: #9999ff; /* text-shadow: 0px 0px 2px rgba(255, 255, 255, 0.9); */ text-align: right; diff --git a/i2p2www/static/styles/light_zh.css b/i2p2www/static/styles/light_zh.css index cc8bc814..e75fe817 100644 --- a/i2p2www/static/styles/light_zh.css +++ b/i2p2www/static/styles/light_zh.css @@ -163,7 +163,7 @@ ul { text-indent: -4em; } -h1 { +h1, div.title { color: #9999ff; font-family:"SimHei","黑体"; text-shadow: 1px 1px 2px rgba(255, 255, 255, 0.9); From 046acf4b36f522751ba8d07d10990f84fe071f74 Mon Sep 17 00:00:00 2001 From: str4d Date: Sat, 15 Dec 2012 11:14:41 +0000 Subject: [PATCH 171/650] Text change suggestions from zab --- i2p2www/pages/global/nav.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/i2p2www/pages/global/nav.html b/i2p2www/pages/global/nav.html index b231cabc..da203c9f 100644 --- a/i2p2www/pages/global/nav.html +++ b/i2p2www/pages/global/nav.html @@ -95,10 +95,10 @@
    • {{ _('Plugins') }}
    -
  • {{ _('Support') }} +
  • {{ _('Help') }}
    • {{ _('FAQ') }}
    • -
    • {{ _('Web browser configuration') }}
    • +
    • {{ _('How to browse I2P') }}
    • {{ _('Glossary') }}
    • {{ _('Performance') }}
    • {{ _('Forums') }}
    • From df7a02df2b5c4352e6822d128d0fb84f0791b1f7 Mon Sep 17 00:00:00 2001 From: str4d Date: Sat, 15 Dec 2012 11:27:07 +0000 Subject: [PATCH 172/650] Added support/performance page based on eche|on's i2pspeed.txt document --- .../pages/site/support/performance/index.html | 105 ++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 i2p2www/pages/site/support/performance/index.html diff --git a/i2p2www/pages/site/support/performance/index.html b/i2p2www/pages/site/support/performance/index.html new file mode 100644 index 00000000..30b139f6 --- /dev/null +++ b/i2p2www/pages/site/support/performance/index.html @@ -0,0 +1,105 @@ +{% extends "global/layout.html" %} +{% block title %}Performance{% endblock %} +{% block content %} + +

      How does I2P work, why is it slow, and why does it not use my full bandwidth?

      + +

      Probably one of the most frequent things people ask is "how fast is I2P?", +and no one seems to like the answer - "it depends". After trying out I2P, the +next thing they ask is "will it get faster?", and the answer to that is a most +emphatic yes.

      + +

      +I2P is a full dynamic network. Each client is known to other nodes and tests local known nodes for reachability and capacity. +Only reachable and capable nodes are saved to a local NetDB (This is generally only a portion of the network, around 500-1000). +When I2P builds tunnels, it selects the best resource from this pool. For example, a small subset of 20-50 nodes are only available to build tunnels with. +Because testing happens every minute, the pool of used nodes changes every minute. +Each I2P node knows a different part of the net, meaning that each router has a different set of I2P nodes to be used for tunnels. +Even if two routers have the same subset of known nodes, the tests for reachability and capacity will likely show different results, as the other routers could be under load just as one router tests, but be free if the second router tests. +

      + +

      +The above describes why each I2P node has different nodes to build tunnels. +Because every I2P node has a different latency and bandwith, tunnels (which are built via those nodes) have different latency and bandwidth values. +And because every I2P node has different tunnels built, no two I2P nodes have the same tunnel sets. +

      + +

      +A server/client is known as a "destination" and each destination has at least one inbound and one outbound tunnel. The default is 3 hops per tunnel. +This adds up to 12 hops (aka 12 different I2P nodes) for a full roundtrip client-server-client. +

      + +

      +Each data package is sent through 6 other I2P nodes until it reaches the server: +

      +
      +client - hop1 - hop2 - hop3 - hopa1 - hopa2 - hopa3 - server
      +
      +

      +and on way back 6 different I2P nodes: +

      +
      +server - hopb1 - hopb2 - hopb3 - hopc1 - hopc2 - hopc3 - client
      +
      + +

      +As most traffic on I2P (www, torrent,...) needs ack packages until new data is sent, it needs to wait until a ack package returns from the server. +In the end: send data, wait for ack, send more data, wait for ack,.. +As the RTT (RoundTripTime) adds up from the latency of each individual I2P node and each connection on this roundtrip, it takes usually 1-3 seconds until a ack package comes back to the client. +With some internals of TCP and I2P transport, a data package has a limited size and cannot be as large as we want it to be. +Together these conditions set a limit of max bandwidth per tunnel of 20-50 kbyte/sec. +But if ONLY ONE hop in the tunnel has only 5 kb/sec bandwidth to spend, the whole tunnel is limited to 5 kb/sec, independent of the +latency and other limitations. +

      + +

      +Due to encryption used and other setups in I2P (howto built up tunnels, latency, ...) it is quite expensive in CPU time to build a tunnel. This is +why a destination is only allowed to have a max of 6 IN and 6 OUT tunnels to transport data. With a max of 50 kb/sec per tunnel, a destination could +use roughly 300 kb/sec traffic combined ( in reality it could be more if shorter tunnels are used with low or no anonymity available). +Used tunnels are discarded every 10 minutes and new ones are built up. +This change of tunnels (and sometimes clients that shutdown hard due to usage of "shut down at once" or situations where there is power loss) does +sometimes break tunnels and connections, as seen on the IRC2P Network in loss of connection (ping timeout) or on when using eepget. +

      + +

      +With a limited set of destinations and a limited set of tunnels per destination, one I2P node only uses a limited set of tunnels across other I2P nodes. +For example, if an I2P node is "hop1" in the small example above, we only see 1 participating tunnel originating from the client. +If we sum up the whole I2P network, only a rather limited number of participating tunnels could be built with a limited amount of bandwidth all together. +If one distributes these limited numbers across the number of I2P nodes, there is only a fraction of available bandwidth/capacity available for use. +

      + +

      +To remain anonymous one router should not be used by the whole network for building tunnels. +If one router does act as a tunnel router for ALL I2P nodes, it becomes a very real central point of failure as well as a central point to grab IPs and data from the clients. This is not good. +I2P attempts to spread the load across a lot of I2P nodes because of this reason. +

      + +

      +Another point is the full mesh network. Each connection hop-hop utilizes one TCP or UDP connection on the I2P nodes. With 1000 connections, one sees +1000 TCP connections. That is quite a lot and some home and small office routers (DSL, cable,..) only allow a small number of connections (or just go mad if you use more than X connections). +I2P tries to limit these connections to be under 1500 per UDP and per TCP type. +This limits the amount of traffic routed across your I2P node as well. +

      + +

      +In summary, I2P is very complex and there is no easy way to pinpoint why your node is not used. +If your node is reachable and has a bandwidth setting of >128 kbyte/sec shared and is reachable 24/7, it should be used after some time for participating traffic. +If it is down in between, the testing of your I2P node done by other nodes will tell them: you are not reachable. This blocks your node for at least +24h on other nodes. So, the other nodes which tested you as down will not use your node for 24h for building tunnels. This is why your traffic will +be lower after a restart/shutdown for a minimum of 24h. +

      + +

      +Also: other I2P nodes needs to know your I2P router to test it for reachability and capacity. It takes time for other nodes to get known to your node. +It will be faster if you use I2P and build more tunnels, e.g. use a torrent or www for some time. +

      + +

      Performance Improvements

      + +

      For possible future performance improvements see +Future Performance Improvements.

      + +

      For past performance improvements see the +Performance History.

      + +{% endblock %} From 0c837b7a05e3bfd2d35663b5eafca6f68811a171 Mon Sep 17 00:00:00 2001 From: str4d Date: Sat, 15 Dec 2012 11:28:34 +0000 Subject: [PATCH 173/650] forum.i2p2.i2p is currently not clearnet-hosted --- i2p2www/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/i2p2www/__init__.py b/i2p2www/__init__.py index e512eb75..279d3e72 100644 --- a/i2p2www/__init__.py +++ b/i2p2www/__init__.py @@ -128,7 +128,7 @@ def utility_processor(): # Convert an I2P url to an equivalent clearnet one i2ptoclear = { 'www.i2p2.i2p': 'www.i2p2.de', - 'forum.i2p': 'forum.i2p2.de', + #'forum.i2p': 'forum.i2p2.de', 'trac.i2p2.i2p': 'trac.i2p2.de', } def convert_url_to_clearnet(value): From cf40d5ded73e812946e76d3263b6a484fd51c472 Mon Sep 17 00:00:00 2001 From: str4d Date: Sat, 15 Dec 2012 11:29:19 +0000 Subject: [PATCH 174/650] Moved bug tracker link into Volunteer -> Develop --- i2p2www/pages/global/nav.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/i2p2www/pages/global/nav.html b/i2p2www/pages/global/nav.html index da203c9f..45016de5 100644 --- a/i2p2www/pages/global/nav.html +++ b/i2p2www/pages/global/nav.html @@ -102,7 +102,6 @@
    • {{ _('Glossary') }}
    • {{ _('Performance') }}
    • {{ _('Forums') }}
    • -
    • {{ _('Bug tracker') }}
  • {{ _('Volunteer') }} @@ -115,6 +114,7 @@
  • {{ _('Release signing keys') }}
  • {{ _('Signed keys') }}
  • {{ _('Developers keys') }}
  • +
  • {{ _('Bug tracker') }}
  • {{ _('Guides') }} From 65c2e96f9a5b08facef4fbe953eb30725e61a4b7 Mon Sep 17 00:00:00 2001 From: str4d Date: Sat, 15 Dec 2012 11:42:41 +0000 Subject: [PATCH 175/650] Moved Docs menu into About menu --- i2p2www/pages/global/nav.html | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/i2p2www/pages/global/nav.html b/i2p2www/pages/global/nav.html index 45016de5..c4912aac 100644 --- a/i2p2www/pages/global/nav.html +++ b/i2p2www/pages/global/nav.html @@ -12,13 +12,7 @@
  • {{ _('About') }} -
  • -
  • {{ _('Docs') }} +
  • {{ _('Documentation') }} +
  • +
  • {{ _('Team') }}
  • +
  • {{ _('Hall of Fame') }}
  • +
  • {{ _('Papers and presentations') }}
  • +
  • {{ _('Contact us') }}
  • +
  • {{ _('Help') }}
      From 6ee28ea4292b29a88f5ea8c3e74e3965c55a471b Mon Sep 17 00:00:00 2001 From: str4d Date: Sat, 15 Dec 2012 12:09:29 +0000 Subject: [PATCH 176/650] Added feed icon for blog to front page --- i2p2www/pages/site/index.html | 1 + i2p2www/static/images/feed-icon-28x28.png | Bin 0 -> 1737 bytes i2p2www/static/styles/duck.css | 10 ++++++++++ 3 files changed, 11 insertions(+) create mode 100644 i2p2www/static/images/feed-icon-28x28.png diff --git a/i2p2www/pages/site/index.html b/i2p2www/pages/site/index.html index 3c1fd9f5..daa5dfed 100644 --- a/i2p2www/pages/site/index.html +++ b/i2p2www/pages/site/index.html @@ -48,6 +48,7 @@
  • + I2P Blog ATOM Feed

    {% trans %}News & Updates{% endtrans %}

    {% include "blog/latest.html" %}
    diff --git a/i2p2www/static/images/feed-icon-28x28.png b/i2p2www/static/images/feed-icon-28x28.png new file mode 100644 index 0000000000000000000000000000000000000000..d64c669c7589d3a886682dbd1f3c83b716a420f5 GIT binary patch literal 1737 zcmV;)1~&PLP)sAF&N>2z!Fdr4Imm26om*2a>%jE0(;Kv%yf78|JB{oGfPNxX8x(_?yCCg`;V_$ zXsz+vi(@PROR2wt+9on+`tt9tz79KlSO2H>IyGO>#kRR$cU=`Hmyc#J&lVDyanqor z1tA1LcZEeQ^@U{`(^^*e%-kna7Wft+z>JVkoMv=$6&UWDkQ$<2lKHssGAf!lTvqVr4)B+FQFUkn06c#WX1OxA_5 z;;t4x27iQdkQg)F7+O{!f8h`chd+YqxfC)gbK_tz9fLAfFeIEn@r7e^t8mW`EtHtl zf~sX-Ks>w(zD$JfL<}?-ObbNSqyoSo8EhI@Me*$0_W}BkY=u=l5_at*Bqz>Bs-YQ{ zos4mvG?H^x!JY63{2$(dmAw(OgDBN4r@D?n>1$kSvMo%1n@ne~L*#Ej+@`@-enjuF z&(K|SKhjN0k!f56nXE1WtNKQG3pT>t|2pJAM+hc@!uQ#Vl>I(@D{D3pxKswlb>~tD zb^TOW4Rc`CjDzjiNDWa)=dPf5=zVl-eHJ}`?5*&!96k~1@ekpr?gI+6@IV)I-%YZ1 z=-v+aWGLp%CKUe#s$sz;wpp^;mX)Y(TnOzI;dNa_{>&cebNk>B1K00F_Tam4Z(qQO zd23_Pq2no`*2DW|3GJHdIgFd8T4NJhnrn;yjGBaL&ff6-AOJ$zP&E^gesm2|&uoXB zvj$EwiHzuj`}0P$f4kO{ObL|Si{@9rxo7|l7_S!?%oAqFYC^>-3Q9eduY7-u)FfIoCHc?ZV)@-|{<8PO#m0!q@K`h=j&~-o;Qk3aNwz=j=|n zt*@f@(}n2RJRjZ1wpX$pMoIGICP*h?K<~6}fS2ozSx$Zo7}Z$8j=^Jwto#h>^+V-5 z;CNj~*)B4qf2rJg3h)YcC8lmRCX=+ze4R)W{Rjv-OrYtP6i`tkW#ZBZo zAquzQ)1pNRc%A~zt)gVgBrSNqe~I>8uMwtO7Oxi|M?C$Fs^Ts74UpfJM^h3sV?wMW0WJehh2{~g4ogxB$XB+z3 zj>dqsQ-JDmG0PG|RvIr$F{C4kCg$jP$}HFbr*4{YjY!qNUc40!F-=kycOU+QnB?Mx z8|Kk4n-6^So&Tjm@IeU{f$7jOq0(5vX+iOD$&HEn>6Ln&9A*v|n??7|MdU7@C{vjR z$f_|A5hO^O4ut*#ZxgtJGkT`cL-*i%v!F$w>{{>2ab(X< zB7{67ze4nP(?WE=r;}pbYUptK=i7b_Vo0DObgB4h*)ZMw#4Moef;n1P)m$$SapFyk zgn28|VG$Q8#!==OS!68?6Qk&A<31f;^D`aBP}NOF+u83;43FmqXr@XA^@G5zL#R|Z z-6OEbB$o=0VUJMXVpoM`Q5^X>w^j&dHb$?C`9O1za}2k1oIVYauA>==_^=F>L6=L^ zy)3G=Vq5~I&uoz(IUI+sizYAj3Qn3MPY>NxTc2EAJ9P$ Date: Sat, 15 Dec 2012 12:49:03 +0000 Subject: [PATCH 177/650] Updated internal links in downloads/* --- i2p2www/pages/downloads/debian.html | 6 +++--- i2p2www/pages/downloads/list.html | 12 ++++++------ 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/i2p2www/pages/downloads/debian.html b/i2p2www/pages/downloads/debian.html index e4c3d56c..2ab9f960 100644 --- a/i2p2www/pages/downloads/debian.html +++ b/i2p2www/pages/downloads/debian.html @@ -15,7 +15,7 @@ have been tested and should work on x86
  • gNewSense 2.3
  • Nexenta 3.0.1
  • -The I2P packages may work on systems not listed above. Please report any issues with these packages on Trac at http://trac.i2p2.de. +The I2P packages may work on systems not listed above. Please report any issues with these packages on Trac at http://{{ i2pconv('trac.i2p2.i2p') }}.
    • Option 1: Recent versions of Ubuntu and its derivatives (Try this if you're not using Debian)
    • Option 2: Debian (including systems based on Debian and older versions of Ubuntu)
    • @@ -55,7 +55,7 @@ user to root with "su" or by prefixing each command with "sudo").
    • Add the GPG key that signs the repository with the following command:
          apt-key adv --keyserver keyserver.ubuntu.com --recv-keys EB2CC88B
      You'll have output like the following if the command was successful:
      -    
    • +    
    • For Debian Oldstable (Lenny) and Stable (Squeeze): Add the following entries to /etc/apt/sources.list.d/i2p.list
          deb http://ppa.launchpad.net/i2p-maintainers/i2p/ubuntu natty main
          deb-src http://ppa.launchpad.net/i2p-maintainers/i2p/ubuntu natty main

      @@ -109,5 +109,5 @@ you may portforward.com to be helpful. as the default settings of 96 KB/s down / 40 KB/s up are fairly conservative.

      -If you want to reach eepsites via your browser, have a look on the browser proxy setup page for an easy howto.

      +If you want to reach eepsites via your browser, have a look on the browser proxy setup page for an easy howto.

      {% endblock %} diff --git a/i2p2www/pages/downloads/list.html b/i2p2www/pages/downloads/list.html index d5fb82d3..b873d5b2 100644 --- a/i2p2www/pages/downloads/list.html +++ b/i2p2www/pages/downloads/list.html @@ -44,7 +44,7 @@ or type java -version at your command prompt. (SHA256 39a7d6859bf4bd9ac56fd83a5e32d47d1b24ba06f912a027804492ca941936dd sig)
      - Alternately, you can fetch the source from monotone. + Alternately, you can fetch the source from monotone.
      Run (tar xjvf i2psource_{{ ver() }}.tar.bz2 ; cd i2p-{{ ver() }} ; ant pkg) then either run the GUI installer or headless install as above
    • @@ -71,7 +71,7 @@ start the router with "sh runplain.sh" instead.

      When installing for the first time, please remember to adjust your NAT/firewall if you can, bearing in mind the Internet-facing ports I2P uses, -described here among other ports. +described here among other ports. If you have successfully opened your port to inbound TCP, also enable inbound TCP on the configuration page.

      @@ -82,7 +82,7 @@ as the default settings of 96 KBps down / 40 KBps up are fairly slow.

      -If you want to reach eepsites via your browser, have a look on the browser proxy setup page for an easy howto. +If you want to reach eepsites via your browser, have a look on the browser proxy setup page for an easy howto.

      Updates from earlier releases:

      @@ -99,7 +99,7 @@ may get a "downloaded version is not greater than current version" error, and should use the manual update method below.

      If you are running 0.7.4 or earlier, please see -the 0.7.5 release notes +the 0.7.5 release notes for important information about how to configure your router to automatically receive the release.

      @@ -132,12 +132,12 @@ receive the release. The file is signed by zzz, -whose key is here. +whose key is here.

      Previous Releases

      Previous releases are available on Google Code and Launchpad -and within the I2P network on echelon.i2p. +and within the I2P network on {{ i2pconv('echelon.i2p') }}. {% endblock %} From 885d8fc2a45c1193b846088fd436ff5002903eac Mon Sep 17 00:00:00 2001 From: str4d Date: Sat, 15 Dec 2012 12:54:30 +0000 Subject: [PATCH 178/650] Added mail.i2p to i2pconv list so emails can be rewritten --- i2p2www/pages/site/about/halloffame.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/i2p2www/pages/site/about/halloffame.html b/i2p2www/pages/site/about/halloffame.html index 45c34140..31dba8c3 100644 --- a/i2p2www/pages/site/about/halloffame.html +++ b/i2p2www/pages/site/about/halloffame.html @@ -26,7 +26,7 @@
    Latest version:
    -2012-05-02 - I2P 0.9 - {{ urlify("release-0.9", "Announcement", "html")}} +2012-05-02 - I2P 0.9 - Announcement - Download
    2007-09-28 - Syndie 1.101a - diff --git a/www.i2p2/pages/not_found.html b/www.i2p2/pages/not_found.html deleted file mode 100644 index a6c2a3fd..00000000 --- a/www.i2p2/pages/not_found.html +++ /dev/null @@ -1,5 +0,0 @@ -{% extends "_layout.html" %} -{% block title %}Not found{% endblock %} -{% block content %} -Yep... the resource, you were searching for, is named differently, doesn't exist or was removed. -{% endblock %} diff --git a/www.i2p2/pages/not_found_de.html b/www.i2p2/pages/not_found_de.html deleted file mode 100644 index 42fa6929..00000000 --- a/www.i2p2/pages/not_found_de.html +++ /dev/null @@ -1,5 +0,0 @@ -{% extends "_layout_de.html" %} -{% block title %}Nicht gefunden{% endblock %} -{% block content %} -Yep... die Information nach der du suchst, nennt sich anders, existiert nicht oder wurde entfernt. -{% endblock %} diff --git a/www.i2p2/pages/not_found_zh.html b/www.i2p2/pages/not_found_zh.html deleted file mode 100644 index 95b66982..00000000 --- a/www.i2p2/pages/not_found_zh.html +++ /dev/null @@ -1,7 +0,0 @@ -{% extends "_layout_zh.html" %} -{% block title %} -未找到 -{% endblock %} -{% block content %} -您搜索的页面或资源的名称不正确或不存在或已被删除。 -{% endblock %} \ No newline at end of file From 382d158489f6b80f0f3c4def02775c61c6e8fd8d Mon Sep 17 00:00:00 2001 From: dev Date: Mon, 10 Sep 2012 09:38:42 +0000 Subject: [PATCH 007/650] start hacking blog index --- app.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/app.py b/app.py index 866b6308..8e942443 100644 --- a/app.py +++ b/app.py @@ -168,6 +168,24 @@ def downloads_redirect(protocol, file, mirror=None): +def get_blog_index(): + """ + Returns list of valid slugs sorted by date + """ + ret=[] + + # list of slugs(not sorted in any way) + entries=[] + # walk over all directories/files + for v in os.walk(BLOG_DIR): + # iterate over all files + for f in v[2]: + # ignore all non-.rst files + if not f.endswith('.rst'): + continue + + + def render_blog_entry(slug): """ Render the blog entry From 17224eba28e7a97be474eb57131f0f5b4a9bd5e1 Mon Sep 17 00:00:00 2001 From: str4d Date: Mon, 10 Sep 2012 11:28:34 +0000 Subject: [PATCH 008/650] Removed whitespace --- app.py | 31 +++++++++++++++---------------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/app.py b/app.py index 8e942443..8a9651b0 100644 --- a/app.py +++ b/app.py @@ -72,7 +72,7 @@ def detect_theme(): @app.errorhandler(404) def page_not_found(error): return render_template('global/error_404.html'), 404 - + @app.route('/') def main_index(): return redirect(url_for('site_show', lang='en')) @@ -86,11 +86,11 @@ def site_show(page='index'): return redirect(url_for('site_show', page=page[:-5])) name = 'site/%s.html' % page page_file = safe_join(TEMPLATE_DIR, name) - + # bah! those damn users all the time! if not os.path.exists(page_file): abort(404) - + # hah! return render_template(name, page=page) @@ -109,38 +109,38 @@ def meetings_show(id, log=False, rst=False): hname = str(id) + '.rst' lfile = safe_join(MEETINGS_DIR, lname) hfile = safe_join(MEETINGS_DIR, hname) - + # check if meeting file exists and throw error if it does not.. if not os.path.exists(lfile): abort(404) - + # if the user just wanted the .log if log: # hmm... maybe replace with something non-render_template like? # return render_template('meetings/show_raw.html', log=log) return send_from_directory(MEETINGS_DIR, lname, mimetype='text/plain') - + log='' header=None - + # try to load header if that makes sense if os.path.exists(hfile): # if the user just wanted the .rst... if rst: return send_from_directory(MEETINGS_DIR, hname, mimetype='text/plain') - + # open the file as utf-8 file with codecs.open(hfile, encoding='utf-8') as fd: header = fd.read() elif rst: abort(404) - + # load log with codecs.open(lfile, encoding='utf-8') as fd: log = fd.read() - + return render_template('meetings/show.html', log=log, header=header, id=id) - + @app.route('//meetings/.log') def meetings_show_log(id): @@ -173,7 +173,7 @@ def get_blog_index(): Returns list of valid slugs sorted by date """ ret=[] - + # list of slugs(not sorted in any way) entries=[] # walk over all directories/files @@ -183,7 +183,6 @@ def get_blog_index(): # ignore all non-.rst files if not f.endswith('.rst'): continue - def render_blog_entry(slug): @@ -201,7 +200,7 @@ def render_blog_entry(slug): # read file with codecs.open(path, encoding='utf-8') as fd: content = fd.read() - + return publish_parts(source=content, source_path=BLOG_DIR, writer_name="html") @@ -216,13 +215,13 @@ def blog_index(page=0): def blog_entry(slug): # try to render that blog entry.. throws 404 if it does not exist parts = render_blog_entry(slug) - + if parts: # now just pass to simple template file and we are done return render_template('blog/entry.html', parts=parts, title=parts['title'], body=parts['fragment']) else: abort(404) - + @app.route('/feed/blog/rss') def blog_rss(): From 9b575cb30afc4c4fd9db4f1c0fa44002e8871e64 Mon Sep 17 00:00:00 2001 From: str4d Date: Mon, 10 Sep 2012 11:56:51 +0000 Subject: [PATCH 009/650] Some comments to clarify app.py --- app.py | 35 +++++++++++++++++++++++++++++------ 1 file changed, 29 insertions(+), 6 deletions(-) diff --git a/app.py b/app.py index 8a9651b0..449a677c 100644 --- a/app.py +++ b/app.py @@ -69,16 +69,23 @@ def detect_theme(): return resp +############### +# Error handlers + @app.errorhandler(404) def page_not_found(error): return render_template('global/error_404.html'), 404 + +####################### +# General page handlers + +# Index - redirects to en homepage @app.route('/') def main_index(): return redirect(url_for('site_show', lang='en')) - - +# Site pages @app.route('//site/') @app.route('//site/') def site_show(page='index'): @@ -94,10 +101,16 @@ def site_show(page='index'): # hah! return render_template(name, page=page) + +################## +# Meeting handlers + +# Meeting index @app.route('//meetings/') def meetings_index(): return render_template('meetings/index.html') +# Renderer for specific meetings @app.route('//meetings/') def meetings_show(id, log=False, rst=False): """ @@ -141,20 +154,27 @@ def meetings_show(id, log=False, rst=False): return render_template('meetings/show.html', log=log, header=header, id=id) - +# Just return the raw .log for the meeting @app.route('//meetings/.log') def meetings_show_log(id): return meetings_show(id, log=True) +# Just return the raw .rst for the meeting @app.route('//meetings/.rst') def meetings_show_rst(id): return meetings_show(id, rst=True) + +################### +# Download handlers + +# List of downloads @app.route('//download') def downloads_list(): # TODO: read mirror list or list of available files return render_template('downloads/list.html') +# Specific file downloader @app.route('//download/') def downloads_select(file): # TODO: implement @@ -167,6 +187,8 @@ def downloads_redirect(protocol, file, mirror=None): pass +##################### +# Blog helper methods def get_blog_index(): """ @@ -204,6 +226,8 @@ def render_blog_entry(slug): return publish_parts(source=content, source_path=BLOG_DIR, writer_name="html") +############### +# Blog handlers @app.route('//blog/') @app.route('//blog/page/') @@ -234,9 +258,8 @@ def blog_atom(): pass - - -## legacy stuff: +############## +# Legacy paths @app.route('/meeting') @app.route('/meeting.html') From c9640766f86046d4a4197c136e67e98571be21fa Mon Sep 17 00:00:00 2001 From: str4d Date: Mon, 10 Sep 2012 12:14:29 +0000 Subject: [PATCH 010/650] Reordered and commented hooks --- app.py | 39 +++++++++++++++++++++++++++++---------- 1 file changed, 29 insertions(+), 10 deletions(-) diff --git a/app.py b/app.py index 449a677c..477c4c87 100644 --- a/app.py +++ b/app.py @@ -16,11 +16,9 @@ MEETINGS_DIR = os.path.join(os.path.dirname(__file__), 'meetings') app = application = Flask(__name__, template_folder=TEMPLATE_DIR, static_url_path='/_static', static_folder=STATIC_DIR) app.debug = bool(os.environ.get('APP_DEBUG', 'False')) -@app.after_request -def call_after_request_callbacks(response): - for callback in getattr(g, 'after_request_callbacks', ()): - response = callback(response) - return response + +########################## +# Hooks - helper functions def after_this_request(f): if not hasattr(g, 'after_request_callbacks'): @@ -29,11 +27,8 @@ def after_this_request(f): return f -@app.template_filter('restructuredtext') -def restructuredtext(value): - parts = publish_parts(source=value, writer_name="html") - return parts['html_body'] - +########################### +# Hooks - url preprocessing @app.url_value_preprocessor def pull_lang(endpoint, values): @@ -50,6 +45,11 @@ def set_lang(endpoint, values): if hasattr(g, 'lang'): values['lang'] = g.lang + +######################## +# Hooks - before request + +# Detect and store chosen theme @app.before_request def detect_theme(): theme = 'light' @@ -69,6 +69,25 @@ def detect_theme(): return resp +############################ +# Hooks - request processing + +@app.template_filter('restructuredtext') +def restructuredtext(value): + parts = publish_parts(source=value, writer_name="html") + return parts['html_body'] + + +####################### +# Hooks - after request + +@app.after_request +def call_after_request_callbacks(response): + for callback in getattr(g, 'after_request_callbacks', ()): + response = callback(response) + return response + + ############### # Error handlers From d48acb9c8aadff874aff67480cec5ba157ee0d39 Mon Sep 17 00:00:00 2001 From: str4d Date: Mon, 10 Sep 2012 12:34:33 +0000 Subject: [PATCH 011/650] Moved "new website" into a package in www.i2p2 dir --- app.py => www.i2p2/i2p2www/__init__.py | 0 .../i2p2www/blog}/2006/10/10/status.html | 0 .../i2p2www/blog}/2006/10/10/status.rst | 0 {meetings => www.i2p2/i2p2www/meetings}/208.log | 0 .../i2p2www/pages}/downloads/list.html | 0 .../i2p2www/pages}/global/error_404.html | 0 .../i2p2www/pages}/global/layout.html | 0 {pages => www.i2p2/i2p2www/pages}/global/menu.html | 0 {pages => www.i2p2/i2p2www/pages}/global/urlify | 0 .../i2p2www/pages}/meetings/index.html | 0 {pages => www.i2p2/i2p2www/pages}/site/index.html | 0 {static => www.i2p2/i2p2www/static}/favicon.ico | Bin .../i2p2www/static}/images/I2PTunnel-streamr.png | Bin .../i2p2www/static}/images/add-key-terminal.png | Bin .../i2p2www/static}/images/bandwidth2009.png | Bin {static => www.i2p2/i2p2www/static}/images/cz.png | Bin {static => www.i2p2/i2p2www/static}/images/dark.png | Bin .../i2p2www/static}/images/darkbluebg.png | Bin .../i2p2www/static}/images/darkbluetile.png | Bin .../i2p2www/static}/images/darkerbluetile.png | Bin {static => www.i2p2/i2p2www/static}/images/de.png | Bin .../i2p2www/static}/images/download.png | Bin .../i2p2www/static}/images/download_dark.png | Bin .../i2p2www/static}/images/endToEndEncryption.png | Bin .../static}/images/endToEndEncryption_fr.png | Bin .../static}/images/endToEndEncryption_zh.png | Bin {static => www.i2p2/i2p2www/static}/images/es.png | Bin {static => www.i2p2/i2p2www/static}/images/eu.png | Bin .../i2p2www/static}/images/firefox.options.jpg | Bin .../i2p2www/static}/images/firefox.options_fr.png | Bin .../i2p2www/static}/images/firefox.proxyports.jpg | Bin .../static}/images/firefox.proxyports_fr.png | Bin {static => www.i2p2/i2p2www/static}/images/fr.png | Bin .../i2p2www/static}/images/garliccloves.png | Bin {static => www.i2p2/i2p2www/static}/images/help.png | Bin .../i2p2www/static}/images/help_dark.png | Bin .../i2p2www/static}/images/i2plogo.png | Bin .../i2p2www/static}/images/i2ptunnel_peertopeer.png | Bin .../static}/images/i2ptunnel_serverclient.png | Bin .../i2p2www/static}/images/i2pvstor_zh.png | Bin .../i2p2www/static}/images/ie.options.jpg | Bin .../i2p2www/static}/images/ie.options_fr.png | Bin .../i2p2www/static}/images/ie.proxyports.jpg | Bin .../i2p2www/static}/images/ie.proxyports_fr.png | Bin {static => www.i2p2/i2p2www/static}/images/info.png | Bin .../i2p2www/static}/images/info_dark.png | Bin {static => www.i2p2/i2p2www/static}/images/it.png | Bin .../i2p2www/static}/images/itoopie.png | Bin .../i2p2www/static}/images/konqueror.options.jpg | Bin .../i2p2www/static}/images/konqueror.options_fr.jpg | Bin .../i2p2www/static}/images/konqueror.proxyports.jpg | Bin .../static}/images/konqueror.proxyports_fr.jpg | Bin .../i2p2www/static}/images/lang_ar.png | Bin .../i2p2www/static}/images/light.png | Bin .../i2p2www/static}/images/lightbluetile.png | Bin {static => www.i2p2/i2p2www/static}/images/link.png | Bin .../i2p2www/static}/images/link_dark.png | Bin .../i2p2www/static}/images/logo07c.jpg | Bin {static => www.i2p2/i2p2www/static}/images/net.png | Bin .../i2p2www/static}/images/net_fr.png | Bin .../i2p2www/static}/images/netdb_get_leaseset.png | Bin .../static}/images/netdb_get_leaseset_fr.png | Bin .../static}/images/netdb_get_routerinfo_1.png | Bin .../static}/images/netdb_get_routerinfo_1_fr.png | Bin .../static}/images/netdb_get_routerinfo_2.png | Bin .../static}/images/netdb_get_routerinfo_2_fr.png | Bin {static => www.i2p2/i2p2www/static}/images/nl.png | Bin {static => www.i2p2/i2p2www/static}/images/plan.png | Bin .../i2p2www/static}/images/protocol_stack.png | Bin .../i2p2www/static}/images/protocol_stack_fr.png | Bin {static => www.i2p2/i2p2www/static}/images/ru.png | Bin .../i2p2www/static}/images/sqbullet.png | Bin .../i2p2www/static}/images/stackoverflow_ad.png | Bin .../i2p2www/static}/images/tabletile.png | Bin .../i2p2www/static}/images/tabletile_alt.png | Bin .../i2p2www/static}/images/tabletitledark.png | Bin .../i2p2www/static}/images/tabletitlelight-tall.png | Bin .../i2p2www/static}/images/tabletitlelight.png | Bin .../i2p2www/static}/images/target.png | Bin .../i2p2www/static}/images/tunnelSending.png | Bin .../i2p2www/static}/images/tunnels.png | Bin .../i2p2www/static}/images/tunnels_fr.png | Bin {static => www.i2p2/i2p2www/static}/images/udp.png | Bin {static => www.i2p2/i2p2www/static}/images/us.png | Bin {static => www.i2p2/i2p2www/static}/images/zh.png | Bin {static => www.i2p2/i2p2www/static}/news/news.xml | 0 .../i2p2www/static}/pdf/I2CP_spec.pdf | Bin .../i2p2www/static}/pdf/I2NP_spec.pdf | Bin .../i2p2www/static}/pdf/I2P-PET-CON-2009.1.pdf | Bin .../i2p2www/static}/pdf/datastructures.pdf | Bin .../i2p2www/static}/pdf/i2p_philosophy.pdf | Bin .../i2p2www/static}/pdf/polling_http_transport.pdf | Bin {static => www.i2p2/i2p2www/static}/styles/dark.css | 0 .../i2p2www/static}/styles/light.css | 0 .../i2p2www/static}/styles/light_ar.css | 0 .../i2p2www/static}/styles/light_zh.css | 0 www.i2p2/runserver.py | 2 ++ 97 files changed, 2 insertions(+) rename app.py => www.i2p2/i2p2www/__init__.py (100%) rename {blog => www.i2p2/i2p2www/blog}/2006/10/10/status.html (100%) rename {blog => www.i2p2/i2p2www/blog}/2006/10/10/status.rst (100%) rename {meetings => www.i2p2/i2p2www/meetings}/208.log (100%) rename {pages => www.i2p2/i2p2www/pages}/downloads/list.html (100%) rename {pages => www.i2p2/i2p2www/pages}/global/error_404.html (100%) rename {pages => www.i2p2/i2p2www/pages}/global/layout.html (100%) rename {pages => www.i2p2/i2p2www/pages}/global/menu.html (100%) rename {pages => www.i2p2/i2p2www/pages}/global/urlify (100%) rename {pages => www.i2p2/i2p2www/pages}/meetings/index.html (100%) rename {pages => www.i2p2/i2p2www/pages}/site/index.html (100%) rename {static => www.i2p2/i2p2www/static}/favicon.ico (100%) rename {static => www.i2p2/i2p2www/static}/images/I2PTunnel-streamr.png (100%) rename {static => www.i2p2/i2p2www/static}/images/add-key-terminal.png (100%) rename {static => www.i2p2/i2p2www/static}/images/bandwidth2009.png (100%) rename {static => www.i2p2/i2p2www/static}/images/cz.png (100%) rename {static => www.i2p2/i2p2www/static}/images/dark.png (100%) rename {static => www.i2p2/i2p2www/static}/images/darkbluebg.png (100%) rename {static => www.i2p2/i2p2www/static}/images/darkbluetile.png (100%) rename {static => www.i2p2/i2p2www/static}/images/darkerbluetile.png (100%) rename {static => www.i2p2/i2p2www/static}/images/de.png (100%) rename {static => www.i2p2/i2p2www/static}/images/download.png (100%) rename {static => www.i2p2/i2p2www/static}/images/download_dark.png (100%) rename {static => www.i2p2/i2p2www/static}/images/endToEndEncryption.png (100%) rename {static => www.i2p2/i2p2www/static}/images/endToEndEncryption_fr.png (100%) rename {static => www.i2p2/i2p2www/static}/images/endToEndEncryption_zh.png (100%) rename {static => www.i2p2/i2p2www/static}/images/es.png (100%) rename {static => www.i2p2/i2p2www/static}/images/eu.png (100%) rename {static => www.i2p2/i2p2www/static}/images/firefox.options.jpg (100%) rename {static => www.i2p2/i2p2www/static}/images/firefox.options_fr.png (100%) rename {static => www.i2p2/i2p2www/static}/images/firefox.proxyports.jpg (100%) rename {static => www.i2p2/i2p2www/static}/images/firefox.proxyports_fr.png (100%) rename {static => www.i2p2/i2p2www/static}/images/fr.png (100%) rename {static => www.i2p2/i2p2www/static}/images/garliccloves.png (100%) rename {static => www.i2p2/i2p2www/static}/images/help.png (100%) rename {static => www.i2p2/i2p2www/static}/images/help_dark.png (100%) rename {static => www.i2p2/i2p2www/static}/images/i2plogo.png (100%) rename {static => www.i2p2/i2p2www/static}/images/i2ptunnel_peertopeer.png (100%) rename {static => www.i2p2/i2p2www/static}/images/i2ptunnel_serverclient.png (100%) rename {static => www.i2p2/i2p2www/static}/images/i2pvstor_zh.png (100%) rename {static => www.i2p2/i2p2www/static}/images/ie.options.jpg (100%) rename {static => www.i2p2/i2p2www/static}/images/ie.options_fr.png (100%) rename {static => www.i2p2/i2p2www/static}/images/ie.proxyports.jpg (100%) rename {static => www.i2p2/i2p2www/static}/images/ie.proxyports_fr.png (100%) rename {static => www.i2p2/i2p2www/static}/images/info.png (100%) rename {static => www.i2p2/i2p2www/static}/images/info_dark.png (100%) rename {static => www.i2p2/i2p2www/static}/images/it.png (100%) rename {static => www.i2p2/i2p2www/static}/images/itoopie.png (100%) rename {static => www.i2p2/i2p2www/static}/images/konqueror.options.jpg (100%) rename {static => www.i2p2/i2p2www/static}/images/konqueror.options_fr.jpg (100%) rename {static => www.i2p2/i2p2www/static}/images/konqueror.proxyports.jpg (100%) rename {static => www.i2p2/i2p2www/static}/images/konqueror.proxyports_fr.jpg (100%) rename {static => www.i2p2/i2p2www/static}/images/lang_ar.png (100%) rename {static => www.i2p2/i2p2www/static}/images/light.png (100%) rename {static => www.i2p2/i2p2www/static}/images/lightbluetile.png (100%) rename {static => www.i2p2/i2p2www/static}/images/link.png (100%) rename {static => www.i2p2/i2p2www/static}/images/link_dark.png (100%) rename {static => www.i2p2/i2p2www/static}/images/logo07c.jpg (100%) rename {static => www.i2p2/i2p2www/static}/images/net.png (100%) rename {static => www.i2p2/i2p2www/static}/images/net_fr.png (100%) rename {static => www.i2p2/i2p2www/static}/images/netdb_get_leaseset.png (100%) rename {static => www.i2p2/i2p2www/static}/images/netdb_get_leaseset_fr.png (100%) rename {static => www.i2p2/i2p2www/static}/images/netdb_get_routerinfo_1.png (100%) rename {static => www.i2p2/i2p2www/static}/images/netdb_get_routerinfo_1_fr.png (100%) rename {static => www.i2p2/i2p2www/static}/images/netdb_get_routerinfo_2.png (100%) rename {static => www.i2p2/i2p2www/static}/images/netdb_get_routerinfo_2_fr.png (100%) rename {static => www.i2p2/i2p2www/static}/images/nl.png (100%) rename {static => www.i2p2/i2p2www/static}/images/plan.png (100%) rename {static => www.i2p2/i2p2www/static}/images/protocol_stack.png (100%) rename {static => www.i2p2/i2p2www/static}/images/protocol_stack_fr.png (100%) rename {static => www.i2p2/i2p2www/static}/images/ru.png (100%) rename {static => www.i2p2/i2p2www/static}/images/sqbullet.png (100%) rename {static => www.i2p2/i2p2www/static}/images/stackoverflow_ad.png (100%) rename {static => www.i2p2/i2p2www/static}/images/tabletile.png (100%) rename {static => www.i2p2/i2p2www/static}/images/tabletile_alt.png (100%) rename {static => www.i2p2/i2p2www/static}/images/tabletitledark.png (100%) rename {static => www.i2p2/i2p2www/static}/images/tabletitlelight-tall.png (100%) rename {static => www.i2p2/i2p2www/static}/images/tabletitlelight.png (100%) rename {static => www.i2p2/i2p2www/static}/images/target.png (100%) rename {static => www.i2p2/i2p2www/static}/images/tunnelSending.png (100%) rename {static => www.i2p2/i2p2www/static}/images/tunnels.png (100%) rename {static => www.i2p2/i2p2www/static}/images/tunnels_fr.png (100%) rename {static => www.i2p2/i2p2www/static}/images/udp.png (100%) rename {static => www.i2p2/i2p2www/static}/images/us.png (100%) rename {static => www.i2p2/i2p2www/static}/images/zh.png (100%) rename {static => www.i2p2/i2p2www/static}/news/news.xml (100%) rename {static => www.i2p2/i2p2www/static}/pdf/I2CP_spec.pdf (100%) rename {static => www.i2p2/i2p2www/static}/pdf/I2NP_spec.pdf (100%) rename {static => www.i2p2/i2p2www/static}/pdf/I2P-PET-CON-2009.1.pdf (100%) rename {static => www.i2p2/i2p2www/static}/pdf/datastructures.pdf (100%) rename {static => www.i2p2/i2p2www/static}/pdf/i2p_philosophy.pdf (100%) rename {static => www.i2p2/i2p2www/static}/pdf/polling_http_transport.pdf (100%) rename {static => www.i2p2/i2p2www/static}/styles/dark.css (100%) rename {static => www.i2p2/i2p2www/static}/styles/light.css (100%) rename {static => www.i2p2/i2p2www/static}/styles/light_ar.css (100%) rename {static => www.i2p2/i2p2www/static}/styles/light_zh.css (100%) create mode 100644 www.i2p2/runserver.py diff --git a/app.py b/www.i2p2/i2p2www/__init__.py similarity index 100% rename from app.py rename to www.i2p2/i2p2www/__init__.py diff --git a/blog/2006/10/10/status.html b/www.i2p2/i2p2www/blog/2006/10/10/status.html similarity index 100% rename from blog/2006/10/10/status.html rename to www.i2p2/i2p2www/blog/2006/10/10/status.html diff --git a/blog/2006/10/10/status.rst b/www.i2p2/i2p2www/blog/2006/10/10/status.rst similarity index 100% rename from blog/2006/10/10/status.rst rename to www.i2p2/i2p2www/blog/2006/10/10/status.rst diff --git a/meetings/208.log b/www.i2p2/i2p2www/meetings/208.log similarity index 100% rename from meetings/208.log rename to www.i2p2/i2p2www/meetings/208.log diff --git a/pages/downloads/list.html b/www.i2p2/i2p2www/pages/downloads/list.html similarity index 100% rename from pages/downloads/list.html rename to www.i2p2/i2p2www/pages/downloads/list.html diff --git a/pages/global/error_404.html b/www.i2p2/i2p2www/pages/global/error_404.html similarity index 100% rename from pages/global/error_404.html rename to www.i2p2/i2p2www/pages/global/error_404.html diff --git a/pages/global/layout.html b/www.i2p2/i2p2www/pages/global/layout.html similarity index 100% rename from pages/global/layout.html rename to www.i2p2/i2p2www/pages/global/layout.html diff --git a/pages/global/menu.html b/www.i2p2/i2p2www/pages/global/menu.html similarity index 100% rename from pages/global/menu.html rename to www.i2p2/i2p2www/pages/global/menu.html diff --git a/pages/global/urlify b/www.i2p2/i2p2www/pages/global/urlify similarity index 100% rename from pages/global/urlify rename to www.i2p2/i2p2www/pages/global/urlify diff --git a/pages/meetings/index.html b/www.i2p2/i2p2www/pages/meetings/index.html similarity index 100% rename from pages/meetings/index.html rename to www.i2p2/i2p2www/pages/meetings/index.html diff --git a/pages/site/index.html b/www.i2p2/i2p2www/pages/site/index.html similarity index 100% rename from pages/site/index.html rename to www.i2p2/i2p2www/pages/site/index.html diff --git a/static/favicon.ico b/www.i2p2/i2p2www/static/favicon.ico similarity index 100% rename from static/favicon.ico rename to www.i2p2/i2p2www/static/favicon.ico diff --git a/static/images/I2PTunnel-streamr.png b/www.i2p2/i2p2www/static/images/I2PTunnel-streamr.png similarity index 100% rename from static/images/I2PTunnel-streamr.png rename to www.i2p2/i2p2www/static/images/I2PTunnel-streamr.png diff --git a/static/images/add-key-terminal.png b/www.i2p2/i2p2www/static/images/add-key-terminal.png similarity index 100% rename from static/images/add-key-terminal.png rename to www.i2p2/i2p2www/static/images/add-key-terminal.png diff --git a/static/images/bandwidth2009.png b/www.i2p2/i2p2www/static/images/bandwidth2009.png similarity index 100% rename from static/images/bandwidth2009.png rename to www.i2p2/i2p2www/static/images/bandwidth2009.png diff --git a/static/images/cz.png b/www.i2p2/i2p2www/static/images/cz.png similarity index 100% rename from static/images/cz.png rename to www.i2p2/i2p2www/static/images/cz.png diff --git a/static/images/dark.png b/www.i2p2/i2p2www/static/images/dark.png similarity index 100% rename from static/images/dark.png rename to www.i2p2/i2p2www/static/images/dark.png diff --git a/static/images/darkbluebg.png b/www.i2p2/i2p2www/static/images/darkbluebg.png similarity index 100% rename from static/images/darkbluebg.png rename to www.i2p2/i2p2www/static/images/darkbluebg.png diff --git a/static/images/darkbluetile.png b/www.i2p2/i2p2www/static/images/darkbluetile.png similarity index 100% rename from static/images/darkbluetile.png rename to www.i2p2/i2p2www/static/images/darkbluetile.png diff --git a/static/images/darkerbluetile.png b/www.i2p2/i2p2www/static/images/darkerbluetile.png similarity index 100% rename from static/images/darkerbluetile.png rename to www.i2p2/i2p2www/static/images/darkerbluetile.png diff --git a/static/images/de.png b/www.i2p2/i2p2www/static/images/de.png similarity index 100% rename from static/images/de.png rename to www.i2p2/i2p2www/static/images/de.png diff --git a/static/images/download.png b/www.i2p2/i2p2www/static/images/download.png similarity index 100% rename from static/images/download.png rename to www.i2p2/i2p2www/static/images/download.png diff --git a/static/images/download_dark.png b/www.i2p2/i2p2www/static/images/download_dark.png similarity index 100% rename from static/images/download_dark.png rename to www.i2p2/i2p2www/static/images/download_dark.png diff --git a/static/images/endToEndEncryption.png b/www.i2p2/i2p2www/static/images/endToEndEncryption.png similarity index 100% rename from static/images/endToEndEncryption.png rename to www.i2p2/i2p2www/static/images/endToEndEncryption.png diff --git a/static/images/endToEndEncryption_fr.png b/www.i2p2/i2p2www/static/images/endToEndEncryption_fr.png similarity index 100% rename from static/images/endToEndEncryption_fr.png rename to www.i2p2/i2p2www/static/images/endToEndEncryption_fr.png diff --git a/static/images/endToEndEncryption_zh.png b/www.i2p2/i2p2www/static/images/endToEndEncryption_zh.png similarity index 100% rename from static/images/endToEndEncryption_zh.png rename to www.i2p2/i2p2www/static/images/endToEndEncryption_zh.png diff --git a/static/images/es.png b/www.i2p2/i2p2www/static/images/es.png similarity index 100% rename from static/images/es.png rename to www.i2p2/i2p2www/static/images/es.png diff --git a/static/images/eu.png b/www.i2p2/i2p2www/static/images/eu.png similarity index 100% rename from static/images/eu.png rename to www.i2p2/i2p2www/static/images/eu.png diff --git a/static/images/firefox.options.jpg b/www.i2p2/i2p2www/static/images/firefox.options.jpg similarity index 100% rename from static/images/firefox.options.jpg rename to www.i2p2/i2p2www/static/images/firefox.options.jpg diff --git a/static/images/firefox.options_fr.png b/www.i2p2/i2p2www/static/images/firefox.options_fr.png similarity index 100% rename from static/images/firefox.options_fr.png rename to www.i2p2/i2p2www/static/images/firefox.options_fr.png diff --git a/static/images/firefox.proxyports.jpg b/www.i2p2/i2p2www/static/images/firefox.proxyports.jpg similarity index 100% rename from static/images/firefox.proxyports.jpg rename to www.i2p2/i2p2www/static/images/firefox.proxyports.jpg diff --git a/static/images/firefox.proxyports_fr.png b/www.i2p2/i2p2www/static/images/firefox.proxyports_fr.png similarity index 100% rename from static/images/firefox.proxyports_fr.png rename to www.i2p2/i2p2www/static/images/firefox.proxyports_fr.png diff --git a/static/images/fr.png b/www.i2p2/i2p2www/static/images/fr.png similarity index 100% rename from static/images/fr.png rename to www.i2p2/i2p2www/static/images/fr.png diff --git a/static/images/garliccloves.png b/www.i2p2/i2p2www/static/images/garliccloves.png similarity index 100% rename from static/images/garliccloves.png rename to www.i2p2/i2p2www/static/images/garliccloves.png diff --git a/static/images/help.png b/www.i2p2/i2p2www/static/images/help.png similarity index 100% rename from static/images/help.png rename to www.i2p2/i2p2www/static/images/help.png diff --git a/static/images/help_dark.png b/www.i2p2/i2p2www/static/images/help_dark.png similarity index 100% rename from static/images/help_dark.png rename to www.i2p2/i2p2www/static/images/help_dark.png diff --git a/static/images/i2plogo.png b/www.i2p2/i2p2www/static/images/i2plogo.png similarity index 100% rename from static/images/i2plogo.png rename to www.i2p2/i2p2www/static/images/i2plogo.png diff --git a/static/images/i2ptunnel_peertopeer.png b/www.i2p2/i2p2www/static/images/i2ptunnel_peertopeer.png similarity index 100% rename from static/images/i2ptunnel_peertopeer.png rename to www.i2p2/i2p2www/static/images/i2ptunnel_peertopeer.png diff --git a/static/images/i2ptunnel_serverclient.png b/www.i2p2/i2p2www/static/images/i2ptunnel_serverclient.png similarity index 100% rename from static/images/i2ptunnel_serverclient.png rename to www.i2p2/i2p2www/static/images/i2ptunnel_serverclient.png diff --git a/static/images/i2pvstor_zh.png b/www.i2p2/i2p2www/static/images/i2pvstor_zh.png similarity index 100% rename from static/images/i2pvstor_zh.png rename to www.i2p2/i2p2www/static/images/i2pvstor_zh.png diff --git a/static/images/ie.options.jpg b/www.i2p2/i2p2www/static/images/ie.options.jpg similarity index 100% rename from static/images/ie.options.jpg rename to www.i2p2/i2p2www/static/images/ie.options.jpg diff --git a/static/images/ie.options_fr.png b/www.i2p2/i2p2www/static/images/ie.options_fr.png similarity index 100% rename from static/images/ie.options_fr.png rename to www.i2p2/i2p2www/static/images/ie.options_fr.png diff --git a/static/images/ie.proxyports.jpg b/www.i2p2/i2p2www/static/images/ie.proxyports.jpg similarity index 100% rename from static/images/ie.proxyports.jpg rename to www.i2p2/i2p2www/static/images/ie.proxyports.jpg diff --git a/static/images/ie.proxyports_fr.png b/www.i2p2/i2p2www/static/images/ie.proxyports_fr.png similarity index 100% rename from static/images/ie.proxyports_fr.png rename to www.i2p2/i2p2www/static/images/ie.proxyports_fr.png diff --git a/static/images/info.png b/www.i2p2/i2p2www/static/images/info.png similarity index 100% rename from static/images/info.png rename to www.i2p2/i2p2www/static/images/info.png diff --git a/static/images/info_dark.png b/www.i2p2/i2p2www/static/images/info_dark.png similarity index 100% rename from static/images/info_dark.png rename to www.i2p2/i2p2www/static/images/info_dark.png diff --git a/static/images/it.png b/www.i2p2/i2p2www/static/images/it.png similarity index 100% rename from static/images/it.png rename to www.i2p2/i2p2www/static/images/it.png diff --git a/static/images/itoopie.png b/www.i2p2/i2p2www/static/images/itoopie.png similarity index 100% rename from static/images/itoopie.png rename to www.i2p2/i2p2www/static/images/itoopie.png diff --git a/static/images/konqueror.options.jpg b/www.i2p2/i2p2www/static/images/konqueror.options.jpg similarity index 100% rename from static/images/konqueror.options.jpg rename to www.i2p2/i2p2www/static/images/konqueror.options.jpg diff --git a/static/images/konqueror.options_fr.jpg b/www.i2p2/i2p2www/static/images/konqueror.options_fr.jpg similarity index 100% rename from static/images/konqueror.options_fr.jpg rename to www.i2p2/i2p2www/static/images/konqueror.options_fr.jpg diff --git a/static/images/konqueror.proxyports.jpg b/www.i2p2/i2p2www/static/images/konqueror.proxyports.jpg similarity index 100% rename from static/images/konqueror.proxyports.jpg rename to www.i2p2/i2p2www/static/images/konqueror.proxyports.jpg diff --git a/static/images/konqueror.proxyports_fr.jpg b/www.i2p2/i2p2www/static/images/konqueror.proxyports_fr.jpg similarity index 100% rename from static/images/konqueror.proxyports_fr.jpg rename to www.i2p2/i2p2www/static/images/konqueror.proxyports_fr.jpg diff --git a/static/images/lang_ar.png b/www.i2p2/i2p2www/static/images/lang_ar.png similarity index 100% rename from static/images/lang_ar.png rename to www.i2p2/i2p2www/static/images/lang_ar.png diff --git a/static/images/light.png b/www.i2p2/i2p2www/static/images/light.png similarity index 100% rename from static/images/light.png rename to www.i2p2/i2p2www/static/images/light.png diff --git a/static/images/lightbluetile.png b/www.i2p2/i2p2www/static/images/lightbluetile.png similarity index 100% rename from static/images/lightbluetile.png rename to www.i2p2/i2p2www/static/images/lightbluetile.png diff --git a/static/images/link.png b/www.i2p2/i2p2www/static/images/link.png similarity index 100% rename from static/images/link.png rename to www.i2p2/i2p2www/static/images/link.png diff --git a/static/images/link_dark.png b/www.i2p2/i2p2www/static/images/link_dark.png similarity index 100% rename from static/images/link_dark.png rename to www.i2p2/i2p2www/static/images/link_dark.png diff --git a/static/images/logo07c.jpg b/www.i2p2/i2p2www/static/images/logo07c.jpg similarity index 100% rename from static/images/logo07c.jpg rename to www.i2p2/i2p2www/static/images/logo07c.jpg diff --git a/static/images/net.png b/www.i2p2/i2p2www/static/images/net.png similarity index 100% rename from static/images/net.png rename to www.i2p2/i2p2www/static/images/net.png diff --git a/static/images/net_fr.png b/www.i2p2/i2p2www/static/images/net_fr.png similarity index 100% rename from static/images/net_fr.png rename to www.i2p2/i2p2www/static/images/net_fr.png diff --git a/static/images/netdb_get_leaseset.png b/www.i2p2/i2p2www/static/images/netdb_get_leaseset.png similarity index 100% rename from static/images/netdb_get_leaseset.png rename to www.i2p2/i2p2www/static/images/netdb_get_leaseset.png diff --git a/static/images/netdb_get_leaseset_fr.png b/www.i2p2/i2p2www/static/images/netdb_get_leaseset_fr.png similarity index 100% rename from static/images/netdb_get_leaseset_fr.png rename to www.i2p2/i2p2www/static/images/netdb_get_leaseset_fr.png diff --git a/static/images/netdb_get_routerinfo_1.png b/www.i2p2/i2p2www/static/images/netdb_get_routerinfo_1.png similarity index 100% rename from static/images/netdb_get_routerinfo_1.png rename to www.i2p2/i2p2www/static/images/netdb_get_routerinfo_1.png diff --git a/static/images/netdb_get_routerinfo_1_fr.png b/www.i2p2/i2p2www/static/images/netdb_get_routerinfo_1_fr.png similarity index 100% rename from static/images/netdb_get_routerinfo_1_fr.png rename to www.i2p2/i2p2www/static/images/netdb_get_routerinfo_1_fr.png diff --git a/static/images/netdb_get_routerinfo_2.png b/www.i2p2/i2p2www/static/images/netdb_get_routerinfo_2.png similarity index 100% rename from static/images/netdb_get_routerinfo_2.png rename to www.i2p2/i2p2www/static/images/netdb_get_routerinfo_2.png diff --git a/static/images/netdb_get_routerinfo_2_fr.png b/www.i2p2/i2p2www/static/images/netdb_get_routerinfo_2_fr.png similarity index 100% rename from static/images/netdb_get_routerinfo_2_fr.png rename to www.i2p2/i2p2www/static/images/netdb_get_routerinfo_2_fr.png diff --git a/static/images/nl.png b/www.i2p2/i2p2www/static/images/nl.png similarity index 100% rename from static/images/nl.png rename to www.i2p2/i2p2www/static/images/nl.png diff --git a/static/images/plan.png b/www.i2p2/i2p2www/static/images/plan.png similarity index 100% rename from static/images/plan.png rename to www.i2p2/i2p2www/static/images/plan.png diff --git a/static/images/protocol_stack.png b/www.i2p2/i2p2www/static/images/protocol_stack.png similarity index 100% rename from static/images/protocol_stack.png rename to www.i2p2/i2p2www/static/images/protocol_stack.png diff --git a/static/images/protocol_stack_fr.png b/www.i2p2/i2p2www/static/images/protocol_stack_fr.png similarity index 100% rename from static/images/protocol_stack_fr.png rename to www.i2p2/i2p2www/static/images/protocol_stack_fr.png diff --git a/static/images/ru.png b/www.i2p2/i2p2www/static/images/ru.png similarity index 100% rename from static/images/ru.png rename to www.i2p2/i2p2www/static/images/ru.png diff --git a/static/images/sqbullet.png b/www.i2p2/i2p2www/static/images/sqbullet.png similarity index 100% rename from static/images/sqbullet.png rename to www.i2p2/i2p2www/static/images/sqbullet.png diff --git a/static/images/stackoverflow_ad.png b/www.i2p2/i2p2www/static/images/stackoverflow_ad.png similarity index 100% rename from static/images/stackoverflow_ad.png rename to www.i2p2/i2p2www/static/images/stackoverflow_ad.png diff --git a/static/images/tabletile.png b/www.i2p2/i2p2www/static/images/tabletile.png similarity index 100% rename from static/images/tabletile.png rename to www.i2p2/i2p2www/static/images/tabletile.png diff --git a/static/images/tabletile_alt.png b/www.i2p2/i2p2www/static/images/tabletile_alt.png similarity index 100% rename from static/images/tabletile_alt.png rename to www.i2p2/i2p2www/static/images/tabletile_alt.png diff --git a/static/images/tabletitledark.png b/www.i2p2/i2p2www/static/images/tabletitledark.png similarity index 100% rename from static/images/tabletitledark.png rename to www.i2p2/i2p2www/static/images/tabletitledark.png diff --git a/static/images/tabletitlelight-tall.png b/www.i2p2/i2p2www/static/images/tabletitlelight-tall.png similarity index 100% rename from static/images/tabletitlelight-tall.png rename to www.i2p2/i2p2www/static/images/tabletitlelight-tall.png diff --git a/static/images/tabletitlelight.png b/www.i2p2/i2p2www/static/images/tabletitlelight.png similarity index 100% rename from static/images/tabletitlelight.png rename to www.i2p2/i2p2www/static/images/tabletitlelight.png diff --git a/static/images/target.png b/www.i2p2/i2p2www/static/images/target.png similarity index 100% rename from static/images/target.png rename to www.i2p2/i2p2www/static/images/target.png diff --git a/static/images/tunnelSending.png b/www.i2p2/i2p2www/static/images/tunnelSending.png similarity index 100% rename from static/images/tunnelSending.png rename to www.i2p2/i2p2www/static/images/tunnelSending.png diff --git a/static/images/tunnels.png b/www.i2p2/i2p2www/static/images/tunnels.png similarity index 100% rename from static/images/tunnels.png rename to www.i2p2/i2p2www/static/images/tunnels.png diff --git a/static/images/tunnels_fr.png b/www.i2p2/i2p2www/static/images/tunnels_fr.png similarity index 100% rename from static/images/tunnels_fr.png rename to www.i2p2/i2p2www/static/images/tunnels_fr.png diff --git a/static/images/udp.png b/www.i2p2/i2p2www/static/images/udp.png similarity index 100% rename from static/images/udp.png rename to www.i2p2/i2p2www/static/images/udp.png diff --git a/static/images/us.png b/www.i2p2/i2p2www/static/images/us.png similarity index 100% rename from static/images/us.png rename to www.i2p2/i2p2www/static/images/us.png diff --git a/static/images/zh.png b/www.i2p2/i2p2www/static/images/zh.png similarity index 100% rename from static/images/zh.png rename to www.i2p2/i2p2www/static/images/zh.png diff --git a/static/news/news.xml b/www.i2p2/i2p2www/static/news/news.xml similarity index 100% rename from static/news/news.xml rename to www.i2p2/i2p2www/static/news/news.xml diff --git a/static/pdf/I2CP_spec.pdf b/www.i2p2/i2p2www/static/pdf/I2CP_spec.pdf similarity index 100% rename from static/pdf/I2CP_spec.pdf rename to www.i2p2/i2p2www/static/pdf/I2CP_spec.pdf diff --git a/static/pdf/I2NP_spec.pdf b/www.i2p2/i2p2www/static/pdf/I2NP_spec.pdf similarity index 100% rename from static/pdf/I2NP_spec.pdf rename to www.i2p2/i2p2www/static/pdf/I2NP_spec.pdf diff --git a/static/pdf/I2P-PET-CON-2009.1.pdf b/www.i2p2/i2p2www/static/pdf/I2P-PET-CON-2009.1.pdf similarity index 100% rename from static/pdf/I2P-PET-CON-2009.1.pdf rename to www.i2p2/i2p2www/static/pdf/I2P-PET-CON-2009.1.pdf diff --git a/static/pdf/datastructures.pdf b/www.i2p2/i2p2www/static/pdf/datastructures.pdf similarity index 100% rename from static/pdf/datastructures.pdf rename to www.i2p2/i2p2www/static/pdf/datastructures.pdf diff --git a/static/pdf/i2p_philosophy.pdf b/www.i2p2/i2p2www/static/pdf/i2p_philosophy.pdf similarity index 100% rename from static/pdf/i2p_philosophy.pdf rename to www.i2p2/i2p2www/static/pdf/i2p_philosophy.pdf diff --git a/static/pdf/polling_http_transport.pdf b/www.i2p2/i2p2www/static/pdf/polling_http_transport.pdf similarity index 100% rename from static/pdf/polling_http_transport.pdf rename to www.i2p2/i2p2www/static/pdf/polling_http_transport.pdf diff --git a/static/styles/dark.css b/www.i2p2/i2p2www/static/styles/dark.css similarity index 100% rename from static/styles/dark.css rename to www.i2p2/i2p2www/static/styles/dark.css diff --git a/static/styles/light.css b/www.i2p2/i2p2www/static/styles/light.css similarity index 100% rename from static/styles/light.css rename to www.i2p2/i2p2www/static/styles/light.css diff --git a/static/styles/light_ar.css b/www.i2p2/i2p2www/static/styles/light_ar.css similarity index 100% rename from static/styles/light_ar.css rename to www.i2p2/i2p2www/static/styles/light_ar.css diff --git a/static/styles/light_zh.css b/www.i2p2/i2p2www/static/styles/light_zh.css similarity index 100% rename from static/styles/light_zh.css rename to www.i2p2/i2p2www/static/styles/light_zh.css diff --git a/www.i2p2/runserver.py b/www.i2p2/runserver.py new file mode 100644 index 00000000..45e60621 --- /dev/null +++ b/www.i2p2/runserver.py @@ -0,0 +1,2 @@ +from i2p2www import app +app.run(debug=True) From cd26692cdb032926f0ec663aa232464004e3639b Mon Sep 17 00:00:00 2001 From: str4d Date: Mon, 10 Sep 2012 13:12:03 +0000 Subject: [PATCH 012/650] Link logo to / instead of index.html --- www.i2p2/i2p2www/pages/global/layout.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/www.i2p2/i2p2www/pages/global/layout.html b/www.i2p2/i2p2www/pages/global/layout.html index 4889c68a..102251c6 100644 --- a/www.i2p2/i2p2www/pages/global/layout.html +++ b/www.i2p2/i2p2www/pages/global/layout.html @@ -14,7 +14,7 @@

    {{ self.title() }}

    s to make them readable --- i2p2www/static/styles/duck.css | 1 + 1 file changed, 1 insertion(+) diff --git a/i2p2www/static/styles/duck.css b/i2p2www/static/styles/duck.css index becc05ea..ac71926a 100644 --- a/i2p2www/static/styles/duck.css +++ b/i2p2www/static/styles/duck.css @@ -237,6 +237,7 @@ div#content .main { div#content .inner h3 {font-size:1.4em;} div#content .inner ul {margin:1.5em; 1em;} div#content .inner p {margin:1em 0;} + div#content .inner td {padding:2px 5px;} div#footer {width:auto; border-top:3px solid #883333; background:#552222; box-shadow:0px -4px 8px rgba(0,0,0,.3); padding:1em 10%; background:-moz-linear-gradient(#883333, #772222);} div#footer .aside {display:inline-block; width:15%; margin-left:1%; vertical-align:top;} From 791cffb2e974b787ae38dd33f3ff3a5e4edcc13d Mon Sep 17 00:00:00 2001 From: str4d Date: Fri, 14 Dec 2012 04:33:13 +0000 Subject: [PATCH 156/650] Migrated the bounty_syndie2012* pages --- i2p2www/pages/site/volunteer/bounties/index.html | 2 +- .../pages/site/volunteer/bounties/syndie2012.html | 2 +- www.i2p2/pages/{ => translations}/bounty_syndie2012_de.html | 0 3 files changed, 2 insertions(+), 2 deletions(-) rename www.i2p2/pages/bounty_syndie2012.html => i2p2www/pages/site/volunteer/bounties/syndie2012.html (96%) rename www.i2p2/pages/{ => translations}/bounty_syndie2012_de.html (100%) diff --git a/i2p2www/pages/site/volunteer/bounties/index.html b/i2p2www/pages/site/volunteer/bounties/index.html index b80f7523..0c480cb1 100644 --- a/i2p2www/pages/site/volunteer/bounties/index.html +++ b/i2p2www/pages/site/volunteer/bounties/index.html @@ -74,7 +74,7 @@ etc), and the like.

    3000 €, of which 300 € already paid for done jobs

    Syndie

    Syndie

    Proposal in development

    I2P team

    [vacant]

    Big thanks go to the following people who have donated to I2P!

    -If you have made a donation, please send an email to echelon +If you have made a donation, please send an email to echelon with your name or nick (and optionally homepage) so we can list you here.

    From 7775b8ed48f4d764ae44ee49ab88d5966e6cfac1 Mon Sep 17 00:00:00 2001 From: str4d Date: Sat, 15 Dec 2012 13:01:09 +0000 Subject: [PATCH 179/650] Missed __init__.py in last commit --- i2p2www/__init__.py | 1 + 1 file changed, 1 insertion(+) diff --git a/i2p2www/__init__.py b/i2p2www/__init__.py index 279d3e72..5341abdf 100644 --- a/i2p2www/__init__.py +++ b/i2p2www/__init__.py @@ -130,6 +130,7 @@ def utility_processor(): 'www.i2p2.i2p': 'www.i2p2.de', #'forum.i2p': 'forum.i2p2.de', 'trac.i2p2.i2p': 'trac.i2p2.de', + 'mail.i2p': 'i2pmail.org', } def convert_url_to_clearnet(value): if not value.endswith('.i2p'): From 471178471a274913c177b6f445ef4cb66c05b73c Mon Sep 17 00:00:00 2001 From: str4d Date: Sat, 15 Dec 2012 13:01:44 +0000 Subject: [PATCH 180/650] Updated links in about/* --- i2p2www/pages/site/about/papers.html | 4 ++-- i2p2www/pages/site/about/team.html | 24 ++++++++++++------------ 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/i2p2www/pages/site/about/papers.html b/i2p2www/pages/site/about/papers.html index a4881172..9a0fe279 100644 --- a/i2p2www/pages/site/about/papers.html +++ b/i2p2www/pages/site/about/papers.html @@ -15,11 +15,11 @@ Newest links are at the bottom of each section.
    • -Invisible Internet Project (I2P) Project Overview, jrandom, August 28, 2003. +Invisible Internet Project (I2P) Project Overview, jrandom, August 28, 2003.
    • -Peer Profiling and Selection in the I2P Anonymous Network - +Peer Profiling and Selection in the I2P Anonymous Network - zzz and Lars Schimmer, presented at PET-CON 2009.1, diff --git a/i2p2www/pages/site/about/team.html b/i2p2www/pages/site/about/team.html index 5bd06e7d..db394d57 100644 --- a/i2p2www/pages/site/about/team.html +++ b/i2p2www/pages/site/about/team.html @@ -26,7 +26,7 @@ network. press contact, manages public relations and affairs - Forum admin + Forum admin cervantes manage the public user forum @@ -81,12 +81,12 @@ network. manage the public project website content design - Webserver admin + Webserver admin welterde manage the public project webservers - Website admin + Website admin [vacant] manage the public project website content @@ -108,47 +108,47 @@ network. lead dev for the SDK and router - I2P mail lead + I2P mail lead postman organize and develop the i2p mail system - I2Host lead + I2Host lead sponge I2Host addressbook application - BOB lead + BOB lead sponge Basic Open Bridge - I2P-Bote lead + I2P-Bote lead HungryHobo I2PBote plugin - Robert lead + Robert lead sponge Robert BitTorrent client - I2Phex lead + I2Phex lead [vacant] I2Phex Gnutella client - I2PSnark lead + I2PSnark lead zzz Maintains the integrated Bittorrent client - iMule lead + iMule lead [vacant] eMule client over I2P - Syndie lead + Syndie lead [vacant] Syndie development From a9b34ce7ad2aaa242e4fea8ab5eda3da5b4f3e83 Mon Sep 17 00:00:00 2001 From: str4d Date: Sat, 15 Dec 2012 13:12:54 +0000 Subject: [PATCH 181/650] Updated links in support/* --- i2p2www/pages/site/support/faq.html | 27 +++++++++---------- .../site/support/performance/future.html | 2 +- 2 files changed, 14 insertions(+), 15 deletions(-) diff --git a/i2p2www/pages/site/support/faq.html b/i2p2www/pages/site/support/faq.html index e7705af6..82941ca6 100644 --- a/i2p2www/pages/site/support/faq.html +++ b/i2p2www/pages/site/support/faq.html @@ -49,7 +49,7 @@

      What systems will I2P run on? (link)

      -

      While I2P has been reported to run PCs as meagre as a low-end Pentium II with 64 MB of RAM, you'll have a much better experience on a Pentium III (or better) with 128MB of RAM (or more). A chart comparing the performance of the various JREs can be found at http://trac.i2p2.de/wiki/java, but in short: it's at all possible, use Sun/Oracle Java or OpenJDK.

      +

      While I2P has been reported to run PCs as meagre as a low-end Pentium II with 64 MB of RAM, you'll have a much better experience on a Pentium III (or better) with 128MB of RAM (or more). A chart comparing the performance of the various JREs can be found at http://{{ i2pconv('trac.i2p2.i2p') }}/wiki/java, but in short: it's at all possible, use Sun/Oracle Java or OpenJDK.

      I2P has been tested on Windows, Linux, FreeBSD (see the note below), OSX, and OpenSolaris. There is work underway to bring I2P to the Android platform.

      @@ -58,8 +58,8 @@ Here are some places, pick one or more.

      @@ -97,7 +97,7 @@ We do not know if or when jrandom will return. The *.i2p.net domains were left in a non-functioning state after a power outage at the hosting company.

      See this page for jrandom's parting message and additional information - on the migration of *.i2p.net to this website.

      + on the migration of *.i2p.net to this website.

      I2P remains in active development.

      My router is using too much CPU?!? @@ -198,13 +198,13 @@ All routers adjust dynamically to changing network conditions and demands. If you are running release 0.6.1.31 or later, you probably don't need to do this. If you are running release 0.6.1.26 or earlier, either follow the manual reseed instructions below - or install the latest release. + or install the latest release. Possible alternate method - add wrapper.java.additional.5=-Di2p.reseedURL=http://netdb.i2p2.de/ to wrapper.config, shutdown the router completely, then start again, then click "reseed". Let us know if this works.

      -

      ...but you *really* should upgrade to the latest version.

      +

      ...but you *really* should upgrade to the latest version.

      My router has very few active peers, is this OK? (link)

      @@ -261,7 +261,7 @@ The best way to stay "better-connected" to the network is to h2ik's for the address. + See this forum post of h2ik's for the address. Make sure Shared Client, Delay Connect, AutoStart are checked. Other options should be left at the defaults. Click Save. In tunnel manger, click the Start button next to your new tunnel.
    • In firefox, click through Tools>Options>Advanced>Network>Setting. @@ -284,7 +284,7 @@ The best way to stay "better-connected" to the network is to zzz.i2p. + There is additional discussion about this on zzz.i2p.

      How do I access IRC, BitTorrent, or other services on the regular Internet? @@ -301,7 +301,7 @@ The best way to stay "better-connected" to the network is to perv.i2p tracks active eepsites. + perv.i2p tracks active eepsites.

      How do I set up my own eepsite? @@ -332,15 +332,14 @@ keeps you well-integrated in the network and helps your own transfer speeds.

      I2P is a work in progress. Lots of improvements and fixes are being implemented, and generally speaking, running the latest release will help your performance. -If you haven't, install the latest release. +If you haven't, install the latest release.

      Bittorrent / I2PSnark / Azureus I2P Plugin Questions? (link)

      See the -I2P Bittorrent FAQ -(outside I2P) +I2P Bittorrent FAQ

      How do I connect to IRC within I2P? (link)

      @@ -426,7 +425,7 @@ router advanced configuration option i2cp.tcp.bindAllInterfaces=true an extremely dangerous.

      If you would like more information on the socks proxy application anyway, - there are some helpful hints on the socks page. + there are some helpful hints on the socks page.

      What ports does I2P use? @@ -639,7 +638,7 @@ click Shutdown, wait 11 minutes, then start I2P.

      (link)

      Great! Find us on IRC irc.freenode.net #i2p or post to - the forum (within I2P) and we'll post it here (with + the forum (within I2P) and we'll post it here (with the answer, hopefully).

      {% endblock %} diff --git a/i2p2www/pages/site/support/performance/future.html b/i2p2www/pages/site/support/performance/future.html index a07d3571..95bdafbe 100644 --- a/i2p2www/pages/site/support/performance/future.html +++ b/i2p2www/pages/site/support/performance/future.html @@ -115,6 +115,6 @@ bandwidth, latency, and CPU usage.

    Additional ideas for improving the streaming library are described on the -streaming library page. +streaming library page.

    {% endblock %} From f7c84f3473d0c21eebda9daa9d2ad572b8ba4059 Mon Sep 17 00:00:00 2001 From: str4d Date: Sat, 15 Dec 2012 21:57:32 +0000 Subject: [PATCH 182/650] Removed duplicate links from footer, and added theme changing links --- i2p2www/__init__.py | 9 ++++++++- i2p2www/pages/global/footer.html | 24 +++++++++++------------- 2 files changed, 19 insertions(+), 14 deletions(-) diff --git a/i2p2www/__init__.py b/i2p2www/__init__.py index 5341abdf..ff1b73ae 100644 --- a/i2p2www/__init__.py +++ b/i2p2www/__init__.py @@ -153,8 +153,15 @@ def utility_processor(): args['page'] = page return url_for(request.endpoint, **args) + # Change the theme of the current page + def change_theme(theme): + args = request.view_args.copy() + args['theme'] = theme + return url_for(request.endpoint, **args) + return dict(i2pconv=convert_url_to_clearnet, - url_for_other_page=url_for_other_page) + url_for_other_page=url_for_other_page, + change_theme=change_theme) ################ diff --git a/i2p2www/pages/global/footer.html b/i2p2www/pages/global/footer.html index dda9b768..9edbab19 100644 --- a/i2p2www/pages/global/footer.html +++ b/i2p2www/pages/global/footer.html @@ -1,18 +1,14 @@
    -

    {{ _('About I2P') }}

    - -
    -

    {{ _('Mirrors') }}

    -
    +

    {{ _('Secure') }}

    -
    +

    {{ _('Misc.') }}

    -
    +

    {{ _('T-Shirts!') }}

    +
    + From 1f65a8110eda38e28bf1f538f8bc666d38ec457e Mon Sep 17 00:00:00 2001 From: str4d Date: Mon, 17 Dec 2012 19:55:08 +0000 Subject: [PATCH 183/650] Migrated over 0.9.4 release page --- i2p2www/blog/2012/12/17/I2P_0.9.4_released.rst | 6 ++++++ .../pages => i2p2www/blog/2012/12/17}/release-0.9.4.html | 6 ------ 2 files changed, 6 insertions(+), 6 deletions(-) create mode 100644 i2p2www/blog/2012/12/17/I2P_0.9.4_released.rst rename {www.i2p2/pages => i2p2www/blog/2012/12/17}/release-0.9.4.html (96%) diff --git a/i2p2www/blog/2012/12/17/I2P_0.9.4_released.rst b/i2p2www/blog/2012/12/17/I2P_0.9.4_released.rst new file mode 100644 index 00000000..c7ae40cf --- /dev/null +++ b/i2p2www/blog/2012/12/17/I2P_0.9.4_released.rst @@ -0,0 +1,6 @@ +============= +0.9.4 Release +============= + +.. raw:: html + :file: blog/2012/12/17/release-0.9.4.html diff --git a/www.i2p2/pages/release-0.9.4.html b/i2p2www/blog/2012/12/17/release-0.9.4.html similarity index 96% rename from www.i2p2/pages/release-0.9.4.html rename to i2p2www/blog/2012/12/17/release-0.9.4.html index 7945a92a..3ce2459c 100644 --- a/www.i2p2/pages/release-0.9.4.html +++ b/i2p2www/blog/2012/12/17/release-0.9.4.html @@ -1,7 +1,3 @@ -{% extends "_layout.html" %} -{% block title %}0.9.4 Release{% endblock %} -{% block content %} -

    0.9.4 includes a fix for a network capacity bug, introduced in 0.9.2, that was reducing network performance and reliability. It also includes major changes in the in-network update system, and adds the capability @@ -67,5 +63,3 @@ SHA256 Checksums:

    - -{% endblock %} From b8a1626b163a3830d8de3aa411a6eb3cdb1e6733 Mon Sep 17 00:00:00 2001 From: str4d Date: Mon, 17 Dec 2012 20:33:43 +0000 Subject: [PATCH 184/650] Fix after merge --- i2p2www/pages/downloads/list.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/i2p2www/pages/downloads/list.html b/i2p2www/pages/downloads/list.html index fa7f7261..8dfaac62 100644 --- a/i2p2www/pages/downloads/list.html +++ b/i2p2www/pages/downloads/list.html @@ -119,7 +119,7 @@ receive the release.

    Updates from earlier releases (manual method):

      -
    1. Download i2pupdate_0.9.4.zip +
    2. Download i2pupdate_{{ ver() }}.zip (SHA256 0f369d9b85793f157ec67c4d59723a2ad0c1de2a0902d35e11c26a2c74add824 sig) to your I2P From 0a5b848f953405b206ffe9f9e99ee7b1ccfa4a67 Mon Sep 17 00:00:00 2001 From: str4d Date: Mon, 17 Dec 2012 20:35:52 +0000 Subject: [PATCH 185/650] 0.9.4 --- i2p2www/pages/global/macros | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/i2p2www/pages/global/macros b/i2p2www/pages/global/macros index a1470155..52783c00 100644 --- a/i2p2www/pages/global/macros +++ b/i2p2www/pages/global/macros @@ -15,8 +15,8 @@ {%- endmacro -%} {%- macro ver(string=None) -%} -{%- if string -%}{{ string % '0.9.3' }} -{%- else -%}{{ '0.9.3' }} +{%- if string -%}{{ string % '0.9.4' }} +{%- else -%}{{ '0.9.4' }} {%- endif -%} {%- endmacro -%} From 6772b465636513d9bad31217a7cb9c566ea25cb1 Mon Sep 17 00:00:00 2001 From: str4d Date: Mon, 17 Dec 2012 21:21:47 +0000 Subject: [PATCH 186/650] Migrated over meetings 211 and 212 --- .../meetings/211.log | 35 ------------------- i2p2www/meetings/211.rst | 19 ++++++++++ .../meetings/212.log | 33 ----------------- i2p2www/meetings/212.rst | 17 +++++++++ 4 files changed, 36 insertions(+), 68 deletions(-) rename www.i2p2/pages/meeting211.html => i2p2www/meetings/211.log (96%) create mode 100644 i2p2www/meetings/211.rst rename www.i2p2/pages/meeting212.html => i2p2www/meetings/212.log (89%) create mode 100644 i2p2www/meetings/212.rst diff --git a/www.i2p2/pages/meeting211.html b/i2p2www/meetings/211.log similarity index 96% rename from www.i2p2/pages/meeting211.html rename to i2p2www/meetings/211.log index 62d4f38e..0845fd1e 100644 --- a/www.i2p2/pages/meeting211.html +++ b/i2p2www/meetings/211.log @@ -1,33 +1,3 @@ -{% extends "_layout.html" %} -{% block title %}I2P Development Meeting 211{% endblock %} -{% block content %}

      I2P dev meeting, December 4, 2012 @ 20:00 UTC

      -
      -

      Quick recap

      -
        -
      • Present: - - dg, - hottuna, - KillYourTV, - lillith, - Meeh, - psi, - str4d, - weltende, - zzz -
      • -
      • - Next Meeting -

        - The next meeting is scheduled for Tuesday, December 11 @ 20:00 UTC (8:00PM) -

        -
      • -
      -
      -
      -

      Full IRC Log

      -
      -{% filter escape %}
       20:18:53  * KillYourTV has noticed that we're 17 minutes into the meeting...and we're off to a quiet start...
       20:19:31   i was wondering that, did i also get the wrong time or something?
       20:20:23  * dg is waiting for self to be free
      @@ -261,8 +231,3 @@
       22:28:10  * psi lag
       22:28:55   Meeh, to be decided, maybe before since this one wasn't a great success
       22:29:25   true true, next week then
      -{% endfilter %}
      -{# TODO: pygments #}
      -
      -
      -{% endblock %} diff --git a/i2p2www/meetings/211.rst b/i2p2www/meetings/211.rst new file mode 100644 index 00000000..c0746a65 --- /dev/null +++ b/i2p2www/meetings/211.rst @@ -0,0 +1,19 @@ +I2P dev meeting, December 4, 2012 @ 20:00 UTC +============================================== + +Quick recap +----------- + +* **Present:** + dg, + hottuna, + KillYourTV, + lillith, + Meeh, + psi, + str4d, + weltende, + zzz + +* **Next Meeting** + The next meeting is scheduled for Tuesday, December 11 @ 20:00 UTC (8:00PM) diff --git a/www.i2p2/pages/meeting212.html b/i2p2www/meetings/212.log similarity index 89% rename from www.i2p2/pages/meeting212.html rename to i2p2www/meetings/212.log index e82fa34a..23a705cc 100644 --- a/www.i2p2/pages/meeting212.html +++ b/i2p2www/meetings/212.log @@ -1,31 +1,3 @@ -{% extends "_layout.html" %} -{% block title %}I2P Development Meeting 212{% endblock %} -{% block content %}

      I2P dev meeting, December 11, 2012 @ 20:00 UTC

      -
      -

      Quick recap

      -
        -
      • Present: - - lillith, - Meeh, - postman, - psi, - str4d, - topiltzin, - zzz -
      • -
      • - Next Meeting -

        - The next meeting is scheduled for Tuesday, December 18 @ 20:00 UTC (8:00PM) -

        -
      • -
      -
      -
      -

      Full IRC Log

      -
      -{% filter escape %}
       20:20:09    Not sure where dg is, so I propose that we get the meeting started anyway, continuing on with the agenda from last week (or restarting it if necessary).
       20:20:09   (http://zzz.i2p/posts/5779)
       20:20:18   Title: zzz.i2p: IRC Meetings (at zzz.i2p)
      @@ -99,8 +71,3 @@
       22:07:     i'l leave this to dg , presumably it will be 8.00 UTC next tuesday (18th)
       22:08:     topiltzin, i'l take a look
       22:09:     I'd say this meeting is now officially over then :)
      -{% endfilter %}
      -{# TODO: pygments #}
      -
      -
      -{% endblock %} diff --git a/i2p2www/meetings/212.rst b/i2p2www/meetings/212.rst new file mode 100644 index 00000000..8502917d --- /dev/null +++ b/i2p2www/meetings/212.rst @@ -0,0 +1,17 @@ +I2P dev meeting, December 11, 2012 @ 20:00 UTC +=============================================== + +Quick recap +----------- + +* **Present:** + lillith, + Meeh, + postman, + psi, + str4d, + topiltzin, + zzz + +* **Next Meeting** + The next meeting is scheduled for Tuesday, December 18 @ 20:00 UTC (8:00PM) From a665d6153fc45494ef7ca0da39884886c98fe61b Mon Sep 17 00:00:00 2001 From: str4d Date: Mon, 17 Dec 2012 21:31:55 +0000 Subject: [PATCH 187/650] 500 error page should have minimal reliance on the backend (so it doesn't error itself) --- i2p2www/pages/global/error_500.html | 33 ++++++++++++++++++----------- 1 file changed, 21 insertions(+), 12 deletions(-) diff --git a/i2p2www/pages/global/error_500.html b/i2p2www/pages/global/error_500.html index c6cc1159..e96680d0 100644 --- a/i2p2www/pages/global/error_500.html +++ b/i2p2www/pages/global/error_500.html @@ -1,12 +1,21 @@ -{% extends "global/layout.html" %} -{% block title -%} -{% trans -%} -Server error -{%- endtrans %} -{%- endblock %} - -{% block content %} -{% trans -%} -Umm... the server encountered some sort of error. -{%- endtrans %} -{% endblock %} + + + + + {% trans %}Server error{% endtrans %} - I2P + + + + + +
      +

      I2P

      +
      {% trans %}500 Server error{% endtrans %}
      +
      +
      +
      + {% trans %}Umm... the server encountered some sort of error.{% endtrans %} +
      +
      + + From 68ce69fdd1b0c4570a78fb7937c3e4dd54056b60 Mon Sep 17 00:00:00 2001 From: str4d Date: Mon, 17 Dec 2012 21:36:43 +0000 Subject: [PATCH 188/650] Add title to blog ATOM feed link on front page --- i2p2www/pages/site/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/i2p2www/pages/site/index.html b/i2p2www/pages/site/index.html index daa5dfed..1b6820f1 100644 --- a/i2p2www/pages/site/index.html +++ b/i2p2www/pages/site/index.html @@ -48,7 +48,7 @@
    - I2P Blog ATOM Feed + I2P Blog ATOM Feed

    {% trans %}News & Updates{% endtrans %}

    {% include "blog/latest.html" %}
    From 262040fd301db4b1af50af3bc135a28e5e29dd2e Mon Sep 17 00:00:00 2001 From: str4d Date: Mon, 17 Dec 2012 21:59:41 +0000 Subject: [PATCH 189/650] Tweaked mirror code so mirror urls can contain the current I2P version, added Launchpad as HTTPS mirror NOTE: this enables mirrors that require a version string to download the current version of files. Older file versions will *not* be downloadable (that would require parsing the requested filename to try and find a version). Hey, it's better than no support at all =) --- i2p2www/__init__.py | 16 +++++++++++++--- i2p2www/pages/downloads/mirrors | 7 ++++--- 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/i2p2www/__init__.py b/i2p2www/__init__.py index ff1b73ae..e1a572c5 100644 --- a/i2p2www/__init__.py +++ b/i2p2www/__init__.py @@ -16,6 +16,8 @@ except ImportError: from helpers import Pagination +CURRENT_I2P_VERSION = '0.9.4' + TEMPLATE_DIR = os.path.join(os.path.dirname(__file__), 'pages') STATIC_DIR = os.path.join(os.path.dirname(__file__), 'static') @@ -406,13 +408,17 @@ def downloads_select(file): if (file == 'debian'): return render_template('downloads/debian.html') mirrors=read_mirrors() + data = { + 'version': CURRENT_I2P_VERSION, + 'file': file, + } obj=[] for protocol in mirrors.keys(): a={} a['name']=protocol a['mirrors']=mirrors[protocol] for mirror in a['mirrors']: - mirror['url']=mirror['url'] % file + mirror['url']=mirror['url'] % data obj.append(a) return render_template('downloads/select.html', mirrors=obj, file=file) @@ -423,9 +429,13 @@ def downloads_redirect(protocol, file, mirror): if not protocol in mirrors: abort(404) mirrors=mirrors[protocol] + data = { + 'version': CURRENT_I2P_VERSION, + 'file': file, + } if mirror: - return redirect(mirrors[mirror]['url'] % file) - return redirect(mirrors[randint(0, len(mirrors) - 1)]['url'] % file) + return redirect(mirrors[mirror]['url'] % data) + return redirect(mirrors[randint(0, len(mirrors) - 1)]['url'] % data) ##################### diff --git a/i2p2www/pages/downloads/mirrors b/i2p2www/pages/downloads/mirrors index 82ab9b31..b3368578 100644 --- a/i2p2www/pages/downloads/mirrors +++ b/i2p2www/pages/downloads/mirrors @@ -1,3 +1,4 @@ -{"url": "http://i2p.googlecode.com/files/%s", "org": "Google Code", "org_url": "http://code.google.com", "protocol": "http", "country": "us"} -{"url": "http://golden.mtveurope.org/~yang/i2p_mirror/%s", "org": "VServer.si", "org_url": "http://www.vserver.si", "protocol": "http", "country": "lu"} -{"url": "http://a.mirror.geti2p.net/releases/current/%s", "org": "welterde", "protocol": "http", "country": "de"} +{"url": "http://i2p.googlecode.com/files/%(file)s", "org": "Google Code", "org_url": "http://code.google.com", "protocol": "http", "country": "us"} +{"url": "http://golden.mtveurope.org/~yang/i2p_mirror/%(file)s", "org": "VServer.si", "org_url": "http://www.vserver.si", "protocol": "http", "country": "lu"} +{"url": "http://a.mirror.geti2p.net/releases/current/%(file)s", "org": "welterde", "protocol": "http", "country": "de"} +{"url": "https://launchpad.net/i2p/trunk/%(version)s/+download/%(file)s", "org": "Launchpad", "org_url": "https://launchpad.net", "protocol": "https", "country": "us"} From 9acb01be7a7dc3ded60bd32c982786301cf1e6a1 Mon Sep 17 00:00:00 2001 From: str4d Date: Mon, 17 Dec 2012 22:19:39 +0000 Subject: [PATCH 190/650] Added Google Code as an HTTPS mirror, sorted mirrors file by org --- i2p2www/pages/downloads/mirrors | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/i2p2www/pages/downloads/mirrors b/i2p2www/pages/downloads/mirrors index b3368578..4913ac68 100644 --- a/i2p2www/pages/downloads/mirrors +++ b/i2p2www/pages/downloads/mirrors @@ -1,4 +1,5 @@ {"url": "http://i2p.googlecode.com/files/%(file)s", "org": "Google Code", "org_url": "http://code.google.com", "protocol": "http", "country": "us"} +{"url": "https://i2p.googlecode.com/files/%(file)s", "org": "Google Code", "org_url": "https://code.google.com", "protocol": "https", "country": "us"} +{"url": "https://launchpad.net/i2p/trunk/%(version)s/+download/%(file)s", "org": "Launchpad", "org_url": "https://launchpad.net", "protocol": "https", "country": "us"} {"url": "http://golden.mtveurope.org/~yang/i2p_mirror/%(file)s", "org": "VServer.si", "org_url": "http://www.vserver.si", "protocol": "http", "country": "lu"} {"url": "http://a.mirror.geti2p.net/releases/current/%(file)s", "org": "welterde", "protocol": "http", "country": "de"} -{"url": "https://launchpad.net/i2p/trunk/%(version)s/+download/%(file)s", "org": "Launchpad", "org_url": "https://launchpad.net", "protocol": "https", "country": "us"} From 18e26d6cc3dd3494eaa8aafbe671a895b653d6ec Mon Sep 17 00:00:00 2001 From: str4d Date: Tue, 18 Dec 2012 00:42:19 +0000 Subject: [PATCH 191/650] Replace half of .inner padding with margin -> adds side border to all pages --- i2p2www/static/styles/duck.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/i2p2www/static/styles/duck.css b/i2p2www/static/styles/duck.css index 64a0992a..66fcc14f 100644 --- a/i2p2www/static/styles/duck.css +++ b/i2p2www/static/styles/duck.css @@ -237,7 +237,7 @@ div#content .main { * The .inner class is for the content wrapper on inner pages (as opposed to the home page) */ div#content .inner { - width:auto; padding: 4em 10%; position:relative; + width:auto; margin: 0 5%; padding: 4em 5%; position:relative; background: rgba(171, 204, 113, 0.6); border-top:2px solid #abcc71; color:black; font-size:1.2em; line-height:1.4em; } From 32db04d701b77c2485abfa762cec66c5cab20777 Mon Sep 17 00:00:00 2001 From: str4d Date: Tue, 18 Dec 2012 00:44:54 +0000 Subject: [PATCH 192/650] Rounded bottom corners of .lastupdated box --- i2p2www/static/styles/duck.css | 1 + 1 file changed, 1 insertion(+) diff --git a/i2p2www/static/styles/duck.css b/i2p2www/static/styles/duck.css index 66fcc14f..8d36404a 100644 --- a/i2p2www/static/styles/duck.css +++ b/i2p2www/static/styles/duck.css @@ -225,6 +225,7 @@ div#content .main { div#content .lastupdated { background-color: #ffffdd; + border-radius: 0 0 5px 5px; padding: 2px 4px; position: absolute; right: 10%; From 914492e6259b0d37278dcc865da7c30b245bc61d Mon Sep 17 00:00:00 2001 From: str4d Date: Wed, 19 Dec 2012 01:47:48 +0000 Subject: [PATCH 193/650] Moved the last few unsorted pages into misc/ (and ports into docs/) --- {www.i2p2/pages => i2p2www/pages/site/docs}/ports.html | 8 ++++---- .../pages/site/misc}/i2ptunnel_services.html | 2 +- {www.i2p2/pages => i2p2www/pages/site/misc}/jbigi.html | 9 ++++----- .../pages => i2p2www/pages/site/misc}/manualwrapper.html | 4 ++-- {www.i2p2/pages => i2p2www/pages/site/misc}/minwww.html | 4 ++-- .../pages => i2p2www/pages/site/misc}/ratestats.html | 2 +- 6 files changed, 14 insertions(+), 15 deletions(-) rename {www.i2p2/pages => i2p2www/pages/site/docs}/ports.html (92%) rename {www.i2p2/pages => i2p2www/pages/site/misc}/i2ptunnel_services.html (99%) rename {www.i2p2/pages => i2p2www/pages/site/misc}/jbigi.html (96%) rename {www.i2p2/pages => i2p2www/pages/site/misc}/manualwrapper.html (95%) rename {www.i2p2/pages => i2p2www/pages/site/misc}/minwww.html (99%) rename {www.i2p2/pages => i2p2www/pages/site/misc}/ratestats.html (99%) diff --git a/www.i2p2/pages/ports.html b/i2p2www/pages/site/docs/ports.html similarity index 92% rename from www.i2p2/pages/ports.html rename to i2p2www/pages/site/docs/ports.html index 557746d0..22dcfd89 100644 --- a/www.i2p2/pages/ports.html +++ b/i2p2www/pages/site/docs/ports.html @@ -1,5 +1,7 @@ -{% extends "_layout.html" %} +{% extends "global/layout.html" %} {% block title %}Ports Used by I2P{% endblock %} +{% block lastupdated %}May 2012{% endblock %} +{% block accuratefor %}0.9{% endblock %} {% block content %}

    @@ -7,10 +9,8 @@ These are the ports used or reserved by I2P, including those for known plugins, common alternates, and some typical related applications.

    -Updated May 2012, current for router version 0.9. -

    Note that many of these are not enabled by default. -There is more information in the FAQ. +There is more information in the FAQ. See also the documentation for individual plugins. Plugin authors please add any ports you use here. For new plugins, we recommend using the next available port diff --git a/www.i2p2/pages/i2ptunnel_services.html b/i2p2www/pages/site/misc/i2ptunnel_services.html similarity index 99% rename from www.i2p2/pages/i2ptunnel_services.html rename to i2p2www/pages/site/misc/i2ptunnel_services.html index 507cdf2b..a9e9433a 100644 --- a/www.i2p2/pages/i2ptunnel_services.html +++ b/i2p2www/pages/site/misc/i2ptunnel_services.html @@ -1,4 +1,4 @@ -{% extends "_layout.html" %} +{% extends "global/layout.html" %} {% block title %}i2ptunnel services{% endblock %} {% block content %}Below is quick copy of aum's eepsite deployment guide.
    diff --git a/www.i2p2/pages/jbigi.html b/i2p2www/pages/site/misc/jbigi.html similarity index 96% rename from www.i2p2/pages/jbigi.html rename to i2p2www/pages/site/misc/jbigi.html index 47747a4d..5a123c5b 100644 --- a/www.i2p2/pages/jbigi.html +++ b/i2p2www/pages/site/misc/jbigi.html @@ -1,9 +1,8 @@ -{% extends "_layout.html" %} +{% extends "global/layout.html" %} {% block title %}jbigi{% endblock %} +{% block lastupdated %}August 2011{% endblock %} +{% block accuratefor %}0.8.7{% endblock %} {% block content %} - -Updated August 2011, current as of router version 0.8.7 -

    Overview

    Using JNI (Java Native Interface), a bit of C code (thanks ugha!), a little manual work and a piece of chewing gum we have made several @@ -77,7 +76,7 @@ If your encrypt time is less than 50ms for a relatively new processor, or less t for an older processor, and the native BigInteger library was loaded, you are probably fine.

  • Get the latest released source code of I2P from -the download page, or get the cutting-edge source +the download page, or get the cutting-edge source out of the monotone database mtn.i2p2.de
  • Inside the source tree change directory to: core/c/jbigi
  • Read the README file. diff --git a/www.i2p2/pages/manualwrapper.html b/i2p2www/pages/site/misc/manualwrapper.html similarity index 95% rename from www.i2p2/pages/manualwrapper.html rename to i2p2www/pages/site/misc/manualwrapper.html index b2c71411..3aba9b90 100644 --- a/www.i2p2/pages/manualwrapper.html +++ b/i2p2www/pages/site/misc/manualwrapper.html @@ -1,9 +1,9 @@ -{% extends "_layout.html" %} +{% extends "global/layout.html" %} {% block title %}Manually Installing the Java Wrapper{% endblock %} {% block content %}

    Manually Installing the Java Wrapper

    -

    The installation package for the I2P router comes +

    The installation package for the I2P router comes with a Java wrapper for the most common architectures. If your system is not supported by our installer—or if you want to update the wrapper to a newer version—the following steps describe installing the wrapper manually. diff --git a/www.i2p2/pages/minwww.html b/i2p2www/pages/site/misc/minwww.html similarity index 99% rename from www.i2p2/pages/minwww.html rename to i2p2www/pages/site/misc/minwww.html index 2fc32768..a4307741 100644 --- a/www.i2p2/pages/minwww.html +++ b/i2p2www/pages/site/misc/minwww.html @@ -1,4 +1,4 @@ -{% extends "_layout.html" %} +{% extends "global/layout.html" %} {% block title %}minwww{% endblock %} {% block content %}

    Here's an outline and rationale for a minimal WWW proxy app for use over I2P.

    @@ -100,4 +100,4 @@ size, but that's going to be going away since it involves either excessive memor overhead on intermediary routers, or additional implementation details to handle. I2PTunnel is currently limited to 128KB and hasn't been a burden, so perhaps it could be increased to 256KB when the I2CP spec is updated)

    -{% endblock %} \ No newline at end of file +{% endblock %} diff --git a/www.i2p2/pages/ratestats.html b/i2p2www/pages/site/misc/ratestats.html similarity index 99% rename from www.i2p2/pages/ratestats.html rename to i2p2www/pages/site/misc/ratestats.html index e51b0c01..83cd79b7 100644 --- a/www.i2p2/pages/ratestats.html +++ b/i2p2www/pages/site/misc/ratestats.html @@ -1,4 +1,4 @@ -{% extends "_layout.html" %} +{% extends "global/layout.html" %} {% block title %}RateStat list{% endblock %} {% block content %}

    RateStat list

    From db3a7de35d46f126aa8a6fbd64020890a4080933 Mon Sep 17 00:00:00 2001 From: str4d Date: Wed, 19 Dec 2012 01:58:58 +0000 Subject: [PATCH 194/650] Moved the old (but not replaced) pages into misc/ --- .../old => i2p2www/pages/site/misc}/clt.html | 2 +- .../old => i2p2www/pages/site/misc}/cvs.html | 4 ++-- .../pages/site/misc}/i2ptunnel_migration.html | 4 ++-- i2p2www/pages/site/misc/invisiblenet.html | 23 +++++++++++++++++++ .../pages/site/misc}/jrandom-awol.html | 2 +- .../pages/site/misc}/myi2p.html | 8 +++---- .../pages/site/misc}/transition-guide.html | 6 ++--- .../pages/site/misc}/transition-guide.txt | 0 .../pages/site/misc}/upgrade-0.6.1.30.html | 6 ++--- www.i2p2/pages/old/invisiblenet.html | 23 ------------------- 10 files changed, 39 insertions(+), 39 deletions(-) rename {www.i2p2/pages/old => i2p2www/pages/site/misc}/clt.html (96%) rename {www.i2p2/pages/old => i2p2www/pages/site/misc}/cvs.html (88%) rename {www.i2p2/pages/old => i2p2www/pages/site/misc}/i2ptunnel_migration.html (97%) create mode 100644 i2p2www/pages/site/misc/invisiblenet.html rename {www.i2p2/pages/old => i2p2www/pages/site/misc}/jrandom-awol.html (98%) rename {www.i2p2/pages/old => i2p2www/pages/site/misc}/myi2p.html (86%) rename {www.i2p2/pages/old => i2p2www/pages/site/misc}/transition-guide.html (80%) rename {www.i2p2/pages/old => i2p2www/pages/site/misc}/transition-guide.txt (100%) rename {www.i2p2/pages/old => i2p2www/pages/site/misc}/upgrade-0.6.1.30.html (93%) delete mode 100644 www.i2p2/pages/old/invisiblenet.html diff --git a/www.i2p2/pages/old/clt.html b/i2p2www/pages/site/misc/clt.html similarity index 96% rename from www.i2p2/pages/old/clt.html rename to i2p2www/pages/site/misc/clt.html index 0532fdee..9a529f74 100644 --- a/www.i2p2/pages/old/clt.html +++ b/i2p2www/pages/site/misc/clt.html @@ -1,4 +1,4 @@ -{% extends "_layout.html" %} +{% extends "global/layout.html" %} {% block title %}I2P at CLT and PetCon 2009.1{% endblock %} {% block content %}

    Members of I2P will held a talk at CLT and PetCon 2009.1

    Two members of the I2P team will be at two forthcoming Linux day and security convention. diff --git a/www.i2p2/pages/old/cvs.html b/i2p2www/pages/site/misc/cvs.html similarity index 88% rename from www.i2p2/pages/old/cvs.html rename to i2p2www/pages/site/misc/cvs.html index 26f93a9f..52365d9d 100644 --- a/www.i2p2/pages/old/cvs.html +++ b/i2p2www/pages/site/misc/cvs.html @@ -1,6 +1,6 @@ -{% extends "_layout.html" %} +{% extends "global/layout.html" %} {% block title %}CVS{% endblock %} -{% block content %}

    The I2P sourcecode was kept in a CVS repository. Nowadays it is kept in an Monotone repository. +{% block content %}

    The I2P sourcecode was kept in a CVS repository. Nowadays it is kept in an Monotone repository. For those who aren't very familiar with CVS, there is a fantastic book on the subject (developers only need to deal with the first chapter - "An Overview of diff --git a/www.i2p2/pages/old/i2ptunnel_migration.html b/i2p2www/pages/site/misc/i2ptunnel_migration.html similarity index 97% rename from www.i2p2/pages/old/i2ptunnel_migration.html rename to i2p2www/pages/site/misc/i2ptunnel_migration.html index 888ce4ab..0c5fa751 100644 --- a/www.i2p2/pages/old/i2ptunnel_migration.html +++ b/i2p2www/pages/site/misc/i2ptunnel_migration.html @@ -1,4 +1,4 @@ -{% extends "_layout.html" %} +{% extends "global/layout.html" %} {% block title %}i2ptunnel migration{% endblock %} {% block content %}

    I2PTunnel migration:

    @@ -41,4 +41,4 @@ existing tunnels and rebuild new ones)

    into the network before you are able to use the /i2ptunnel/ web interface. It will say "Please be patient" if you try to beforehand, which means that it is still trying to build the -necessary I2PTunnel sessions it has been configured to create.

    {% endblock %} \ No newline at end of file +necessary I2PTunnel sessions it has been configured to create.

    {% endblock %} diff --git a/i2p2www/pages/site/misc/invisiblenet.html b/i2p2www/pages/site/misc/invisiblenet.html new file mode 100644 index 00000000..5c2c7a10 --- /dev/null +++ b/i2p2www/pages/site/misc/invisiblenet.html @@ -0,0 +1,23 @@ +{% extends "global/layout.html" %} +{% block title %}Old Documents{% endblock %} +{% block content %} + +Following is a list of documents originally on www.invisiblenet.net/i2p/ and +rescued via the +Wayback Machine. +They are quite dated and may or may not be accurate. +However, the I2CP and I2NP documents in particular have some good information. + + +

    Index of /i2p

    +
    Name                    Last modified       Size
    +
    +I2CP_spec.pdf 03-Sep-2003 12:49 119k +I2NP_spec.pdf 03-Sep-2003 12:49 356k +datastructures.pdf 03-Sep-2003 12:49 149k +i2p_philosophy.pdf 03-Sep-2003 12:52 126k +polling_http_transpo..> 03-Sep-2003 12:49 189k +
    + + +{% endblock %} diff --git a/www.i2p2/pages/old/jrandom-awol.html b/i2p2www/pages/site/misc/jrandom-awol.html similarity index 98% rename from www.i2p2/pages/old/jrandom-awol.html rename to i2p2www/pages/site/misc/jrandom-awol.html index 5ca4aff9..a5ea40c6 100644 --- a/www.i2p2/pages/old/jrandom-awol.html +++ b/i2p2www/pages/site/misc/jrandom-awol.html @@ -1,4 +1,4 @@ -{% extends "_layout.html" %} +{% extends "global/layout.html" %} {% block title %}Jrandom's Announcement{% endblock %} {% block content %} The following message was received in mid-November 2007. We have no further information diff --git a/www.i2p2/pages/old/myi2p.html b/i2p2www/pages/site/misc/myi2p.html similarity index 86% rename from www.i2p2/pages/old/myi2p.html rename to i2p2www/pages/site/misc/myi2p.html index 4daf83c2..e78b1b93 100644 --- a/www.i2p2/pages/old/myi2p.html +++ b/i2p2www/pages/site/misc/myi2p.html @@ -1,4 +1,4 @@ -{% extends "_layout.html" %} +{% extends "global/layout.html" %} {% block title %}MYI2P{% endblock %} {% block content %}

    There has been discussion about a distributed blogging application for a few months now called "MyI2P". While the original discussions were lost, we were @@ -8,7 +8,7 @@ that ensued.

    The application itself is not yet implemented, and the ideas behind it have been made less ambitious over time, but they are still valid and the current -plan is to have the core MyI2P functionality available +plan is to have the core MyI2P functionality available along side the I2P 1.0 release. That will include a distributed address book to enable secure, distributed, and human readable naming by sacrificing the need for global uniqueness - basically everyone has their own local address book @@ -19,7 +19,7 @@ system using a reduced and secured subset of bbcode to essentially provide an anonymous LiveJournal with a 'friends list' and transparent access control (authenticated by the I2P -datagrams with rules defined based on the address book).

    +datagrams with rules defined based on the address book).

    Additional functionality, such as integration with a DHT backing store or swarming file transfers for 'attachments' can be added later. Email may or may @@ -27,4 +27,4 @@ not get in the first pass either, though its implementation is essentially just a blog entry with private access, so perhaps some UI designer can come up with something. Exporting the data to RSS or access through ATOM will be an option down the road as well.

    -{% endblock %} \ No newline at end of file +{% endblock %} diff --git a/www.i2p2/pages/old/transition-guide.html b/i2p2www/pages/site/misc/transition-guide.html similarity index 80% rename from www.i2p2/pages/old/transition-guide.html rename to i2p2www/pages/site/misc/transition-guide.html index 0f10d1c8..4480f02d 100644 --- a/www.i2p2/pages/old/transition-guide.html +++ b/i2p2www/pages/site/misc/transition-guide.html @@ -1,4 +1,4 @@ -{% extends "_layout.html" %} +{% extends "global/layout.html" %} {% block title %}Monotone{% endblock %} {% block content %}

    The I2P sourcecode is kept in several distributed monotone repositories. See the @@ -8,7 +8,7 @@ See this forum post on i2p monotone for more information on how to get started and check out the source anonymously. There is also a quick-start guide on the -new developer's page. +new developer's page.

    @@ -21,7 +21,7 @@ The i2p source code branch is "i2p.i2p". The following is a detailed guide by Complication.

    -  {% include "transition-guide.txt" %}
    +  {% include "site/misc/transition-guide.txt" %}
     
    {% endblock %} diff --git a/www.i2p2/pages/old/transition-guide.txt b/i2p2www/pages/site/misc/transition-guide.txt similarity index 100% rename from www.i2p2/pages/old/transition-guide.txt rename to i2p2www/pages/site/misc/transition-guide.txt diff --git a/www.i2p2/pages/old/upgrade-0.6.1.30.html b/i2p2www/pages/site/misc/upgrade-0.6.1.30.html similarity index 93% rename from www.i2p2/pages/old/upgrade-0.6.1.30.html rename to i2p2www/pages/site/misc/upgrade-0.6.1.30.html index 5adc7362..0d5b3e2c 100644 --- a/www.i2p2/pages/old/upgrade-0.6.1.30.html +++ b/i2p2www/pages/site/misc/upgrade-0.6.1.30.html @@ -1,4 +1,4 @@ -{% extends "_layout.html" %} +{% extends "global/layout.html" %} {% block title %}How to Upgrade from 0.6.1.30 and Earlier{% endblock %} {% block content %}

    @@ -6,7 +6,7 @@ 2008-02-05: Upgrading from 0.6.1.30 and Earlier Releases

    Since i2p's lead developer -has gone AWOL, +has gone AWOL, we do not have his update signing key or access to www.i2p[.net] or dev.i2p[.net]. Complication and zzz have generated new signing keys, and they and Amiga are providing @@ -18,7 +18,7 @@ the latest release. We recommend the automated process as it will verify the key of the signed update file. If you do not make these changes, you may manually download the i2pupdate.zip file from -the download page. +the download page.

    1. On configupdate.jsp: diff --git a/www.i2p2/pages/old/invisiblenet.html b/www.i2p2/pages/old/invisiblenet.html deleted file mode 100644 index de48244f..00000000 --- a/www.i2p2/pages/old/invisiblenet.html +++ /dev/null @@ -1,23 +0,0 @@ -{% extends "_layout.html" %} -{% block title %}Old Documents{% endblock %} -{% block content %} - -Following is a list of documents originally on www.invisiblenet.net/i2p/ and -rescued via the -Wayback Machine. -They are quite dated and may or may not be accurate. -However, the I2CP and I2NP documents in particular have some good information. - - -

      Index of /i2p

      -
      Name                    Last modified       Size
      -
      -I2CP_spec.pdf 03-Sep-2003 12:49 119k -I2NP_spec.pdf 03-Sep-2003 12:49 356k -datastructures.pdf 03-Sep-2003 12:49 149k -i2p_philosophy.pdf 03-Sep-2003 12:52 126k -polling_http_transpo..> 03-Sep-2003 12:49 189k -
      - - -{% endblock %} From e6287d4edb5cff748b44cc323a821a5b9b7e4602 Mon Sep 17 00:00:00 2001 From: str4d Date: Wed, 19 Dec 2012 02:07:10 +0000 Subject: [PATCH 195/650] Fixed a url-building error on support/faq --- i2p2www/pages/site/support/faq.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/i2p2www/pages/site/support/faq.html b/i2p2www/pages/site/support/faq.html index 82941ca6..b455f71c 100644 --- a/i2p2www/pages/site/support/faq.html +++ b/i2p2www/pages/site/support/faq.html @@ -198,13 +198,13 @@ All routers adjust dynamically to changing network conditions and demands. If you are running release 0.6.1.31 or later, you probably don't need to do this. If you are running release 0.6.1.26 or earlier, either follow the manual reseed instructions below - or install the latest release. + or install the latest release. Possible alternate method - add wrapper.java.additional.5=-Di2p.reseedURL=http://netdb.i2p2.de/ to wrapper.config, shutdown the router completely, then start again, then click "reseed". Let us know if this works.

      -

      ...but you *really* should upgrade to the latest version.

      +

      ...but you *really* should upgrade to the latest version.

      My router has very few active peers, is this OK? (link)

      From 766c8059f4cdddf0776f7d0f9d1f71a09abdd91d Mon Sep 17 00:00:00 2001 From: str4d Date: Wed, 19 Dec 2012 02:53:11 +0000 Subject: [PATCH 196/650] Keep the current website's title for the front page (to help keep its existing page rank for "anonymous network") --- i2p2www/pages/global/layout.html | 2 +- i2p2www/pages/site/index.html | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/i2p2www/pages/global/layout.html b/i2p2www/pages/global/layout.html index 9c8a7b44..1d71c19f 100644 --- a/i2p2www/pages/global/layout.html +++ b/i2p2www/pages/global/layout.html @@ -3,7 +3,7 @@ - {% block title %}{% endblock %} - I2P + {% block title_outer %}{% block title %}{% endblock %} - I2P{% endblock %} diff --git a/i2p2www/pages/site/index.html b/i2p2www/pages/site/index.html index 1b6820f1..605a0291 100644 --- a/i2p2www/pages/site/index.html +++ b/i2p2www/pages/site/index.html @@ -1,4 +1,5 @@ {% extends "global/layout.html" %} +{% block title_outer %}{% trans %}I2P Anonymous Network{% endtrans %}{% endblock %} {% block title %}{% trans %}The Invisible Internet Project{% endtrans %}{% endblock %} {% block content_outer %}
      From fe4852a9eb11ba625d78d8771d6d81d4728a8f8a Mon Sep 17 00:00:00 2001 From: str4d Date: Wed, 19 Dec 2012 04:08:41 +0000 Subject: [PATCH 197/650] Display current language flag next to the Language menu (for easier identification) --- i2p2www/pages/global/lang.html | 2 +- i2p2www/pages/global/nav.html | 2 +- i2p2www/static/images/flags/{us.png => en.png} | Bin 3 files changed, 2 insertions(+), 2 deletions(-) rename i2p2www/static/images/flags/{us.png => en.png} (100%) diff --git a/i2p2www/pages/global/lang.html b/i2p2www/pages/global/lang.html index 8e3d6572..a7f9a9d3 100644 --- a/i2p2www/pages/global/lang.html +++ b/i2p2www/pages/global/lang.html @@ -1,5 +1,5 @@
        -
      • English
      • +
      • English
      • Castellano
      • Chinese
      • Deutsch
      • diff --git a/i2p2www/pages/global/nav.html b/i2p2www/pages/global/nav.html index c4912aac..31b58380 100644 --- a/i2p2www/pages/global/nav.html +++ b/i2p2www/pages/global/nav.html @@ -130,7 +130,7 @@
      • {{ _('Task list') }}
    2. -
    3. {{ _('Language') }} +
    4. {{ _('Language') }} {% include "global/lang.html" %}
    5. diff --git a/i2p2www/static/images/flags/us.png b/i2p2www/static/images/flags/en.png similarity index 100% rename from i2p2www/static/images/flags/us.png rename to i2p2www/static/images/flags/en.png From 8b5633c8810d4ae5abef9fab84c8b5c2906cd04b Mon Sep 17 00:00:00 2001 From: str4d Date: Wed, 19 Dec 2012 04:29:43 +0000 Subject: [PATCH 198/650] Added rel="alternate" hreflang="XX" to language changer links AFAICT these attributes are meant to be on tags, but it shouldn't hurt having them here instead (though if it doesn't help and tags need to be added, then this commit should probably be reverted). --- i2p2www/pages/global/lang.html | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/i2p2www/pages/global/lang.html b/i2p2www/pages/global/lang.html index a7f9a9d3..dab824fe 100644 --- a/i2p2www/pages/global/lang.html +++ b/i2p2www/pages/global/lang.html @@ -1,14 +1,14 @@
        -
      • English
      • -
      • Castellano
      • -
      • Chinese
      • -
      • Deutsch
      • -
      • Français
      • -
      • Italiano
      • -
      • Nederlands
      • -
      • Russian
      • -
      • Svenska
      • -
      • Czech
      • -
      • Arabic
      • -
      • Greek
      • +
      • English
      • +
      • Castellano
      • +
      • Chinese
      • +
      • Deutsch
      • +
      • Français
      • +
      • Italiano
      • +
      • Nederlands
      • +
      • Russian
      • +
      • Svenska
      • +
      • Czech
      • +
      • Arabic
      • +
      • Greek
      From c9a4c5e77cb765e4f89491f5add4f40514d8a1c4 Mon Sep 17 00:00:00 2001 From: str4d Date: Wed, 19 Dec 2012 04:51:36 +0000 Subject: [PATCH 199/650] Add canonical link to of each page --- i2p2www/__init__.py | 10 +++++++++- i2p2www/pages/global/layout.html | 1 + 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/i2p2www/__init__.py b/i2p2www/__init__.py index e1a572c5..328917f5 100644 --- a/i2p2www/__init__.py +++ b/i2p2www/__init__.py @@ -18,6 +18,8 @@ from helpers import Pagination CURRENT_I2P_VERSION = '0.9.4' +CANONICAL_DOMAIN = 'www.i2p2.de' + TEMPLATE_DIR = os.path.join(os.path.dirname(__file__), 'pages') STATIC_DIR = os.path.join(os.path.dirname(__file__), 'static') @@ -127,6 +129,11 @@ def restructuredtext(value): @app.context_processor def utility_processor(): + # Provide the canonical link to the current page + def get_canonical_link(): + protocol = request.url.split('//')[0] + return protocol + '//' + CANONICAL_DOMAIN + request.path + # Convert an I2P url to an equivalent clearnet one i2ptoclear = { 'www.i2p2.i2p': 'www.i2p2.de', @@ -163,7 +170,8 @@ def utility_processor(): return dict(i2pconv=convert_url_to_clearnet, url_for_other_page=url_for_other_page, - change_theme=change_theme) + change_theme=change_theme, + canonical=get_canonical_link) ################ diff --git a/i2p2www/pages/global/layout.html b/i2p2www/pages/global/layout.html index 1d71c19f..494d2566 100644 --- a/i2p2www/pages/global/layout.html +++ b/i2p2www/pages/global/layout.html @@ -4,6 +4,7 @@ {% block title_outer %}{% block title %}{% endblock %} - I2P{% endblock %} + From 254fab592cf8ce9bdd22f84557340f4db1d6511c Mon Sep 17 00:00:00 2001 From: str4d Date: Wed, 19 Dec 2012 04:58:44 +0000 Subject: [PATCH 200/650] Removed "site/" from the main site URLs It seems that Werkzeug doesn't get confused between /en/blog/ and /en/ --- i2p2www/__init__.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/i2p2www/__init__.py b/i2p2www/__init__.py index 328917f5..4342c142 100644 --- a/i2p2www/__init__.py +++ b/i2p2www/__init__.py @@ -204,8 +204,8 @@ def main_index(): return redirect(url_for('site_show', lang='en')) # Site pages -@app.route('//site/', defaults={'page': 'index'}) -@app.route('//site/') +@app.route('//', defaults={'page': 'index'}) +@app.route('//') def site_show(page): if page.endswith('.html'): return redirect(url_for('site_show', page=page[:-5])) From 8f9e8fb178ded11160000c8f89f2a804114399ba Mon Sep 17 00:00:00 2001 From: str4d Date: Wed, 19 Dec 2012 05:28:01 +0000 Subject: [PATCH 201/650] Added LazyView from http://flask.pocoo.org/docs/patterns/lazyloading/ to helpers --- i2p2www/helpers.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/i2p2www/helpers.py b/i2p2www/helpers.py index bbd8a656..aabf4a5e 100644 --- a/i2p2www/helpers.py +++ b/i2p2www/helpers.py @@ -1,4 +1,17 @@ from math import ceil +from werkzeug import import_string, cached_property + +class LazyView(object): + def __init__(self, import_name): + self.__module__, self.__name__ = import_name.rsplit('.', 1) + self.import_name = import_name + + @cached_property + def view(self): + return import_string(self.import_name) + + def __call__(self, *args, **kwargs): + return self.view(*args, **kwargs) class Pagination(object): def __init__(self, page, per_page, total_count): From 785f627d7a0384648e87244b5eddf3d1111283b0 Mon Sep 17 00:00:00 2001 From: str4d Date: Wed, 19 Dec 2012 06:53:59 +0000 Subject: [PATCH 202/650] Reorganized site and blog views and helpers to use LazyView This increases the speed of the site by not requiring the site and blog code to be imported on every request - just those that are relevant. It also splits the code into modules which are easier to work with. --- i2p2www/__init__.py | 181 ++++----------------------------------- i2p2www/blog/__init__.py | 0 i2p2www/blog/helpers.py | 82 ++++++++++++++++++ i2p2www/blog/views.py | 44 ++++++++++ i2p2www/helpers.py | 12 +++ 5 files changed, 157 insertions(+), 162 deletions(-) create mode 100644 i2p2www/blog/__init__.py create mode 100644 i2p2www/blog/helpers.py create mode 100644 i2p2www/blog/views.py diff --git a/i2p2www/__init__.py b/i2p2www/__init__.py index 4342c142..8ebd1baa 100644 --- a/i2p2www/__init__.py +++ b/i2p2www/__init__.py @@ -14,7 +14,7 @@ try: except ImportError: import simplejson as json -from helpers import Pagination +from helpers import LazyView, Pagination CURRENT_I2P_VERSION = '0.9.4' @@ -36,6 +36,24 @@ app.debug = bool(os.environ.get('APP_DEBUG', 'False')) babel = Babel(app) +###### +# URLs + +def url(url_rule, import_name, **options): + view = LazyView('i2p2www.' + import_name) + app.add_url_rule(url_rule, view_func=view, **options) + +url('/', 'views.main_index') +url('//', 'views.site_show', defaults={'page': 'index'}) +url('//', 'views.site_show') + +url('//blog/', 'blog.views.blog_index', defaults={'page': 1}) +url('//blog/page/', 'blog.views.blog_index') +url('//blog/entry/', 'blog.views.blog_entry') +url('//feed/blog/rss', 'blog.views.blog_rss') +url('//feed/blog/atom', 'blog.views.blog_atom') + + ################# # Babel selectors @@ -186,50 +204,6 @@ def server_error(error): return render_template('global/error_500.html'), 500 -######################## -# General helper methods - -def get_for_page(items, page, per_page): - from_item = (page-1)*per_page - to_item = page*per_page - return items[from_item:to_item] - - -####################### -# General page handlers - -# Index - redirects to en homepage -@app.route('/') -def main_index(): - return redirect(url_for('site_show', lang='en')) - -# Site pages -@app.route('//', defaults={'page': 'index'}) -@app.route('//') -def site_show(page): - if page.endswith('.html'): - return redirect(url_for('site_show', page=page[:-5])) - name = 'site/%s.html' % page - page_file = safe_join(TEMPLATE_DIR, name) - - if not os.path.exists(page_file): - # Could be a directory, so try index.html - name = 'site/%s/index.html' % page - page_file = safe_join(TEMPLATE_DIR, name) - if not os.path.exists(page_file): - # bah! those damn users all the time! - abort(404) - - options = { - 'page': page, - } - if (page == 'index'): - options['blog_entries'] = get_blog_entries(8) - - # hah! - return render_template(name, **options) - - ######################## # Meeting helper methods @@ -446,123 +420,6 @@ def downloads_redirect(protocol, file, mirror): return redirect(mirrors[randint(0, len(mirrors) - 1)]['url'] % data) -##################### -# Blog helper methods - -def get_blog_feed_items(num=0): - entries = get_blog_entries(num) - items = [] - for entry in entries: - parts = render_blog_entry(entry[0]) - if parts: - a = {} - a['title'] = parts['title'] - a['content'] = parts['fragment'] - a['url'] = url_for('blog_entry', lang=g.lang, slug=entry[0]) - a['updated'] = datetime.datetime.strptime(entry[1], '%Y-%m-%d') - items.append(a) - return items - -def get_blog_entries(num=0): - """ - Returns the latest #num valid entries sorted by date, or all slugs if num=0. - """ - slugs = get_blog_slugs(num) - entries= [] - for slug in slugs: - date = get_date_from_slug(slug) - titlepart = slug.rsplit('/', 1)[1] - title = ' '.join(titlepart.split('_')) - entries.append((slug, date, title)) - return entries - -def get_blog_slugs(num=0): - """ - Returns the latest #num valid slugs sorted by date, or all slugs if num=0. - """ - # list of slugs - slugs=[] - # walk over all directories/files - for v in os.walk(BLOG_DIR): - # iterate over all files - slugbase = os.path.relpath(v[0], BLOG_DIR) - for f in v[2]: - # ignore all non-.rst files - if not f.endswith('.rst'): - continue - slugs.append(safe_join(slugbase, f[:-4])) - slugs.sort() - slugs.reverse() - if (num > 0): - return slugs[:num] - return slugs - -def get_date_from_slug(slug): - parts = slug.split('/') - return "%s-%s-%s" % (parts[0], parts[1], parts[2]) - -def render_blog_entry(slug): - """ - Render the blog entry - TODO: - - caching - - move to own file - """ - # check if that file actually exists - path = safe_join(BLOG_DIR, slug + ".rst") - if not os.path.exists(path): - abort(404) - - # read file - with codecs.open(path, encoding='utf-8') as fd: - content = fd.read() - - return publish_parts(source=content, source_path=BLOG_DIR, writer_name="html") - - -############### -# Blog handlers - -@app.route('//blog/', defaults={'page': 1}) -@app.route('//blog/page/') -def blog_index(page): - all_entries = get_blog_entries() - entries = get_for_page(all_entries, page, BLOG_ENTRIES_PER_PAGE) - if not entries and page != 1: - abort(404) - pagination = Pagination(page, BLOG_ENTRIES_PER_PAGE, len(all_entries)) - return render_template('blog/index.html', pagination=pagination, entries=entries) - -@app.route('//blog/entry/') -def blog_entry(slug): - # try to render that blog entry.. throws 404 if it does not exist - parts = render_blog_entry(slug) - - if parts: - # now just pass to simple template file and we are done - return render_template('blog/entry.html', parts=parts, title=parts['title'], body=parts['fragment'], slug=slug) - else: - abort(404) - -@app.route('//feed/blog/rss') -def blog_rss(): - # TODO: implement - pass - -@app.route('//feed/blog/atom') -def blog_atom(): - # TODO: Only output beginning of each blog entry - feed = AtomFeed('I2P Blog', feed_url=request.url, url=request.url_root) - items = get_blog_feed_items(10) - for item in items: - feed.add(item['title'], - item['content'], - content_type='html', - url=item['url'], - updated=item['updated']) - return feed.get_response() - - ############ # Root files diff --git a/i2p2www/blog/__init__.py b/i2p2www/blog/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/i2p2www/blog/helpers.py b/i2p2www/blog/helpers.py new file mode 100644 index 00000000..15a19a90 --- /dev/null +++ b/i2p2www/blog/helpers.py @@ -0,0 +1,82 @@ +import codecs +import datetime +from docutils.core import publish_parts +from flask import abort, g, safe_join, url_for +import os +import os.path + +from i2p2www import BLOG_DIR + + +##################### +# Blog helper methods + +def get_blog_feed_items(num=0): + entries = get_blog_entries(num) + items = [] + for entry in entries: + parts = render_blog_entry(entry[0]) + if parts: + a = {} + a['title'] = parts['title'] + a['content'] = parts['fragment'] + a['url'] = url_for('blog_entry', lang=g.lang, slug=entry[0]) + a['updated'] = datetime.datetime.strptime(entry[1], '%Y-%m-%d') + items.append(a) + return items + +def get_blog_entries(num=0): + """ + Returns the latest #num valid entries sorted by date, or all slugs if num=0. + """ + slugs = get_blog_slugs(num) + entries= [] + for slug in slugs: + date = get_date_from_slug(slug) + titlepart = slug.rsplit('/', 1)[1] + title = ' '.join(titlepart.split('_')) + entries.append((slug, date, title)) + return entries + +def get_blog_slugs(num=0): + """ + Returns the latest #num valid slugs sorted by date, or all slugs if num=0. + """ + # list of slugs + slugs=[] + # walk over all directories/files + for v in os.walk(BLOG_DIR): + # iterate over all files + slugbase = os.path.relpath(v[0], BLOG_DIR) + for f in v[2]: + # ignore all non-.rst files + if not f.endswith('.rst'): + continue + slugs.append(safe_join(slugbase, f[:-4])) + slugs.sort() + slugs.reverse() + if (num > 0): + return slugs[:num] + return slugs + +def get_date_from_slug(slug): + parts = slug.split('/') + return "%s-%s-%s" % (parts[0], parts[1], parts[2]) + +def render_blog_entry(slug): + """ + Render the blog entry + TODO: + - caching + - move to own file + """ + # check if that file actually exists + path = safe_join(BLOG_DIR, slug + ".rst") + if not os.path.exists(path): + abort(404) + + # read file + with codecs.open(path, encoding='utf-8') as fd: + content = fd.read() + + return publish_parts(source=content, source_path=BLOG_DIR, writer_name="html") diff --git a/i2p2www/blog/views.py b/i2p2www/blog/views.py new file mode 100644 index 00000000..a61d6c36 --- /dev/null +++ b/i2p2www/blog/views.py @@ -0,0 +1,44 @@ +from flask import request, abort, render_template +from werkzeug.contrib.atom import AtomFeed + +from i2p2www import BLOG_ENTRIES_PER_PAGE +from i2p2www.blog.helpers import get_blog_entries, get_blog_feed_items, render_blog_entry +from i2p2www.helpers import Pagination, get_for_page + + +############ +# Blog views + +def blog_index(page): + all_entries = get_blog_entries() + entries = get_for_page(all_entries, page, BLOG_ENTRIES_PER_PAGE) + if not entries and page != 1: + abort(404) + pagination = Pagination(page, BLOG_ENTRIES_PER_PAGE, len(all_entries)) + return render_template('blog/index.html', pagination=pagination, entries=entries) + +def blog_entry(slug): + # try to render that blog entry.. throws 404 if it does not exist + parts = render_blog_entry(slug) + + if parts: + # now just pass to simple template file and we are done + return render_template('blog/entry.html', parts=parts, title=parts['title'], body=parts['fragment'], slug=slug) + else: + abort(404) + +def blog_rss(): + # TODO: implement + pass + +def blog_atom(): + # TODO: Only output beginning of each blog entry + feed = AtomFeed('I2P Blog', feed_url=request.url, url=request.url_root) + items = get_blog_feed_items(10) + for item in items: + feed.add(item['title'], + item['content'], + content_type='html', + url=item['url'], + updated=item['updated']) + return feed.get_response() diff --git a/i2p2www/helpers.py b/i2p2www/helpers.py index aabf4a5e..04bd49ee 100644 --- a/i2p2www/helpers.py +++ b/i2p2www/helpers.py @@ -1,6 +1,18 @@ from math import ceil from werkzeug import import_string, cached_property +######################## +# General helper methods + +def get_for_page(items, page, per_page): + from_item = (page-1)*per_page + to_item = page*per_page + return items[from_item:to_item] + + +######################## +# General helper classes + class LazyView(object): def __init__(self, import_name): self.__module__, self.__name__ = import_name.rsplit('.', 1) From 3ff5e146dcf5526801091aa8e12a188afdf057ac Mon Sep 17 00:00:00 2001 From: str4d Date: Wed, 19 Dec 2012 06:58:07 +0000 Subject: [PATCH 203/650] Moved meetings/* to meetings/logs/ (ready for splitting out meetings code) --- i2p2www/__init__.py | 2 +- i2p2www/meetings/{ => logs}/1.log | 0 i2p2www/meetings/{ => logs}/1.rst | 0 i2p2www/meetings/{ => logs}/10.log | 0 i2p2www/meetings/{ => logs}/10.rst | 0 i2p2www/meetings/{ => logs}/100.log | 0 i2p2www/meetings/{ => logs}/100.rst | 0 i2p2www/meetings/{ => logs}/101.log | 0 i2p2www/meetings/{ => logs}/101.rst | 0 i2p2www/meetings/{ => logs}/102.log | 0 i2p2www/meetings/{ => logs}/102.rst | 0 i2p2www/meetings/{ => logs}/103.log | 0 i2p2www/meetings/{ => logs}/103.rst | 0 i2p2www/meetings/{ => logs}/104.log | 0 i2p2www/meetings/{ => logs}/104.rst | 0 i2p2www/meetings/{ => logs}/105.log | 0 i2p2www/meetings/{ => logs}/105.rst | 0 i2p2www/meetings/{ => logs}/106.log | 0 i2p2www/meetings/{ => logs}/106.rst | 0 i2p2www/meetings/{ => logs}/107.log | 0 i2p2www/meetings/{ => logs}/107.rst | 0 i2p2www/meetings/{ => logs}/108.log | 0 i2p2www/meetings/{ => logs}/108.rst | 0 i2p2www/meetings/{ => logs}/109.log | 0 i2p2www/meetings/{ => logs}/109.rst | 0 i2p2www/meetings/{ => logs}/11.log | 0 i2p2www/meetings/{ => logs}/11.rst | 0 i2p2www/meetings/{ => logs}/110.log | 0 i2p2www/meetings/{ => logs}/110.rst | 0 i2p2www/meetings/{ => logs}/111.log | 0 i2p2www/meetings/{ => logs}/111.rst | 0 i2p2www/meetings/{ => logs}/112.log | 0 i2p2www/meetings/{ => logs}/112.rst | 0 i2p2www/meetings/{ => logs}/113.log | 0 i2p2www/meetings/{ => logs}/113.rst | 0 i2p2www/meetings/{ => logs}/114.log | 0 i2p2www/meetings/{ => logs}/114.rst | 0 i2p2www/meetings/{ => logs}/115.log | 0 i2p2www/meetings/{ => logs}/115.rst | 0 i2p2www/meetings/{ => logs}/116.log | 0 i2p2www/meetings/{ => logs}/116.rst | 0 i2p2www/meetings/{ => logs}/117.log | 0 i2p2www/meetings/{ => logs}/117.rst | 0 i2p2www/meetings/{ => logs}/118.log | 0 i2p2www/meetings/{ => logs}/118.rst | 0 i2p2www/meetings/{ => logs}/119.log | 0 i2p2www/meetings/{ => logs}/119.rst | 0 i2p2www/meetings/{ => logs}/12.log | 0 i2p2www/meetings/{ => logs}/12.rst | 0 i2p2www/meetings/{ => logs}/120.log | 0 i2p2www/meetings/{ => logs}/120.rst | 0 i2p2www/meetings/{ => logs}/121.log | 0 i2p2www/meetings/{ => logs}/121.rst | 0 i2p2www/meetings/{ => logs}/122.log | 0 i2p2www/meetings/{ => logs}/122.rst | 0 i2p2www/meetings/{ => logs}/123.log | 0 i2p2www/meetings/{ => logs}/123.rst | 0 i2p2www/meetings/{ => logs}/124.log | 0 i2p2www/meetings/{ => logs}/124.rst | 0 i2p2www/meetings/{ => logs}/125.log | 0 i2p2www/meetings/{ => logs}/125.rst | 0 i2p2www/meetings/{ => logs}/126.log | 0 i2p2www/meetings/{ => logs}/126.rst | 0 i2p2www/meetings/{ => logs}/127.log | 0 i2p2www/meetings/{ => logs}/127.rst | 0 i2p2www/meetings/{ => logs}/128.log | 0 i2p2www/meetings/{ => logs}/128.rst | 0 i2p2www/meetings/{ => logs}/129.log | 0 i2p2www/meetings/{ => logs}/129.rst | 0 i2p2www/meetings/{ => logs}/130.log | 0 i2p2www/meetings/{ => logs}/130.rst | 0 i2p2www/meetings/{ => logs}/131.log | 0 i2p2www/meetings/{ => logs}/131.rst | 0 i2p2www/meetings/{ => logs}/132.log | 0 i2p2www/meetings/{ => logs}/132.rst | 0 i2p2www/meetings/{ => logs}/133.log | 0 i2p2www/meetings/{ => logs}/133.rst | 0 i2p2www/meetings/{ => logs}/134.log | 0 i2p2www/meetings/{ => logs}/134.rst | 0 i2p2www/meetings/{ => logs}/135.log | 0 i2p2www/meetings/{ => logs}/135.rst | 0 i2p2www/meetings/{ => logs}/136.log | 0 i2p2www/meetings/{ => logs}/136.rst | 0 i2p2www/meetings/{ => logs}/137.log | 0 i2p2www/meetings/{ => logs}/137.rst | 0 i2p2www/meetings/{ => logs}/138.log | 0 i2p2www/meetings/{ => logs}/138.rst | 0 i2p2www/meetings/{ => logs}/139.log | 0 i2p2www/meetings/{ => logs}/139.rst | 0 i2p2www/meetings/{ => logs}/140.log | 0 i2p2www/meetings/{ => logs}/140.rst | 0 i2p2www/meetings/{ => logs}/141.log | 0 i2p2www/meetings/{ => logs}/141.rst | 0 i2p2www/meetings/{ => logs}/142.log | 0 i2p2www/meetings/{ => logs}/142.rst | 0 i2p2www/meetings/{ => logs}/143.log | 0 i2p2www/meetings/{ => logs}/143.rst | 0 i2p2www/meetings/{ => logs}/144.log | 0 i2p2www/meetings/{ => logs}/144.rst | 0 i2p2www/meetings/{ => logs}/145.log | 0 i2p2www/meetings/{ => logs}/145.rst | 0 i2p2www/meetings/{ => logs}/146.log | 0 i2p2www/meetings/{ => logs}/146.rst | 0 i2p2www/meetings/{ => logs}/147.log | 0 i2p2www/meetings/{ => logs}/147.rst | 0 i2p2www/meetings/{ => logs}/148.log | 0 i2p2www/meetings/{ => logs}/148.rst | 0 i2p2www/meetings/{ => logs}/149.log | 0 i2p2www/meetings/{ => logs}/149.rst | 0 i2p2www/meetings/{ => logs}/15.log | 0 i2p2www/meetings/{ => logs}/15.rst | 0 i2p2www/meetings/{ => logs}/150.log | 0 i2p2www/meetings/{ => logs}/150.rst | 0 i2p2www/meetings/{ => logs}/151.log | 0 i2p2www/meetings/{ => logs}/151.rst | 0 i2p2www/meetings/{ => logs}/152.log | 0 i2p2www/meetings/{ => logs}/152.rst | 0 i2p2www/meetings/{ => logs}/153.log | 0 i2p2www/meetings/{ => logs}/153.rst | 0 i2p2www/meetings/{ => logs}/154.log | 0 i2p2www/meetings/{ => logs}/154.rst | 0 i2p2www/meetings/{ => logs}/155.log | 0 i2p2www/meetings/{ => logs}/155.rst | 0 i2p2www/meetings/{ => logs}/156.log | 0 i2p2www/meetings/{ => logs}/156.rst | 0 i2p2www/meetings/{ => logs}/157.log | 0 i2p2www/meetings/{ => logs}/157.rst | 0 i2p2www/meetings/{ => logs}/158.log | 0 i2p2www/meetings/{ => logs}/158.rst | 0 i2p2www/meetings/{ => logs}/159.log | 0 i2p2www/meetings/{ => logs}/159.rst | 0 i2p2www/meetings/{ => logs}/160.log | 0 i2p2www/meetings/{ => logs}/160.rst | 0 i2p2www/meetings/{ => logs}/161.log | 0 i2p2www/meetings/{ => logs}/161.rst | 0 i2p2www/meetings/{ => logs}/162.log | 0 i2p2www/meetings/{ => logs}/162.rst | 0 i2p2www/meetings/{ => logs}/163.log | 0 i2p2www/meetings/{ => logs}/163.rst | 0 i2p2www/meetings/{ => logs}/164.log | 0 i2p2www/meetings/{ => logs}/164.rst | 0 i2p2www/meetings/{ => logs}/165.log | 0 i2p2www/meetings/{ => logs}/165.rst | 0 i2p2www/meetings/{ => logs}/166.log | 0 i2p2www/meetings/{ => logs}/166.rst | 0 i2p2www/meetings/{ => logs}/167.log | 0 i2p2www/meetings/{ => logs}/167.rst | 0 i2p2www/meetings/{ => logs}/168.log | 0 i2p2www/meetings/{ => logs}/168.rst | 0 i2p2www/meetings/{ => logs}/170.log | 0 i2p2www/meetings/{ => logs}/170.rst | 0 i2p2www/meetings/{ => logs}/171.log | 0 i2p2www/meetings/{ => logs}/171.rst | 0 i2p2www/meetings/{ => logs}/172.log | 0 i2p2www/meetings/{ => logs}/172.rst | 0 i2p2www/meetings/{ => logs}/173.log | 0 i2p2www/meetings/{ => logs}/173.rst | 0 i2p2www/meetings/{ => logs}/174.log | 0 i2p2www/meetings/{ => logs}/174.rst | 0 i2p2www/meetings/{ => logs}/175.log | 0 i2p2www/meetings/{ => logs}/175.rst | 0 i2p2www/meetings/{ => logs}/176.log | 0 i2p2www/meetings/{ => logs}/176.rst | 0 i2p2www/meetings/{ => logs}/177.log | 0 i2p2www/meetings/{ => logs}/177.rst | 0 i2p2www/meetings/{ => logs}/178.log | 0 i2p2www/meetings/{ => logs}/178.rst | 0 i2p2www/meetings/{ => logs}/179.log | 0 i2p2www/meetings/{ => logs}/179.rst | 0 i2p2www/meetings/{ => logs}/18.log | 0 i2p2www/meetings/{ => logs}/18.rst | 0 i2p2www/meetings/{ => logs}/180.log | 0 i2p2www/meetings/{ => logs}/180.rst | 0 i2p2www/meetings/{ => logs}/181.log | 0 i2p2www/meetings/{ => logs}/181.rst | 0 i2p2www/meetings/{ => logs}/182.log | 0 i2p2www/meetings/{ => logs}/182.rst | 0 i2p2www/meetings/{ => logs}/183.log | 0 i2p2www/meetings/{ => logs}/183.rst | 0 i2p2www/meetings/{ => logs}/184.log | 0 i2p2www/meetings/{ => logs}/184.rst | 0 i2p2www/meetings/{ => logs}/185.log | 0 i2p2www/meetings/{ => logs}/185.rst | 0 i2p2www/meetings/{ => logs}/186.log | 0 i2p2www/meetings/{ => logs}/186.rst | 0 i2p2www/meetings/{ => logs}/187.log | 0 i2p2www/meetings/{ => logs}/187.rst | 0 i2p2www/meetings/{ => logs}/188.log | 0 i2p2www/meetings/{ => logs}/188.rst | 0 i2p2www/meetings/{ => logs}/189.log | 0 i2p2www/meetings/{ => logs}/189.rst | 0 i2p2www/meetings/{ => logs}/190.log | 0 i2p2www/meetings/{ => logs}/190.rst | 0 i2p2www/meetings/{ => logs}/191.log | 0 i2p2www/meetings/{ => logs}/191.rst | 0 i2p2www/meetings/{ => logs}/192.log | 0 i2p2www/meetings/{ => logs}/192.rst | 0 i2p2www/meetings/{ => logs}/193.log | 0 i2p2www/meetings/{ => logs}/193.rst | 0 i2p2www/meetings/{ => logs}/194.log | 0 i2p2www/meetings/{ => logs}/194.rst | 0 i2p2www/meetings/{ => logs}/195.log | 0 i2p2www/meetings/{ => logs}/195.rst | 0 i2p2www/meetings/{ => logs}/196.log | 0 i2p2www/meetings/{ => logs}/196.rst | 0 i2p2www/meetings/{ => logs}/197.log | 0 i2p2www/meetings/{ => logs}/197.rst | 0 i2p2www/meetings/{ => logs}/198.log | 0 i2p2www/meetings/{ => logs}/198.rst | 0 i2p2www/meetings/{ => logs}/199.log | 0 i2p2www/meetings/{ => logs}/199.rst | 0 i2p2www/meetings/{ => logs}/2.log | 0 i2p2www/meetings/{ => logs}/2.rst | 0 i2p2www/meetings/{ => logs}/20.log | 0 i2p2www/meetings/{ => logs}/20.rst | 0 i2p2www/meetings/{ => logs}/200.log | 0 i2p2www/meetings/{ => logs}/200.rst | 0 i2p2www/meetings/{ => logs}/201.log | 0 i2p2www/meetings/{ => logs}/201.rst | 0 i2p2www/meetings/{ => logs}/202.log | 0 i2p2www/meetings/{ => logs}/202.rst | 0 i2p2www/meetings/{ => logs}/203.log | 0 i2p2www/meetings/{ => logs}/203.rst | 0 i2p2www/meetings/{ => logs}/204.log | 0 i2p2www/meetings/{ => logs}/204.rst | 0 i2p2www/meetings/{ => logs}/205.log | 0 i2p2www/meetings/{ => logs}/205.rst | 0 i2p2www/meetings/{ => logs}/206.log | 0 i2p2www/meetings/{ => logs}/206.rst | 0 i2p2www/meetings/{ => logs}/207.log | 0 i2p2www/meetings/{ => logs}/207.rst | 0 i2p2www/meetings/{ => logs}/208.log | 0 i2p2www/meetings/{ => logs}/208.rst | 0 i2p2www/meetings/{ => logs}/209.log | 0 i2p2www/meetings/{ => logs}/209.rst | 0 i2p2www/meetings/{ => logs}/21.log | 0 i2p2www/meetings/{ => logs}/21.rst | 0 i2p2www/meetings/{ => logs}/210.log | 0 i2p2www/meetings/{ => logs}/210.rst | 0 i2p2www/meetings/{ => logs}/211.log | 0 i2p2www/meetings/{ => logs}/211.rst | 0 i2p2www/meetings/{ => logs}/212.log | 0 i2p2www/meetings/{ => logs}/212.rst | 0 i2p2www/meetings/{ => logs}/22.log | 0 i2p2www/meetings/{ => logs}/22.rst | 0 i2p2www/meetings/{ => logs}/23.log | 0 i2p2www/meetings/{ => logs}/23.rst | 0 i2p2www/meetings/{ => logs}/25.log | 0 i2p2www/meetings/{ => logs}/25.rst | 0 i2p2www/meetings/{ => logs}/26.log | 0 i2p2www/meetings/{ => logs}/26.rst | 0 i2p2www/meetings/{ => logs}/28.log | 0 i2p2www/meetings/{ => logs}/28.rst | 0 i2p2www/meetings/{ => logs}/29.log | 0 i2p2www/meetings/{ => logs}/29.rst | 0 i2p2www/meetings/{ => logs}/3.log | 0 i2p2www/meetings/{ => logs}/3.rst | 0 i2p2www/meetings/{ => logs}/30.log | 0 i2p2www/meetings/{ => logs}/30.rst | 0 i2p2www/meetings/{ => logs}/31.log | 0 i2p2www/meetings/{ => logs}/31.rst | 0 i2p2www/meetings/{ => logs}/32.log | 0 i2p2www/meetings/{ => logs}/32.rst | 0 i2p2www/meetings/{ => logs}/33.log | 0 i2p2www/meetings/{ => logs}/33.rst | 0 i2p2www/meetings/{ => logs}/34.log | 0 i2p2www/meetings/{ => logs}/34.rst | 0 i2p2www/meetings/{ => logs}/35.log | 0 i2p2www/meetings/{ => logs}/35.rst | 0 i2p2www/meetings/{ => logs}/4.log | 0 i2p2www/meetings/{ => logs}/4.rst | 0 i2p2www/meetings/{ => logs}/47.log | 0 i2p2www/meetings/{ => logs}/47.rst | 0 i2p2www/meetings/{ => logs}/49.log | 0 i2p2www/meetings/{ => logs}/49.rst | 0 i2p2www/meetings/{ => logs}/50.log | 0 i2p2www/meetings/{ => logs}/50.rst | 0 i2p2www/meetings/{ => logs}/51.log | 0 i2p2www/meetings/{ => logs}/51.rst | 0 i2p2www/meetings/{ => logs}/52.log | 0 i2p2www/meetings/{ => logs}/52.rst | 0 i2p2www/meetings/{ => logs}/53.log | 0 i2p2www/meetings/{ => logs}/53.rst | 0 i2p2www/meetings/{ => logs}/54.log | 0 i2p2www/meetings/{ => logs}/54.rst | 0 i2p2www/meetings/{ => logs}/55.log | 0 i2p2www/meetings/{ => logs}/55.rst | 0 i2p2www/meetings/{ => logs}/56.log | 0 i2p2www/meetings/{ => logs}/56.rst | 0 i2p2www/meetings/{ => logs}/57.log | 0 i2p2www/meetings/{ => logs}/57.rst | 0 i2p2www/meetings/{ => logs}/58.log | 0 i2p2www/meetings/{ => logs}/58.rst | 0 i2p2www/meetings/{ => logs}/59.log | 0 i2p2www/meetings/{ => logs}/59.rst | 0 i2p2www/meetings/{ => logs}/60.log | 0 i2p2www/meetings/{ => logs}/60.rst | 0 i2p2www/meetings/{ => logs}/61.log | 0 i2p2www/meetings/{ => logs}/61.rst | 0 i2p2www/meetings/{ => logs}/62.log | 0 i2p2www/meetings/{ => logs}/62.rst | 0 i2p2www/meetings/{ => logs}/63.log | 0 i2p2www/meetings/{ => logs}/63.rst | 0 i2p2www/meetings/{ => logs}/64.log | 0 i2p2www/meetings/{ => logs}/64.rst | 0 i2p2www/meetings/{ => logs}/65.log | 0 i2p2www/meetings/{ => logs}/65.rst | 0 i2p2www/meetings/{ => logs}/66.log | 0 i2p2www/meetings/{ => logs}/66.rst | 0 i2p2www/meetings/{ => logs}/68.log | 0 i2p2www/meetings/{ => logs}/68.rst | 0 i2p2www/meetings/{ => logs}/69.log | 0 i2p2www/meetings/{ => logs}/69.rst | 0 i2p2www/meetings/{ => logs}/7.log | 0 i2p2www/meetings/{ => logs}/7.rst | 0 i2p2www/meetings/{ => logs}/70.log | 0 i2p2www/meetings/{ => logs}/70.rst | 0 i2p2www/meetings/{ => logs}/71.log | 0 i2p2www/meetings/{ => logs}/71.rst | 0 i2p2www/meetings/{ => logs}/72.log | 0 i2p2www/meetings/{ => logs}/72.rst | 0 i2p2www/meetings/{ => logs}/73.log | 0 i2p2www/meetings/{ => logs}/73.rst | 0 i2p2www/meetings/{ => logs}/74.log | 0 i2p2www/meetings/{ => logs}/74.rst | 0 i2p2www/meetings/{ => logs}/75.log | 0 i2p2www/meetings/{ => logs}/75.rst | 0 i2p2www/meetings/{ => logs}/76.log | 0 i2p2www/meetings/{ => logs}/76.rst | 0 i2p2www/meetings/{ => logs}/77.log | 0 i2p2www/meetings/{ => logs}/77.rst | 0 i2p2www/meetings/{ => logs}/78.log | 0 i2p2www/meetings/{ => logs}/78.rst | 0 i2p2www/meetings/{ => logs}/79.log | 0 i2p2www/meetings/{ => logs}/79.rst | 0 i2p2www/meetings/{ => logs}/8.log | 0 i2p2www/meetings/{ => logs}/8.rst | 0 i2p2www/meetings/{ => logs}/80.log | 0 i2p2www/meetings/{ => logs}/80.rst | 0 i2p2www/meetings/{ => logs}/81.log | 0 i2p2www/meetings/{ => logs}/81.rst | 0 i2p2www/meetings/{ => logs}/82.log | 0 i2p2www/meetings/{ => logs}/82.rst | 0 i2p2www/meetings/{ => logs}/9.log | 0 i2p2www/meetings/{ => logs}/9.rst | 0 i2p2www/meetings/{ => logs}/90.log | 0 i2p2www/meetings/{ => logs}/90.rst | 0 i2p2www/meetings/{ => logs}/92.log | 0 i2p2www/meetings/{ => logs}/92.rst | 0 i2p2www/meetings/{ => logs}/93.log | 0 i2p2www/meetings/{ => logs}/93.rst | 0 i2p2www/meetings/{ => logs}/95.log | 0 i2p2www/meetings/{ => logs}/95.rst | 0 i2p2www/meetings/{ => logs}/99.log | 0 i2p2www/meetings/{ => logs}/99.rst | 0 355 files changed, 1 insertion(+), 1 deletion(-) rename i2p2www/meetings/{ => logs}/1.log (100%) rename i2p2www/meetings/{ => logs}/1.rst (100%) rename i2p2www/meetings/{ => logs}/10.log (100%) rename i2p2www/meetings/{ => logs}/10.rst (100%) rename i2p2www/meetings/{ => logs}/100.log (100%) rename i2p2www/meetings/{ => logs}/100.rst (100%) rename i2p2www/meetings/{ => logs}/101.log (100%) rename i2p2www/meetings/{ => logs}/101.rst (100%) rename i2p2www/meetings/{ => logs}/102.log (100%) rename i2p2www/meetings/{ => logs}/102.rst (100%) rename i2p2www/meetings/{ => logs}/103.log (100%) rename i2p2www/meetings/{ => logs}/103.rst (100%) rename i2p2www/meetings/{ => logs}/104.log (100%) rename i2p2www/meetings/{ => logs}/104.rst (100%) rename i2p2www/meetings/{ => logs}/105.log (100%) rename i2p2www/meetings/{ => logs}/105.rst (100%) rename i2p2www/meetings/{ => logs}/106.log (100%) rename i2p2www/meetings/{ => logs}/106.rst (100%) rename i2p2www/meetings/{ => logs}/107.log (100%) rename i2p2www/meetings/{ => logs}/107.rst (100%) rename i2p2www/meetings/{ => logs}/108.log (100%) rename i2p2www/meetings/{ => logs}/108.rst (100%) rename i2p2www/meetings/{ => logs}/109.log (100%) rename i2p2www/meetings/{ => logs}/109.rst (100%) rename i2p2www/meetings/{ => logs}/11.log (100%) rename i2p2www/meetings/{ => logs}/11.rst (100%) rename i2p2www/meetings/{ => logs}/110.log (100%) rename i2p2www/meetings/{ => logs}/110.rst (100%) rename i2p2www/meetings/{ => logs}/111.log (100%) rename i2p2www/meetings/{ => logs}/111.rst (100%) rename i2p2www/meetings/{ => logs}/112.log (100%) rename i2p2www/meetings/{ => logs}/112.rst (100%) rename i2p2www/meetings/{ => logs}/113.log (100%) rename i2p2www/meetings/{ => logs}/113.rst (100%) rename i2p2www/meetings/{ => logs}/114.log (100%) rename i2p2www/meetings/{ => logs}/114.rst (100%) rename i2p2www/meetings/{ => logs}/115.log (100%) rename i2p2www/meetings/{ => logs}/115.rst (100%) rename i2p2www/meetings/{ => logs}/116.log (100%) rename i2p2www/meetings/{ => logs}/116.rst (100%) rename i2p2www/meetings/{ => logs}/117.log (100%) rename i2p2www/meetings/{ => logs}/117.rst (100%) rename i2p2www/meetings/{ => logs}/118.log (100%) rename i2p2www/meetings/{ => logs}/118.rst (100%) rename i2p2www/meetings/{ => logs}/119.log (100%) rename i2p2www/meetings/{ => logs}/119.rst (100%) rename i2p2www/meetings/{ => logs}/12.log (100%) rename i2p2www/meetings/{ => logs}/12.rst (100%) rename i2p2www/meetings/{ => logs}/120.log (100%) rename i2p2www/meetings/{ => logs}/120.rst (100%) rename i2p2www/meetings/{ => logs}/121.log (100%) rename i2p2www/meetings/{ => logs}/121.rst (100%) rename i2p2www/meetings/{ => logs}/122.log (100%) rename i2p2www/meetings/{ => logs}/122.rst (100%) rename i2p2www/meetings/{ => logs}/123.log (100%) rename i2p2www/meetings/{ => logs}/123.rst (100%) rename i2p2www/meetings/{ => logs}/124.log (100%) rename i2p2www/meetings/{ => logs}/124.rst (100%) rename i2p2www/meetings/{ => logs}/125.log (100%) rename i2p2www/meetings/{ => logs}/125.rst (100%) rename i2p2www/meetings/{ => logs}/126.log (100%) rename i2p2www/meetings/{ => logs}/126.rst (100%) rename i2p2www/meetings/{ => logs}/127.log (100%) rename i2p2www/meetings/{ => logs}/127.rst (100%) rename i2p2www/meetings/{ => logs}/128.log (100%) rename i2p2www/meetings/{ => logs}/128.rst (100%) rename i2p2www/meetings/{ => logs}/129.log (100%) rename i2p2www/meetings/{ => logs}/129.rst (100%) rename i2p2www/meetings/{ => logs}/130.log (100%) rename i2p2www/meetings/{ => logs}/130.rst (100%) rename i2p2www/meetings/{ => logs}/131.log (100%) rename i2p2www/meetings/{ => logs}/131.rst (100%) rename i2p2www/meetings/{ => logs}/132.log (100%) rename i2p2www/meetings/{ => logs}/132.rst (100%) rename i2p2www/meetings/{ => logs}/133.log (100%) rename i2p2www/meetings/{ => logs}/133.rst (100%) rename i2p2www/meetings/{ => logs}/134.log (100%) rename i2p2www/meetings/{ => logs}/134.rst (100%) rename i2p2www/meetings/{ => logs}/135.log (100%) rename i2p2www/meetings/{ => logs}/135.rst (100%) rename i2p2www/meetings/{ => logs}/136.log (100%) rename i2p2www/meetings/{ => logs}/136.rst (100%) rename i2p2www/meetings/{ => logs}/137.log (100%) rename i2p2www/meetings/{ => logs}/137.rst (100%) rename i2p2www/meetings/{ => logs}/138.log (100%) rename i2p2www/meetings/{ => logs}/138.rst (100%) rename i2p2www/meetings/{ => logs}/139.log (100%) rename i2p2www/meetings/{ => logs}/139.rst (100%) rename i2p2www/meetings/{ => logs}/140.log (100%) rename i2p2www/meetings/{ => logs}/140.rst (100%) rename i2p2www/meetings/{ => logs}/141.log (100%) rename i2p2www/meetings/{ => logs}/141.rst (100%) rename i2p2www/meetings/{ => logs}/142.log (100%) rename i2p2www/meetings/{ => logs}/142.rst (100%) rename i2p2www/meetings/{ => logs}/143.log (100%) rename i2p2www/meetings/{ => logs}/143.rst (100%) rename i2p2www/meetings/{ => logs}/144.log (100%) rename i2p2www/meetings/{ => logs}/144.rst (100%) rename i2p2www/meetings/{ => logs}/145.log (100%) rename i2p2www/meetings/{ => logs}/145.rst (100%) rename i2p2www/meetings/{ => logs}/146.log (100%) rename i2p2www/meetings/{ => logs}/146.rst (100%) rename i2p2www/meetings/{ => logs}/147.log (100%) rename i2p2www/meetings/{ => logs}/147.rst (100%) rename i2p2www/meetings/{ => logs}/148.log (100%) rename i2p2www/meetings/{ => logs}/148.rst (100%) rename i2p2www/meetings/{ => logs}/149.log (100%) rename i2p2www/meetings/{ => logs}/149.rst (100%) rename i2p2www/meetings/{ => logs}/15.log (100%) rename i2p2www/meetings/{ => logs}/15.rst (100%) rename i2p2www/meetings/{ => logs}/150.log (100%) rename i2p2www/meetings/{ => logs}/150.rst (100%) rename i2p2www/meetings/{ => logs}/151.log (100%) rename i2p2www/meetings/{ => logs}/151.rst (100%) rename i2p2www/meetings/{ => logs}/152.log (100%) rename i2p2www/meetings/{ => logs}/152.rst (100%) rename i2p2www/meetings/{ => logs}/153.log (100%) rename i2p2www/meetings/{ => logs}/153.rst (100%) rename i2p2www/meetings/{ => logs}/154.log (100%) rename i2p2www/meetings/{ => logs}/154.rst (100%) rename i2p2www/meetings/{ => logs}/155.log (100%) rename i2p2www/meetings/{ => logs}/155.rst (100%) rename i2p2www/meetings/{ => logs}/156.log (100%) rename i2p2www/meetings/{ => logs}/156.rst (100%) rename i2p2www/meetings/{ => logs}/157.log (100%) rename i2p2www/meetings/{ => logs}/157.rst (100%) rename i2p2www/meetings/{ => logs}/158.log (100%) rename i2p2www/meetings/{ => logs}/158.rst (100%) rename i2p2www/meetings/{ => logs}/159.log (100%) rename i2p2www/meetings/{ => logs}/159.rst (100%) rename i2p2www/meetings/{ => logs}/160.log (100%) rename i2p2www/meetings/{ => logs}/160.rst (100%) rename i2p2www/meetings/{ => logs}/161.log (100%) rename i2p2www/meetings/{ => logs}/161.rst (100%) rename i2p2www/meetings/{ => logs}/162.log (100%) rename i2p2www/meetings/{ => logs}/162.rst (100%) rename i2p2www/meetings/{ => logs}/163.log (100%) rename i2p2www/meetings/{ => logs}/163.rst (100%) rename i2p2www/meetings/{ => logs}/164.log (100%) rename i2p2www/meetings/{ => logs}/164.rst (100%) rename i2p2www/meetings/{ => logs}/165.log (100%) rename i2p2www/meetings/{ => logs}/165.rst (100%) rename i2p2www/meetings/{ => logs}/166.log (100%) rename i2p2www/meetings/{ => logs}/166.rst (100%) rename i2p2www/meetings/{ => logs}/167.log (100%) rename i2p2www/meetings/{ => logs}/167.rst (100%) rename i2p2www/meetings/{ => logs}/168.log (100%) rename i2p2www/meetings/{ => logs}/168.rst (100%) rename i2p2www/meetings/{ => logs}/170.log (100%) rename i2p2www/meetings/{ => logs}/170.rst (100%) rename i2p2www/meetings/{ => logs}/171.log (100%) rename i2p2www/meetings/{ => logs}/171.rst (100%) rename i2p2www/meetings/{ => logs}/172.log (100%) rename i2p2www/meetings/{ => logs}/172.rst (100%) rename i2p2www/meetings/{ => logs}/173.log (100%) rename i2p2www/meetings/{ => logs}/173.rst (100%) rename i2p2www/meetings/{ => logs}/174.log (100%) rename i2p2www/meetings/{ => logs}/174.rst (100%) rename i2p2www/meetings/{ => logs}/175.log (100%) rename i2p2www/meetings/{ => logs}/175.rst (100%) rename i2p2www/meetings/{ => logs}/176.log (100%) rename i2p2www/meetings/{ => logs}/176.rst (100%) rename i2p2www/meetings/{ => logs}/177.log (100%) rename i2p2www/meetings/{ => logs}/177.rst (100%) rename i2p2www/meetings/{ => logs}/178.log (100%) rename i2p2www/meetings/{ => logs}/178.rst (100%) rename i2p2www/meetings/{ => logs}/179.log (100%) rename i2p2www/meetings/{ => logs}/179.rst (100%) rename i2p2www/meetings/{ => logs}/18.log (100%) rename i2p2www/meetings/{ => logs}/18.rst (100%) rename i2p2www/meetings/{ => logs}/180.log (100%) rename i2p2www/meetings/{ => logs}/180.rst (100%) rename i2p2www/meetings/{ => logs}/181.log (100%) rename i2p2www/meetings/{ => logs}/181.rst (100%) rename i2p2www/meetings/{ => logs}/182.log (100%) rename i2p2www/meetings/{ => logs}/182.rst (100%) rename i2p2www/meetings/{ => logs}/183.log (100%) rename i2p2www/meetings/{ => logs}/183.rst (100%) rename i2p2www/meetings/{ => logs}/184.log (100%) rename i2p2www/meetings/{ => logs}/184.rst (100%) rename i2p2www/meetings/{ => logs}/185.log (100%) rename i2p2www/meetings/{ => logs}/185.rst (100%) rename i2p2www/meetings/{ => logs}/186.log (100%) rename i2p2www/meetings/{ => logs}/186.rst (100%) rename i2p2www/meetings/{ => logs}/187.log (100%) rename i2p2www/meetings/{ => logs}/187.rst (100%) rename i2p2www/meetings/{ => logs}/188.log (100%) rename i2p2www/meetings/{ => logs}/188.rst (100%) rename i2p2www/meetings/{ => logs}/189.log (100%) rename i2p2www/meetings/{ => logs}/189.rst (100%) rename i2p2www/meetings/{ => logs}/190.log (100%) rename i2p2www/meetings/{ => logs}/190.rst (100%) rename i2p2www/meetings/{ => logs}/191.log (100%) rename i2p2www/meetings/{ => logs}/191.rst (100%) rename i2p2www/meetings/{ => logs}/192.log (100%) rename i2p2www/meetings/{ => logs}/192.rst (100%) rename i2p2www/meetings/{ => logs}/193.log (100%) rename i2p2www/meetings/{ => logs}/193.rst (100%) rename i2p2www/meetings/{ => logs}/194.log (100%) rename i2p2www/meetings/{ => logs}/194.rst (100%) rename i2p2www/meetings/{ => logs}/195.log (100%) rename i2p2www/meetings/{ => logs}/195.rst (100%) rename i2p2www/meetings/{ => logs}/196.log (100%) rename i2p2www/meetings/{ => logs}/196.rst (100%) rename i2p2www/meetings/{ => logs}/197.log (100%) rename i2p2www/meetings/{ => logs}/197.rst (100%) rename i2p2www/meetings/{ => logs}/198.log (100%) rename i2p2www/meetings/{ => logs}/198.rst (100%) rename i2p2www/meetings/{ => logs}/199.log (100%) rename i2p2www/meetings/{ => logs}/199.rst (100%) rename i2p2www/meetings/{ => logs}/2.log (100%) rename i2p2www/meetings/{ => logs}/2.rst (100%) rename i2p2www/meetings/{ => logs}/20.log (100%) rename i2p2www/meetings/{ => logs}/20.rst (100%) rename i2p2www/meetings/{ => logs}/200.log (100%) rename i2p2www/meetings/{ => logs}/200.rst (100%) rename i2p2www/meetings/{ => logs}/201.log (100%) rename i2p2www/meetings/{ => logs}/201.rst (100%) rename i2p2www/meetings/{ => logs}/202.log (100%) rename i2p2www/meetings/{ => logs}/202.rst (100%) rename i2p2www/meetings/{ => logs}/203.log (100%) rename i2p2www/meetings/{ => logs}/203.rst (100%) rename i2p2www/meetings/{ => logs}/204.log (100%) rename i2p2www/meetings/{ => logs}/204.rst (100%) rename i2p2www/meetings/{ => logs}/205.log (100%) rename i2p2www/meetings/{ => logs}/205.rst (100%) rename i2p2www/meetings/{ => logs}/206.log (100%) rename i2p2www/meetings/{ => logs}/206.rst (100%) rename i2p2www/meetings/{ => logs}/207.log (100%) rename i2p2www/meetings/{ => logs}/207.rst (100%) rename i2p2www/meetings/{ => logs}/208.log (100%) rename i2p2www/meetings/{ => logs}/208.rst (100%) rename i2p2www/meetings/{ => logs}/209.log (100%) rename i2p2www/meetings/{ => logs}/209.rst (100%) rename i2p2www/meetings/{ => logs}/21.log (100%) rename i2p2www/meetings/{ => logs}/21.rst (100%) rename i2p2www/meetings/{ => logs}/210.log (100%) rename i2p2www/meetings/{ => logs}/210.rst (100%) rename i2p2www/meetings/{ => logs}/211.log (100%) rename i2p2www/meetings/{ => logs}/211.rst (100%) rename i2p2www/meetings/{ => logs}/212.log (100%) rename i2p2www/meetings/{ => logs}/212.rst (100%) rename i2p2www/meetings/{ => logs}/22.log (100%) rename i2p2www/meetings/{ => logs}/22.rst (100%) rename i2p2www/meetings/{ => logs}/23.log (100%) rename i2p2www/meetings/{ => logs}/23.rst (100%) rename i2p2www/meetings/{ => logs}/25.log (100%) rename i2p2www/meetings/{ => logs}/25.rst (100%) rename i2p2www/meetings/{ => logs}/26.log (100%) rename i2p2www/meetings/{ => logs}/26.rst (100%) rename i2p2www/meetings/{ => logs}/28.log (100%) rename i2p2www/meetings/{ => logs}/28.rst (100%) rename i2p2www/meetings/{ => logs}/29.log (100%) rename i2p2www/meetings/{ => logs}/29.rst (100%) rename i2p2www/meetings/{ => logs}/3.log (100%) rename i2p2www/meetings/{ => logs}/3.rst (100%) rename i2p2www/meetings/{ => logs}/30.log (100%) rename i2p2www/meetings/{ => logs}/30.rst (100%) rename i2p2www/meetings/{ => logs}/31.log (100%) rename i2p2www/meetings/{ => logs}/31.rst (100%) rename i2p2www/meetings/{ => logs}/32.log (100%) rename i2p2www/meetings/{ => logs}/32.rst (100%) rename i2p2www/meetings/{ => logs}/33.log (100%) rename i2p2www/meetings/{ => logs}/33.rst (100%) rename i2p2www/meetings/{ => logs}/34.log (100%) rename i2p2www/meetings/{ => logs}/34.rst (100%) rename i2p2www/meetings/{ => logs}/35.log (100%) rename i2p2www/meetings/{ => logs}/35.rst (100%) rename i2p2www/meetings/{ => logs}/4.log (100%) rename i2p2www/meetings/{ => logs}/4.rst (100%) rename i2p2www/meetings/{ => logs}/47.log (100%) rename i2p2www/meetings/{ => logs}/47.rst (100%) rename i2p2www/meetings/{ => logs}/49.log (100%) rename i2p2www/meetings/{ => logs}/49.rst (100%) rename i2p2www/meetings/{ => logs}/50.log (100%) rename i2p2www/meetings/{ => logs}/50.rst (100%) rename i2p2www/meetings/{ => logs}/51.log (100%) rename i2p2www/meetings/{ => logs}/51.rst (100%) rename i2p2www/meetings/{ => logs}/52.log (100%) rename i2p2www/meetings/{ => logs}/52.rst (100%) rename i2p2www/meetings/{ => logs}/53.log (100%) rename i2p2www/meetings/{ => logs}/53.rst (100%) rename i2p2www/meetings/{ => logs}/54.log (100%) rename i2p2www/meetings/{ => logs}/54.rst (100%) rename i2p2www/meetings/{ => logs}/55.log (100%) rename i2p2www/meetings/{ => logs}/55.rst (100%) rename i2p2www/meetings/{ => logs}/56.log (100%) rename i2p2www/meetings/{ => logs}/56.rst (100%) rename i2p2www/meetings/{ => logs}/57.log (100%) rename i2p2www/meetings/{ => logs}/57.rst (100%) rename i2p2www/meetings/{ => logs}/58.log (100%) rename i2p2www/meetings/{ => logs}/58.rst (100%) rename i2p2www/meetings/{ => logs}/59.log (100%) rename i2p2www/meetings/{ => logs}/59.rst (100%) rename i2p2www/meetings/{ => logs}/60.log (100%) rename i2p2www/meetings/{ => logs}/60.rst (100%) rename i2p2www/meetings/{ => logs}/61.log (100%) rename i2p2www/meetings/{ => logs}/61.rst (100%) rename i2p2www/meetings/{ => logs}/62.log (100%) rename i2p2www/meetings/{ => logs}/62.rst (100%) rename i2p2www/meetings/{ => logs}/63.log (100%) rename i2p2www/meetings/{ => logs}/63.rst (100%) rename i2p2www/meetings/{ => logs}/64.log (100%) rename i2p2www/meetings/{ => logs}/64.rst (100%) rename i2p2www/meetings/{ => logs}/65.log (100%) rename i2p2www/meetings/{ => logs}/65.rst (100%) rename i2p2www/meetings/{ => logs}/66.log (100%) rename i2p2www/meetings/{ => logs}/66.rst (100%) rename i2p2www/meetings/{ => logs}/68.log (100%) rename i2p2www/meetings/{ => logs}/68.rst (100%) rename i2p2www/meetings/{ => logs}/69.log (100%) rename i2p2www/meetings/{ => logs}/69.rst (100%) rename i2p2www/meetings/{ => logs}/7.log (100%) rename i2p2www/meetings/{ => logs}/7.rst (100%) rename i2p2www/meetings/{ => logs}/70.log (100%) rename i2p2www/meetings/{ => logs}/70.rst (100%) rename i2p2www/meetings/{ => logs}/71.log (100%) rename i2p2www/meetings/{ => logs}/71.rst (100%) rename i2p2www/meetings/{ => logs}/72.log (100%) rename i2p2www/meetings/{ => logs}/72.rst (100%) rename i2p2www/meetings/{ => logs}/73.log (100%) rename i2p2www/meetings/{ => logs}/73.rst (100%) rename i2p2www/meetings/{ => logs}/74.log (100%) rename i2p2www/meetings/{ => logs}/74.rst (100%) rename i2p2www/meetings/{ => logs}/75.log (100%) rename i2p2www/meetings/{ => logs}/75.rst (100%) rename i2p2www/meetings/{ => logs}/76.log (100%) rename i2p2www/meetings/{ => logs}/76.rst (100%) rename i2p2www/meetings/{ => logs}/77.log (100%) rename i2p2www/meetings/{ => logs}/77.rst (100%) rename i2p2www/meetings/{ => logs}/78.log (100%) rename i2p2www/meetings/{ => logs}/78.rst (100%) rename i2p2www/meetings/{ => logs}/79.log (100%) rename i2p2www/meetings/{ => logs}/79.rst (100%) rename i2p2www/meetings/{ => logs}/8.log (100%) rename i2p2www/meetings/{ => logs}/8.rst (100%) rename i2p2www/meetings/{ => logs}/80.log (100%) rename i2p2www/meetings/{ => logs}/80.rst (100%) rename i2p2www/meetings/{ => logs}/81.log (100%) rename i2p2www/meetings/{ => logs}/81.rst (100%) rename i2p2www/meetings/{ => logs}/82.log (100%) rename i2p2www/meetings/{ => logs}/82.rst (100%) rename i2p2www/meetings/{ => logs}/9.log (100%) rename i2p2www/meetings/{ => logs}/9.rst (100%) rename i2p2www/meetings/{ => logs}/90.log (100%) rename i2p2www/meetings/{ => logs}/90.rst (100%) rename i2p2www/meetings/{ => logs}/92.log (100%) rename i2p2www/meetings/{ => logs}/92.rst (100%) rename i2p2www/meetings/{ => logs}/93.log (100%) rename i2p2www/meetings/{ => logs}/93.rst (100%) rename i2p2www/meetings/{ => logs}/95.log (100%) rename i2p2www/meetings/{ => logs}/95.rst (100%) rename i2p2www/meetings/{ => logs}/99.log (100%) rename i2p2www/meetings/{ => logs}/99.rst (100%) diff --git a/i2p2www/__init__.py b/i2p2www/__init__.py index 8ebd1baa..18c4bac0 100644 --- a/i2p2www/__init__.py +++ b/i2p2www/__init__.py @@ -24,7 +24,7 @@ TEMPLATE_DIR = os.path.join(os.path.dirname(__file__), 'pages') STATIC_DIR = os.path.join(os.path.dirname(__file__), 'static') BLOG_DIR = os.path.join(os.path.dirname(__file__), 'blog') -MEETINGS_DIR = os.path.join(os.path.dirname(__file__), 'meetings') +MEETINGS_DIR = os.path.join(os.path.dirname(__file__), 'meetings/logs') BLOG_ENTRIES_PER_PAGE = 20 MEETINGS_PER_PAGE = 20 diff --git a/i2p2www/meetings/1.log b/i2p2www/meetings/logs/1.log similarity index 100% rename from i2p2www/meetings/1.log rename to i2p2www/meetings/logs/1.log diff --git a/i2p2www/meetings/1.rst b/i2p2www/meetings/logs/1.rst similarity index 100% rename from i2p2www/meetings/1.rst rename to i2p2www/meetings/logs/1.rst diff --git a/i2p2www/meetings/10.log b/i2p2www/meetings/logs/10.log similarity index 100% rename from i2p2www/meetings/10.log rename to i2p2www/meetings/logs/10.log diff --git a/i2p2www/meetings/10.rst b/i2p2www/meetings/logs/10.rst similarity index 100% rename from i2p2www/meetings/10.rst rename to i2p2www/meetings/logs/10.rst diff --git a/i2p2www/meetings/100.log b/i2p2www/meetings/logs/100.log similarity index 100% rename from i2p2www/meetings/100.log rename to i2p2www/meetings/logs/100.log diff --git a/i2p2www/meetings/100.rst b/i2p2www/meetings/logs/100.rst similarity index 100% rename from i2p2www/meetings/100.rst rename to i2p2www/meetings/logs/100.rst diff --git a/i2p2www/meetings/101.log b/i2p2www/meetings/logs/101.log similarity index 100% rename from i2p2www/meetings/101.log rename to i2p2www/meetings/logs/101.log diff --git a/i2p2www/meetings/101.rst b/i2p2www/meetings/logs/101.rst similarity index 100% rename from i2p2www/meetings/101.rst rename to i2p2www/meetings/logs/101.rst diff --git a/i2p2www/meetings/102.log b/i2p2www/meetings/logs/102.log similarity index 100% rename from i2p2www/meetings/102.log rename to i2p2www/meetings/logs/102.log diff --git a/i2p2www/meetings/102.rst b/i2p2www/meetings/logs/102.rst similarity index 100% rename from i2p2www/meetings/102.rst rename to i2p2www/meetings/logs/102.rst diff --git a/i2p2www/meetings/103.log b/i2p2www/meetings/logs/103.log similarity index 100% rename from i2p2www/meetings/103.log rename to i2p2www/meetings/logs/103.log diff --git a/i2p2www/meetings/103.rst b/i2p2www/meetings/logs/103.rst similarity index 100% rename from i2p2www/meetings/103.rst rename to i2p2www/meetings/logs/103.rst diff --git a/i2p2www/meetings/104.log b/i2p2www/meetings/logs/104.log similarity index 100% rename from i2p2www/meetings/104.log rename to i2p2www/meetings/logs/104.log diff --git a/i2p2www/meetings/104.rst b/i2p2www/meetings/logs/104.rst similarity index 100% rename from i2p2www/meetings/104.rst rename to i2p2www/meetings/logs/104.rst diff --git a/i2p2www/meetings/105.log b/i2p2www/meetings/logs/105.log similarity index 100% rename from i2p2www/meetings/105.log rename to i2p2www/meetings/logs/105.log diff --git a/i2p2www/meetings/105.rst b/i2p2www/meetings/logs/105.rst similarity index 100% rename from i2p2www/meetings/105.rst rename to i2p2www/meetings/logs/105.rst diff --git a/i2p2www/meetings/106.log b/i2p2www/meetings/logs/106.log similarity index 100% rename from i2p2www/meetings/106.log rename to i2p2www/meetings/logs/106.log diff --git a/i2p2www/meetings/106.rst b/i2p2www/meetings/logs/106.rst similarity index 100% rename from i2p2www/meetings/106.rst rename to i2p2www/meetings/logs/106.rst diff --git a/i2p2www/meetings/107.log b/i2p2www/meetings/logs/107.log similarity index 100% rename from i2p2www/meetings/107.log rename to i2p2www/meetings/logs/107.log diff --git a/i2p2www/meetings/107.rst b/i2p2www/meetings/logs/107.rst similarity index 100% rename from i2p2www/meetings/107.rst rename to i2p2www/meetings/logs/107.rst diff --git a/i2p2www/meetings/108.log b/i2p2www/meetings/logs/108.log similarity index 100% rename from i2p2www/meetings/108.log rename to i2p2www/meetings/logs/108.log diff --git a/i2p2www/meetings/108.rst b/i2p2www/meetings/logs/108.rst similarity index 100% rename from i2p2www/meetings/108.rst rename to i2p2www/meetings/logs/108.rst diff --git a/i2p2www/meetings/109.log b/i2p2www/meetings/logs/109.log similarity index 100% rename from i2p2www/meetings/109.log rename to i2p2www/meetings/logs/109.log diff --git a/i2p2www/meetings/109.rst b/i2p2www/meetings/logs/109.rst similarity index 100% rename from i2p2www/meetings/109.rst rename to i2p2www/meetings/logs/109.rst diff --git a/i2p2www/meetings/11.log b/i2p2www/meetings/logs/11.log similarity index 100% rename from i2p2www/meetings/11.log rename to i2p2www/meetings/logs/11.log diff --git a/i2p2www/meetings/11.rst b/i2p2www/meetings/logs/11.rst similarity index 100% rename from i2p2www/meetings/11.rst rename to i2p2www/meetings/logs/11.rst diff --git a/i2p2www/meetings/110.log b/i2p2www/meetings/logs/110.log similarity index 100% rename from i2p2www/meetings/110.log rename to i2p2www/meetings/logs/110.log diff --git a/i2p2www/meetings/110.rst b/i2p2www/meetings/logs/110.rst similarity index 100% rename from i2p2www/meetings/110.rst rename to i2p2www/meetings/logs/110.rst diff --git a/i2p2www/meetings/111.log b/i2p2www/meetings/logs/111.log similarity index 100% rename from i2p2www/meetings/111.log rename to i2p2www/meetings/logs/111.log diff --git a/i2p2www/meetings/111.rst b/i2p2www/meetings/logs/111.rst similarity index 100% rename from i2p2www/meetings/111.rst rename to i2p2www/meetings/logs/111.rst diff --git a/i2p2www/meetings/112.log b/i2p2www/meetings/logs/112.log similarity index 100% rename from i2p2www/meetings/112.log rename to i2p2www/meetings/logs/112.log diff --git a/i2p2www/meetings/112.rst b/i2p2www/meetings/logs/112.rst similarity index 100% rename from i2p2www/meetings/112.rst rename to i2p2www/meetings/logs/112.rst diff --git a/i2p2www/meetings/113.log b/i2p2www/meetings/logs/113.log similarity index 100% rename from i2p2www/meetings/113.log rename to i2p2www/meetings/logs/113.log diff --git a/i2p2www/meetings/113.rst b/i2p2www/meetings/logs/113.rst similarity index 100% rename from i2p2www/meetings/113.rst rename to i2p2www/meetings/logs/113.rst diff --git a/i2p2www/meetings/114.log b/i2p2www/meetings/logs/114.log similarity index 100% rename from i2p2www/meetings/114.log rename to i2p2www/meetings/logs/114.log diff --git a/i2p2www/meetings/114.rst b/i2p2www/meetings/logs/114.rst similarity index 100% rename from i2p2www/meetings/114.rst rename to i2p2www/meetings/logs/114.rst diff --git a/i2p2www/meetings/115.log b/i2p2www/meetings/logs/115.log similarity index 100% rename from i2p2www/meetings/115.log rename to i2p2www/meetings/logs/115.log diff --git a/i2p2www/meetings/115.rst b/i2p2www/meetings/logs/115.rst similarity index 100% rename from i2p2www/meetings/115.rst rename to i2p2www/meetings/logs/115.rst diff --git a/i2p2www/meetings/116.log b/i2p2www/meetings/logs/116.log similarity index 100% rename from i2p2www/meetings/116.log rename to i2p2www/meetings/logs/116.log diff --git a/i2p2www/meetings/116.rst b/i2p2www/meetings/logs/116.rst similarity index 100% rename from i2p2www/meetings/116.rst rename to i2p2www/meetings/logs/116.rst diff --git a/i2p2www/meetings/117.log b/i2p2www/meetings/logs/117.log similarity index 100% rename from i2p2www/meetings/117.log rename to i2p2www/meetings/logs/117.log diff --git a/i2p2www/meetings/117.rst b/i2p2www/meetings/logs/117.rst similarity index 100% rename from i2p2www/meetings/117.rst rename to i2p2www/meetings/logs/117.rst diff --git a/i2p2www/meetings/118.log b/i2p2www/meetings/logs/118.log similarity index 100% rename from i2p2www/meetings/118.log rename to i2p2www/meetings/logs/118.log diff --git a/i2p2www/meetings/118.rst b/i2p2www/meetings/logs/118.rst similarity index 100% rename from i2p2www/meetings/118.rst rename to i2p2www/meetings/logs/118.rst diff --git a/i2p2www/meetings/119.log b/i2p2www/meetings/logs/119.log similarity index 100% rename from i2p2www/meetings/119.log rename to i2p2www/meetings/logs/119.log diff --git a/i2p2www/meetings/119.rst b/i2p2www/meetings/logs/119.rst similarity index 100% rename from i2p2www/meetings/119.rst rename to i2p2www/meetings/logs/119.rst diff --git a/i2p2www/meetings/12.log b/i2p2www/meetings/logs/12.log similarity index 100% rename from i2p2www/meetings/12.log rename to i2p2www/meetings/logs/12.log diff --git a/i2p2www/meetings/12.rst b/i2p2www/meetings/logs/12.rst similarity index 100% rename from i2p2www/meetings/12.rst rename to i2p2www/meetings/logs/12.rst diff --git a/i2p2www/meetings/120.log b/i2p2www/meetings/logs/120.log similarity index 100% rename from i2p2www/meetings/120.log rename to i2p2www/meetings/logs/120.log diff --git a/i2p2www/meetings/120.rst b/i2p2www/meetings/logs/120.rst similarity index 100% rename from i2p2www/meetings/120.rst rename to i2p2www/meetings/logs/120.rst diff --git a/i2p2www/meetings/121.log b/i2p2www/meetings/logs/121.log similarity index 100% rename from i2p2www/meetings/121.log rename to i2p2www/meetings/logs/121.log diff --git a/i2p2www/meetings/121.rst b/i2p2www/meetings/logs/121.rst similarity index 100% rename from i2p2www/meetings/121.rst rename to i2p2www/meetings/logs/121.rst diff --git a/i2p2www/meetings/122.log b/i2p2www/meetings/logs/122.log similarity index 100% rename from i2p2www/meetings/122.log rename to i2p2www/meetings/logs/122.log diff --git a/i2p2www/meetings/122.rst b/i2p2www/meetings/logs/122.rst similarity index 100% rename from i2p2www/meetings/122.rst rename to i2p2www/meetings/logs/122.rst diff --git a/i2p2www/meetings/123.log b/i2p2www/meetings/logs/123.log similarity index 100% rename from i2p2www/meetings/123.log rename to i2p2www/meetings/logs/123.log diff --git a/i2p2www/meetings/123.rst b/i2p2www/meetings/logs/123.rst similarity index 100% rename from i2p2www/meetings/123.rst rename to i2p2www/meetings/logs/123.rst diff --git a/i2p2www/meetings/124.log b/i2p2www/meetings/logs/124.log similarity index 100% rename from i2p2www/meetings/124.log rename to i2p2www/meetings/logs/124.log diff --git a/i2p2www/meetings/124.rst b/i2p2www/meetings/logs/124.rst similarity index 100% rename from i2p2www/meetings/124.rst rename to i2p2www/meetings/logs/124.rst diff --git a/i2p2www/meetings/125.log b/i2p2www/meetings/logs/125.log similarity index 100% rename from i2p2www/meetings/125.log rename to i2p2www/meetings/logs/125.log diff --git a/i2p2www/meetings/125.rst b/i2p2www/meetings/logs/125.rst similarity index 100% rename from i2p2www/meetings/125.rst rename to i2p2www/meetings/logs/125.rst diff --git a/i2p2www/meetings/126.log b/i2p2www/meetings/logs/126.log similarity index 100% rename from i2p2www/meetings/126.log rename to i2p2www/meetings/logs/126.log diff --git a/i2p2www/meetings/126.rst b/i2p2www/meetings/logs/126.rst similarity index 100% rename from i2p2www/meetings/126.rst rename to i2p2www/meetings/logs/126.rst diff --git a/i2p2www/meetings/127.log b/i2p2www/meetings/logs/127.log similarity index 100% rename from i2p2www/meetings/127.log rename to i2p2www/meetings/logs/127.log diff --git a/i2p2www/meetings/127.rst b/i2p2www/meetings/logs/127.rst similarity index 100% rename from i2p2www/meetings/127.rst rename to i2p2www/meetings/logs/127.rst diff --git a/i2p2www/meetings/128.log b/i2p2www/meetings/logs/128.log similarity index 100% rename from i2p2www/meetings/128.log rename to i2p2www/meetings/logs/128.log diff --git a/i2p2www/meetings/128.rst b/i2p2www/meetings/logs/128.rst similarity index 100% rename from i2p2www/meetings/128.rst rename to i2p2www/meetings/logs/128.rst diff --git a/i2p2www/meetings/129.log b/i2p2www/meetings/logs/129.log similarity index 100% rename from i2p2www/meetings/129.log rename to i2p2www/meetings/logs/129.log diff --git a/i2p2www/meetings/129.rst b/i2p2www/meetings/logs/129.rst similarity index 100% rename from i2p2www/meetings/129.rst rename to i2p2www/meetings/logs/129.rst diff --git a/i2p2www/meetings/130.log b/i2p2www/meetings/logs/130.log similarity index 100% rename from i2p2www/meetings/130.log rename to i2p2www/meetings/logs/130.log diff --git a/i2p2www/meetings/130.rst b/i2p2www/meetings/logs/130.rst similarity index 100% rename from i2p2www/meetings/130.rst rename to i2p2www/meetings/logs/130.rst diff --git a/i2p2www/meetings/131.log b/i2p2www/meetings/logs/131.log similarity index 100% rename from i2p2www/meetings/131.log rename to i2p2www/meetings/logs/131.log diff --git a/i2p2www/meetings/131.rst b/i2p2www/meetings/logs/131.rst similarity index 100% rename from i2p2www/meetings/131.rst rename to i2p2www/meetings/logs/131.rst diff --git a/i2p2www/meetings/132.log b/i2p2www/meetings/logs/132.log similarity index 100% rename from i2p2www/meetings/132.log rename to i2p2www/meetings/logs/132.log diff --git a/i2p2www/meetings/132.rst b/i2p2www/meetings/logs/132.rst similarity index 100% rename from i2p2www/meetings/132.rst rename to i2p2www/meetings/logs/132.rst diff --git a/i2p2www/meetings/133.log b/i2p2www/meetings/logs/133.log similarity index 100% rename from i2p2www/meetings/133.log rename to i2p2www/meetings/logs/133.log diff --git a/i2p2www/meetings/133.rst b/i2p2www/meetings/logs/133.rst similarity index 100% rename from i2p2www/meetings/133.rst rename to i2p2www/meetings/logs/133.rst diff --git a/i2p2www/meetings/134.log b/i2p2www/meetings/logs/134.log similarity index 100% rename from i2p2www/meetings/134.log rename to i2p2www/meetings/logs/134.log diff --git a/i2p2www/meetings/134.rst b/i2p2www/meetings/logs/134.rst similarity index 100% rename from i2p2www/meetings/134.rst rename to i2p2www/meetings/logs/134.rst diff --git a/i2p2www/meetings/135.log b/i2p2www/meetings/logs/135.log similarity index 100% rename from i2p2www/meetings/135.log rename to i2p2www/meetings/logs/135.log diff --git a/i2p2www/meetings/135.rst b/i2p2www/meetings/logs/135.rst similarity index 100% rename from i2p2www/meetings/135.rst rename to i2p2www/meetings/logs/135.rst diff --git a/i2p2www/meetings/136.log b/i2p2www/meetings/logs/136.log similarity index 100% rename from i2p2www/meetings/136.log rename to i2p2www/meetings/logs/136.log diff --git a/i2p2www/meetings/136.rst b/i2p2www/meetings/logs/136.rst similarity index 100% rename from i2p2www/meetings/136.rst rename to i2p2www/meetings/logs/136.rst diff --git a/i2p2www/meetings/137.log b/i2p2www/meetings/logs/137.log similarity index 100% rename from i2p2www/meetings/137.log rename to i2p2www/meetings/logs/137.log diff --git a/i2p2www/meetings/137.rst b/i2p2www/meetings/logs/137.rst similarity index 100% rename from i2p2www/meetings/137.rst rename to i2p2www/meetings/logs/137.rst diff --git a/i2p2www/meetings/138.log b/i2p2www/meetings/logs/138.log similarity index 100% rename from i2p2www/meetings/138.log rename to i2p2www/meetings/logs/138.log diff --git a/i2p2www/meetings/138.rst b/i2p2www/meetings/logs/138.rst similarity index 100% rename from i2p2www/meetings/138.rst rename to i2p2www/meetings/logs/138.rst diff --git a/i2p2www/meetings/139.log b/i2p2www/meetings/logs/139.log similarity index 100% rename from i2p2www/meetings/139.log rename to i2p2www/meetings/logs/139.log diff --git a/i2p2www/meetings/139.rst b/i2p2www/meetings/logs/139.rst similarity index 100% rename from i2p2www/meetings/139.rst rename to i2p2www/meetings/logs/139.rst diff --git a/i2p2www/meetings/140.log b/i2p2www/meetings/logs/140.log similarity index 100% rename from i2p2www/meetings/140.log rename to i2p2www/meetings/logs/140.log diff --git a/i2p2www/meetings/140.rst b/i2p2www/meetings/logs/140.rst similarity index 100% rename from i2p2www/meetings/140.rst rename to i2p2www/meetings/logs/140.rst diff --git a/i2p2www/meetings/141.log b/i2p2www/meetings/logs/141.log similarity index 100% rename from i2p2www/meetings/141.log rename to i2p2www/meetings/logs/141.log diff --git a/i2p2www/meetings/141.rst b/i2p2www/meetings/logs/141.rst similarity index 100% rename from i2p2www/meetings/141.rst rename to i2p2www/meetings/logs/141.rst diff --git a/i2p2www/meetings/142.log b/i2p2www/meetings/logs/142.log similarity index 100% rename from i2p2www/meetings/142.log rename to i2p2www/meetings/logs/142.log diff --git a/i2p2www/meetings/142.rst b/i2p2www/meetings/logs/142.rst similarity index 100% rename from i2p2www/meetings/142.rst rename to i2p2www/meetings/logs/142.rst diff --git a/i2p2www/meetings/143.log b/i2p2www/meetings/logs/143.log similarity index 100% rename from i2p2www/meetings/143.log rename to i2p2www/meetings/logs/143.log diff --git a/i2p2www/meetings/143.rst b/i2p2www/meetings/logs/143.rst similarity index 100% rename from i2p2www/meetings/143.rst rename to i2p2www/meetings/logs/143.rst diff --git a/i2p2www/meetings/144.log b/i2p2www/meetings/logs/144.log similarity index 100% rename from i2p2www/meetings/144.log rename to i2p2www/meetings/logs/144.log diff --git a/i2p2www/meetings/144.rst b/i2p2www/meetings/logs/144.rst similarity index 100% rename from i2p2www/meetings/144.rst rename to i2p2www/meetings/logs/144.rst diff --git a/i2p2www/meetings/145.log b/i2p2www/meetings/logs/145.log similarity index 100% rename from i2p2www/meetings/145.log rename to i2p2www/meetings/logs/145.log diff --git a/i2p2www/meetings/145.rst b/i2p2www/meetings/logs/145.rst similarity index 100% rename from i2p2www/meetings/145.rst rename to i2p2www/meetings/logs/145.rst diff --git a/i2p2www/meetings/146.log b/i2p2www/meetings/logs/146.log similarity index 100% rename from i2p2www/meetings/146.log rename to i2p2www/meetings/logs/146.log diff --git a/i2p2www/meetings/146.rst b/i2p2www/meetings/logs/146.rst similarity index 100% rename from i2p2www/meetings/146.rst rename to i2p2www/meetings/logs/146.rst diff --git a/i2p2www/meetings/147.log b/i2p2www/meetings/logs/147.log similarity index 100% rename from i2p2www/meetings/147.log rename to i2p2www/meetings/logs/147.log diff --git a/i2p2www/meetings/147.rst b/i2p2www/meetings/logs/147.rst similarity index 100% rename from i2p2www/meetings/147.rst rename to i2p2www/meetings/logs/147.rst diff --git a/i2p2www/meetings/148.log b/i2p2www/meetings/logs/148.log similarity index 100% rename from i2p2www/meetings/148.log rename to i2p2www/meetings/logs/148.log diff --git a/i2p2www/meetings/148.rst b/i2p2www/meetings/logs/148.rst similarity index 100% rename from i2p2www/meetings/148.rst rename to i2p2www/meetings/logs/148.rst diff --git a/i2p2www/meetings/149.log b/i2p2www/meetings/logs/149.log similarity index 100% rename from i2p2www/meetings/149.log rename to i2p2www/meetings/logs/149.log diff --git a/i2p2www/meetings/149.rst b/i2p2www/meetings/logs/149.rst similarity index 100% rename from i2p2www/meetings/149.rst rename to i2p2www/meetings/logs/149.rst diff --git a/i2p2www/meetings/15.log b/i2p2www/meetings/logs/15.log similarity index 100% rename from i2p2www/meetings/15.log rename to i2p2www/meetings/logs/15.log diff --git a/i2p2www/meetings/15.rst b/i2p2www/meetings/logs/15.rst similarity index 100% rename from i2p2www/meetings/15.rst rename to i2p2www/meetings/logs/15.rst diff --git a/i2p2www/meetings/150.log b/i2p2www/meetings/logs/150.log similarity index 100% rename from i2p2www/meetings/150.log rename to i2p2www/meetings/logs/150.log diff --git a/i2p2www/meetings/150.rst b/i2p2www/meetings/logs/150.rst similarity index 100% rename from i2p2www/meetings/150.rst rename to i2p2www/meetings/logs/150.rst diff --git a/i2p2www/meetings/151.log b/i2p2www/meetings/logs/151.log similarity index 100% rename from i2p2www/meetings/151.log rename to i2p2www/meetings/logs/151.log diff --git a/i2p2www/meetings/151.rst b/i2p2www/meetings/logs/151.rst similarity index 100% rename from i2p2www/meetings/151.rst rename to i2p2www/meetings/logs/151.rst diff --git a/i2p2www/meetings/152.log b/i2p2www/meetings/logs/152.log similarity index 100% rename from i2p2www/meetings/152.log rename to i2p2www/meetings/logs/152.log diff --git a/i2p2www/meetings/152.rst b/i2p2www/meetings/logs/152.rst similarity index 100% rename from i2p2www/meetings/152.rst rename to i2p2www/meetings/logs/152.rst diff --git a/i2p2www/meetings/153.log b/i2p2www/meetings/logs/153.log similarity index 100% rename from i2p2www/meetings/153.log rename to i2p2www/meetings/logs/153.log diff --git a/i2p2www/meetings/153.rst b/i2p2www/meetings/logs/153.rst similarity index 100% rename from i2p2www/meetings/153.rst rename to i2p2www/meetings/logs/153.rst diff --git a/i2p2www/meetings/154.log b/i2p2www/meetings/logs/154.log similarity index 100% rename from i2p2www/meetings/154.log rename to i2p2www/meetings/logs/154.log diff --git a/i2p2www/meetings/154.rst b/i2p2www/meetings/logs/154.rst similarity index 100% rename from i2p2www/meetings/154.rst rename to i2p2www/meetings/logs/154.rst diff --git a/i2p2www/meetings/155.log b/i2p2www/meetings/logs/155.log similarity index 100% rename from i2p2www/meetings/155.log rename to i2p2www/meetings/logs/155.log diff --git a/i2p2www/meetings/155.rst b/i2p2www/meetings/logs/155.rst similarity index 100% rename from i2p2www/meetings/155.rst rename to i2p2www/meetings/logs/155.rst diff --git a/i2p2www/meetings/156.log b/i2p2www/meetings/logs/156.log similarity index 100% rename from i2p2www/meetings/156.log rename to i2p2www/meetings/logs/156.log diff --git a/i2p2www/meetings/156.rst b/i2p2www/meetings/logs/156.rst similarity index 100% rename from i2p2www/meetings/156.rst rename to i2p2www/meetings/logs/156.rst diff --git a/i2p2www/meetings/157.log b/i2p2www/meetings/logs/157.log similarity index 100% rename from i2p2www/meetings/157.log rename to i2p2www/meetings/logs/157.log diff --git a/i2p2www/meetings/157.rst b/i2p2www/meetings/logs/157.rst similarity index 100% rename from i2p2www/meetings/157.rst rename to i2p2www/meetings/logs/157.rst diff --git a/i2p2www/meetings/158.log b/i2p2www/meetings/logs/158.log similarity index 100% rename from i2p2www/meetings/158.log rename to i2p2www/meetings/logs/158.log diff --git a/i2p2www/meetings/158.rst b/i2p2www/meetings/logs/158.rst similarity index 100% rename from i2p2www/meetings/158.rst rename to i2p2www/meetings/logs/158.rst diff --git a/i2p2www/meetings/159.log b/i2p2www/meetings/logs/159.log similarity index 100% rename from i2p2www/meetings/159.log rename to i2p2www/meetings/logs/159.log diff --git a/i2p2www/meetings/159.rst b/i2p2www/meetings/logs/159.rst similarity index 100% rename from i2p2www/meetings/159.rst rename to i2p2www/meetings/logs/159.rst diff --git a/i2p2www/meetings/160.log b/i2p2www/meetings/logs/160.log similarity index 100% rename from i2p2www/meetings/160.log rename to i2p2www/meetings/logs/160.log diff --git a/i2p2www/meetings/160.rst b/i2p2www/meetings/logs/160.rst similarity index 100% rename from i2p2www/meetings/160.rst rename to i2p2www/meetings/logs/160.rst diff --git a/i2p2www/meetings/161.log b/i2p2www/meetings/logs/161.log similarity index 100% rename from i2p2www/meetings/161.log rename to i2p2www/meetings/logs/161.log diff --git a/i2p2www/meetings/161.rst b/i2p2www/meetings/logs/161.rst similarity index 100% rename from i2p2www/meetings/161.rst rename to i2p2www/meetings/logs/161.rst diff --git a/i2p2www/meetings/162.log b/i2p2www/meetings/logs/162.log similarity index 100% rename from i2p2www/meetings/162.log rename to i2p2www/meetings/logs/162.log diff --git a/i2p2www/meetings/162.rst b/i2p2www/meetings/logs/162.rst similarity index 100% rename from i2p2www/meetings/162.rst rename to i2p2www/meetings/logs/162.rst diff --git a/i2p2www/meetings/163.log b/i2p2www/meetings/logs/163.log similarity index 100% rename from i2p2www/meetings/163.log rename to i2p2www/meetings/logs/163.log diff --git a/i2p2www/meetings/163.rst b/i2p2www/meetings/logs/163.rst similarity index 100% rename from i2p2www/meetings/163.rst rename to i2p2www/meetings/logs/163.rst diff --git a/i2p2www/meetings/164.log b/i2p2www/meetings/logs/164.log similarity index 100% rename from i2p2www/meetings/164.log rename to i2p2www/meetings/logs/164.log diff --git a/i2p2www/meetings/164.rst b/i2p2www/meetings/logs/164.rst similarity index 100% rename from i2p2www/meetings/164.rst rename to i2p2www/meetings/logs/164.rst diff --git a/i2p2www/meetings/165.log b/i2p2www/meetings/logs/165.log similarity index 100% rename from i2p2www/meetings/165.log rename to i2p2www/meetings/logs/165.log diff --git a/i2p2www/meetings/165.rst b/i2p2www/meetings/logs/165.rst similarity index 100% rename from i2p2www/meetings/165.rst rename to i2p2www/meetings/logs/165.rst diff --git a/i2p2www/meetings/166.log b/i2p2www/meetings/logs/166.log similarity index 100% rename from i2p2www/meetings/166.log rename to i2p2www/meetings/logs/166.log diff --git a/i2p2www/meetings/166.rst b/i2p2www/meetings/logs/166.rst similarity index 100% rename from i2p2www/meetings/166.rst rename to i2p2www/meetings/logs/166.rst diff --git a/i2p2www/meetings/167.log b/i2p2www/meetings/logs/167.log similarity index 100% rename from i2p2www/meetings/167.log rename to i2p2www/meetings/logs/167.log diff --git a/i2p2www/meetings/167.rst b/i2p2www/meetings/logs/167.rst similarity index 100% rename from i2p2www/meetings/167.rst rename to i2p2www/meetings/logs/167.rst diff --git a/i2p2www/meetings/168.log b/i2p2www/meetings/logs/168.log similarity index 100% rename from i2p2www/meetings/168.log rename to i2p2www/meetings/logs/168.log diff --git a/i2p2www/meetings/168.rst b/i2p2www/meetings/logs/168.rst similarity index 100% rename from i2p2www/meetings/168.rst rename to i2p2www/meetings/logs/168.rst diff --git a/i2p2www/meetings/170.log b/i2p2www/meetings/logs/170.log similarity index 100% rename from i2p2www/meetings/170.log rename to i2p2www/meetings/logs/170.log diff --git a/i2p2www/meetings/170.rst b/i2p2www/meetings/logs/170.rst similarity index 100% rename from i2p2www/meetings/170.rst rename to i2p2www/meetings/logs/170.rst diff --git a/i2p2www/meetings/171.log b/i2p2www/meetings/logs/171.log similarity index 100% rename from i2p2www/meetings/171.log rename to i2p2www/meetings/logs/171.log diff --git a/i2p2www/meetings/171.rst b/i2p2www/meetings/logs/171.rst similarity index 100% rename from i2p2www/meetings/171.rst rename to i2p2www/meetings/logs/171.rst diff --git a/i2p2www/meetings/172.log b/i2p2www/meetings/logs/172.log similarity index 100% rename from i2p2www/meetings/172.log rename to i2p2www/meetings/logs/172.log diff --git a/i2p2www/meetings/172.rst b/i2p2www/meetings/logs/172.rst similarity index 100% rename from i2p2www/meetings/172.rst rename to i2p2www/meetings/logs/172.rst diff --git a/i2p2www/meetings/173.log b/i2p2www/meetings/logs/173.log similarity index 100% rename from i2p2www/meetings/173.log rename to i2p2www/meetings/logs/173.log diff --git a/i2p2www/meetings/173.rst b/i2p2www/meetings/logs/173.rst similarity index 100% rename from i2p2www/meetings/173.rst rename to i2p2www/meetings/logs/173.rst diff --git a/i2p2www/meetings/174.log b/i2p2www/meetings/logs/174.log similarity index 100% rename from i2p2www/meetings/174.log rename to i2p2www/meetings/logs/174.log diff --git a/i2p2www/meetings/174.rst b/i2p2www/meetings/logs/174.rst similarity index 100% rename from i2p2www/meetings/174.rst rename to i2p2www/meetings/logs/174.rst diff --git a/i2p2www/meetings/175.log b/i2p2www/meetings/logs/175.log similarity index 100% rename from i2p2www/meetings/175.log rename to i2p2www/meetings/logs/175.log diff --git a/i2p2www/meetings/175.rst b/i2p2www/meetings/logs/175.rst similarity index 100% rename from i2p2www/meetings/175.rst rename to i2p2www/meetings/logs/175.rst diff --git a/i2p2www/meetings/176.log b/i2p2www/meetings/logs/176.log similarity index 100% rename from i2p2www/meetings/176.log rename to i2p2www/meetings/logs/176.log diff --git a/i2p2www/meetings/176.rst b/i2p2www/meetings/logs/176.rst similarity index 100% rename from i2p2www/meetings/176.rst rename to i2p2www/meetings/logs/176.rst diff --git a/i2p2www/meetings/177.log b/i2p2www/meetings/logs/177.log similarity index 100% rename from i2p2www/meetings/177.log rename to i2p2www/meetings/logs/177.log diff --git a/i2p2www/meetings/177.rst b/i2p2www/meetings/logs/177.rst similarity index 100% rename from i2p2www/meetings/177.rst rename to i2p2www/meetings/logs/177.rst diff --git a/i2p2www/meetings/178.log b/i2p2www/meetings/logs/178.log similarity index 100% rename from i2p2www/meetings/178.log rename to i2p2www/meetings/logs/178.log diff --git a/i2p2www/meetings/178.rst b/i2p2www/meetings/logs/178.rst similarity index 100% rename from i2p2www/meetings/178.rst rename to i2p2www/meetings/logs/178.rst diff --git a/i2p2www/meetings/179.log b/i2p2www/meetings/logs/179.log similarity index 100% rename from i2p2www/meetings/179.log rename to i2p2www/meetings/logs/179.log diff --git a/i2p2www/meetings/179.rst b/i2p2www/meetings/logs/179.rst similarity index 100% rename from i2p2www/meetings/179.rst rename to i2p2www/meetings/logs/179.rst diff --git a/i2p2www/meetings/18.log b/i2p2www/meetings/logs/18.log similarity index 100% rename from i2p2www/meetings/18.log rename to i2p2www/meetings/logs/18.log diff --git a/i2p2www/meetings/18.rst b/i2p2www/meetings/logs/18.rst similarity index 100% rename from i2p2www/meetings/18.rst rename to i2p2www/meetings/logs/18.rst diff --git a/i2p2www/meetings/180.log b/i2p2www/meetings/logs/180.log similarity index 100% rename from i2p2www/meetings/180.log rename to i2p2www/meetings/logs/180.log diff --git a/i2p2www/meetings/180.rst b/i2p2www/meetings/logs/180.rst similarity index 100% rename from i2p2www/meetings/180.rst rename to i2p2www/meetings/logs/180.rst diff --git a/i2p2www/meetings/181.log b/i2p2www/meetings/logs/181.log similarity index 100% rename from i2p2www/meetings/181.log rename to i2p2www/meetings/logs/181.log diff --git a/i2p2www/meetings/181.rst b/i2p2www/meetings/logs/181.rst similarity index 100% rename from i2p2www/meetings/181.rst rename to i2p2www/meetings/logs/181.rst diff --git a/i2p2www/meetings/182.log b/i2p2www/meetings/logs/182.log similarity index 100% rename from i2p2www/meetings/182.log rename to i2p2www/meetings/logs/182.log diff --git a/i2p2www/meetings/182.rst b/i2p2www/meetings/logs/182.rst similarity index 100% rename from i2p2www/meetings/182.rst rename to i2p2www/meetings/logs/182.rst diff --git a/i2p2www/meetings/183.log b/i2p2www/meetings/logs/183.log similarity index 100% rename from i2p2www/meetings/183.log rename to i2p2www/meetings/logs/183.log diff --git a/i2p2www/meetings/183.rst b/i2p2www/meetings/logs/183.rst similarity index 100% rename from i2p2www/meetings/183.rst rename to i2p2www/meetings/logs/183.rst diff --git a/i2p2www/meetings/184.log b/i2p2www/meetings/logs/184.log similarity index 100% rename from i2p2www/meetings/184.log rename to i2p2www/meetings/logs/184.log diff --git a/i2p2www/meetings/184.rst b/i2p2www/meetings/logs/184.rst similarity index 100% rename from i2p2www/meetings/184.rst rename to i2p2www/meetings/logs/184.rst diff --git a/i2p2www/meetings/185.log b/i2p2www/meetings/logs/185.log similarity index 100% rename from i2p2www/meetings/185.log rename to i2p2www/meetings/logs/185.log diff --git a/i2p2www/meetings/185.rst b/i2p2www/meetings/logs/185.rst similarity index 100% rename from i2p2www/meetings/185.rst rename to i2p2www/meetings/logs/185.rst diff --git a/i2p2www/meetings/186.log b/i2p2www/meetings/logs/186.log similarity index 100% rename from i2p2www/meetings/186.log rename to i2p2www/meetings/logs/186.log diff --git a/i2p2www/meetings/186.rst b/i2p2www/meetings/logs/186.rst similarity index 100% rename from i2p2www/meetings/186.rst rename to i2p2www/meetings/logs/186.rst diff --git a/i2p2www/meetings/187.log b/i2p2www/meetings/logs/187.log similarity index 100% rename from i2p2www/meetings/187.log rename to i2p2www/meetings/logs/187.log diff --git a/i2p2www/meetings/187.rst b/i2p2www/meetings/logs/187.rst similarity index 100% rename from i2p2www/meetings/187.rst rename to i2p2www/meetings/logs/187.rst diff --git a/i2p2www/meetings/188.log b/i2p2www/meetings/logs/188.log similarity index 100% rename from i2p2www/meetings/188.log rename to i2p2www/meetings/logs/188.log diff --git a/i2p2www/meetings/188.rst b/i2p2www/meetings/logs/188.rst similarity index 100% rename from i2p2www/meetings/188.rst rename to i2p2www/meetings/logs/188.rst diff --git a/i2p2www/meetings/189.log b/i2p2www/meetings/logs/189.log similarity index 100% rename from i2p2www/meetings/189.log rename to i2p2www/meetings/logs/189.log diff --git a/i2p2www/meetings/189.rst b/i2p2www/meetings/logs/189.rst similarity index 100% rename from i2p2www/meetings/189.rst rename to i2p2www/meetings/logs/189.rst diff --git a/i2p2www/meetings/190.log b/i2p2www/meetings/logs/190.log similarity index 100% rename from i2p2www/meetings/190.log rename to i2p2www/meetings/logs/190.log diff --git a/i2p2www/meetings/190.rst b/i2p2www/meetings/logs/190.rst similarity index 100% rename from i2p2www/meetings/190.rst rename to i2p2www/meetings/logs/190.rst diff --git a/i2p2www/meetings/191.log b/i2p2www/meetings/logs/191.log similarity index 100% rename from i2p2www/meetings/191.log rename to i2p2www/meetings/logs/191.log diff --git a/i2p2www/meetings/191.rst b/i2p2www/meetings/logs/191.rst similarity index 100% rename from i2p2www/meetings/191.rst rename to i2p2www/meetings/logs/191.rst diff --git a/i2p2www/meetings/192.log b/i2p2www/meetings/logs/192.log similarity index 100% rename from i2p2www/meetings/192.log rename to i2p2www/meetings/logs/192.log diff --git a/i2p2www/meetings/192.rst b/i2p2www/meetings/logs/192.rst similarity index 100% rename from i2p2www/meetings/192.rst rename to i2p2www/meetings/logs/192.rst diff --git a/i2p2www/meetings/193.log b/i2p2www/meetings/logs/193.log similarity index 100% rename from i2p2www/meetings/193.log rename to i2p2www/meetings/logs/193.log diff --git a/i2p2www/meetings/193.rst b/i2p2www/meetings/logs/193.rst similarity index 100% rename from i2p2www/meetings/193.rst rename to i2p2www/meetings/logs/193.rst diff --git a/i2p2www/meetings/194.log b/i2p2www/meetings/logs/194.log similarity index 100% rename from i2p2www/meetings/194.log rename to i2p2www/meetings/logs/194.log diff --git a/i2p2www/meetings/194.rst b/i2p2www/meetings/logs/194.rst similarity index 100% rename from i2p2www/meetings/194.rst rename to i2p2www/meetings/logs/194.rst diff --git a/i2p2www/meetings/195.log b/i2p2www/meetings/logs/195.log similarity index 100% rename from i2p2www/meetings/195.log rename to i2p2www/meetings/logs/195.log diff --git a/i2p2www/meetings/195.rst b/i2p2www/meetings/logs/195.rst similarity index 100% rename from i2p2www/meetings/195.rst rename to i2p2www/meetings/logs/195.rst diff --git a/i2p2www/meetings/196.log b/i2p2www/meetings/logs/196.log similarity index 100% rename from i2p2www/meetings/196.log rename to i2p2www/meetings/logs/196.log diff --git a/i2p2www/meetings/196.rst b/i2p2www/meetings/logs/196.rst similarity index 100% rename from i2p2www/meetings/196.rst rename to i2p2www/meetings/logs/196.rst diff --git a/i2p2www/meetings/197.log b/i2p2www/meetings/logs/197.log similarity index 100% rename from i2p2www/meetings/197.log rename to i2p2www/meetings/logs/197.log diff --git a/i2p2www/meetings/197.rst b/i2p2www/meetings/logs/197.rst similarity index 100% rename from i2p2www/meetings/197.rst rename to i2p2www/meetings/logs/197.rst diff --git a/i2p2www/meetings/198.log b/i2p2www/meetings/logs/198.log similarity index 100% rename from i2p2www/meetings/198.log rename to i2p2www/meetings/logs/198.log diff --git a/i2p2www/meetings/198.rst b/i2p2www/meetings/logs/198.rst similarity index 100% rename from i2p2www/meetings/198.rst rename to i2p2www/meetings/logs/198.rst diff --git a/i2p2www/meetings/199.log b/i2p2www/meetings/logs/199.log similarity index 100% rename from i2p2www/meetings/199.log rename to i2p2www/meetings/logs/199.log diff --git a/i2p2www/meetings/199.rst b/i2p2www/meetings/logs/199.rst similarity index 100% rename from i2p2www/meetings/199.rst rename to i2p2www/meetings/logs/199.rst diff --git a/i2p2www/meetings/2.log b/i2p2www/meetings/logs/2.log similarity index 100% rename from i2p2www/meetings/2.log rename to i2p2www/meetings/logs/2.log diff --git a/i2p2www/meetings/2.rst b/i2p2www/meetings/logs/2.rst similarity index 100% rename from i2p2www/meetings/2.rst rename to i2p2www/meetings/logs/2.rst diff --git a/i2p2www/meetings/20.log b/i2p2www/meetings/logs/20.log similarity index 100% rename from i2p2www/meetings/20.log rename to i2p2www/meetings/logs/20.log diff --git a/i2p2www/meetings/20.rst b/i2p2www/meetings/logs/20.rst similarity index 100% rename from i2p2www/meetings/20.rst rename to i2p2www/meetings/logs/20.rst diff --git a/i2p2www/meetings/200.log b/i2p2www/meetings/logs/200.log similarity index 100% rename from i2p2www/meetings/200.log rename to i2p2www/meetings/logs/200.log diff --git a/i2p2www/meetings/200.rst b/i2p2www/meetings/logs/200.rst similarity index 100% rename from i2p2www/meetings/200.rst rename to i2p2www/meetings/logs/200.rst diff --git a/i2p2www/meetings/201.log b/i2p2www/meetings/logs/201.log similarity index 100% rename from i2p2www/meetings/201.log rename to i2p2www/meetings/logs/201.log diff --git a/i2p2www/meetings/201.rst b/i2p2www/meetings/logs/201.rst similarity index 100% rename from i2p2www/meetings/201.rst rename to i2p2www/meetings/logs/201.rst diff --git a/i2p2www/meetings/202.log b/i2p2www/meetings/logs/202.log similarity index 100% rename from i2p2www/meetings/202.log rename to i2p2www/meetings/logs/202.log diff --git a/i2p2www/meetings/202.rst b/i2p2www/meetings/logs/202.rst similarity index 100% rename from i2p2www/meetings/202.rst rename to i2p2www/meetings/logs/202.rst diff --git a/i2p2www/meetings/203.log b/i2p2www/meetings/logs/203.log similarity index 100% rename from i2p2www/meetings/203.log rename to i2p2www/meetings/logs/203.log diff --git a/i2p2www/meetings/203.rst b/i2p2www/meetings/logs/203.rst similarity index 100% rename from i2p2www/meetings/203.rst rename to i2p2www/meetings/logs/203.rst diff --git a/i2p2www/meetings/204.log b/i2p2www/meetings/logs/204.log similarity index 100% rename from i2p2www/meetings/204.log rename to i2p2www/meetings/logs/204.log diff --git a/i2p2www/meetings/204.rst b/i2p2www/meetings/logs/204.rst similarity index 100% rename from i2p2www/meetings/204.rst rename to i2p2www/meetings/logs/204.rst diff --git a/i2p2www/meetings/205.log b/i2p2www/meetings/logs/205.log similarity index 100% rename from i2p2www/meetings/205.log rename to i2p2www/meetings/logs/205.log diff --git a/i2p2www/meetings/205.rst b/i2p2www/meetings/logs/205.rst similarity index 100% rename from i2p2www/meetings/205.rst rename to i2p2www/meetings/logs/205.rst diff --git a/i2p2www/meetings/206.log b/i2p2www/meetings/logs/206.log similarity index 100% rename from i2p2www/meetings/206.log rename to i2p2www/meetings/logs/206.log diff --git a/i2p2www/meetings/206.rst b/i2p2www/meetings/logs/206.rst similarity index 100% rename from i2p2www/meetings/206.rst rename to i2p2www/meetings/logs/206.rst diff --git a/i2p2www/meetings/207.log b/i2p2www/meetings/logs/207.log similarity index 100% rename from i2p2www/meetings/207.log rename to i2p2www/meetings/logs/207.log diff --git a/i2p2www/meetings/207.rst b/i2p2www/meetings/logs/207.rst similarity index 100% rename from i2p2www/meetings/207.rst rename to i2p2www/meetings/logs/207.rst diff --git a/i2p2www/meetings/208.log b/i2p2www/meetings/logs/208.log similarity index 100% rename from i2p2www/meetings/208.log rename to i2p2www/meetings/logs/208.log diff --git a/i2p2www/meetings/208.rst b/i2p2www/meetings/logs/208.rst similarity index 100% rename from i2p2www/meetings/208.rst rename to i2p2www/meetings/logs/208.rst diff --git a/i2p2www/meetings/209.log b/i2p2www/meetings/logs/209.log similarity index 100% rename from i2p2www/meetings/209.log rename to i2p2www/meetings/logs/209.log diff --git a/i2p2www/meetings/209.rst b/i2p2www/meetings/logs/209.rst similarity index 100% rename from i2p2www/meetings/209.rst rename to i2p2www/meetings/logs/209.rst diff --git a/i2p2www/meetings/21.log b/i2p2www/meetings/logs/21.log similarity index 100% rename from i2p2www/meetings/21.log rename to i2p2www/meetings/logs/21.log diff --git a/i2p2www/meetings/21.rst b/i2p2www/meetings/logs/21.rst similarity index 100% rename from i2p2www/meetings/21.rst rename to i2p2www/meetings/logs/21.rst diff --git a/i2p2www/meetings/210.log b/i2p2www/meetings/logs/210.log similarity index 100% rename from i2p2www/meetings/210.log rename to i2p2www/meetings/logs/210.log diff --git a/i2p2www/meetings/210.rst b/i2p2www/meetings/logs/210.rst similarity index 100% rename from i2p2www/meetings/210.rst rename to i2p2www/meetings/logs/210.rst diff --git a/i2p2www/meetings/211.log b/i2p2www/meetings/logs/211.log similarity index 100% rename from i2p2www/meetings/211.log rename to i2p2www/meetings/logs/211.log diff --git a/i2p2www/meetings/211.rst b/i2p2www/meetings/logs/211.rst similarity index 100% rename from i2p2www/meetings/211.rst rename to i2p2www/meetings/logs/211.rst diff --git a/i2p2www/meetings/212.log b/i2p2www/meetings/logs/212.log similarity index 100% rename from i2p2www/meetings/212.log rename to i2p2www/meetings/logs/212.log diff --git a/i2p2www/meetings/212.rst b/i2p2www/meetings/logs/212.rst similarity index 100% rename from i2p2www/meetings/212.rst rename to i2p2www/meetings/logs/212.rst diff --git a/i2p2www/meetings/22.log b/i2p2www/meetings/logs/22.log similarity index 100% rename from i2p2www/meetings/22.log rename to i2p2www/meetings/logs/22.log diff --git a/i2p2www/meetings/22.rst b/i2p2www/meetings/logs/22.rst similarity index 100% rename from i2p2www/meetings/22.rst rename to i2p2www/meetings/logs/22.rst diff --git a/i2p2www/meetings/23.log b/i2p2www/meetings/logs/23.log similarity index 100% rename from i2p2www/meetings/23.log rename to i2p2www/meetings/logs/23.log diff --git a/i2p2www/meetings/23.rst b/i2p2www/meetings/logs/23.rst similarity index 100% rename from i2p2www/meetings/23.rst rename to i2p2www/meetings/logs/23.rst diff --git a/i2p2www/meetings/25.log b/i2p2www/meetings/logs/25.log similarity index 100% rename from i2p2www/meetings/25.log rename to i2p2www/meetings/logs/25.log diff --git a/i2p2www/meetings/25.rst b/i2p2www/meetings/logs/25.rst similarity index 100% rename from i2p2www/meetings/25.rst rename to i2p2www/meetings/logs/25.rst diff --git a/i2p2www/meetings/26.log b/i2p2www/meetings/logs/26.log similarity index 100% rename from i2p2www/meetings/26.log rename to i2p2www/meetings/logs/26.log diff --git a/i2p2www/meetings/26.rst b/i2p2www/meetings/logs/26.rst similarity index 100% rename from i2p2www/meetings/26.rst rename to i2p2www/meetings/logs/26.rst diff --git a/i2p2www/meetings/28.log b/i2p2www/meetings/logs/28.log similarity index 100% rename from i2p2www/meetings/28.log rename to i2p2www/meetings/logs/28.log diff --git a/i2p2www/meetings/28.rst b/i2p2www/meetings/logs/28.rst similarity index 100% rename from i2p2www/meetings/28.rst rename to i2p2www/meetings/logs/28.rst diff --git a/i2p2www/meetings/29.log b/i2p2www/meetings/logs/29.log similarity index 100% rename from i2p2www/meetings/29.log rename to i2p2www/meetings/logs/29.log diff --git a/i2p2www/meetings/29.rst b/i2p2www/meetings/logs/29.rst similarity index 100% rename from i2p2www/meetings/29.rst rename to i2p2www/meetings/logs/29.rst diff --git a/i2p2www/meetings/3.log b/i2p2www/meetings/logs/3.log similarity index 100% rename from i2p2www/meetings/3.log rename to i2p2www/meetings/logs/3.log diff --git a/i2p2www/meetings/3.rst b/i2p2www/meetings/logs/3.rst similarity index 100% rename from i2p2www/meetings/3.rst rename to i2p2www/meetings/logs/3.rst diff --git a/i2p2www/meetings/30.log b/i2p2www/meetings/logs/30.log similarity index 100% rename from i2p2www/meetings/30.log rename to i2p2www/meetings/logs/30.log diff --git a/i2p2www/meetings/30.rst b/i2p2www/meetings/logs/30.rst similarity index 100% rename from i2p2www/meetings/30.rst rename to i2p2www/meetings/logs/30.rst diff --git a/i2p2www/meetings/31.log b/i2p2www/meetings/logs/31.log similarity index 100% rename from i2p2www/meetings/31.log rename to i2p2www/meetings/logs/31.log diff --git a/i2p2www/meetings/31.rst b/i2p2www/meetings/logs/31.rst similarity index 100% rename from i2p2www/meetings/31.rst rename to i2p2www/meetings/logs/31.rst diff --git a/i2p2www/meetings/32.log b/i2p2www/meetings/logs/32.log similarity index 100% rename from i2p2www/meetings/32.log rename to i2p2www/meetings/logs/32.log diff --git a/i2p2www/meetings/32.rst b/i2p2www/meetings/logs/32.rst similarity index 100% rename from i2p2www/meetings/32.rst rename to i2p2www/meetings/logs/32.rst diff --git a/i2p2www/meetings/33.log b/i2p2www/meetings/logs/33.log similarity index 100% rename from i2p2www/meetings/33.log rename to i2p2www/meetings/logs/33.log diff --git a/i2p2www/meetings/33.rst b/i2p2www/meetings/logs/33.rst similarity index 100% rename from i2p2www/meetings/33.rst rename to i2p2www/meetings/logs/33.rst diff --git a/i2p2www/meetings/34.log b/i2p2www/meetings/logs/34.log similarity index 100% rename from i2p2www/meetings/34.log rename to i2p2www/meetings/logs/34.log diff --git a/i2p2www/meetings/34.rst b/i2p2www/meetings/logs/34.rst similarity index 100% rename from i2p2www/meetings/34.rst rename to i2p2www/meetings/logs/34.rst diff --git a/i2p2www/meetings/35.log b/i2p2www/meetings/logs/35.log similarity index 100% rename from i2p2www/meetings/35.log rename to i2p2www/meetings/logs/35.log diff --git a/i2p2www/meetings/35.rst b/i2p2www/meetings/logs/35.rst similarity index 100% rename from i2p2www/meetings/35.rst rename to i2p2www/meetings/logs/35.rst diff --git a/i2p2www/meetings/4.log b/i2p2www/meetings/logs/4.log similarity index 100% rename from i2p2www/meetings/4.log rename to i2p2www/meetings/logs/4.log diff --git a/i2p2www/meetings/4.rst b/i2p2www/meetings/logs/4.rst similarity index 100% rename from i2p2www/meetings/4.rst rename to i2p2www/meetings/logs/4.rst diff --git a/i2p2www/meetings/47.log b/i2p2www/meetings/logs/47.log similarity index 100% rename from i2p2www/meetings/47.log rename to i2p2www/meetings/logs/47.log diff --git a/i2p2www/meetings/47.rst b/i2p2www/meetings/logs/47.rst similarity index 100% rename from i2p2www/meetings/47.rst rename to i2p2www/meetings/logs/47.rst diff --git a/i2p2www/meetings/49.log b/i2p2www/meetings/logs/49.log similarity index 100% rename from i2p2www/meetings/49.log rename to i2p2www/meetings/logs/49.log diff --git a/i2p2www/meetings/49.rst b/i2p2www/meetings/logs/49.rst similarity index 100% rename from i2p2www/meetings/49.rst rename to i2p2www/meetings/logs/49.rst diff --git a/i2p2www/meetings/50.log b/i2p2www/meetings/logs/50.log similarity index 100% rename from i2p2www/meetings/50.log rename to i2p2www/meetings/logs/50.log diff --git a/i2p2www/meetings/50.rst b/i2p2www/meetings/logs/50.rst similarity index 100% rename from i2p2www/meetings/50.rst rename to i2p2www/meetings/logs/50.rst diff --git a/i2p2www/meetings/51.log b/i2p2www/meetings/logs/51.log similarity index 100% rename from i2p2www/meetings/51.log rename to i2p2www/meetings/logs/51.log diff --git a/i2p2www/meetings/51.rst b/i2p2www/meetings/logs/51.rst similarity index 100% rename from i2p2www/meetings/51.rst rename to i2p2www/meetings/logs/51.rst diff --git a/i2p2www/meetings/52.log b/i2p2www/meetings/logs/52.log similarity index 100% rename from i2p2www/meetings/52.log rename to i2p2www/meetings/logs/52.log diff --git a/i2p2www/meetings/52.rst b/i2p2www/meetings/logs/52.rst similarity index 100% rename from i2p2www/meetings/52.rst rename to i2p2www/meetings/logs/52.rst diff --git a/i2p2www/meetings/53.log b/i2p2www/meetings/logs/53.log similarity index 100% rename from i2p2www/meetings/53.log rename to i2p2www/meetings/logs/53.log diff --git a/i2p2www/meetings/53.rst b/i2p2www/meetings/logs/53.rst similarity index 100% rename from i2p2www/meetings/53.rst rename to i2p2www/meetings/logs/53.rst diff --git a/i2p2www/meetings/54.log b/i2p2www/meetings/logs/54.log similarity index 100% rename from i2p2www/meetings/54.log rename to i2p2www/meetings/logs/54.log diff --git a/i2p2www/meetings/54.rst b/i2p2www/meetings/logs/54.rst similarity index 100% rename from i2p2www/meetings/54.rst rename to i2p2www/meetings/logs/54.rst diff --git a/i2p2www/meetings/55.log b/i2p2www/meetings/logs/55.log similarity index 100% rename from i2p2www/meetings/55.log rename to i2p2www/meetings/logs/55.log diff --git a/i2p2www/meetings/55.rst b/i2p2www/meetings/logs/55.rst similarity index 100% rename from i2p2www/meetings/55.rst rename to i2p2www/meetings/logs/55.rst diff --git a/i2p2www/meetings/56.log b/i2p2www/meetings/logs/56.log similarity index 100% rename from i2p2www/meetings/56.log rename to i2p2www/meetings/logs/56.log diff --git a/i2p2www/meetings/56.rst b/i2p2www/meetings/logs/56.rst similarity index 100% rename from i2p2www/meetings/56.rst rename to i2p2www/meetings/logs/56.rst diff --git a/i2p2www/meetings/57.log b/i2p2www/meetings/logs/57.log similarity index 100% rename from i2p2www/meetings/57.log rename to i2p2www/meetings/logs/57.log diff --git a/i2p2www/meetings/57.rst b/i2p2www/meetings/logs/57.rst similarity index 100% rename from i2p2www/meetings/57.rst rename to i2p2www/meetings/logs/57.rst diff --git a/i2p2www/meetings/58.log b/i2p2www/meetings/logs/58.log similarity index 100% rename from i2p2www/meetings/58.log rename to i2p2www/meetings/logs/58.log diff --git a/i2p2www/meetings/58.rst b/i2p2www/meetings/logs/58.rst similarity index 100% rename from i2p2www/meetings/58.rst rename to i2p2www/meetings/logs/58.rst diff --git a/i2p2www/meetings/59.log b/i2p2www/meetings/logs/59.log similarity index 100% rename from i2p2www/meetings/59.log rename to i2p2www/meetings/logs/59.log diff --git a/i2p2www/meetings/59.rst b/i2p2www/meetings/logs/59.rst similarity index 100% rename from i2p2www/meetings/59.rst rename to i2p2www/meetings/logs/59.rst diff --git a/i2p2www/meetings/60.log b/i2p2www/meetings/logs/60.log similarity index 100% rename from i2p2www/meetings/60.log rename to i2p2www/meetings/logs/60.log diff --git a/i2p2www/meetings/60.rst b/i2p2www/meetings/logs/60.rst similarity index 100% rename from i2p2www/meetings/60.rst rename to i2p2www/meetings/logs/60.rst diff --git a/i2p2www/meetings/61.log b/i2p2www/meetings/logs/61.log similarity index 100% rename from i2p2www/meetings/61.log rename to i2p2www/meetings/logs/61.log diff --git a/i2p2www/meetings/61.rst b/i2p2www/meetings/logs/61.rst similarity index 100% rename from i2p2www/meetings/61.rst rename to i2p2www/meetings/logs/61.rst diff --git a/i2p2www/meetings/62.log b/i2p2www/meetings/logs/62.log similarity index 100% rename from i2p2www/meetings/62.log rename to i2p2www/meetings/logs/62.log diff --git a/i2p2www/meetings/62.rst b/i2p2www/meetings/logs/62.rst similarity index 100% rename from i2p2www/meetings/62.rst rename to i2p2www/meetings/logs/62.rst diff --git a/i2p2www/meetings/63.log b/i2p2www/meetings/logs/63.log similarity index 100% rename from i2p2www/meetings/63.log rename to i2p2www/meetings/logs/63.log diff --git a/i2p2www/meetings/63.rst b/i2p2www/meetings/logs/63.rst similarity index 100% rename from i2p2www/meetings/63.rst rename to i2p2www/meetings/logs/63.rst diff --git a/i2p2www/meetings/64.log b/i2p2www/meetings/logs/64.log similarity index 100% rename from i2p2www/meetings/64.log rename to i2p2www/meetings/logs/64.log diff --git a/i2p2www/meetings/64.rst b/i2p2www/meetings/logs/64.rst similarity index 100% rename from i2p2www/meetings/64.rst rename to i2p2www/meetings/logs/64.rst diff --git a/i2p2www/meetings/65.log b/i2p2www/meetings/logs/65.log similarity index 100% rename from i2p2www/meetings/65.log rename to i2p2www/meetings/logs/65.log diff --git a/i2p2www/meetings/65.rst b/i2p2www/meetings/logs/65.rst similarity index 100% rename from i2p2www/meetings/65.rst rename to i2p2www/meetings/logs/65.rst diff --git a/i2p2www/meetings/66.log b/i2p2www/meetings/logs/66.log similarity index 100% rename from i2p2www/meetings/66.log rename to i2p2www/meetings/logs/66.log diff --git a/i2p2www/meetings/66.rst b/i2p2www/meetings/logs/66.rst similarity index 100% rename from i2p2www/meetings/66.rst rename to i2p2www/meetings/logs/66.rst diff --git a/i2p2www/meetings/68.log b/i2p2www/meetings/logs/68.log similarity index 100% rename from i2p2www/meetings/68.log rename to i2p2www/meetings/logs/68.log diff --git a/i2p2www/meetings/68.rst b/i2p2www/meetings/logs/68.rst similarity index 100% rename from i2p2www/meetings/68.rst rename to i2p2www/meetings/logs/68.rst diff --git a/i2p2www/meetings/69.log b/i2p2www/meetings/logs/69.log similarity index 100% rename from i2p2www/meetings/69.log rename to i2p2www/meetings/logs/69.log diff --git a/i2p2www/meetings/69.rst b/i2p2www/meetings/logs/69.rst similarity index 100% rename from i2p2www/meetings/69.rst rename to i2p2www/meetings/logs/69.rst diff --git a/i2p2www/meetings/7.log b/i2p2www/meetings/logs/7.log similarity index 100% rename from i2p2www/meetings/7.log rename to i2p2www/meetings/logs/7.log diff --git a/i2p2www/meetings/7.rst b/i2p2www/meetings/logs/7.rst similarity index 100% rename from i2p2www/meetings/7.rst rename to i2p2www/meetings/logs/7.rst diff --git a/i2p2www/meetings/70.log b/i2p2www/meetings/logs/70.log similarity index 100% rename from i2p2www/meetings/70.log rename to i2p2www/meetings/logs/70.log diff --git a/i2p2www/meetings/70.rst b/i2p2www/meetings/logs/70.rst similarity index 100% rename from i2p2www/meetings/70.rst rename to i2p2www/meetings/logs/70.rst diff --git a/i2p2www/meetings/71.log b/i2p2www/meetings/logs/71.log similarity index 100% rename from i2p2www/meetings/71.log rename to i2p2www/meetings/logs/71.log diff --git a/i2p2www/meetings/71.rst b/i2p2www/meetings/logs/71.rst similarity index 100% rename from i2p2www/meetings/71.rst rename to i2p2www/meetings/logs/71.rst diff --git a/i2p2www/meetings/72.log b/i2p2www/meetings/logs/72.log similarity index 100% rename from i2p2www/meetings/72.log rename to i2p2www/meetings/logs/72.log diff --git a/i2p2www/meetings/72.rst b/i2p2www/meetings/logs/72.rst similarity index 100% rename from i2p2www/meetings/72.rst rename to i2p2www/meetings/logs/72.rst diff --git a/i2p2www/meetings/73.log b/i2p2www/meetings/logs/73.log similarity index 100% rename from i2p2www/meetings/73.log rename to i2p2www/meetings/logs/73.log diff --git a/i2p2www/meetings/73.rst b/i2p2www/meetings/logs/73.rst similarity index 100% rename from i2p2www/meetings/73.rst rename to i2p2www/meetings/logs/73.rst diff --git a/i2p2www/meetings/74.log b/i2p2www/meetings/logs/74.log similarity index 100% rename from i2p2www/meetings/74.log rename to i2p2www/meetings/logs/74.log diff --git a/i2p2www/meetings/74.rst b/i2p2www/meetings/logs/74.rst similarity index 100% rename from i2p2www/meetings/74.rst rename to i2p2www/meetings/logs/74.rst diff --git a/i2p2www/meetings/75.log b/i2p2www/meetings/logs/75.log similarity index 100% rename from i2p2www/meetings/75.log rename to i2p2www/meetings/logs/75.log diff --git a/i2p2www/meetings/75.rst b/i2p2www/meetings/logs/75.rst similarity index 100% rename from i2p2www/meetings/75.rst rename to i2p2www/meetings/logs/75.rst diff --git a/i2p2www/meetings/76.log b/i2p2www/meetings/logs/76.log similarity index 100% rename from i2p2www/meetings/76.log rename to i2p2www/meetings/logs/76.log diff --git a/i2p2www/meetings/76.rst b/i2p2www/meetings/logs/76.rst similarity index 100% rename from i2p2www/meetings/76.rst rename to i2p2www/meetings/logs/76.rst diff --git a/i2p2www/meetings/77.log b/i2p2www/meetings/logs/77.log similarity index 100% rename from i2p2www/meetings/77.log rename to i2p2www/meetings/logs/77.log diff --git a/i2p2www/meetings/77.rst b/i2p2www/meetings/logs/77.rst similarity index 100% rename from i2p2www/meetings/77.rst rename to i2p2www/meetings/logs/77.rst diff --git a/i2p2www/meetings/78.log b/i2p2www/meetings/logs/78.log similarity index 100% rename from i2p2www/meetings/78.log rename to i2p2www/meetings/logs/78.log diff --git a/i2p2www/meetings/78.rst b/i2p2www/meetings/logs/78.rst similarity index 100% rename from i2p2www/meetings/78.rst rename to i2p2www/meetings/logs/78.rst diff --git a/i2p2www/meetings/79.log b/i2p2www/meetings/logs/79.log similarity index 100% rename from i2p2www/meetings/79.log rename to i2p2www/meetings/logs/79.log diff --git a/i2p2www/meetings/79.rst b/i2p2www/meetings/logs/79.rst similarity index 100% rename from i2p2www/meetings/79.rst rename to i2p2www/meetings/logs/79.rst diff --git a/i2p2www/meetings/8.log b/i2p2www/meetings/logs/8.log similarity index 100% rename from i2p2www/meetings/8.log rename to i2p2www/meetings/logs/8.log diff --git a/i2p2www/meetings/8.rst b/i2p2www/meetings/logs/8.rst similarity index 100% rename from i2p2www/meetings/8.rst rename to i2p2www/meetings/logs/8.rst diff --git a/i2p2www/meetings/80.log b/i2p2www/meetings/logs/80.log similarity index 100% rename from i2p2www/meetings/80.log rename to i2p2www/meetings/logs/80.log diff --git a/i2p2www/meetings/80.rst b/i2p2www/meetings/logs/80.rst similarity index 100% rename from i2p2www/meetings/80.rst rename to i2p2www/meetings/logs/80.rst diff --git a/i2p2www/meetings/81.log b/i2p2www/meetings/logs/81.log similarity index 100% rename from i2p2www/meetings/81.log rename to i2p2www/meetings/logs/81.log diff --git a/i2p2www/meetings/81.rst b/i2p2www/meetings/logs/81.rst similarity index 100% rename from i2p2www/meetings/81.rst rename to i2p2www/meetings/logs/81.rst diff --git a/i2p2www/meetings/82.log b/i2p2www/meetings/logs/82.log similarity index 100% rename from i2p2www/meetings/82.log rename to i2p2www/meetings/logs/82.log diff --git a/i2p2www/meetings/82.rst b/i2p2www/meetings/logs/82.rst similarity index 100% rename from i2p2www/meetings/82.rst rename to i2p2www/meetings/logs/82.rst diff --git a/i2p2www/meetings/9.log b/i2p2www/meetings/logs/9.log similarity index 100% rename from i2p2www/meetings/9.log rename to i2p2www/meetings/logs/9.log diff --git a/i2p2www/meetings/9.rst b/i2p2www/meetings/logs/9.rst similarity index 100% rename from i2p2www/meetings/9.rst rename to i2p2www/meetings/logs/9.rst diff --git a/i2p2www/meetings/90.log b/i2p2www/meetings/logs/90.log similarity index 100% rename from i2p2www/meetings/90.log rename to i2p2www/meetings/logs/90.log diff --git a/i2p2www/meetings/90.rst b/i2p2www/meetings/logs/90.rst similarity index 100% rename from i2p2www/meetings/90.rst rename to i2p2www/meetings/logs/90.rst diff --git a/i2p2www/meetings/92.log b/i2p2www/meetings/logs/92.log similarity index 100% rename from i2p2www/meetings/92.log rename to i2p2www/meetings/logs/92.log diff --git a/i2p2www/meetings/92.rst b/i2p2www/meetings/logs/92.rst similarity index 100% rename from i2p2www/meetings/92.rst rename to i2p2www/meetings/logs/92.rst diff --git a/i2p2www/meetings/93.log b/i2p2www/meetings/logs/93.log similarity index 100% rename from i2p2www/meetings/93.log rename to i2p2www/meetings/logs/93.log diff --git a/i2p2www/meetings/93.rst b/i2p2www/meetings/logs/93.rst similarity index 100% rename from i2p2www/meetings/93.rst rename to i2p2www/meetings/logs/93.rst diff --git a/i2p2www/meetings/95.log b/i2p2www/meetings/logs/95.log similarity index 100% rename from i2p2www/meetings/95.log rename to i2p2www/meetings/logs/95.log diff --git a/i2p2www/meetings/95.rst b/i2p2www/meetings/logs/95.rst similarity index 100% rename from i2p2www/meetings/95.rst rename to i2p2www/meetings/logs/95.rst diff --git a/i2p2www/meetings/99.log b/i2p2www/meetings/logs/99.log similarity index 100% rename from i2p2www/meetings/99.log rename to i2p2www/meetings/logs/99.log diff --git a/i2p2www/meetings/99.rst b/i2p2www/meetings/logs/99.rst similarity index 100% rename from i2p2www/meetings/99.rst rename to i2p2www/meetings/logs/99.rst From 5a088b76c7af40926220a1822a6cca5ebd09979a Mon Sep 17 00:00:00 2001 From: str4d Date: Wed, 19 Dec 2012 07:59:22 +0000 Subject: [PATCH 204/650] Split off meetings code --- i2p2www/__init__.py | 161 ++--------------------------------- i2p2www/blog/views.py | 2 +- i2p2www/meetings/__init__.py | 0 i2p2www/meetings/helpers.py | 77 +++++++++++++++++ i2p2www/meetings/views.py | 84 ++++++++++++++++++ 5 files changed, 169 insertions(+), 155 deletions(-) create mode 100644 i2p2www/meetings/__init__.py create mode 100644 i2p2www/meetings/helpers.py create mode 100644 i2p2www/meetings/views.py diff --git a/i2p2www/__init__.py b/i2p2www/__init__.py index 18c4bac0..fecf8534 100644 --- a/i2p2www/__init__.py +++ b/i2p2www/__init__.py @@ -1,13 +1,10 @@ from jinja2 import Environment, FileSystemLoader, environmentfilter from flask import Flask, request, session, g, redirect, url_for, abort, render_template, flash, send_from_directory, safe_join from flaskext.babel import Babel -from werkzeug.contrib.atom import AtomFeed from docutils.core import publish_parts -import datetime import os.path import os import fileinput -import codecs from random import randint try: import json @@ -53,6 +50,13 @@ url('//blog/entry/', 'blog.views.blog_entry') url('//feed/blog/rss', 'blog.views.blog_rss') url('//feed/blog/atom', 'blog.views.blog_atom') +url('//meetings/', 'meetings.views.meetings_index', defaults={'page': 1}) +url('//meetings/page/', 'meetings.views.meetings_index') +url('//meetings/', 'meetings.views.meetings_show') +url('//meetings/.log', 'meetings.views.meetings_show_log') +url('//meetings/.rst', 'meetings.views.meetings_show_rst') +url('//feed/meetings/atom', 'meetings.views.meetings_atom') + ################# # Babel selectors @@ -204,157 +208,6 @@ def server_error(error): return render_template('global/error_500.html'), 500 -######################## -# Meeting helper methods - -def get_meetings_feed_items(num=0): - meetings = get_meetings(num) - items = [] - for meeting in meetings: - a = {} - a['title'] = meeting['parts']['title'] - a['content'] = meeting['parts']['fragment'] - a['url'] = url_for('meetings_show', lang=g.lang, id=meeting['id']) - a['updated'] = (meeting['date'] if meeting['date'] else datetime.datetime(0)) - items.append(a) - return items - -def get_meetings(num=0): - meetings_ids = get_meetings_ids(num) - meetings = [] - for id in meetings_ids: - parts = render_meeting_rst(id) - if parts: - try: - date = datetime.datetime.strptime(parts['title'], 'I2P dev meeting, %B %d, %Y @ %H:%M %Z') - except ValueError: - try: - date = datetime.datetime.strptime(parts['title'], 'I2P dev meeting, %B %d, %Y') - except ValueError: - date = None - a = {} - a['id'] = id - a['date'] = date - a['parts'] = parts - meetings.append(a) - return meetings - -def get_meetings_ids(num=0): - """ - Returns the latest #num valid meetings, or all meetings if num=0. - """ - # list of meetings - meetings=[] - # walk over all directories/files - for v in os.walk(MEETINGS_DIR): - # iterate over all files - for f in v[2]: - # ignore all non-.rst files - if not f.endswith('.rst'): - continue - meetings.append(int(f[:-4])) - meetings.sort() - meetings.reverse() - if (num > 0): - return meetings[:num] - return meetings - -def render_meeting_rst(id): - # check if that file actually exists - name = str(id) + '.rst' - path = safe_join(MEETINGS_DIR, name) - if not os.path.exists(path): - abort(404) - - # read file - with codecs.open(path, encoding='utf-8') as fd: - content = fd.read() - - return publish_parts(source=content, source_path=MEETINGS_DIR, writer_name="html") - - -################## -# Meeting handlers - -# Meeting index -@app.route('//meetings/', defaults={'page': 1}) -@app.route('//meetings/page/') -def meetings_index(page): - all_meetings = get_meetings() - meetings = get_for_page(all_meetings, page, MEETINGS_PER_PAGE) - if not meetings and page != 1: - abort(404) - pagination = Pagination(page, MEETINGS_PER_PAGE, len(all_meetings)) - return render_template('meetings/index.html', pagination=pagination, meetings=meetings) - -# Renderer for specific meetings -@app.route('//meetings/') -def meetings_show(id, log=False, rst=False): - """ - Render the meeting X. - Either display the raw IRC .log or render as html and include .rst as header if it exists - """ - # generate file name for the raw meeting file(and header) - lname = str(id) + '.log' - hname = str(id) + '.rst' - lfile = safe_join(MEETINGS_DIR, lname) - hfile = safe_join(MEETINGS_DIR, hname) - - # check if meeting file exists and throw error if it does not.. - if not os.path.exists(lfile): - abort(404) - - # if the user just wanted the .log - if log: - # hmm... maybe replace with something non-render_template like? - # return render_template('meetings/show_raw.html', log=log) - return send_from_directory(MEETINGS_DIR, lname, mimetype='text/plain') - - log='' - header=None - - # try to load header if that makes sense - if os.path.exists(hfile): - # if the user just wanted the .rst... - if rst: - return send_from_directory(MEETINGS_DIR, hname, mimetype='text/plain') - - # open the file as utf-8 file - with codecs.open(hfile, encoding='utf-8') as fd: - header = fd.read() - elif rst: - abort(404) - - # load log - with codecs.open(lfile, encoding='utf-8') as fd: - log = fd.read() - - return render_template('meetings/show.html', log=log, header=header, id=id) - -# Just return the raw .log for the meeting -@app.route('//meetings/.log') -def meetings_show_log(id): - return meetings_show(id, log=True) - -# Just return the raw .rst for the meeting -@app.route('//meetings/.rst') -def meetings_show_rst(id): - return meetings_show(id, rst=True) - -@app.route('//feed/meetings/atom') -def meetings_atom(): - feed = AtomFeed('I2P Meetings', feed_url=request.url, url=request.url_root) - items = get_meetings_feed_items(10) - for item in items: - feed.add(item['title'], - item['content'], - title_type='html', - content_type='html', - url=item['url'], - updated=item['updated']) - return feed.get_response() - - ################### # Download handlers diff --git a/i2p2www/blog/views.py b/i2p2www/blog/views.py index a61d6c36..4e893464 100644 --- a/i2p2www/blog/views.py +++ b/i2p2www/blog/views.py @@ -1,4 +1,4 @@ -from flask import request, abort, render_template +from flask import abort, render_template, request from werkzeug.contrib.atom import AtomFeed from i2p2www import BLOG_ENTRIES_PER_PAGE diff --git a/i2p2www/meetings/__init__.py b/i2p2www/meetings/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/i2p2www/meetings/helpers.py b/i2p2www/meetings/helpers.py new file mode 100644 index 00000000..204aff0a --- /dev/null +++ b/i2p2www/meetings/helpers.py @@ -0,0 +1,77 @@ +import codecs +import datetime +from docutils.core import publish_parts +from flask import abort, g, safe_join, url_for +import os +import os.path + +from i2p2www import MEETINGS_DIR + + +######################## +# Meeting helper methods + +def get_meetings_feed_items(num=0): + meetings = get_meetings(num) + items = [] + for meeting in meetings: + a = {} + a['title'] = meeting['parts']['title'] + a['content'] = meeting['parts']['fragment'] + a['url'] = url_for('meetings_show', lang=g.lang, id=meeting['id']) + a['updated'] = (meeting['date'] if meeting['date'] else datetime.datetime(0)) + items.append(a) + return items + +def get_meetings(num=0): + meetings_ids = get_meetings_ids(num) + meetings = [] + for id in meetings_ids: + parts = render_meeting_rst(id) + if parts: + try: + date = datetime.datetime.strptime(parts['title'], 'I2P dev meeting, %B %d, %Y @ %H:%M %Z') + except ValueError: + try: + date = datetime.datetime.strptime(parts['title'], 'I2P dev meeting, %B %d, %Y') + except ValueError: + date = None + a = {} + a['id'] = id + a['date'] = date + a['parts'] = parts + meetings.append(a) + return meetings + +def get_meetings_ids(num=0): + """ + Returns the latest #num valid meetings, or all meetings if num=0. + """ + # list of meetings + meetings=[] + # walk over all directories/files + for v in os.walk(MEETINGS_DIR): + # iterate over all files + for f in v[2]: + # ignore all non-.rst files + if not f.endswith('.rst'): + continue + meetings.append(int(f[:-4])) + meetings.sort() + meetings.reverse() + if (num > 0): + return meetings[:num] + return meetings + +def render_meeting_rst(id): + # check if that file actually exists + name = str(id) + '.rst' + path = safe_join(MEETINGS_DIR, name) + if not os.path.exists(path): + abort(404) + + # read file + with codecs.open(path, encoding='utf-8') as fd: + content = fd.read() + + return publish_parts(source=content, source_path=MEETINGS_DIR, writer_name="html") diff --git a/i2p2www/meetings/views.py b/i2p2www/meetings/views.py new file mode 100644 index 00000000..8c40bce8 --- /dev/null +++ b/i2p2www/meetings/views.py @@ -0,0 +1,84 @@ +import codecs +from flask import abort, render_template, request, safe_join +import os.path +from werkzeug.contrib.atom import AtomFeed + +from i2p2www import MEETINGS_DIR, MEETINGS_PER_PAGE +from i2p2www.helpers import Pagination, get_for_page +from i2p2www.meetings.helpers import get_meetings, get_meetings_feed_items + + +################## +# Meeting handlers + +# Meeting index +def meetings_index(page): + all_meetings = get_meetings() + meetings = get_for_page(all_meetings, page, MEETINGS_PER_PAGE) + if not meetings and page != 1: + abort(404) + pagination = Pagination(page, MEETINGS_PER_PAGE, len(all_meetings)) + return render_template('meetings/index.html', pagination=pagination, meetings=meetings) + +# Renderer for specific meetings +def meetings_show(id, log=False, rst=False): + """ + Render the meeting X. + Either display the raw IRC .log or render as html and include .rst as header if it exists + """ + # generate file name for the raw meeting file(and header) + lname = str(id) + '.log' + hname = str(id) + '.rst' + lfile = safe_join(MEETINGS_DIR, lname) + hfile = safe_join(MEETINGS_DIR, hname) + + # check if meeting file exists and throw error if it does not.. + if not os.path.exists(lfile): + abort(404) + + # if the user just wanted the .log + if log: + # hmm... maybe replace with something non-render_template like? + # return render_template('meetings/show_raw.html', log=log) + return send_from_directory(MEETINGS_DIR, lname, mimetype='text/plain') + + log='' + header=None + + # try to load header if that makes sense + if os.path.exists(hfile): + # if the user just wanted the .rst... + if rst: + return send_from_directory(MEETINGS_DIR, hname, mimetype='text/plain') + + # open the file as utf-8 file + with codecs.open(hfile, encoding='utf-8') as fd: + header = fd.read() + elif rst: + abort(404) + + # load log + with codecs.open(lfile, encoding='utf-8') as fd: + log = fd.read() + + return render_template('meetings/show.html', log=log, header=header, id=id) + +# Just return the raw .log for the meeting +def meetings_show_log(id): + return meetings_show(id, log=True) + +# Just return the raw .rst for the meeting +def meetings_show_rst(id): + return meetings_show(id, rst=True) + +def meetings_atom(): + feed = AtomFeed('I2P Meetings', feed_url=request.url, url=request.url_root) + items = get_meetings_feed_items(10) + for item in items: + feed.add(item['title'], + item['content'], + title_type='html', + content_type='html', + url=item['url'], + updated=item['updated']) + return feed.get_response() From 7dbf4a35bde25aaba1693be95ad06cef92b4d78f Mon Sep 17 00:00:00 2001 From: str4d Date: Wed, 19 Dec 2012 10:30:49 +0000 Subject: [PATCH 205/650] Split off legacy support code --- i2p2www/__init__.py | 40 +++++++++------------------------------- i2p2www/legacy.py | 24 ++++++++++++++++++++++++ 2 files changed, 33 insertions(+), 31 deletions(-) create mode 100644 i2p2www/legacy.py diff --git a/i2p2www/__init__.py b/i2p2www/__init__.py index fecf8534..c7920f78 100644 --- a/i2p2www/__init__.py +++ b/i2p2www/__init__.py @@ -57,6 +57,15 @@ url('//meetings/.log', 'meetings.views.meetings_show_log') url('//meetings/.rst', 'meetings.views.meetings_show_rst') url('//feed/meetings/atom', 'meetings.views.meetings_atom') +url('/meeting', 'legacy.legacy_meeting') +url('/meeting.html', 'legacy.legacy_meeting') +url('/status---', 'legacy.legacy_status') +url('/status---.html', 'legacy.legacy_status') +url('/_', 'legacy.legacy_show') +url('/_.html', 'legacy.legacy_show') +url('/', 'legacy.legacy_show') +url('/.html', 'legacy.legacy_show') + ################# # Babel selectors @@ -284,37 +293,6 @@ def hosts(): def robots(): return send_from_directory(STATIC_DIR, 'robots.txt', mimetype='text/plain') - -############## -# Legacy paths - -@app.route('/meeting') -@app.route('/meeting.html') -def legacy_meeting(id): - return redirect(url_for('meetings_show', id=id, lang='en')) - -@app.route('/status---') -@app.route('/status---.html') -def legacy_status(year, month, day): - return redirect(url_for('blog_entry', lang='en', slug=('%s/%s/%s/status' % (year, month, day)))) - -LEGACY_MAP={ - 'download': 'downloads_list' -} - -@app.route('/_') -@app.route('/_.html') -@app.route('/') -@app.route('/.html') -def legacy_show(f): - lang = 'en' - if hasattr(g, 'lang') and g.lang: - lang = g.lang - if f in LEGACY_MAP: - return redirect(url_for(LEGACY_MAP[f], lang=lang)) - else: - return redirect(url_for('site_show', lang=lang, page=f)) - @app.route('/favicon.ico') def favicon(): return send_from_directory(os.path.join(app.root_path, 'static'), diff --git a/i2p2www/legacy.py b/i2p2www/legacy.py new file mode 100644 index 00000000..0b6f2f0b --- /dev/null +++ b/i2p2www/legacy.py @@ -0,0 +1,24 @@ +from flask import g, redirect, url_for + + +############## +# Legacy paths + +LEGACY_MAP={ + 'download': 'downloads_list' +} + +def legacy_show(f): + lang = 'en' + if hasattr(g, 'lang') and g.lang: + lang = g.lang + if f in LEGACY_MAP: + return redirect(url_for(LEGACY_MAP[f], lang=lang)) + else: + return redirect(url_for('site_show', lang=lang, page=f)) + +def legacy_meeting(id): + return redirect(url_for('meetings_show', id=id, lang='en')) + +def legacy_status(year, month, day): + return redirect(url_for('blog_entry', lang='en', slug=('%s/%s/%s/status' % (year, month, day)))) From 85c2ca464c147d84c41deff194e05d6b42bc08c4 Mon Sep 17 00:00:00 2001 From: str4d Date: Wed, 19 Dec 2012 10:55:11 +0000 Subject: [PATCH 206/650] Added a few legacy pages (and distinguished them from pages that are now functions) --- i2p2www/legacy.py | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/i2p2www/legacy.py b/i2p2www/legacy.py index 0b6f2f0b..2068ae73 100644 --- a/i2p2www/legacy.py +++ b/i2p2www/legacy.py @@ -4,16 +4,24 @@ from flask import g, redirect, url_for ############## # Legacy paths -LEGACY_MAP={ +LEGACY_FUNCTIONS_MAP={ 'download': 'downloads_list' } +LEGACY_PAGES_MAP={ + 'bounties': 'volunteer/bounties', + 'getinvolved': 'volunteer', + 'faq': 'support/faq', +} + def legacy_show(f): lang = 'en' if hasattr(g, 'lang') and g.lang: lang = g.lang - if f in LEGACY_MAP: - return redirect(url_for(LEGACY_MAP[f], lang=lang)) + if f in LEGACY_FUNCTIONS_MAP: + return redirect(url_for(LEGACY_FUNCTIONS_MAP[f], lang=lang)) + elif f in LEGACY_PAGES_MAP: + return redirect(url_for('site_show', lang=lang, page=LEGACY_PAGES_MAP[f])) else: return redirect(url_for('site_show', lang=lang, page=f)) From 3da28685892ae18a353d859946cb8c54447e16d8 Mon Sep 17 00:00:00 2001 From: str4d Date: Wed, 19 Dec 2012 11:29:33 +0000 Subject: [PATCH 207/650] Added LangConverter so that /en/ can be distinguished from legacy urls like /faq This is required because "site/" was removed from the urls, but a little backend trickery is usually necessary to get the urls looking right ^_^ --- i2p2www/__init__.py | 52 ++++++++++++++++++++++++++++++--------------- 1 file changed, 35 insertions(+), 17 deletions(-) diff --git a/i2p2www/__init__.py b/i2p2www/__init__.py index c7920f78..43c5ae28 100644 --- a/i2p2www/__init__.py +++ b/i2p2www/__init__.py @@ -1,6 +1,7 @@ from jinja2 import Environment, FileSystemLoader, environmentfilter from flask import Flask, request, session, g, redirect, url_for, abort, render_template, flash, send_from_directory, safe_join from flaskext.babel import Babel +from werkzeug.routing import BaseConverter from docutils.core import publish_parts import os.path import os @@ -33,6 +34,23 @@ app.debug = bool(os.environ.get('APP_DEBUG', 'False')) babel = Babel(app) +####################### +# Custom URL converters + +class LangConverter(BaseConverter): + def __init__(self, url_map): + super(LangConverter, self).__init__(url_map) + self.regex = '(?:[a-z]{2})' + + def to_python(self, value): + return value + + def to_url(self, value): + return value + +app.url_map.converters['lang'] = LangConverter + + ###### # URLs @@ -41,28 +59,28 @@ def url(url_rule, import_name, **options): app.add_url_rule(url_rule, view_func=view, **options) url('/', 'views.main_index') -url('//', 'views.site_show', defaults={'page': 'index'}) -url('//', 'views.site_show') +url('//', 'views.site_show', defaults={'page': 'index'}) +url('//', 'views.site_show') -url('//blog/', 'blog.views.blog_index', defaults={'page': 1}) -url('//blog/page/', 'blog.views.blog_index') -url('//blog/entry/', 'blog.views.blog_entry') -url('//feed/blog/rss', 'blog.views.blog_rss') -url('//feed/blog/atom', 'blog.views.blog_atom') +url('//blog/', 'blog.views.blog_index', defaults={'page': 1}) +url('//blog/page/', 'blog.views.blog_index') +url('//blog/entry/', 'blog.views.blog_entry') +url('//feed/blog/rss', 'blog.views.blog_rss') +url('//feed/blog/atom', 'blog.views.blog_atom') -url('//meetings/', 'meetings.views.meetings_index', defaults={'page': 1}) -url('//meetings/page/', 'meetings.views.meetings_index') -url('//meetings/', 'meetings.views.meetings_show') -url('//meetings/.log', 'meetings.views.meetings_show_log') -url('//meetings/.rst', 'meetings.views.meetings_show_rst') -url('//feed/meetings/atom', 'meetings.views.meetings_atom') +url('//meetings/', 'meetings.views.meetings_index', defaults={'page': 1}) +url('//meetings/page/', 'meetings.views.meetings_index') +url('//meetings/', 'meetings.views.meetings_show') +url('//meetings/.log', 'meetings.views.meetings_show_log') +url('//meetings/.rst', 'meetings.views.meetings_show_rst') +url('//feed/meetings/atom', 'meetings.views.meetings_atom') url('/meeting', 'legacy.legacy_meeting') url('/meeting.html', 'legacy.legacy_meeting') url('/status---', 'legacy.legacy_status') url('/status---.html', 'legacy.legacy_status') -url('/_', 'legacy.legacy_show') -url('/_.html', 'legacy.legacy_show') +url('/_', 'legacy.legacy_show') +url('/_.html', 'legacy.legacy_show') url('/', 'legacy.legacy_show') url('/.html', 'legacy.legacy_show') @@ -241,13 +259,13 @@ def read_mirrors(): return ret # List of downloads -@app.route('//download') +@app.route('//download') def downloads_list(): # TODO: read mirror list or list of available files return render_template('downloads/list.html') # Specific file downloader -@app.route('//download/') +@app.route('//download/') def downloads_select(file): if (file == 'debian'): return render_template('downloads/debian.html') From 487e9ae9350779f155ef17e1bc714fa2e78d13aa Mon Sep 17 00:00:00 2001 From: str4d Date: Wed, 19 Dec 2012 11:37:11 +0000 Subject: [PATCH 208/650] Added / to the end of the base legacy url route This is required because Flask is forcing (via 301) / to be appended to the url which previously resulted in no rule matching legacy pages. We could disable strict_slashes to fix this, but it might cause issues elsewhere. --- i2p2www/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/i2p2www/__init__.py b/i2p2www/__init__.py index 43c5ae28..a6371c57 100644 --- a/i2p2www/__init__.py +++ b/i2p2www/__init__.py @@ -81,7 +81,7 @@ url('/status---', 'legacy.legacy_status') url('/status---.html', 'legacy.legacy_status') url('/_', 'legacy.legacy_show') url('/_.html', 'legacy.legacy_show') -url('/', 'legacy.legacy_show') +url('//', 'legacy.legacy_show') url('/.html', 'legacy.legacy_show') From 66dca619d702e2f0cd3a1ffa2669f91d93c1c1b8 Mon Sep 17 00:00:00 2001 From: str4d Date: Wed, 19 Dec 2012 11:43:40 +0000 Subject: [PATCH 209/650] Moved site_url macro into context processor so could use hasattr(g, 'lang') to fix a bug --- i2p2www/__init__.py | 11 +++++++++++ i2p2www/pages/global/layout.html | 2 +- i2p2www/pages/global/macros | 6 ------ 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/i2p2www/__init__.py b/i2p2www/__init__.py index a6371c57..35165ac8 100644 --- a/i2p2www/__init__.py +++ b/i2p2www/__init__.py @@ -178,6 +178,16 @@ def restructuredtext(value): @app.context_processor def utility_processor(): + # Shorthand for getting a site url + def get_site_url(path=None): + lang = 'en' + if hasattr(g, 'lang') and g.lang: + lang = g.lang + if path: + return url_for('site_show', lang=lang, page=path) + else: + return url_for('site_show', lang=lang) + # Provide the canonical link to the current page def get_canonical_link(): protocol = request.url.split('//')[0] @@ -220,6 +230,7 @@ def utility_processor(): return dict(i2pconv=convert_url_to_clearnet, url_for_other_page=url_for_other_page, change_theme=change_theme, + site_url=get_site_url, canonical=get_canonical_link) diff --git a/i2p2www/pages/global/layout.html b/i2p2www/pages/global/layout.html index 494d2566..b6d01ae6 100644 --- a/i2p2www/pages/global/layout.html +++ b/i2p2www/pages/global/layout.html @@ -1,4 +1,4 @@ -{%- from "global/macros" import site_url, change_lang, ver with context -%} +{%- from "global/macros" import change_lang, ver with context -%} diff --git a/i2p2www/pages/global/macros b/i2p2www/pages/global/macros index 52783c00..074b2b7b 100644 --- a/i2p2www/pages/global/macros +++ b/i2p2www/pages/global/macros @@ -1,9 +1,3 @@ -{%- macro site_url(path=None) -%} -{%- if path -%}{{ url_for('site_show', lang=g.lang, page=path) }} -{%- else -%}{{ url_for('site_show', lang=g.lang) }} -{%- endif -%} -{%- endmacro -%} - {%- macro change_lang(lang) -%} {%- if request.endpoint == 'site_show' -%}{{ url_for('site_show', lang=lang, page=page) }} {%- elif request.endpoint == 'blog_entry' -%}{{ url_for('blog_entry', lang=lang, slug=slug) }} From 91a70314e352e53aef35ea63993aec2525f7cc69 Mon Sep 17 00:00:00 2001 From: str4d Date: Wed, 19 Dec 2012 11:55:05 +0000 Subject: [PATCH 210/650] Added regionalization support to LangConverter --- i2p2www/__init__.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/i2p2www/__init__.py b/i2p2www/__init__.py index 35165ac8..34a805d7 100644 --- a/i2p2www/__init__.py +++ b/i2p2www/__init__.py @@ -40,12 +40,18 @@ babel = Babel(app) class LangConverter(BaseConverter): def __init__(self, url_map): super(LangConverter, self).__init__(url_map) - self.regex = '(?:[a-z]{2})' + self.regex = '(?:[a-z]{2})(-[a-z]{2})?' def to_python(self, value): + parts = value.split('-') + if len(parts) == 2: + return parts[0] + '_' + parts[1].upper() return value def to_url(self, value): + parts = value.split('_') + if len(parts) == 2: + return parts[0] + '-' + parts[1].lower() return value app.url_map.converters['lang'] = LangConverter From 2ce24d59d3a494f67665a2c591546cb1b2579e14 Mon Sep 17 00:00:00 2001 From: str4d Date: Wed, 19 Dec 2012 12:00:12 +0000 Subject: [PATCH 211/650] Removed unused imports --- i2p2www/__init__.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/i2p2www/__init__.py b/i2p2www/__init__.py index 34a805d7..beccae24 100644 --- a/i2p2www/__init__.py +++ b/i2p2www/__init__.py @@ -1,11 +1,9 @@ -from jinja2 import Environment, FileSystemLoader, environmentfilter -from flask import Flask, request, session, g, redirect, url_for, abort, render_template, flash, send_from_directory, safe_join +from flask import Flask, request, g, redirect, url_for, abort, render_template, send_from_directory, safe_join from flaskext.babel import Babel from werkzeug.routing import BaseConverter from docutils.core import publish_parts import os.path import os -import fileinput from random import randint try: import json From bc57b82753645d33da67fff94636a7314af1da19 Mon Sep 17 00:00:00 2001 From: str4d Date: Wed, 19 Dec 2012 12:13:51 +0000 Subject: [PATCH 212/650] Added shorthand functions to make language handling more stable --- i2p2www/__init__.py | 18 ++++++++++++++++++ i2p2www/pages/global/nav.html | 15 ++++++++------- 2 files changed, 26 insertions(+), 7 deletions(-) diff --git a/i2p2www/__init__.py b/i2p2www/__init__.py index beccae24..ba4d228b 100644 --- a/i2p2www/__init__.py +++ b/i2p2www/__init__.py @@ -192,6 +192,22 @@ def utility_processor(): else: return url_for('site_show', lang=lang) + # Shorthand for getting a language-specific url + def get_url_with_lang(endpoint, **args): + lang = 'en' + if hasattr(g, 'lang') and g.lang: + lang = g.lang + return url_for(endpoint, lang=lang, **args) + + # Get a specific language flag, or the flag for the current language + def get_flag(lang=None): + if not lang: + if hasattr(g, 'lang') and g.lang: + lang = g.lang + else: + lang = 'en' + return url_for('static', filename='images/flags/'+lang+'.png') + # Provide the canonical link to the current page def get_canonical_link(): protocol = request.url.split('//')[0] @@ -235,6 +251,8 @@ def utility_processor(): url_for_other_page=url_for_other_page, change_theme=change_theme, site_url=get_site_url, + get_url=get_url_with_lang, + get_flag=get_flag, canonical=get_canonical_link) diff --git a/i2p2www/pages/global/nav.html b/i2p2www/pages/global/nav.html index 31b58380..eea2bed0 100644 --- a/i2p2www/pages/global/nav.html +++ b/i2p2www/pages/global/nav.html @@ -2,11 +2,11 @@
    6. {{ _('Team') }}
    7. +
    8. {{ _('Blog') }}
    9. {{ _('Hall of Fame') }}
    10. {{ _('Papers and presentations') }}
    11. {{ _('Contact us') }}
    12. @@ -125,12 +126,12 @@
    13. {{ _('Bounties') }}
    14. -
    15. {{ _('Meetings') }}
    16. +
    17. {{ _('Meetings') }}
    18. {{ _('Roadmap') }}
    19. {{ _('Task list') }}
    20. -
    21. {{ _('Language') }} +
    22. {{ _('Language') }} {% include "global/lang.html" %}
    23. From 30876c09f31760f1b2953fce843eeb15a4e3ef23 Mon Sep 17 00:00:00 2001 From: str4d Date: Wed, 19 Dec 2012 12:18:14 +0000 Subject: [PATCH 213/650] Use the new get_flag() template function in the Language menu --- i2p2www/pages/global/lang.html | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/i2p2www/pages/global/lang.html b/i2p2www/pages/global/lang.html index dab824fe..5aded9cc 100644 --- a/i2p2www/pages/global/lang.html +++ b/i2p2www/pages/global/lang.html @@ -1,14 +1,14 @@
        -
      • English
      • -
      • Castellano
      • -
      • Chinese
      • -
      • Deutsch
      • -
      • Français
      • -
      • Italiano
      • -
      • Nederlands
      • -
      • Russian
      • -
      • Svenska
      • -
      • Czech
      • -
      • Arabic
      • -
      • Greek
      • +
      • English
      • +
      • Castellano
      • +
      • Chinese
      • +
      • Deutsch
      • +
      • Français
      • +
      • Italiano
      • +
      • Nederlands
      • +
      • Russian
      • +
      • Svenska
      • +
      • Czech
      • +
      • Arabic
      • +
      • Greek
      From c7b8d77da0c1a9a863b0ccda96386acff68e1a78 Mon Sep 17 00:00:00 2001 From: str4d Date: Wed, 19 Dec 2012 12:25:19 +0000 Subject: [PATCH 214/650] Made change_theme() more stable (so 404 pages render properly) --- i2p2www/__init__.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/i2p2www/__init__.py b/i2p2www/__init__.py index ba4d228b..bda0cc09 100644 --- a/i2p2www/__init__.py +++ b/i2p2www/__init__.py @@ -243,9 +243,14 @@ def utility_processor(): # Change the theme of the current page def change_theme(theme): - args = request.view_args.copy() + args = {} + if request.view_args: + args = request.view_args.copy() args['theme'] = theme - return url_for(request.endpoint, **args) + if request.endpoint: + return url_for(request.endpoint, **args) + # Probably a 404 error page + return url_for('main_index', **args) return dict(i2pconv=convert_url_to_clearnet, url_for_other_page=url_for_other_page, From 7701835ece85b05d828503883707b65a102060d1 Mon Sep 17 00:00:00 2001 From: str4d Date: Wed, 19 Dec 2012 12:39:53 +0000 Subject: [PATCH 215/650] Moved root file views into i2p2www.views, and committed this file (which was missed earlier) --- i2p2www/__init__.py | 21 ++++--------------- i2p2www/views.py | 50 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 54 insertions(+), 17 deletions(-) create mode 100644 i2p2www/views.py diff --git a/i2p2www/__init__.py b/i2p2www/__init__.py index bda0cc09..20477fb6 100644 --- a/i2p2www/__init__.py +++ b/i2p2www/__init__.py @@ -88,6 +88,10 @@ url('/_.html', 'legacy.legacy_show') url('//', 'legacy.legacy_show') url('/.html', 'legacy.legacy_show') +url('/hosts.txt', 'views.hosts') +url('/robots.txt', 'views.robots') +url('/favicon.ico', 'views.favicon') + ################# # Babel selectors @@ -337,22 +341,5 @@ def downloads_redirect(protocol, file, mirror): return redirect(mirrors[mirror]['url'] % data) return redirect(mirrors[randint(0, len(mirrors) - 1)]['url'] % data) - -############ -# Root files - -@app.route('/hosts.txt') -def hosts(): - return send_from_directory(STATIC_DIR, 'hosts.txt', mimetype='text/plain') - -@app.route('/robots.txt') -def robots(): - return send_from_directory(STATIC_DIR, 'robots.txt', mimetype='text/plain') - -@app.route('/favicon.ico') -def favicon(): - return send_from_directory(os.path.join(app.root_path, 'static'), - 'favicon.ico', mimetype='image/vnd.microsoft.icon') - if __name__ == '__main__': app.run(debug=True) diff --git a/i2p2www/views.py b/i2p2www/views.py new file mode 100644 index 00000000..dc94ae5d --- /dev/null +++ b/i2p2www/views.py @@ -0,0 +1,50 @@ +from flask import abort, redirect, render_template, safe_join, send_from_directory, url_for +import os.path + +from i2p2www import STATIC_DIR, TEMPLATE_DIR +from i2p2www.blog.helpers import get_blog_entries + + +####################### +# General page handlers + +# Index - redirects to en homepage +def main_index(): + return redirect(url_for('site_show', lang='en')) + +# Site pages +def site_show(page): + if page.endswith('.html'): + return redirect(url_for('site_show', page=page[:-5])) + name = 'site/%s.html' % page + page_file = safe_join(TEMPLATE_DIR, name) + + if not os.path.exists(page_file): + # Could be a directory, so try index.html + name = 'site/%s/index.html' % page + page_file = safe_join(TEMPLATE_DIR, name) + if not os.path.exists(page_file): + # bah! those damn users all the time! + abort(404) + + options = { + 'page': page, + } + if (page == 'index'): + options['blog_entries'] = get_blog_entries(8) + + # hah! + return render_template(name, **options) + + +############ +# Root files + +def hosts(): + return send_from_directory(STATIC_DIR, 'hosts.txt', mimetype='text/plain') + +def robots(): + return send_from_directory(STATIC_DIR, 'robots.txt', mimetype='text/plain') + +def favicon(): + return send_from_directory(STATIC_DIR, 'favicon.ico', mimetype='image/vnd.microsoft.icon') From 53d9e4030303617a24ff812e79f2b5d7d3b9d0f7 Mon Sep 17 00:00:00 2001 From: str4d Date: Wed, 19 Dec 2012 12:52:05 +0000 Subject: [PATCH 216/650] Split off downloads code --- i2p2www/__init__.py | 75 +++----------------------------------------- i2p2www/downloads.py | 69 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 74 insertions(+), 70 deletions(-) create mode 100644 i2p2www/downloads.py diff --git a/i2p2www/__init__.py b/i2p2www/__init__.py index 20477fb6..72775575 100644 --- a/i2p2www/__init__.py +++ b/i2p2www/__init__.py @@ -4,11 +4,6 @@ from werkzeug.routing import BaseConverter from docutils.core import publish_parts import os.path import os -from random import randint -try: - import json -except ImportError: - import simplejson as json from helpers import LazyView, Pagination @@ -79,6 +74,11 @@ url('//meetings/.log', 'meetings.views.meetings_show_log') url('//meetings/.rst', 'meetings.views.meetings_show_rst') url('//feed/meetings/atom', 'meetings.views.meetings_atom') +url('//download', 'downloads.downloads_list') +url('//download/', 'downloads.downloads_select') +url('/download//any/', 'downloads.downloads_redirect', defaults={'mirror': None}) +url('/download///', 'downloads.downloads_redirect') + url('/meeting', 'legacy.legacy_meeting') url('/meeting.html', 'legacy.legacy_meeting') url('/status---', 'legacy.legacy_status') @@ -276,70 +276,5 @@ def page_not_found(error): def server_error(error): return render_template('global/error_500.html'), 500 - -################### -# Download handlers - -# Read in mirrors from file -def read_mirrors(): - file = open(MIRRORS_FILE, 'r') - dat = file.read() - file.close() - lines=dat.split('\n') - ret={} - for line in lines: - try: - obj=json.loads(line) - except ValueError: - continue - if 'protocol' not in obj: - continue - protocol=obj['protocol'] - if protocol not in ret: - ret[protocol]=[] - ret[protocol].append(obj) - return ret - -# List of downloads -@app.route('//download') -def downloads_list(): - # TODO: read mirror list or list of available files - return render_template('downloads/list.html') - -# Specific file downloader -@app.route('//download/') -def downloads_select(file): - if (file == 'debian'): - return render_template('downloads/debian.html') - mirrors=read_mirrors() - data = { - 'version': CURRENT_I2P_VERSION, - 'file': file, - } - obj=[] - for protocol in mirrors.keys(): - a={} - a['name']=protocol - a['mirrors']=mirrors[protocol] - for mirror in a['mirrors']: - mirror['url']=mirror['url'] % data - obj.append(a) - return render_template('downloads/select.html', mirrors=obj, file=file) - -@app.route('/download//any/', defaults={'mirror': None}) -@app.route('/download///') -def downloads_redirect(protocol, file, mirror): - mirrors=read_mirrors() - if not protocol in mirrors: - abort(404) - mirrors=mirrors[protocol] - data = { - 'version': CURRENT_I2P_VERSION, - 'file': file, - } - if mirror: - return redirect(mirrors[mirror]['url'] % data) - return redirect(mirrors[randint(0, len(mirrors) - 1)]['url'] % data) - if __name__ == '__main__': app.run(debug=True) diff --git a/i2p2www/downloads.py b/i2p2www/downloads.py new file mode 100644 index 00000000..a9b32592 --- /dev/null +++ b/i2p2www/downloads.py @@ -0,0 +1,69 @@ +from flask import redirect, render_template +try: + import json +except ImportError: + import simplejson as json +from random import randint + +from i2p2www import CURRENT_I2P_VERSION, MIRRORS_FILE + + +################### +# Download handlers + +# Read in mirrors from file +def read_mirrors(): + file = open(MIRRORS_FILE, 'r') + dat = file.read() + file.close() + lines=dat.split('\n') + ret={} + for line in lines: + try: + obj=json.loads(line) + except ValueError: + continue + if 'protocol' not in obj: + continue + protocol=obj['protocol'] + if protocol not in ret: + ret[protocol]=[] + ret[protocol].append(obj) + return ret + +# List of downloads +def downloads_list(): + # TODO: read mirror list or list of available files + return render_template('downloads/list.html') + +# Specific file downloader +def downloads_select(file): + if (file == 'debian'): + return render_template('downloads/debian.html') + mirrors=read_mirrors() + data = { + 'version': CURRENT_I2P_VERSION, + 'file': file, + } + obj=[] + for protocol in mirrors.keys(): + a={} + a['name']=protocol + a['mirrors']=mirrors[protocol] + for mirror in a['mirrors']: + mirror['url']=mirror['url'] % data + obj.append(a) + return render_template('downloads/select.html', mirrors=obj, file=file) + +def downloads_redirect(protocol, file, mirror): + mirrors=read_mirrors() + if not protocol in mirrors: + abort(404) + mirrors=mirrors[protocol] + data = { + 'version': CURRENT_I2P_VERSION, + 'file': file, + } + if mirror: + return redirect(mirrors[mirror]['url'] % data) + return redirect(mirrors[randint(0, len(mirrors) - 1)]['url'] % data) From 9def101b3229fc11d2030ddb8ad432b0a11f7137 Mon Sep 17 00:00:00 2001 From: str4d Date: Wed, 19 Dec 2012 13:02:16 +0000 Subject: [PATCH 217/650] Split of template functions into a separate file --- i2p2www/__init__.py | 88 ++--------------------------------------- i2p2www/templatevars.py | 88 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 92 insertions(+), 84 deletions(-) create mode 100644 i2p2www/templatevars.py diff --git a/i2p2www/__init__.py b/i2p2www/__init__.py index 72775575..1f2d07f3 100644 --- a/i2p2www/__init__.py +++ b/i2p2www/__init__.py @@ -181,90 +181,6 @@ def restructuredtext(value): return parts['html_body'] -#################### -# Context processors - -@app.context_processor -def utility_processor(): - # Shorthand for getting a site url - def get_site_url(path=None): - lang = 'en' - if hasattr(g, 'lang') and g.lang: - lang = g.lang - if path: - return url_for('site_show', lang=lang, page=path) - else: - return url_for('site_show', lang=lang) - - # Shorthand for getting a language-specific url - def get_url_with_lang(endpoint, **args): - lang = 'en' - if hasattr(g, 'lang') and g.lang: - lang = g.lang - return url_for(endpoint, lang=lang, **args) - - # Get a specific language flag, or the flag for the current language - def get_flag(lang=None): - if not lang: - if hasattr(g, 'lang') and g.lang: - lang = g.lang - else: - lang = 'en' - return url_for('static', filename='images/flags/'+lang+'.png') - - # Provide the canonical link to the current page - def get_canonical_link(): - protocol = request.url.split('//')[0] - return protocol + '//' + CANONICAL_DOMAIN + request.path - - # Convert an I2P url to an equivalent clearnet one - i2ptoclear = { - 'www.i2p2.i2p': 'www.i2p2.de', - #'forum.i2p': 'forum.i2p2.de', - 'trac.i2p2.i2p': 'trac.i2p2.de', - 'mail.i2p': 'i2pmail.org', - } - def convert_url_to_clearnet(value): - if not value.endswith('.i2p'): - # The url being passed in isn't an I2P url, so just return it - return value - if request.headers.get('X-I2P-Desthash') and not request.headers.get('X-Forwarded-Server'): - # The request is from within I2P, so use I2P url - return value - # The request is either directly from clearnet or through an inproxy - try: - # Return the known clearnet url corresponding to the I2P url - return i2ptoclear[value] - except KeyError: - # The I2P site has no known clearnet address, so use an inproxy - return value + '.to' - - # Convert a paginated URL to that of another page - def url_for_other_page(page): - args = request.view_args.copy() - args['page'] = page - return url_for(request.endpoint, **args) - - # Change the theme of the current page - def change_theme(theme): - args = {} - if request.view_args: - args = request.view_args.copy() - args['theme'] = theme - if request.endpoint: - return url_for(request.endpoint, **args) - # Probably a 404 error page - return url_for('main_index', **args) - - return dict(i2pconv=convert_url_to_clearnet, - url_for_other_page=url_for_other_page, - change_theme=change_theme, - site_url=get_site_url, - get_url=get_url_with_lang, - get_flag=get_flag, - canonical=get_canonical_link) - - ################ # Error handlers @@ -276,5 +192,9 @@ def page_not_found(error): def server_error(error): return render_template('global/error_500.html'), 500 + +# Import these to ensure they get loaded +import templatevars + if __name__ == '__main__': app.run(debug=True) diff --git a/i2p2www/templatevars.py b/i2p2www/templatevars.py new file mode 100644 index 00000000..3790f505 --- /dev/null +++ b/i2p2www/templatevars.py @@ -0,0 +1,88 @@ +from flask import g, request, url_for + +from i2p2www import CANONICAL_DOMAIN, app + +I2P_TO_CLEAR = { + 'www.i2p2.i2p': 'www.i2p2.de', + #'forum.i2p': 'forum.i2p2.de', + 'trac.i2p2.i2p': 'trac.i2p2.de', + 'mail.i2p': 'i2pmail.org', + } + + +#################### +# Template functions + +@app.context_processor +def utility_processor(): + # Shorthand for getting a site url + def get_site_url(path=None): + lang = 'en' + if hasattr(g, 'lang') and g.lang: + lang = g.lang + if path: + return url_for('site_show', lang=lang, page=path) + else: + return url_for('site_show', lang=lang) + + # Shorthand for getting a language-specific url + def get_url_with_lang(endpoint, **args): + lang = 'en' + if hasattr(g, 'lang') and g.lang: + lang = g.lang + return url_for(endpoint, lang=lang, **args) + + # Get a specific language flag, or the flag for the current language + def get_flag(lang=None): + if not lang: + if hasattr(g, 'lang') and g.lang: + lang = g.lang + else: + lang = 'en' + return url_for('static', filename='images/flags/'+lang+'.png') + + # Provide the canonical link to the current page + def get_canonical_link(): + protocol = request.url.split('//')[0] + return protocol + '//' + CANONICAL_DOMAIN + request.path + + # Convert an I2P url to an equivalent clearnet one + def convert_url_to_clearnet(value): + if not value.endswith('.i2p'): + # The url being passed in isn't an I2P url, so just return it + return value + if request.headers.get('X-I2P-Desthash') and not request.headers.get('X-Forwarded-Server'): + # The request is from within I2P, so use I2P url + return value + # The request is either directly from clearnet or through an inproxy + try: + # Return the known clearnet url corresponding to the I2P url + return I2P_TO_CLEAR[value] + except KeyError: + # The I2P site has no known clearnet address, so use an inproxy + return value + '.to' + + # Convert a paginated URL to that of another page + def url_for_other_page(page): + args = request.view_args.copy() + args['page'] = page + return url_for(request.endpoint, **args) + + # Change the theme of the current page + def change_theme(theme): + args = {} + if request.view_args: + args = request.view_args.copy() + args['theme'] = theme + if request.endpoint: + return url_for(request.endpoint, **args) + # Probably a 404 error page + return url_for('main_index', **args) + + return dict(i2pconv=convert_url_to_clearnet, + url_for_other_page=url_for_other_page, + change_theme=change_theme, + site_url=get_site_url, + get_url=get_url_with_lang, + get_flag=get_flag, + canonical=get_canonical_link) From 0312088547528afb113811d8e8acd3f77e1f722b Mon Sep 17 00:00:00 2001 From: str4d Date: Wed, 19 Dec 2012 20:53:18 +0000 Subject: [PATCH 218/650] Removed rel="nofollow" from the footer links to the t-shirt sites (they aren't mirrors) --- i2p2www/pages/global/footer.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/i2p2www/pages/global/footer.html b/i2p2www/pages/global/footer.html index 9edbab19..ec7df978 100644 --- a/i2p2www/pages/global/footer.html +++ b/i2p2www/pages/global/footer.html @@ -33,8 +33,8 @@
      From d633b4a704844b30570176206532be7787a2c37d Mon Sep 17 00:00:00 2001 From: str4d Date: Wed, 19 Dec 2012 21:30:06 +0000 Subject: [PATCH 219/650] Split off urls --- i2p2www/__init__.py | 70 +-------------------------------------------- i2p2www/urls.py | 70 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 71 insertions(+), 69 deletions(-) create mode 100644 i2p2www/urls.py diff --git a/i2p2www/__init__.py b/i2p2www/__init__.py index 1f2d07f3..1bb725c2 100644 --- a/i2p2www/__init__.py +++ b/i2p2www/__init__.py @@ -1,12 +1,9 @@ from flask import Flask, request, g, redirect, url_for, abort, render_template, send_from_directory, safe_join from flaskext.babel import Babel -from werkzeug.routing import BaseConverter from docutils.core import publish_parts import os.path import os -from helpers import LazyView, Pagination - CURRENT_I2P_VERSION = '0.9.4' CANONICAL_DOMAIN = 'www.i2p2.de' @@ -27,72 +24,6 @@ app.debug = bool(os.environ.get('APP_DEBUG', 'False')) babel = Babel(app) -####################### -# Custom URL converters - -class LangConverter(BaseConverter): - def __init__(self, url_map): - super(LangConverter, self).__init__(url_map) - self.regex = '(?:[a-z]{2})(-[a-z]{2})?' - - def to_python(self, value): - parts = value.split('-') - if len(parts) == 2: - return parts[0] + '_' + parts[1].upper() - return value - - def to_url(self, value): - parts = value.split('_') - if len(parts) == 2: - return parts[0] + '-' + parts[1].lower() - return value - -app.url_map.converters['lang'] = LangConverter - - -###### -# URLs - -def url(url_rule, import_name, **options): - view = LazyView('i2p2www.' + import_name) - app.add_url_rule(url_rule, view_func=view, **options) - -url('/', 'views.main_index') -url('//', 'views.site_show', defaults={'page': 'index'}) -url('//', 'views.site_show') - -url('//blog/', 'blog.views.blog_index', defaults={'page': 1}) -url('//blog/page/', 'blog.views.blog_index') -url('//blog/entry/', 'blog.views.blog_entry') -url('//feed/blog/rss', 'blog.views.blog_rss') -url('//feed/blog/atom', 'blog.views.blog_atom') - -url('//meetings/', 'meetings.views.meetings_index', defaults={'page': 1}) -url('//meetings/page/', 'meetings.views.meetings_index') -url('//meetings/', 'meetings.views.meetings_show') -url('//meetings/.log', 'meetings.views.meetings_show_log') -url('//meetings/.rst', 'meetings.views.meetings_show_rst') -url('//feed/meetings/atom', 'meetings.views.meetings_atom') - -url('//download', 'downloads.downloads_list') -url('//download/', 'downloads.downloads_select') -url('/download//any/', 'downloads.downloads_redirect', defaults={'mirror': None}) -url('/download///', 'downloads.downloads_redirect') - -url('/meeting', 'legacy.legacy_meeting') -url('/meeting.html', 'legacy.legacy_meeting') -url('/status---', 'legacy.legacy_status') -url('/status---.html', 'legacy.legacy_status') -url('/_', 'legacy.legacy_show') -url('/_.html', 'legacy.legacy_show') -url('//', 'legacy.legacy_show') -url('/.html', 'legacy.legacy_show') - -url('/hosts.txt', 'views.hosts') -url('/robots.txt', 'views.robots') -url('/favicon.ico', 'views.favicon') - - ################# # Babel selectors @@ -195,6 +126,7 @@ def server_error(error): # Import these to ensure they get loaded import templatevars +import urls if __name__ == '__main__': app.run(debug=True) diff --git a/i2p2www/urls.py b/i2p2www/urls.py new file mode 100644 index 00000000..84ed409d --- /dev/null +++ b/i2p2www/urls.py @@ -0,0 +1,70 @@ +from werkzeug.routing import BaseConverter + +from i2p2www import app +from i2p2www.helpers import LazyView + + +####################### +# Custom URL converters + +class LangConverter(BaseConverter): + def __init__(self, url_map): + super(LangConverter, self).__init__(url_map) + self.regex = '(?:[a-z]{2})(-[a-z]{2})?' + + def to_python(self, value): + parts = value.split('-') + if len(parts) == 2: + return parts[0] + '_' + parts[1].upper() + return value + + def to_url(self, value): + parts = value.split('_') + if len(parts) == 2: + return parts[0] + '-' + parts[1].lower() + return value + +app.url_map.converters['lang'] = LangConverter + + +###### +# URLs + +def url(url_rule, import_name, **options): + view = LazyView('i2p2www.' + import_name) + app.add_url_rule(url_rule, view_func=view, **options) + +url('/', 'views.main_index') +url('//', 'views.site_show', defaults={'page': 'index'}) +url('//', 'views.site_show') + +url('//blog/', 'blog.views.blog_index', defaults={'page': 1}) +url('//blog/page/', 'blog.views.blog_index') +url('//blog/entry/', 'blog.views.blog_entry') +url('//feed/blog/rss', 'blog.views.blog_rss') +url('//feed/blog/atom', 'blog.views.blog_atom') + +url('//meetings/', 'meetings.views.meetings_index', defaults={'page': 1}) +url('//meetings/page/', 'meetings.views.meetings_index') +url('//meetings/', 'meetings.views.meetings_show') +url('//meetings/.log', 'meetings.views.meetings_show_log') +url('//meetings/.rst', 'meetings.views.meetings_show_rst') +url('//feed/meetings/atom', 'meetings.views.meetings_atom') + +url('//download', 'downloads.downloads_list') +url('//download/', 'downloads.downloads_select') +url('/download//any/', 'downloads.downloads_redirect', defaults={'mirror': None}) +url('/download///', 'downloads.downloads_redirect') + +url('/meeting', 'legacy.legacy_meeting') +url('/meeting.html', 'legacy.legacy_meeting') +url('/status---', 'legacy.legacy_status') +url('/status---.html', 'legacy.legacy_status') +url('/_', 'legacy.legacy_show') +url('/_.html', 'legacy.legacy_show') +url('//', 'legacy.legacy_show') +url('/.html', 'legacy.legacy_show') + +url('/hosts.txt', 'views.hosts') +url('/robots.txt', 'views.robots') +url('/favicon.ico', 'views.favicon') From d7bce012883eb6dc7626a7a6e97bf101eefddda8 Mon Sep 17 00:00:00 2001 From: str4d Date: Wed, 19 Dec 2012 21:32:10 +0000 Subject: [PATCH 220/650] Removed unnecessary block at end of __init__.py --- i2p2www/__init__.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/i2p2www/__init__.py b/i2p2www/__init__.py index 1bb725c2..a9c4093a 100644 --- a/i2p2www/__init__.py +++ b/i2p2www/__init__.py @@ -127,6 +127,3 @@ def server_error(error): # Import these to ensure they get loaded import templatevars import urls - -if __name__ == '__main__': - app.run(debug=True) From f1a1d63e2aaddc6137b13453f20187242cea197c Mon Sep 17 00:00:00 2001 From: str4d Date: Thu, 20 Dec 2012 01:41:26 +0000 Subject: [PATCH 221/650] Changes to the menubar CSS to bring it as close to duck's original theme as possible --- i2p2www/static/styles/duck.css | 59 ++++++++++++++++++++++------------ 1 file changed, 38 insertions(+), 21 deletions(-) diff --git a/i2p2www/static/styles/duck.css b/i2p2www/static/styles/duck.css index 8d36404a..0905664d 100644 --- a/i2p2www/static/styles/duck.css +++ b/i2p2www/static/styles/duck.css @@ -12,7 +12,7 @@ a {color:#d00e0e; text-decoration:none;} div.hide {display:none;} -div#branding {width:80%; margin:1em auto; position:relative;} +div#branding {width:80%; /*margin:1em auto;*/ margin: 1em auto 0; position:relative;} div#branding #logo img:hover { filter:alpha(opacity=60); -moz-opacity: 0.6; @@ -39,16 +39,17 @@ menu ul, position: relative; } #cssmenu { - height: 49px; - background: #141414; + /*height: 49px;*/ + height: 40px; + /*background: #141414; background: -moz-linear-gradient(top, #32323a 0%, #141414 100%); background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #32323a), color-stop(100%, #141414)); background: -webkit-linear-gradient(top, #32323a 0%, #141414 100%); background: -o-linear-gradient(top, #32323a 0%, #141414 100%); background: -ms-linear-gradient(top, #32323a 0%, #141414 100%); - background: linear-gradient(to bottom, #32323a 0%, #141414 100%); + background: linear-gradient(to bottom, #32323a 0%, #141414 100%);*/ filter: progid:DXImageTransform.Microsoft.Gradient(StartColorStr='#32323a', EndColorStr='#141414', GradientType=0); - border-bottom: 2px solid #0fa1e0; + /*border-bottom: 2px solid #0fa1e0;*/ } #cssmenu:after, #cssmenu ul:after { @@ -57,22 +58,26 @@ menu ul, clear: both; } #cssmenu a { - background: #141414; + /*background: #141414; background: -moz-linear-gradient(top, #32323a 0%, #141414 100%); background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #32323a), color-stop(100%, #141414)); background: -webkit-linear-gradient(top, #32323a 0%, #141414 100%); background: -o-linear-gradient(top, #32323a 0%, #141414 100%); background: -ms-linear-gradient(top, #32323a 0%, #141414 100%); - background: linear-gradient(to bottom, #32323a 0%, #141414 100%); + background: linear-gradient(to bottom, #32323a 0%, #141414 100%);*/ filter: progid:DXImageTransform.Microsoft.Gradient(StartColorStr='#32323a', EndColorStr='#141414', GradientType=0); - color: #ffffff; + /*color: #ffffff;*/ + color: #d00e0e; display: inline-block; font-family: "URW Gothic L", "Century Gothic", sans-serif; - font-size: 11pt; + /*font-size: 11pt;*/ + font-size: 2em; font-weight: bold; text-shadow: 1px 1px 1px rgba(100,20,20,.2); - line-height: 49px; - padding: 0 20px; + /*line-height: 49px;*/ + line-height: 40px; + /*padding: 0 20px;*/ + padding: 0 10px; text-decoration: none; } #cssmenu ul { @@ -99,10 +104,11 @@ menu ul, bottom: 0; border-left: 10px solid transparent; border-right: 10px solid transparent; - border-bottom: 10px solid #0fa1e0; + /*border-bottom: 10px solid #0fa1e0;*/ + border-bottom: 10px solid #abcc71; margin-left: -10px; } -#cssmenu > ul > li:first-child > a { +/*#cssmenu > ul > li:first-child > a { border-radius: 5px 0 0 0; -moz-border-radius: 5px 0 0 0; -webkit-border-radius: 5px 0 0 0; @@ -111,6 +117,11 @@ menu ul, border-radius: 0 5px 0 0; -moz-border-radius: 0 5px 0 0; -webkit-border-radius: 0 5px 0 0; +}*/ +#cssmenu > ul > li > a { + border-radius: 5px 5px 0 0; + -moz-border-radius: 5px 5px 0 0; + -webkit-border-radius: 5px 5px 0 0; } #cssmenu > ul > li.active > a { box-shadow: inset 0 0 3px #000000; @@ -126,13 +137,13 @@ menu ul, filter: progid:DXImageTransform.Microsoft.Gradient(StartColorStr='#26262c', EndColorStr='#070707', GradientType=0); } #cssmenu > ul > li:hover > a { - background: #070707; + /*background: #070707; background: -moz-linear-gradient(top, #26262c 0%, #070707 100%); background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #26262c), color-stop(100%, #070707)); background: -webkit-linear-gradient(top, #26262c 0%, #070707 100%); background: -o-linear-gradient(top, #26262c 0%, #070707 100%); background: -ms-linear-gradient(top, #26262c 0%, #070707 100%); - background: linear-gradient(to bottom, #26262c 0%, #070707 100%); + background: linear-gradient(to bottom, #26262c 0%, #070707 100%);*/ filter: progid:DXImageTransform.Microsoft.Gradient(StartColorStr='#26262c', EndColorStr='#070707', GradientType=0); box-shadow: inset 0 0 3px #000000; -moz-box-shadow: inset 0 0 3px #000000; @@ -155,8 +166,10 @@ menu ul, *margin-bottom: -1px; } #cssmenu .has-sub ul li a { - background: #0fa1e0; - border-bottom: 1px dotted #6fc7ec; + /*background: #0fa1e0;*/ + /*border-bottom: 1px dotted #6fc7ec;*/ + background: #abcc71; + border-bottom: 1px dotted #ffffcc; filter: none; font-size: 9pt; display: block; @@ -164,7 +177,8 @@ menu ul, padding: 10px; } #cssmenu .has-sub ul li:hover a { - background: #0c7fb0; + /*background: #0c7fb0;*/ + background: #8bac51; } #cssmenu .has-sub .has-sub:hover > ul { display: block; @@ -176,11 +190,14 @@ menu ul, top: 0; } #cssmenu .has-sub .has-sub ul li a { - background: #0c7fb0; - border-bottom: 1px dotted #6db2d0; + /*background: #0c7fb0; + border-bottom: 1px dotted #6db2d0;*/ + background: #8bac51; + border-bottom: 1px dotted #ffffcc; } #cssmenu .has-sub .has-sub ul li a:hover { - background: #095c80; + /*background: #095c80;*/ + background: #6bac31; } /* End of dropdown menu CSS */ From d99220f113bd50869cfbc2df4d1a21054f4998c2 Mon Sep 17 00:00:00 2001 From: str4d Date: Thu, 20 Dec 2012 01:42:23 +0000 Subject: [PATCH 222/650] Added side borders to .inner and rounded the top corners --- i2p2www/static/styles/duck.css | 1 + 1 file changed, 1 insertion(+) diff --git a/i2p2www/static/styles/duck.css b/i2p2www/static/styles/duck.css index 0905664d..5ebe585e 100644 --- a/i2p2www/static/styles/duck.css +++ b/i2p2www/static/styles/duck.css @@ -257,6 +257,7 @@ div#content .main { div#content .inner { width:auto; margin: 0 5%; padding: 4em 5%; position:relative; background: rgba(171, 204, 113, 0.6); border-top:2px solid #abcc71; + border-left: 2px solid #abcc71; border-right: 2px solid #abcc71; border-radius: 5px 5px 0 0; color:black; font-size:1.2em; line-height:1.4em; } div#content .inner h1, div#content .inner h2, div#content .inner h3 {color:white; text-shadow:1px 1px 1px rgba(0,0,0,.3); margin:1em 0 .5em; border-bottom:1px solid white; padding-bottom:.2em;} From cc292624d22586d8ac46f1a3cb397e28fe7121b7 Mon Sep 17 00:00:00 2001 From: str4d Date: Thu, 20 Dec 2012 02:07:24 +0000 Subject: [PATCH 223/650] Tweak the color of the second- and third-level menus --- i2p2www/static/styles/duck.css | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/i2p2www/static/styles/duck.css b/i2p2www/static/styles/duck.css index 5ebe585e..1230a230 100644 --- a/i2p2www/static/styles/duck.css +++ b/i2p2www/static/styles/duck.css @@ -178,7 +178,7 @@ menu ul, } #cssmenu .has-sub ul li:hover a { /*background: #0c7fb0;*/ - background: #8bac51; + background: #8bbc51; } #cssmenu .has-sub .has-sub:hover > ul { display: block; @@ -192,7 +192,7 @@ menu ul, #cssmenu .has-sub .has-sub ul li a { /*background: #0c7fb0; border-bottom: 1px dotted #6db2d0;*/ - background: #8bac51; + background: #8bbc51; border-bottom: 1px dotted #ffffcc; } #cssmenu .has-sub .has-sub ul li a:hover { From e6e11fa905287867b6a4d87c8d80368ee91bbc89 Mon Sep 17 00:00:00 2001 From: str4d Date: Thu, 20 Dec 2012 02:08:53 +0000 Subject: [PATCH 224/650] Migrated docs index over to lastupdated and accuratefor tags --- i2p2www/pages/site/docs/index.html | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/i2p2www/pages/site/docs/index.html b/i2p2www/pages/site/docs/index.html index 5784fa5e..22274c62 100644 --- a/i2p2www/pages/site/docs/index.html +++ b/i2p2www/pages/site/docs/index.html @@ -1,11 +1,12 @@ {% extends "global/layout.html" %} {% block title %}Index to Technical Documentation{% endblock %} +{% block lastupdated %}May 2012{% endblock %} +{% block accuratefor %}0.9{% endblock %} {% block content %}

      How does I2P work?

      Following is an index to the technical documentation for I2P. -This page was last updated in May 2012 and is accurate for router version 0.9.

      This index is ordered from the highest to lowest layers. The higher layers are for "clients" or applications; From 9527fcd19c74c8807e965c20a02080ae2a51e42e Mon Sep 17 00:00:00 2001 From: str4d Date: Thu, 20 Dec 2012 04:41:03 +0000 Subject: [PATCH 225/650] Attempt to prevent title text overlapping with the header image (though second line sits behind the menu...) --- i2p2www/static/styles/duck.css | 1 + 1 file changed, 1 insertion(+) diff --git a/i2p2www/static/styles/duck.css b/i2p2www/static/styles/duck.css index 1230a230..c80d0dc0 100644 --- a/i2p2www/static/styles/duck.css +++ b/i2p2www/static/styles/duck.css @@ -22,6 +22,7 @@ div#branding {width:80%; /*margin:1em auto;*/ margin: 1em auto 0; position:relat font-family:"URW Gothic L", "Century Gothic", sans-serif; text-transform:uppercase; font-size:3.5em; font-weight:bold; text-shadow:1px 1px 1px rgba(0,0,0,.2); color:#333333; position:absolute; top:0; right:0; line-height:41px; vertical-align:middle; + max-width: 70%; text-align: right; } div.navigation {position:relative;} From 3c3b4ed706f571e7d24fb916edd9f49e229b7952 Mon Sep 17 00:00:00 2001 From: str4d Date: Thu, 20 Dec 2012 04:46:37 +0000 Subject: [PATCH 226/650] Moved ver() into templatevars so only need to change I2P version in one place --- i2p2www/pages/global/layout.html | 2 +- i2p2www/pages/global/macros | 6 ------ i2p2www/templatevars.py | 8 +++++++- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/i2p2www/pages/global/layout.html b/i2p2www/pages/global/layout.html index b6d01ae6..3d375aa3 100644 --- a/i2p2www/pages/global/layout.html +++ b/i2p2www/pages/global/layout.html @@ -1,4 +1,4 @@ -{%- from "global/macros" import change_lang, ver with context -%} +{%- from "global/macros" import change_lang with context -%} diff --git a/i2p2www/pages/global/macros b/i2p2www/pages/global/macros index 074b2b7b..1d709ff0 100644 --- a/i2p2www/pages/global/macros +++ b/i2p2www/pages/global/macros @@ -8,12 +8,6 @@ {%- endif -%} {%- endmacro -%} -{%- macro ver(string=None) -%} -{%- if string -%}{{ string % '0.9.4' }} -{%- else -%}{{ '0.9.4' }} -{%- endif -%} -{%- endmacro -%} - {%- macro render_pagination(pagination) %}

      diff --git a/i2p2www/pages/global/layout.html b/i2p2www/pages/global/layout.html index d61e9ff4..bfc61826 100644 --- a/i2p2www/pages/global/layout.html +++ b/i2p2www/pages/global/layout.html @@ -9,7 +9,7 @@ {%- endif %} {% if g.exttheme %}{% else -%} - + {%- endif %} diff --git a/i2p2www/static/styles/danimoth.css b/i2p2www/static/styles/danimoth/style.css similarity index 100% rename from i2p2www/static/styles/danimoth.css rename to i2p2www/static/styles/danimoth/style.css diff --git a/i2p2www/static/styles/dark.css b/i2p2www/static/styles/dark/style.css similarity index 100% rename from i2p2www/static/styles/dark.css rename to i2p2www/static/styles/dark/style.css diff --git a/i2p2www/static/styles/reset.css b/i2p2www/static/styles/duck/reset.css similarity index 100% rename from i2p2www/static/styles/reset.css rename to i2p2www/static/styles/duck/reset.css diff --git a/i2p2www/static/styles/duck.css b/i2p2www/static/styles/duck/style.css similarity index 100% rename from i2p2www/static/styles/duck.css rename to i2p2www/static/styles/duck/style.css diff --git a/i2p2www/static/styles/light.css b/i2p2www/static/styles/light/style.css similarity index 100% rename from i2p2www/static/styles/light.css rename to i2p2www/static/styles/light/style.css From a6f0d35f48a56162641e835e3469ae015eb963c4 Mon Sep 17 00:00:00 2001 From: str4d Date: Mon, 21 Jan 2013 11:09:50 +0000 Subject: [PATCH 344/650] Fixed image paths in CSS after move --- i2p2www/static/styles/danimoth/style.css | 2 +- i2p2www/static/styles/duck/style.css | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/i2p2www/static/styles/danimoth/style.css b/i2p2www/static/styles/danimoth/style.css index 8a013ea2..338d416a 100644 --- a/i2p2www/static/styles/danimoth/style.css +++ b/i2p2www/static/styles/danimoth/style.css @@ -45,7 +45,7 @@ nav.navigation { } div#content .feed-icon { - background-image: url('../images/feed-icon-28x28.png'); + background-image: url('../../images/feed-icon-28x28.png'); display: block; float: right; height: 28px; diff --git a/i2p2www/static/styles/duck/style.css b/i2p2www/static/styles/duck/style.css index 89837f00..a59e5d1e 100644 --- a/i2p2www/static/styles/duck/style.css +++ b/i2p2www/static/styles/duck/style.css @@ -221,7 +221,7 @@ div#content {display:block;} * The .main class is for content wrapper on the home page (with the big banner) */ div#content .main { - background:url('../images/dots.png') 0 10% no-repeat rgba(171, 204, 113, 0.6); background-size:100% auto; width:auto; padding:4em 35% 4em 10%; position:relative; + background:url('../../images/dots.png') 0 10% no-repeat rgba(171, 204, 113, 0.6); background-size:100% auto; width:auto; padding:4em 35% 4em 10%; position:relative; margin:0 auto; text-shadow:1px 1px 1px rgba(255,255,255,.5); font-size:1.6em; line-height:1.5em; border:2px solid #abcc71; border-left:none; border-right:none; box-shadow:0px 2px 8px rgba(0,0,0,.2)} div#content .main h1 {font-family:"URW Gothic L", "Century Gothic", sans-serif; font-size:2.5em; @@ -245,7 +245,7 @@ div#content .main { div#content .aside ul li {list-style-type:none; margin:1em 0; line-height:1.3em;} div#content .feed-icon { - background-image: url('../images/feed-icon-28x28.png'); + background-image: url('../../images/feed-icon-28x28.png'); display: block; float: right; height: 28px; From 3db722f00ce01c9b2f7ac678a30a9ecbdc063d47 Mon Sep 17 00:00:00 2001 From: str4d Date: Mon, 21 Jan 2013 11:22:19 +0000 Subject: [PATCH 345/650] Added tags to to support mobile CSS --- i2p2www/pages/global/layout.html | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/i2p2www/pages/global/layout.html b/i2p2www/pages/global/layout.html index bfc61826..fa98e609 100644 --- a/i2p2www/pages/global/layout.html +++ b/i2p2www/pages/global/layout.html @@ -9,7 +9,12 @@ {%- endif %} {% if g.exttheme %}{% else -%} - + + + + {%- endif %} From 0e81362953ed2cbeb3d0189e86224e6afdd78706 Mon Sep 17 00:00:00 2001 From: str4d Date: Mon, 21 Jan 2013 12:29:25 +0000 Subject: [PATCH 346/650] Added basic mobile.css for duck's theme --- i2p2www/static/styles/duck/mobile.css | 31 +++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 i2p2www/static/styles/duck/mobile.css diff --git a/i2p2www/static/styles/duck/mobile.css b/i2p2www/static/styles/duck/mobile.css new file mode 100644 index 00000000..c28671f2 --- /dev/null +++ b/i2p2www/static/styles/duck/mobile.css @@ -0,0 +1,31 @@ +#topbar .title h1 { + display: none; +} + +div#content .main { + padding: 4em 10%; +} + +.main .get-i2p { + margin-bottom: -1.5em; + margin-top: .5em; + position: relative; + right: 0; +} + +div#content .aside { + margin-left: 0%; + width: 100%; +} + +.sig { + display: none; +} + +#global-footer .aside { + width: 49%; +} + +#global-footer .aside.third, #global-footer .aside.fifth { + margin-left: 0; +} From 5cfd605f090ee0a637dff251851599edc5ec98ac Mon Sep 17 00:00:00 2001 From: str4d Date: Mon, 21 Jan 2013 14:34:27 +0000 Subject: [PATCH 347/650] Use progressive enhancement instead of graceful degradation for mobile support MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The default.css for duck's theme is the same content as the original theme, with some attributes removed or tweaked slightly. The original theme CSS overrides almost all of this file leaving the desktop style unchanged. Once the mobile CSS is more complete and the common CSS is identified, it can be removed from the desktop CSS. The mobile dropdown menu was obtained from http://astuteo.com/mobilemenu and as per the license on the page: "... it’s entirely free for you to download and use, modify for your own applications, or otherwise make millions off of." --- i2p2www/pages/global/layout.html | 10 +- i2p2www/static/styles/duck/default.css | 271 ++++++++++++++++++ .../styles/duck/{style.css => desktop.css} | 2 - i2p2www/static/styles/duck/mobile.css | 110 ++++++- 4 files changed, 383 insertions(+), 10 deletions(-) create mode 100644 i2p2www/static/styles/duck/default.css rename i2p2www/static/styles/duck/{style.css => desktop.css} (99%) diff --git a/i2p2www/pages/global/layout.html b/i2p2www/pages/global/layout.html index fa98e609..8917da0f 100644 --- a/i2p2www/pages/global/layout.html +++ b/i2p2www/pages/global/layout.html @@ -8,13 +8,17 @@ {%- endif %} - {% if g.exttheme %}{% else -%} - - + {% if g.exttheme %}{% else -%} + + + + {%- endif %} diff --git a/i2p2www/static/styles/duck/default.css b/i2p2www/static/styles/duck/default.css new file mode 100644 index 00000000..31bf033e --- /dev/null +++ b/i2p2www/static/styles/duck/default.css @@ -0,0 +1,271 @@ +@import url('reset.css'); + +body { + font-family: Droid Sans, Helvetica, sans-serif; + font-size: 10px; + background-color: #ffffdd; + min-height:800px; + width:100%; + background:-moz-radial-gradient(50% 30% , circle , #fffff9, #ffffcc) no-repeat scroll 0 0 #ffffcc; + background:-webkit-radial-gradient(50% 30% , circle , #fffff9, #ffffcc) no-repeat scroll 0 0 #ffffcc; +} + +a { + color:#d00e0e; + text-decoration:none; +} + +a:hover { + color:#f00e0e; +} + +div.hide { + display:none; +} + +div#topbar { + width:80%; + /*margin:1em auto;*/ + margin: 1em auto; + position:relative; +} + +div#topbar #logo img:hover { + filter:alpha(opacity=60); + -moz-opacity: 0.6; + opacity: 0.6; +} + +div#content { + display:block; +} + +/** + * The .main class is for content wrapper on the home page (with the big banner) + */ +div#content .main { + background:url('../../images/dots.png') 0 10% no-repeat rgba(171, 204, 113, 0.6); + background-size:100% auto; + width:auto; + padding:4em 10% 4em 10%; + position:relative; + margin:0 auto; + text-shadow:1px 1px 1px rgba(255,255,255,.5); + font-size:1.6em; + line-height:1.5em; + border:2px solid #abcc71; + border-left:none; + border-right:none; + box-shadow:0px 2px 8px rgba(0,0,0,.2) +} + +div#content .main h1 { + font-family:"URW Gothic L", "Century Gothic", sans-serif; + font-size:2.5em; + text-shadow:1px 1px 2px rgba(0,0,0,.3); + color:white; + margin-bottom:.5em; +} + +.main .get-i2p { + display:block; + top:50%; + height:1em; + padding:.5em; + line-height:1em; + font-size:2em; + color:white; + font-family:Arial, Helvetica, sans-serif; + font-weight:bold; + text-transform:uppercase; + text-decoration:none; + text-align:center; + background:green; + border-radius:.3em; + text-shadow:1px 1px 1px rgba(0,0,0,.2); + box-shadow:2px 2px 4px rgba(0, 0, 0, 0.3), 1em 3em 2em 0.5em rgba(255, 255, 255, 0.3) inset, inset -.2em -.5em 1em -0em rgba(0,0,0,.3) +} + +div#content .aside-wrap { + width:80%; + margin:2em auto; +} + +div#content .aside { + position:relative; + display:inline-block; + vertical-align:top; + font-size:1.2em +} + +div#content .aside a { + font-weight:bold; +} + +div#content .aside h1 { + padding:1em 0; + border-bottom:1px solid rgba(171, 204, 113, 0.6); + font-size:1.4em; + color:#222200; + text-shadow:1px 1px 1px rgba(0,0,0,.3) +} + +div#content .aside p { + margin:1em 0; +} + +div#content .aside ul { + margin:1em 0; +} + +div#content .aside ul li { + list-style-type:none; + margin:1em 0; + line-height:1.3em; +} + +div#content .feed-icon { + background-image: url('../../images/feed-icon-28x28.png'); + display: block; + float: right; + height: 28px; + margin: 1em; + text-indent: -9999px; + width: 28px; +} + +div#content .lastupdated { + background-color: #ffffdd; + border-radius: 0 0 5px 5px; + padding: 2px 4px; + position: absolute; + right: 10%; + text-align: right; + top: 0; + width: 200px; +} + +/** + * The .inner class is for the content wrapper on inner pages (as opposed to the home page) + */ +div#content .inner { + width:auto; + margin: 0 5%; + padding: 4em 5%; + position:relative; + background: rgba(171, 204, 113, 0.6); + border-top:2px solid #abcc71; + border-left: 2px solid #abcc71; + border-right: 2px solid #abcc71; + border-radius: 5px 5px 0 0; + color:black; + font-size:1.2em; + line-height:1.4em; +} + +div#content .inner h1, div#content .inner h2, div#content .inner h3 { + color:white; + text-shadow:1px 1px 1px rgba(0,0,0,.3); + margin:1em 0 .5em; + border-bottom:1px solid white; + padding-bottom:.2em; +} + +div#content .inner h1 { + font-size:2.2em; + margin:0em 0 1em; + width:auto; +} + +div#content .inner h2 { + font-size:1.6em; +} + +div#content .inner h3 { + font-size:1.4em; +} + +div#content .inner ol { + margin:1.5em; +} + +div#content .inner ul { + margin:1.5em; 1em; +} + +div#content .inner p { + margin:1em 0; +} + +div#content .inner td { + padding:2px 5px; +} + +.package { + border: 2px solid #d00e0e; + border-radius: 5px; + margin: 10px; + padding: 10px; +} + +.file { + border: 1px dashed #d00e0e; + margin: 5px; + padding: 5px; +} + +#global-footer { + width:auto; + border-top:3px + solid #883333; + background:#552222; + box-shadow:0px -4px 8px rgba(0,0,0,.3); + padding:1em 10%; + background:-moz-linear-gradient(#883333, #772222); +} + +#global-footer .aside { + display:inline-block; + vertical-align:top; +} + +#global-footer .aside h1 { + color:#ffdd88; + font-size:1.2em; + text-shadow:-1px -1px 1px rgba(0,0,0,.2); + border-bottom:1px solid #ccaa66; + margin:1em 0; + line-height:1.3em; +} + +#global-footer .aside ul { + margin:0; + padding:0; +} + +#global-footer .aside ul li { + list-style-type:none; + line-height:1.5em; +} + +#global-footer .aside ul li a { + color:#ccaa66; + font-weight:bold; +} + +#global-footer .aside ul li a:hover { + text-decoration:underline; +} + +#global-footer a.button { + padding:.5em 2em; + background-color:#cc2222; + border:1px solid #bb2222; + border-radius:3px; + display:inline-block; + color:white; + margin:1em auto; + text-align:center; + width:auto; + font-weight:bold; +} diff --git a/i2p2www/static/styles/duck/style.css b/i2p2www/static/styles/duck/desktop.css similarity index 99% rename from i2p2www/static/styles/duck/style.css rename to i2p2www/static/styles/duck/desktop.css index a59e5d1e..20c1dcdf 100644 --- a/i2p2www/static/styles/duck/style.css +++ b/i2p2www/static/styles/duck/desktop.css @@ -1,5 +1,3 @@ -@import url('reset.css'); - body { font-family:Droid Sans, Helvetica, sans-serif; font-size:10px; background-color:#ffffdd; diff --git a/i2p2www/static/styles/duck/mobile.css b/i2p2www/static/styles/duck/mobile.css index c28671f2..38d24f66 100644 --- a/i2p2www/static/styles/duck/mobile.css +++ b/i2p2www/static/styles/duck/mobile.css @@ -1,7 +1,109 @@ -#topbar .title h1 { +#topbar .title { display: none; } +/* Dropdown menu CSS */ + +#cssmenu > ul { + width: 100%; + float: none; + background-color: #abcc71; /* change the menu color */ + background-image: -webkit-linear-gradient(top, rgba(0,0,0,0), rgba(0,0,0,.2)); + background-image: -moz-linear-gradient(top, rgba(0,0,0,0), rgba(0,0,0,.2)); + background-image: -ms-linear-gradient(top, rgba(0,0,0,0), rgba(0,0,0,.2)); + background-image: -o-linear-gradient(top, rgba(0,0,0,0), rgba(0,0,0,.2)); + display: block; + /*height: 0;*/ + height: auto; + margin: 0; + padding: 0; + overflow: hidden; + box-shadow: 0 1px 2px rgba(0,0,0,.6); + /*position: absolute;*/ + top: 0px; + left: 0px; + z-index: 998; + clear: both; +} + +#cssmenu > ul li { + /*display: none;*/ + display: block; + width: 100%; + font-family: Arial; +} + +#cssmenu > ul li div.menuitem { + display: block; + width: 90%; + padding: 10px 5%; + font-size: 14px; + font-weight: bold; + text-shadow: -1px -1px 0 rgba(0,0,0,.15); + color: white; + text-decoration: none; + border-bottom: 1px solid rgba(0,0,0,.2); + border-top: 1px solid rgba(255,255,255,.1); +} + +#cssmenu > ul li div.menuitem:hover { + background-color: rgba(0,0,0,.5); + border-top-color: transparent; +} + +#cssmenu > ul > li:first-child { + border-top: 1px solid rgba(0,0,0,.2); +} + +/* Toggle the navigation bar open */ + +#cssmenu > ul.open { + height: auto; + /*padding-top: 50px;*/ +} + +#cssmenu > ul.open li { + display: block; +} + +/* Submenus – .has-sub class indicates dropdowns */ + +#cssmenu > ul > li:hover > div.menuitem { + background: rgba(0,0,0,.5); + border-bottom-color: transparent; +} + +#cssmenu > ul li.has-sub > div.menuitem:after { + content: "▼"; + color: rgba(255,255,255,.5); + float: right; +} + +#cssmenu > ul li.has-sub > div.menuitem:hover { + background: rgba(0,0,0,.75); +} + +#cssmenu > ul li ul { + display: none; + background: rgba(0,0,0,.5); + border-top: 0 none; + padding: 0; +} + +#cssmenu > ul li ul div.menuitem { + border: 0 none; + font-size: 12px; + padding: 10px 5%; + font-weight: normal; +} + +#cssmenu > ul li:hover > ul { + display: block; + border-top: 0 none; +} + +/* End of dropdown menu CSS */ + div#content .main { padding: 4em 10%; } @@ -9,12 +111,9 @@ div#content .main { .main .get-i2p { margin-bottom: -1.5em; margin-top: .5em; - position: relative; - right: 0; } div#content .aside { - margin-left: 0%; width: 100%; } @@ -23,9 +122,10 @@ div#content .aside { } #global-footer .aside { + margin-left: 1%; width: 49%; } -#global-footer .aside.third, #global-footer .aside.fifth { +#global-footer .aside.first, #global-footer .aside.third, #global-footer .aside.fifth { margin-left: 0; } From f063149ab364f106ca1c23e66c2f57bbfc181377 Mon Sep 17 00:00:00 2001 From: str4d Date: Mon, 21 Jan 2013 14:38:50 +0000 Subject: [PATCH 348/650] Migrated other themes: style.css -> desktop.css --- i2p2www/__init__.py | 2 +- i2p2www/static/styles/danimoth/{style.css => desktop.css} | 0 i2p2www/static/styles/dark/{style.css => desktop.css} | 0 i2p2www/static/styles/light/{style.css => desktop.css} | 0 4 files changed, 1 insertion(+), 1 deletion(-) rename i2p2www/static/styles/danimoth/{style.css => desktop.css} (100%) rename i2p2www/static/styles/dark/{style.css => desktop.css} (100%) rename i2p2www/static/styles/light/{style.css => desktop.css} (100%) diff --git a/i2p2www/__init__.py b/i2p2www/__init__.py index 41e9a230..ac3a4739 100644 --- a/i2p2www/__init__.py +++ b/i2p2www/__init__.py @@ -113,7 +113,7 @@ def detect_theme(): if theme[:7] == 'http://': g.exttheme = theme theme = 'duck' - if not os.path.isfile(safe_join(safe_join(STATIC_DIR, 'styles'), '%s/style.css' % theme)): + if not os.path.isfile(safe_join(safe_join(STATIC_DIR, 'styles'), '%s/desktop.css' % theme)): theme = 'duck' g.theme = theme @after_this_request diff --git a/i2p2www/static/styles/danimoth/style.css b/i2p2www/static/styles/danimoth/desktop.css similarity index 100% rename from i2p2www/static/styles/danimoth/style.css rename to i2p2www/static/styles/danimoth/desktop.css diff --git a/i2p2www/static/styles/dark/style.css b/i2p2www/static/styles/dark/desktop.css similarity index 100% rename from i2p2www/static/styles/dark/style.css rename to i2p2www/static/styles/dark/desktop.css diff --git a/i2p2www/static/styles/light/style.css b/i2p2www/static/styles/light/desktop.css similarity index 100% rename from i2p2www/static/styles/light/style.css rename to i2p2www/static/styles/light/desktop.css From a5a5e20f3b9c1a199a2d1fdabb93f93129905ba2 Mon Sep 17 00:00:00 2001 From: str4d Date: Mon, 21 Jan 2013 22:32:15 +0000 Subject: [PATCH 349/650] Use right arrow instead of thick border for submenu indication --- i2p2www/static/styles/duck/desktop.css | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/i2p2www/static/styles/duck/desktop.css b/i2p2www/static/styles/duck/desktop.css index 20c1dcdf..7859031f 100644 --- a/i2p2www/static/styles/duck/desktop.css +++ b/i2p2www/static/styles/duck/desktop.css @@ -170,8 +170,10 @@ menu ul, border-left: 1px solid #ffffcc; /*margin-bottom: -1px;*/ } -#cssmenu .has-sub ul li.has-sub { - border-right: 5px solid #4B9C31 +#cssmenu .has-sub ul li.has-sub > div.menuitem:after { + content: "►"; + color: rgba(255,255,255,.5); + float: right; } #cssmenu .has-sub ul li div.menuitem { /*background: #0fa1e0;*/ @@ -196,7 +198,6 @@ menu ul, position: absolute; left: 100%; top: 0; - margin-left: 5px; } #cssmenu .has-sub .has-sub ul li:first-child { border-left: none; From 8eea7b22a3f1bde8495a26f3cd2287cd05ebdbae Mon Sep 17 00:00:00 2001 From: str4d Date: Mon, 21 Jan 2013 22:38:31 +0000 Subject: [PATCH 350/650] Added space between mobile dropdown menu and content --- i2p2www/static/styles/duck/mobile.css | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/i2p2www/static/styles/duck/mobile.css b/i2p2www/static/styles/duck/mobile.css index 38d24f66..86f1b200 100644 --- a/i2p2www/static/styles/duck/mobile.css +++ b/i2p2www/static/styles/duck/mobile.css @@ -117,6 +117,10 @@ div#content .aside { width: 100%; } +div#content .inner { + margin-top: 1em; +} + .sig { display: none; } From 827c6dc734d5fa8c6f4169c81d68bbb3d6e40072 Mon Sep 17 00:00:00 2001 From: dev Date: Tue, 22 Jan 2013 22:24:21 +0000 Subject: [PATCH 351/650] Tagged get-involved/guides/monotone.html for translation. --- .../site/get-involved/guides/monotone.html | 228 +++++++++++++----- 1 file changed, 161 insertions(+), 67 deletions(-) diff --git a/i2p2www/pages/site/get-involved/guides/monotone.html b/i2p2www/pages/site/get-involved/guides/monotone.html index 12f092db..b92451c0 100644 --- a/i2p2www/pages/site/get-involved/guides/monotone.html +++ b/i2p2www/pages/site/get-involved/guides/monotone.html @@ -1,145 +1,174 @@ {% extends "global/layout.html" %} {% block title %}Monotone{% endblock %} {% block content %} -

      Monotone Guide

      +

      {% trans %}Monotone Guide{% endtrans %}

      + {% trans -%} This is a revised version of Complication's original guide detailing the use of Monotone in I2P development. For basic instructions see the quick-start guide. + {%- endtrans %}

      + {% trans -%} I2P has a distributed development model. The source code is replicated across independently administered Monotone ("MTN") repositories. Developers with commit rights are able to push their changes to the repository (a license agreement needs to be signed before commit rights are granted). + {%- endtrans %}

      + {% trans -%} Some of Monotone's noteworthy qualities are: distributed version control, cryptographic authentication, access control, its small size, having few dependencies, storage of projects in a compressed SQLite database file, and having the ability to resume interrupted synchronization attempts. + {%- endtrans %}

      -

      Operating a Monotone Client

      +

      {% trans %}Operating a Monotone Client{% endtrans %}

      -

      Generating Monotone keys

      +

      {% trans %}Generating Monotone keys{% endtrans %}

      + {% trans -%} A transport key grants you the ability to push your changes to a Monotone repository server. In order to commit code into Monotone (in essence signing your code), a commit key is also needed. None of the public Monotone servers on I2P currently require a key in order to read (or pull) the source code. + {%- endtrans %}

      + {% trans -%} Without a transport key, one cannot:

      • pull code from a server which doesn't allow global read access
      • push code to any server
      • run a Monotone server
      + {%- endtrans %}

      + {% trans -%} Without a commit key, one cannot:

      • commit any code
      + {%- endtrans %}

      + {% trans -%} If you only intend to retrieve code from MTN, feel free to skip to the next section. If you want to generate keys, read the following. + {%- endtrans %}

      + {% trans -%} By convention keys are named like an e-mail addresses, but a corresponding e-mail address does not need to exist. For example, your keys might be named:

      • yourname@mail.i2p
      • yourname-transport@mail.i2p
      + {%- endtrans %}

      + {% trans -%} Monotone stores keys under $HOME/.monotone/keys in text files which are named identically to the keys. For example:

      • /home/complication/.monotone/keys/complication@mail.i2p
      + {%- endtrans %}

      + {% trans -%} To generate transport and commit keys, enter the following commands at a prompt:

      • $ mtn genkey yourname-transport@someplace
      • $ mtn genkey yourname@someplace
      + {%- endtrans %}

      + {% trans -%} Monotone will prompt you for a password to protect your keys. You are very strongly encouraged to set a password for the commit key. Many users will leave an empty password for the transport key, especially those running a Monotone server. + {%- endtrans %}

      -

      Trust, and initializing your repository

      +

      {% trans %}Trust, and initializing your repository{% endtrans %}

      + {% trans -%} Monotone's security model helps to ensure that nobody can easily impersonate a developer without it being noticed. Since developers can make mistakes and become compromised,only manual review can ensure quality of code. Monotone's trust model will ensure that you read the right diffs. It does not replace reading diffs. + {%- endtrans %}

      + {% trans -%} A Monotone repository is a single file (a compressed SQLite database) which contains all of the project's source code and history. + {%- endtrans %}

      + {% trans -%} After importing the developers' keys into Monotone and setting up trust evaluation hooks, Monotone will prevent untrusted code from being checked out into your workspace. There are commands available to clean untrusted code from your workspace but in practice they've not been needed due to the push access policies in place. + {%- endtrans %}

      + {% trans -%} A repository can hold many branches. For example, our repository holds the following main branches:

        @@ -147,126 +176,160 @@
      • i2p.www — The I2P project website
      • i2p.syndie — Syndie, a distributed forums tool
      + {%- endtrans %}

      -By convention, the I2P Monotone repository is named i2p.mtn. Before pulling + {% trans -%} + By convention, the I2P Monotone repository is named i2p.mtn. Before pulling source code from servers, a database for your repository will need to be initialized. To initialize your local repository, change into the directory that you want the i2p.mtn file and branch directories to be stored and issue the following command: + {%- endtrans %}

      • $ mtn --db="i2p.mtn" db init

      -

      Obtaining and deploying developers' keys

      +

      {% trans %}Obtaining and deploying developers' keys{% endtrans %}

      + {% trans -%} Keys which developers use to commit code are essential for trust evaluation in Monotone. The other developers' transport keys are only required for Monotone server operators. + {% endtrans %}

      -Developers' commit keys are provided GPG-signed on another page. + {% trans -%} + Developers' commit keys are provided GPG-signed on another page. + {%- endtrans %}

      -To import developers' keys after verifying their authenticity, copy all of the keys into a new -file. Create this file (e.g. keys.txt) in the same directory where i2p.mtn is located. Import the keys with the command: -

        -
      • $ mtn --db="i2p.mtn" read < keys.txt
      • -
      + {% trans -%} + To import developers' keys after verifying their authenticity, copy all of the keys into a new + file. Create this file (e.g. keys.txt) in the same directory where i2p.mtn is located. Import the keys with the command: + {%- endtrans %} +
        +
      • $ mtn --db="i2p.mtn" read < keys.txt
      • +

      + {% trans -%} Note: Never add keys to $HOME/.monotone/keys manually. + {%- endtrans %}

      -

      Setting up trust evaluation hooks

      +

      {% trans %}Setting up trust evaluation hooks{% endtrans %}

      + {% trans -%} The default Monotone trust policy is way too lax for our requirements: every comitter is trusted by default. That is not acceptable for I2P development. + {%- endtrans %}

      -Change into the directory $HOME/.monotone and open the file -monotonerc with a text editor. Copy and paste the following two functions into this file: + {% trans -%} + Change into the directory $HOME/.monotone and open the file + monotonerc with a text editor. Copy and paste the following two functions into this file: + {%- endtrans %}

      {% include "include/monotonerc.html" %}

      + {% trans -%} The first function determines an intersection between two sets, in our case a revision's signers and trusted signers. + {%- endtrans %}

      + {% trans -%} The second function determines trust in a given revision, by calling the first function with "signers" and "trusted" as arguments. If the intersection is null, the revision is not trusted. If the intersection is not empty, the revision is trusted. Otherwise, the revision is not trusted. + {%- endtrans %}

      -More information about Trust Evauluation Hooks can be found in the official Monotone documentation. + {% trans -%} + More information about Trust Evauluation Hooks can be found in the official Monotone documentation. + {%- endtrans %}

      -

      Pulling the i2p.i2p, i2p.www and i2p.syndie branches

      +

      {% trans %}Pulling the i2p.i2p, i2p.www and i2p.syndie branches{% endtrans %}

      -Enter the directory where you initialized i2p.mtn. Depending on whether you + {% trans -%} + Enter the directory where you initialized i2p.mtn. Depending on whether you want only I2P sources, or also sources for the I2P website and Syndie, you can perform the pull operation in different ways. + {%- trans %}

      + {% trans -%} If you only want I2P sources: + {%- endtrans %}

      • $ mtn --db="i2p.mtn" -k "" pull 127.0.0.1:8998 i2p.i2p

      + {% trans -%} If you want all branches: + {%- endtrans %}

      • $ mtn --db="i2p.mtn" -k "" pull 127.0.0.1:8998 "i2p.*"
      + {% trans -%} If the transfer aborts before completing sucessfully, simply repeating the pull command will resume the transfer. + {%- endtrans %}

      + {% trans -%} Pulling in the above examples is done anonymously by specifying an empty transport key. If everyone pulls anonymously it will be harder for an attacker who gains control of the server to selectively provide some people with tampered data. + {%- endtrans %}

      -

      Verifying that trust evaluation works

      +

      {% trans %}Verifying that trust evaluation works{% endtrans %}

      -To verify that trust evaluation works: -

    -

    - {% trans -%} - This is a revised version of Complication's original +

    + {% trans transitionguide=site_url('misc/transition-guide'), newdevs=site_url('get-involved/guides/new-developers') -%} + This is a revised version of Complication's original guide detailing the use of Monotone in I2P development. - For basic instructions see the quick-start guide. + For basic instructions see the quick-start guide. {%- endtrans %} -

    +

    - {% trans -%} + {% trans licenses=site_url('get-involved/develop/licenses') -%} I2P has a distributed development model. The source code is replicated across independently administered Monotone ("MTN") repositories. Developers with commit rights are able to push their changes to the repository - (a license agreement needs to be signed + (a license agreement needs to be signed before commit rights are granted). {%- endtrans %}

    @@ -102,31 +102,31 @@ {% trans -%} By convention keys are named like an e-mail addresses, but a corresponding e-mail address does not need to exist. For example, your keys might be named: + {%- endtrans %}
    • yourname@mail.i2p
    • yourname-transport@mail.i2p
    - {%- endtrans %}

    {% trans -%} Monotone stores keys under $HOME/.monotone/keys in text files which are named identically to the keys. For example: + {%- endtrans %}

    • /home/complication/.monotone/keys/complication@mail.i2p
    - {%- endtrans %}

    {% trans -%} To generate transport and commit keys, enter the following commands at a prompt: + {%- endtrans %}

    • $ mtn genkey yourname-transport@someplace
    • $ mtn genkey yourname@someplace
    - {%- endtrans %}

    @@ -171,12 +171,12 @@ {% trans -%} A repository can hold many branches. For example, our repository holds the following main branches: -

      -
    • i2p.i2p — The I2P router and associated programs
    • -
    • i2p.www — The I2P project website
    • -
    • i2p.syndie — Syndie, a distributed forums tool
    • -
    {%- endtrans %} +
      +
    • i2p.i2p — {% trans %}The I2P router and associated programs{% endtrans %}
    • +
    • i2p.www — {% trans %}The I2P project website{% endtrans %}
    • +
    • i2p.syndie — {% trans %}Syndie, a distributed forums tool{% endtrans %}
    • +

    @@ -203,14 +203,14 @@

    - {% trans -%} - Developers' commit keys are provided GPG-signed on another page. + {% trans signedkeys=site_url('get-involved/develop/signed-keys') -%} + Developers' commit keys are provided GPG-signed on another page. {%- endtrans %}

    - {% trans -%} - To import developers' keys after verifying their authenticity, copy all of the keys into a new + {% trans devkeys=site_url('get-involved/develop/developers-keys') -%} + To import developers' keys after verifying their authenticity, copy all of the keys into a new file. Create this file (e.g. keys.txt) in the same directory where i2p.mtn is located. Import the keys with the command: {%- endtrans %}

      @@ -310,24 +310,29 @@

      {% trans -%} To verify that trust evaluation works: -

      Monotone

        -
      • +
      • {% trans -%} Have a basic understanding of distributed source control systems, even if you haven't used monotone before. Ask for help if you need it. Once pushed, checkins are forever, there is no undo. Please be careful. If you have not used monotone before, start with baby steps. Check in some small changes and see how it goes. -
      • +{%- endtrans %}
      • +
      • {% trans -%} Test your changes before checking them in. If you prefer the checkin-before-test development model, use your own development branch (e.g. i2p.i2p.yourname.test) @@ -44,87 +47,102 @@ and propagate back to i2p.i2p once it is working well. Do not break the build. Do not cause regressions. In case you do (it happens), please do not vanish for a long period after you push your change. -
      • +{%- endtrans %}
      • +
      • {% trans -%} If your change is non-trivial, or you want people to test it and need good test reports to know whether your change was tested or not, add a checkin comment to history.txt and increment the build revision in RouterVersion.java. -
      • +{%- endtrans %}
      • +
      • {% trans -%} Ensure that you have the latest monotonerc file in _MTN. Do not check in on top of untrusted revisions. -
      • +{%- endtrans %}
      • +
      • {% trans -%} Ensure that you pull the latest revision before you check in. If you inadvertently diverge, merge and push as soon as possible. Don't routinely make others merge for you. Yes, we know that monotone says you should push and then merge, but in our experience, in-workspace merge works just as well as in-database merge, without creating a merge revision. -
      • +{%- endtrans %}
      • +
      • {% trans -%} Do not check in major changes into the main i2p.i2p branch late in the release cycle. If a project will take you more than a couple days, create your own branch in monotone and do the development there so you do not block releases. -
      +{%- endtrans %} +
    -

    Coding Style

    +

    {{ _('Coding Style') }}

      -
    • +
    • {% trans -%} Coding style throughout most of the code is 4-spaces for indentation. Do not use tabs. Do not reformat code. If your IDE or editor wants to reformat everything, get control of it. Yes, we know 4 spaces is a pain, but perhaps you can configure your editor appropriately. In some places, the coding style is different. Use common sense. Emulate the style in the file you are modifying. -
    • +{%- endtrans %}
    • +
    • {% trans -%} New classes and methods require at least brief javadocs. Add @since release-number. -
    • +{%- endtrans %}
    • +
    • {% trans -%} Classes in core/ (i2p.jar) and portions of i2ptunnel are part of our official API. There are several out-of-tree plugins and other applications that rely on this API. Be careful not to make any changes that break compatibility. Don't add methods to the API unless they are of general utility. Javadocs for API methods should be clear and complete. If you add or change the API, also update the documentation on the website (i2p.www branch). -
    • +{%- endtrans %}
    • +
    • {% trans -%} Tag strings for translation where appropriate. Don't change existing tagged strings unless really necessary, as it will break existing translations. Do not add or change tagged strings after the "tag freeze" in the release cycle so that translators have a chance to update before the release. -
    • +{%- endtrans %}
    • +
    • {% trans -%} Use generics and concurrent classes where possible. I2P is a highly multi-threaded application. -
    • +{%- endtrans %}
    • +
    • {% trans -%} We require Java 6 to build but only Java 5 to run I2P. Do not use Java 6 classes or methods without handling the class not found exceptions and providing alternate Java 5 code. See classes in net.i2p.util for examples. -
    • +{%- endtrans %}
    • +
    • {% trans -%} Explicitly convert between primitive types and classes; don't rely on autoboxing/unboxing. -
    +{%- endtrans %}
  • + -

    Licenses

    +

    {{ _('Licenses') }}

      -
    • +
    • {% trans -%} Only check in code that you wrote yourself. Before checking in any code or library jars from other sources, justify why it is necessary, verify the license is compatible, and obtain approval from the lead developer. -
    • +{%- endtrans %}
    • +
    • {% trans -%} For any images checked in from external sources, it is your responsibility to first verify the license is compatible. Include the license and source information in the checkin comment. -
    +{%- endtrans %} + -

    Bugs

    +

    {{ _('Bugs') }}

      -
    • +
    • {% trans trac=i2pconv('trac.i2p2.i2p') -%} Managing Trac tickets is everybody's job, please help. -Monitor trac.i2p2.i2p for tickets you have been assigned or can help with. -Asssign, categorize, comment on, fix, or close tickets if you can. -
    • +Monitor {{ trac }} for tickets you have been assigned or can help with. +Assign, categorize, comment on, fix, or close tickets if you can. +{%- endtrans %}
    • +
    • {% trans -%} Close a ticket when you think you've fixed it. We don't have a test department to verify and close tickets. If you arent sure you fixed it, close it and add a note saying "I think I fixed it, please test and reopen if it's still broken". Add a comment with the dev build number or revision and set the milestone to the next release. -
    • +{%- endtrans %}
    {% endblock %} diff --git a/i2p2www/pages/site/get-involved/guides/ides.html b/i2p2www/pages/site/get-involved/guides/ides.html index f73c46e6..bb116c0f 100644 --- a/i2p2www/pages/site/get-involved/guides/ides.html +++ b/i2p2www/pages/site/get-involved/guides/ides.html @@ -1,51 +1,51 @@ {% extends "global/layout.html" %} -{% block title %}Using an IDE with I2P{% endblock %} +{% block title %}{{ _('Using an IDE with I2P') }}{% endblock %} {% block content %} -

    +

    {% trans -%} The main I2P development branch (i2p.i2p) has been set up to enable developers to easily set up two of the commonly-used IDEs for Java development: Eclipse and NetBeans. -

    +{%- endtrans %}

    Eclipse

    -

    +

    {% trans -%} The main I2P development branches (i2p.i2p and branches from it) contain .project and .classpath Eclipse files, to enable the branch to be easily set up in Eclipse. -

    +{%- endtrans %}

      -
    1. +
    2. {% trans -%} Check out the I2P branch into some directory (e.g. $HOME/dev/i2p.i2p). -
    3. +{%- endtrans %} -
    4. +
    5. {% trans -%} Open Eclipse and create a new Workspace, based in the directory that the I2P branch was checked out to. -
    6. +{%- endtrans %} -
    7. +
    8. {% trans -%} Select "File - Import..." and then under "General" select "Existing Projects into Workspace". -
    9. +{%- endtrans %} -
    10. +
    11. {% trans -%} For "Select root directory:" choose the directory that the I2P branch was checked out to. -
    12. +{%- endtrans %} -
    13. +
    14. {% trans -%} If necessary, click "Refresh" to refresh the list of projects. -
    15. +{%- endtrans %} -
    16. +
    17. {% trans -%} Select every project in the list, and click "Finish". -
    18. +{%- endtrans %} -
    19. +
    20. {% trans -%} Done! Your workspace should now contain all projects within the I2P branch, and their build dependencies should be correctly set up. -
    21. +{%- endtrans %}

    NetBeans

    -

    +

    {% trans -%} The main I2P development branches (i2p.i2p and branches from it) contain NetBeans project files. -

    +{%- endtrans %}

    {% endblock %} From 8feb48485dc7ff9e8959f40aaf79df82d1223dee Mon Sep 17 00:00:00 2001 From: str4d Date: Sat, 26 Jan 2013 02:15:45 +0000 Subject: [PATCH 354/650] Added translation tags to get-involved/guides/new-developers --- .../get-involved/guides/new-developers.html | 264 +++++++++--------- 1 file changed, 134 insertions(+), 130 deletions(-) diff --git a/i2p2www/pages/site/get-involved/guides/new-developers.html b/i2p2www/pages/site/get-involved/guides/new-developers.html index b4615daa..a2d0178a 100644 --- a/i2p2www/pages/site/get-involved/guides/new-developers.html +++ b/i2p2www/pages/site/get-involved/guides/new-developers.html @@ -1,186 +1,190 @@ {% extends "global/layout.html" %} -{% block title %}New Developer's Guide{% endblock %} +{% block title %}{% trans %}New Developer's Guide{% endtrans %}{% endblock %} {% block content %} -

    - So you want to start work on I2P? Great! - Here's a quick guide to getting started - on contributing to the website or the software, doing development or creating translations. -

    -

    - Not quite ready for coding? - Try getting involved first. -

    +

    {% trans %} +So you want to start work on I2P? Great! +Here's a quick guide to getting started +on contributing to the website or the software, doing development or creating translations. +{%- endtrans %}

    +

    {% trans volunteer=site_url('get-involved') %} +Not quite ready for coding? +Try getting involved first. +{%- endtrans %}

    -

    Basic 'study'

    +

    {% trans %}Basic study{% endtrans %}

    -

    - Basic development on the I2P router or the embedded applications uses Java as the main development language. - If you don't have experience with Java, you can always have a look at Thinking in Java. -

    -

    - Study the how intro, - the other "how" documents, - the tech intro, - and associated documents. - These will give you a good overview of how I2P is structured and what different things it does. -

    +

    {% trans -%} +Basic development on the I2P router or the embedded applications uses Java as the main development language. +If you don't have experience with Java, you can always have a look at Thinking in Java. +{%- endtrans %}

    +

    {% trans intro=site_url('docs/how/intro'), docs=site_url('docs'), techintro=site_url('docs/how/tech-intro') -%} +Study the how intro, +the other "how" documents, +the tech intro, +and associated documents. +These will give you a good overview of how I2P is structured and what different things it does. +{%- endtrans %}

    -

    Getting the I2P code

    +

    {% trans %}Getting the I2P code{% endtrans %}

    -

    - For development on the i2p router or the embedded applications, - get the monotone source repository installed - short instructions: -

    +

    {% trans -%} +For development on the i2p router or the embedded applications, +get the monotone source repository installed - short instructions: +{%- endtrans %}

      +
    • {% trans -%} +Install monotone. +Monotone is a version control system. +We use it because it allows us to keep track of who does what changes to the source code (and for a lot of complicated things, but 'keeping track of changes' is the basic idea). + {%- endtrans %}
    • +
    • {% trans -%} +Skim over the monotone tutorial, to make sure you understand the concepts. + {%- endtrans %}
    • - Install monotone. - Monotone is a version control system. - We use it because it allows us to keep track of who does what changes to the source code (and for a lot of complicated things, but 'keeping track of changes' is the basic idea). -
    • -
    • Skim over the monotone tutorial, to make sure you understand the concepts.
    • -
    • -

      +

      {% trans -%} If you want to remain anonymous, you need to do an additional step, to set up a connection to a monotone server over I2P: -

      -

      - Enable the i2ptunnel client tunnel on port 8998 pointing to mtn.i2p2.i2p. -

      + {%- endtrans %}

      +

      {% trans i2ptunnel=site_url('docs/api/i2ptunnel') -%} + Enable the i2ptunnel client tunnel on port 8998 pointing to mtn.i2p2.i2p. + {%- endtrans %}

    • -
    • - Pick a directory where you want to put all your I2P files, and create a monotone database: mtn -d i2p.mtn db init +
    • {% trans -%} + Pick a directory where you want to put all your I2P files, and create a monotone database:{% endtrans %} mtn -d i2p.mtn db init
    • -
    • Define the trust list by creating ~/.monotone/monotonerc (or _MTN/monotonerc in the i2p.i2p workspace) with the following contents: +
    • {% trans -%} +Define the trust list by creating ~/.monotone/monotonerc (or _MTN/monotonerc in the i2p.i2p workspace) with the following contents: +{%- endtrans %} {% include "include/monotonerc.html" %}
    • -
    • Copy and paste the developer's commit keys into a new file (e.g. keys.txt) in the same directory +
    • {% trans devkeys=site_url('get-involved/develop/developers-keys') -%} +Copy and paste the developer's commit keys into a new file (e.g. keys.txt) in the same directory that i2p.mtn is in. Import the keys into your database with
            mtn -d i2p.mtn read < keys.txt
      -
    • - Pull the I2P sources to your machine. This may take a long time, especially if you are doing this over I2P! + {%- endtrans %}
    • +
    • {% trans %}Pull the I2P sources to your machine. This may take a long time, especially if you are doing this over I2P!{% endtrans %}
        -
      • Anonymously: mtn -d i2p.mtn pull 127.0.0.1:8998 i2p.i2p -k""
      • +
      • {% trans %}Anonymously:{% endtrans %} mtn -d i2p.mtn pull 127.0.0.1:8998 i2p.i2p -k""
      • - Non-anonymously: mtn -d i2p.mtn pull mtn.i2p2.de i2p.i2p -k"" + {% trans %}Non-anonymously:{% endtrans %} mtn -d i2p.mtn pull mtn.i2p2.de i2p.i2p -k""

        -

        +

        {% trans -%} Alternatively, instead of 'mtn.i2p2.de', you can also download from mtn.i2p-projekt.de. -

        + {%- endtrans %}

    • - All the sources are now present on your machine, in the database file. To make them available in a directory, you need to check them out: mtn -d i2p.mtn co --branch=i2p.i2p -

      -

      - The above command creates a directory i2p.i2p, which contains all of the I2P sources. + {% trans %}All the sources are now present on your machine, in the database file. To make them available in a directory, you need to check them out:{% endtrans %} mtn -d i2p.mtn co --branch=i2p.i2p

      +

      {% trans %}The above command creates a directory i2p.i2p, which contains all of the I2P sources.{% endtrans %}

    -

    Remarks

    -

    - To download the website files instead of the I2P source files, use 'i2p.www' instead of 'i2p.i2p'. -

    -

    - The initial pull may take several hours using the tunnel. - If it fails after a partial pull, simply rerun it, it will start where it left off. - If you are in a hurry, use the non-anonymous access. -

    -

    - A full list of branches, including i2p.i2p and i2p.www can be found on viewmtn. -

    -

    - A long explanation about using monotone is available on the monotone page. -

    +

    {% trans %}Remarks{% endtrans %}

    +

    {% trans %} +To download the website files instead of the I2P source files, use 'i2p.www' instead of 'i2p.i2p'. +{%- endtrans %}

    +

    {% trans -%} +The initial pull may take several hours using the tunnel. +If it fails after a partial pull, simply rerun it, it will start where it left off. +If you are in a hurry, use the non-anonymous access. +{%- endtrans %}

    +

    {% trans viewmtn='http://stats.i2p/cgi-bin/viewmtn/' -%} +A full list of branches, including i2p.i2p and i2p.www can be found on viewmtn. +{%- endtrans %}

    +

    {% trans monotone=site_url('get-involved/guides/monotone') -%} +A long explanation about using monotone is available on the monotone page. +{%- endtrans %}

    -

    Building I2P

    +

    {% trans %}Building I2P{% endtrans %}

    -

    - To compile the code, you need the Sun Java Development Kit 6 or higher, or equivalent JDK - (Sun JDK 6 strongly recommended) and - Apache ant - version 1.7.0 or higher. - If you go are working on the main I2P code, you can go into the i2p.i2p directory and run 'ant' to see the build options. -

    +

    {% trans sunjdk6='http://java.sun.com/javase/downloads/index.jsp' -%} +To compile the code, you need the Sun Java Development Kit 6 or higher, or equivalent JDK +(Sun JDK 6 strongly recommended) and +Apache ant +version 1.7.0 or higher. +If you go are working on the main I2P code, you can go into the i2p.i2p directory and run 'ant' to see the build options. +{%- endtrans %}

    -

    - To build or work on console translations, you need - the xgettext, msgfmt, and msgmerge tools from the - GNU gettext package. -

    +

    {% trans -%} +To build or work on console translations, you need +the xgettext, msgfmt, and msgmerge tools from the +GNU gettext package. +{%- endtrans %}

    -

    - For development on new applications, - see the application development guide. -

    +

    {% trans apps=site_url('get-involved/develop/applications') -%} +For development on new applications, +see the application development guide. +{%- endtrans %}

    -

    Development ideas

    -

    - See zzz's TODO lists, - this website's TODO list or - Trac - for ideas. -

    +

    {% trans %}Development ideas{% endtrans %}

    +

    {% trans zzz=i2pconv('zzz.i2p'), todo=site_url('get-involved/todo'), trac=i2pconv('trac.i2p2.i2p') -%} +See zzz's TODO lists, +this website's TODO list or +Trac +for ideas. +{%- endtrans %}

    -

    Making the results available

    +

    {% trans %}Making the results available{% endtrans %}

    -

    - See the bottom of licenses.html for - commit privilege requirements. You need these to put code into i2p.i2p (not required for the website!). -

    +

    {% trans licenses=site_url('get-involved/develop/licenses') -%} +See the bottom of the licenses page for +commit privilege requirements. You need these to put code into i2p.i2p (not required for the website!). +{%- endtrans %}

    -

    - Short version of how to generate and use keys if you plan to commit: +

    {% trans %}Short version of how to generate and use keys if you plan to commit:{% endtrans %}

      -
    • mtn genkey yourname-transport@mail.i2p (use an empty passphrase) -
    • mtn genkey yourname@mail.i2p (enter a passphrase) -
    • mtn pubkey yourname-transport@mail.i2p (send this to a mtn repo operator to get push privileges) -
    • mtn pubkey yourname@mail.i2p (send this to a release manager to get commit privileges - not required for website) -
    • mtn ci -k yourname@mail.i2p (check in with this key) -
    • mtn sync -k yourname-transport@mail.i2p (push with this key) +
    • mtn genkey yourname-transport@mail.i2p ({% trans %}use an empty passphrase{% endtrans %}) +
    • mtn genkey yourname@mail.i2p ({% trans %}enter a passphrase{% endtrans %}) +
    • mtn pubkey yourname-transport@mail.i2p ({% trans email='mtn@welterde.de' %}send this to a mtn repo operator to get push privileges{% endtrans %}) +
    • mtn pubkey yourname@mail.i2p ({% trans email='zzz@'+i2pconv('mail.i2p') %}send this to a release manager to get commit privileges - not required for website{% endtrans %}) +
    • mtn ci -k yourname@mail.i2p ({% trans %}check in with this key{% endtrans %}) +
    • mtn sync -k yourname-transport@mail.i2p ({% trans %}push with this key{% endtrans %})
    - Long version: see the monotone page. +{% trans monotone=site_url('get-involved/guides/monotone') -%} +Long version: see the monotone page. +{%- endtrans %}

    -

    Get to know us!

    -

    - The developers hang around on IRC. They can be reached on the Freenode network, OFTC, and on the I2P internal networks. The usual place to look is #i2p-dev. Join the channel and say hi! - We also have additional guidelines for regular developers. -

    +

    {% trans %}Get to know us!{% endtrans %}

    +

    {% trans guidelines=site_url('get-involved/guides/dev-guidelines') -%} +The developers hang around on IRC. They can be reached on the Freenode network, OFTC, and on the I2P internal networks. The usual place to look is #i2p-dev. Join the channel and say hi! +We also have additional guidelines for regular developers. +{%- endtrans %}

    -

    Translations

    -

    - Website and router console translators: See the New Translators Page - for next steps. -

    +

    {% trans %}Translations{% endtrans %}

    +

    {% trans newtrans=site_url('get-involved/guides/new-translators') -%} +Website and router console translators: See the New Translator's Guide +for next steps. +{%- endtrans %}

    -

    Tools

    -

    +

    {% trans %}Tools{% endtrans %}

    +

    {% trans -%} I2P is open source software that is mostly developed using open sourced toolkits. The I2P project recently acquired a license for the YourKit Java Profiler. Open source projects are eligible to receive a free license provided that YourKit is referenced on the project web site. Please get in touch if you are interested in profiling the I2P codebase. -

    +{%- endtrans %}

    -

    +

    {% trans java='http://www.yourkit.com/java/profiler/index.jsp', dotnet='http://www.yourkit.com/.net/profiler/index.jsp' -%} YourKit is kindly supporting open source projects with its full-featured Java Profiler. YourKit, LLC is the creator of innovative and intelligent tools for profiling Java and .NET applications. Take a look at YourKit's leading software products: -YourKit Java Profiler and -YourKit .NET Profiler. -

    +YourKit Java Profiler and +YourKit .NET Profiler. +{%- endtrans %}

    {% endblock %} From 3429dfcd8cf028df8706354abc4b9a452bfae30a Mon Sep 17 00:00:00 2001 From: str4d Date: Sat, 26 Jan 2013 02:16:34 +0000 Subject: [PATCH 355/650] Fixed tag bug in monotone guide --- i2p2www/pages/site/get-involved/guides/monotone.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/i2p2www/pages/site/get-involved/guides/monotone.html b/i2p2www/pages/site/get-involved/guides/monotone.html index 485c9f59..e7c783a3 100644 --- a/i2p2www/pages/site/get-involved/guides/monotone.html +++ b/i2p2www/pages/site/get-involved/guides/monotone.html @@ -272,7 +272,7 @@ Enter the directory where you initialized i2p.mtn. Depending on whether you want only I2P sources, or also sources for the I2P website and Syndie, you can perform the pull operation in different ways. - {%- trans %} + {%- endtrans %}

    From 5c2efa5a75378aed2e3262faa6b5eb6291af577f Mon Sep 17 00:00:00 2001 From: str4d Date: Sun, 27 Jan 2013 22:57:57 +0000 Subject: [PATCH 356/650] Added translation tags to get-involved/guides/new-translators --- .../get-involved/guides/new-translators.html | 271 ++++++++++-------- 1 file changed, 159 insertions(+), 112 deletions(-) diff --git a/i2p2www/pages/site/get-involved/guides/new-translators.html b/i2p2www/pages/site/get-involved/guides/new-translators.html index 6fa94c57..82754f24 100644 --- a/i2p2www/pages/site/get-involved/guides/new-translators.html +++ b/i2p2www/pages/site/get-involved/guides/new-translators.html @@ -1,81 +1,112 @@ {% extends "global/layout.html" %} -{% block title %}New Translator's Guide{% endblock %} +{% block title %}{% trans %}New Translator's Guide{% endtrans %}{% endblock %} {% block content %} -Here's a very quick guide to getting started. +{% trans %}Here's a very quick guide to getting started.{% endtrans %} -

    How to Translate the Website

    +

    {% trans %}How to Translate the Website{% endtrans %}

    + +

    {% trans transifex='https://www.transifex.com/projects/p/I2P/' -%} +Translation of the website is done with .po files. The easiest way by far to +translate the website is to sign up for an account at +Transifex and request to join a translation team. +Alternatively it can be done "the old way" as outlined below. +{%- endtrans %}

    1. -Preparation +{% trans %}Preparation{% endtrans %}
        -
      1. - Come to #i2p-dev on irc and talk to people. - Claim the language - - To make sure other coworkers don't bump onto the files you are working on, - please update the translation status on this wiki page.
      2. -
      3. - Follow the new developer's guide, - Including the installation of monotone, - checking out i2p.www branch, and generate your own monotone keys. - It is not required that you sign a dev agreement.
      4. +
      5. {% trans url='http://ugha.i2p/i2pTranslation' -%} +Come to #i2p-dev on irc and talk to people. +Claim the language - +To make sure other coworkers don't bump onto the files you are working on, +please update the translation status on this wiki page. +{%- endtrans %}
      6. +
      7. {% trans newdevs=site_url('get-involved/guides/new-developers') -%} +Follow the new developer's guide, +Including the installation of monotone, +checking out i2p.www branch, and generate your own monotone keys. +It is not required that you sign a dev agreement. +{%- endtrans %}
      -
    2. -Create files: - If the file for your language does not exist yet, copy another language file to a new file foo_xx.bar for your language. - Then 'mtn add' the file. - Also add a _layout_xx.html for your language xx. - Add a flag image file for the menu (copy from the router).
    3. +
    4. {% trans -%} +Create files: +If the file for your language does not exist yet: +{%- endtrans %} +
        +
      1. {% trans -%} +Run "./extract-messages.sh" to generate a messages.pot in the base directory. +Edit the header of this file, then run "./init-new-po.sh locale" to generate the file +i2p2www/translations/locale/LC_MESSAGES/messages.po. "mtn add" this file. +{%- endtrans %}
      2. +
      3. {% trans -%} +Edit i2p2www/pages/global/lang.html and add a line for your language (copy an existing line). +{%- endtrans %}
      4. +
      5. {% trans -%} +Add a flag image file to i2p2www/static/images/flags/ for the menu (copy from the router). +{%- endtrans %}
      6. +
      +
    5. -
    6. -Edit files: - Edit _layout_xx.html, _menu.html, and other files with any text editor. - Be sure not to use an editor in HTML mode that reformats everything.
    7. +
    8. {% trans -%} +Edit files: +Edit i2p2www/translations/locale/LC_MESSAGES/messages.po. +To work with .po files efficiently, you may wish to use POEdit +{%- endtrans %}
    9. -
    10. -Check in: - mtn pull, mtn update. Then check in by "mtn ci -k yourname@mail.i2p file1 file2 ..." - This collects the diff info of your changed file into your local repo. Then "mtn sync mtn.i2p2.de -k yourname-transport@mail.i2p i2p.i2p". - This synchronizes your local repo with the repo on the target machine.
    11. - -
    12. -Repeat. Check in often. Don't wait until it is perfect.
    13. +
    14. {% trans -%} +Check in: +"mtn pull", "mtn update". Then check in by "mtn ci -k yourname@mail.i2p file1 file2 ..." +This collects the diff info of your changed file into your local repo. Then "mtn sync mtn.i2p2.de -k yourname-transport@mail.i2p i2p.i2p". +This synchronizes your local repo with the repo on the target machine. +{%- endtrans %}
    15. +
    16. {% trans -%} +Repeat. Check in often. Don't wait until it is perfect. +{%- endtrans %}
    -

    How to Translate the Router Console

    +

    {% trans %}How to Translate the Router Console{% endtrans %}

    -

    The easiest way by far to translate the router console is to sign up for an account at -Transifex and request to join a translation team. -Alternatively it can be done "the old way" as outlined below.

    +

    {% trans transifex='https://www.transifex.com/projects/p/I2P/' -%} +The easiest way by far to translate the router console is to sign up for an account at +Transifex and request to join a translation team. +Alternatively it can be done "the old way" as outlined below. +{%- endtrans %}

    1. -Preparation +{% trans %}Preparation{% endtrans %}
        -
      1. - Come to #i2p-dev on irc and talk to people. - Claim the language - - To make sure other coworkers don't bump onto the files you are working on, - please update the translation status on this wiki page.
      2. -
      3. - Follow the new developer's guide, - Including the installation of monotone and the gettext tools, - checking out i2p.i2p branch, and generate your own monotone keys.
      4. -
      5. - Generate your own gpg key and sign the dev agreement.
      6. -
    2. +
    3. {% trans url='http://ugha.i2p/i2pTranslation' -%} +Come to #i2p-dev on irc and talk to people. +Claim the language - +To make sure other coworkers don't bump onto the files you are working on, +please update the translation status on this wiki page. +{%- endtrans %}
    4. +
    5. {% trans newdevs=site_url('get-involved/guides/new-developers') -%} +Follow the new developer's guide, +including the installation of monotone and the gettext tools, +checking out i2p.i2p branch, and generate your own monotone keys. +{%- endtrans %}
    6. +
    7. {% trans -%} +Generate your own gpg key and sign the dev agreement. +{%- endtrans %}
    8. +
    + -
  • +
  • {% trans -%} Before starting a console translation, better help translate some i2p webpages first. -At least an i2p homepage in your language would be great. This will also help you learn monotone.
  • +At least an i2p homepage in your language would be great. +{%- endtrans %} -
  • -What to translate: - There are about 15 files in the i2p.i2p branch that needs translation: +
  • {% trans -%} +What to translate: +There are about 15 files in the i2p.i2p branch that needs translation: +{%- endtrans %}
    • @@ -98,81 +129,97 @@ What to translate: apps/susidns/locale/messages_xx.po
    - Where xx is your language code like fr/de/ch/zh/... +{% trans -%} +Where xx is your language code like fr/de/ch/zh/... +There may be or may not be files with your lang code. If not, you can create your own. by copying and renaming other language files you know with your own lang code. +{%- endtrans %}
  • - There may be or may not be files with your lang code. If not, you can create your own. by copying and renaming other language files you know with your own lang code. - +
  • {% trans -%} +Create files: +If the file for your language does not exist yet, copy another language file to a new file foo_xx.bar for your language. +Then "mtn add" the file. +After creating a .po file, edit the headers. Then run "ant distclean poupdate". +{%- endtrans %}
  • -
  • -Create files: - If the file for your language does not exist yet, copy another language file to a new file foo_xx.bar for your language. - Then 'mtn add' the file. - After creating a .po file, edit the headers. Then run 'ant distclean poupdate'. -
  • -
  • -Start to work: - Edit the HTML files with any text editor. - Be sure not to use an editor in HTML mode that reformats everything. - To work with .po files efficiently, you may wish to use POEdit -
  • -
  • -Check in: - mtn pull, mtn update. Then check in by "mtn ci -k yourname@mail.i2p file1 file2 ..." - This collects the diff info of your changed file into your local repo. Then "mtn sync mtn.i2p2.de -k yourname-transport@mail.i2p i2p.i2p". - This synchronizes your local repo with the repo on the target machine. -
  • -
  • +
  • {% trans -%} +Start to work: +Edit the HTML files with any text editor. +Be sure not to use an editor in HTML mode that reformats everything. +To work with .po files efficiently, you may wish to use POEdit +{%- endtrans %}
  • + +
  • {% trans -%} +Check in: +"mtn pull", "mtn update". Then check in by "mtn ci -k yourname@mail.i2p file1 file2 ..." +This collects the diff info of your changed file into your local repo. Then "mtn sync mtn.i2p2.de -k yourname-transport@mail.i2p i2p.i2p". +This synchronizes your local repo with the repo on the target machine. +{%- endtrans %}
  • + +
  • {% trans -%} Repeat. Check in often. Don't wait until it is perfect. - -
  • +{%- endtrans %} -

    As you can see, it's not that difficult. -If you have questions about the meaning of the terms in the console, ask in #i2p-dev on IRC. -

    +

    {% trans -%} +As you can see, it's not that difficult. +If you have questions about the meaning of the terms in the console, ask in #i2p-dev on IRC. +{%- endtrans %}

    -

    FAQ

    +

    {% trans %}FAQ{% endtrans %}

    -Q: Why do I have to install monotone, Java, jsp, learn about .po files and html, etc.? Why can't I just do a translation and email it to you? +

    {% trans -%} +Q: Why do I have to install monotone, Java, jsp, learn about .po files and html, etc.? Why can't I just do a translation and email it to you? +{%- endtrans %}

    -Answer: Several reasons: +

    {% trans %}A: Several reasons:{% endtrans %}

      -
    • You might be interested in translating via Transifex. Request to join a translation team here
    • -
    • - We don't have anybody who has time to accept manual contributions and submit them to our source control system on your behalf. Even if we did, it doesn't scale.
    • +
    • {% trans transifex='https://www.transifex.com/projects/p/I2P/' -%} +You might be interested in translating via Transifex. Request to join a translation team here. +{%- endtrans %}
    • -
    • - Maybe you are thinking translation is a one-step process. It isn't. You can't do it all at once. You will make mistakes. You need to test it and tweak it to make it look right before you submit it. Developers will update or add to the English text, thus requiring a translation update. -
    • -
    • - Having translators use a source control system directly provides authentication and accountablility - we know who is doing what, and we can track changes, and revert them if necessary. +
    • {% trans -%} +We don't have anybody who has time to accept manual contributions and submit them to our source control system on your behalf. Even if we did, it doesn't scale. +{%- endtrans %}
    • - -
    • - .po files are not difficult. If you don't want to work directly with them, we recommend 'poedit'. -
    • -
    • - HTML files are not difficult. Just ignore the html stuff and translate the text. -
    • -
    • - Installing and using monotone is not that difficult. Several of the translators and other contributors to I2P are non-programmers, and they use monotone regularly. Monotone is simply a source control system, it is not about "coding". -
    • -
    • - Our items to translate are not "documents". They are html files and po files, with a specific format and character encoding (UTF-8) that must be maintained, and not corrupted by email programs or other methods of transfer. -
    • -
    • - We looked at 'pootle' as a front-end for translators. It didn't work well, needed an administrator, and a pootle-based process would suffer from a number of the above flaws.
    • +
    • {% trans -%} +Maybe you are thinking translation is a one-step process. It isn't. You can't do it all at once. You will make mistakes. You need to test it and tweak it to make it look right before you submit it. Developers will update or add to the English text, thus requiring a translation update. +{%- endtrans %}
    • + +
    • {% trans -%} +Having translators use a source control system directly provides authentication and accountablility - we know who is doing what, and we can track changes, and revert them if necessary. +{%- endtrans %}
    • + +
    • {% trans -%} +.po files are not difficult. If you don't want to work directly with them, we recommend 'poedit'. +{%- endtrans %}
    • + +
    • {% trans -%} +HTML files are not difficult. Just ignore the html stuff and translate the text. +{%- endtrans %}
    • + +
    • {% trans -%} +Installing and using monotone is not that difficult. Several of the translators and other contributors to I2P are non-programmers, and they use monotone regularly. Monotone is simply a source control system, it is not about "coding". +{%- endtrans %}
    • + +
    • {% trans -%} +Our items to translate are not "documents". They are html files and po files, with a specific format and character encoding (UTF-8) that must be maintained, and not corrupted by email programs or other methods of transfer. +{%- endtrans %}
    • + +
    • {% trans -%} +We looked at 'pootle' as a front-end for translators. It didn't work well, needed an administrator, and a pootle-based process would suffer from a number of the above flaws. +{%- endtrans %}
    +

    {% trans -%} In summary: - Yes, we know it is somewhat of a hurdle to get started. It's really the only possible way we can do it. Give it a try, it really isn't that hard. +{%- endtrans %} -

    More Information

    -The #i2p-dev channel on IRC, or the translation forum on zzz.i2p. - - +

    {% trans %}More Information{% endtrans %}

    +

    {% trans zzz=i2pconv('zzz.i2p') -%} +The #i2p-dev channel on IRC, or the translation forum on {{ zzz }}. +{%- endtrans %}

    {% endblock %} From f9d7a43bc7867d01179592a5475b97197b19bee5 Mon Sep 17 00:00:00 2001 From: str4d Date: Tue, 29 Jan 2013 01:30:18 +0000 Subject: [PATCH 357/650] Tweaked "How to connect to IRC" entry of faq --- i2p2www/pages/site/faq.html | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/i2p2www/pages/site/faq.html b/i2p2www/pages/site/faq.html index 0cc3e2f0..f0e8ac46 100644 --- a/i2p2www/pages/site/faq.html +++ b/i2p2www/pages/site/faq.html @@ -423,10 +423,12 @@ See the

    {% trans %}How do I connect to IRC within I2P?{% endtrans %} ({{ _('link') }})

    {% trans %} -On the -I2PTunnel configuration page, -start the ircProxy. -Then tell your IRC client to connect to localhost port 6668. +A tunnel to the main IRC server within I2P, Irc2P, is created when I2P is installed (see +the I2PTunnel configuration page), +and is automatically started when the I2P router starts. To connect to it, tell your IRC +client to connect to localhost 6668. XChat-like client users can create a +new network with the server localhost/6668 (remember to tick "Bypass +proxy server" if you have a proxy server configured). {%- endtrans %}

    {% trans %}How can I access the web console from my other machines or password protect it?{% endtrans %} From 611a8f05dc378218128ef9197484184bed411fe5 Mon Sep 17 00:00:00 2001 From: str4d Date: Wed, 30 Jan 2013 03:47:49 +0000 Subject: [PATCH 358/650] Added translation tags to docs/*.html --- i2p2www/pages/site/docs/index.html | 237 +++++++++--------- i2p2www/pages/site/docs/naming.html | 359 ++++++++++++++++++--------- i2p2www/pages/site/docs/plugins.html | 229 +++++++++++------ i2p2www/pages/site/docs/ports.html | 15 +- 4 files changed, 534 insertions(+), 306 deletions(-) diff --git a/i2p2www/pages/site/docs/index.html b/i2p2www/pages/site/docs/index.html index d6d38f20..5f8a2341 100644 --- a/i2p2www/pages/site/docs/index.html +++ b/i2p2www/pages/site/docs/index.html @@ -1,52 +1,56 @@ {% extends "global/layout.html" %} -{% block title %}Index to Technical Documentation{% endblock %} -{% block lastupdated %}May 2012{% endblock %} +{% block title %}{% trans %}Index to Technical Documentation{% endtrans %}{% endblock %} +{% block lastupdated %}{% trans %}May 2012{% endtrans %}{% endblock %} {% block accuratefor %}0.9{% endblock %} {% block content %} -

    How does I2P work?

    +

    {% trans %}How does I2P work{% endtrans %}

    -

    +

    {% trans -%} Following is an index to the technical documentation for I2P. -

    +{%- endtrans %}

    + +

    {% trans -%} This index is ordered from the highest to lowest layers. The higher layers are for "clients" or applications; the lower layers are inside the router itself. The interface between applications and the router is the I2CP (I2P Control Protocol) API. -

    +{%- endtrans %}

    + +

    {% trans trac=i2pconv('trac.i2p2.i2p') -%} The I2P Project is committed to maintaining accurate, current documentation. If you find any inaccuracies in the documents linked below, please -enter a ticket identifying the problem. -

    +enter a ticket identifying the problem. +{%- endtrans %}

    -

    Index to Technical Documentation

    +

    {% trans %}Index to Technical Documentation{% endtrans %}

    -

    Overview

    +

    {% trans %}Overview{% endtrans %}

    -

    Application-Layer Topics

    +

    {% trans %}Application-Layer Topics{% endtrans %}

    -

    Application Layer API and Protocols

    -High-level, easy-to-use APIs for applications written in any language to send and receive data. +

    {% trans %}Application Layer API and Protocols{% endtrans %}

    +{% trans %}High-level, easy-to-use APIs for applications written in any language to send and receive data.{% endtrans %} -

    End-to-End Transport API and Protocols

    -The end-to-end protocols used by clients for reliable and unreliable communication. +

    {% trans %}End-to-End Transport API and Protocols{% endtrans %}

    +{% trans %}The end-to-end protocols used by clients for reliable and unreliable communication.{% endtrans %} -

    Client-to-Router Interface API and Protocol

    +

    {% trans %}Client-to-Router Interface API and Protocol{% endtrans %}

    +{% trans -%} The lowest-level API used for clients (applications) to send and receive traffic to a router. Traditionally used only by Java applications and higher-level APIs. +{%- endtrans %} -

    End-to-End Encryption

    -How client messages are end-to-end encrypted by the router. +

    {% trans %}End-to-End Encryption{% endtrans %}

    +{% trans %}How client messages are end-to-end encrypted by the router.{% endtrans %} -

    Network Database

    -Distributed storage and retrieval of information about routers and clients. +

    {% trans %}Network Database{% endtrans %}

    +{% trans %}Distributed storage and retrieval of information about routers and clients.{% endtrans %} -

    Router Message Protocol

    -I2P is a message-oriented router. The messages sent between routers are defined by the I2NP protocol. +

    {% trans %}Router Message Protocol{% endtrans %}

    +{% trans %}I2P is a message-oriented router. The messages sent between routers are defined by the I2NP protocol.{% endtrans %} -

    Tunnels

    -Selecting peers, requesting tunnels through those peers, and encrypting and routing messages through these tunnels. +

    {% trans %}Tunnels{% endtrans %}

    +{% trans %}Selecting peers, requesting tunnels through those peers, and encrypting and routing messages through these tunnels.{% endtrans %} -

    Transport Layer

    -The protocols for direct (point-to-point) router to router communication. +

    {% trans %}Transport Layer{% endtrans %}

    +{% trans %}The protocols for direct (point-to-point) router to router communication.{% endtrans %} -

    Other Router Topics

    +

    {% trans %}Other Router Topics{% endtrans %}

    -

    Developer's Guides and Resources

    +

    {% trans %}Developer's Guides and Resources{% endtrans %}

    diff --git a/i2p2www/pages/site/docs/naming.html b/i2p2www/pages/site/docs/naming.html index 371c8784..c8341834 100644 --- a/i2p2www/pages/site/docs/naming.html +++ b/i2p2www/pages/site/docs/naming.html @@ -1,19 +1,19 @@ {% extends "global/layout.html" %} -{% block title %}Naming and Addressbook{% endblock %} -{% block lastupdated %}March 2012{% endblock %} +{% block title %}{% trans %}Naming and Addressbook{% endtrans %}{% endblock %} +{% block lastupdated %}{% trans %}March 2012{% endtrans %}{% endblock %} {% block accuratefor %}0.8.13{% endblock %} {% block content %} -

    Naming in I2P

    -

    Overview

    +

    {% trans %}Naming in I2P{% endtrans %}

    +

    {% trans %}Overview{% endtrans %}

    -

    +

    {% trans -%} I2P ships with a generic naming library and a base implementation designed to work off a local name to destination mapping, as well as an add-on application called the addressbook. I2P also supports Base32 hostnames similar to Tor's .onion addresses. -

    +{%- endtrans %}

    -

    +

    {% trans -%} The addressbook is a web-of-trust driven secure, distributed, and human readable naming system, sacrificing only the call for all human readable names to be globally unique by mandating only @@ -25,116 +25,150 @@ by adding in the entries provided through a third party, or (if some people orga a series of published addressbooks using a first come first serve registration system) people can choose to treat these addressbooks as name servers, emulating traditional DNS. -

    +{%- endtrans %}

    -

    +

    {% trans namingdiscussion=site_url('docs/discussions/naming') -%} NOTE: For the reasoning behind the I2P naming system, common arguments against it -and possible alternatives see the naming discussion +and possible alternatives see the naming discussion page. -

    +{%- endtrans %}

    -

    Naming System Components

    -

    +

    {% trans %}Naming System Components{% endtrans %}

    + +

    {% trans -%} There is no central naming authority in I2P. All hostnames are local. -

    -

    +{%- endtrans %}

    + +

    {% trans -%} The naming system is quite simple and most of it is implemented in applications external to the router, but bundled with the I2P distribution. The components are: -

    +{%- endtrans %}

    +
      -
    1. The client application which does local lookups in hosts.txt +
    2. {% trans -%} +The client application which does local lookups in hosts.txt and also takes care of the Base32 hostnames. -
    3. The HTTP proxy which asks the router for lookups and points -the user to remote jump services to assist with failed lookups -
    4. HTTP host-add forms which allow users to add hosts to their local hosts.txt -
    5. HTTP jump services which provide their own lookups and redirection -
    6. The addressbook application which merges external -host lists, retrieved via HTTP, with the local list -
    7. The SusiDNS application which is a simple web front-end +{%- endtrans %}
    8. +
    9. {% trans -%} +The HTTP proxy which asks the router for lookups and points +the user to remote jump services to assist with failed lookups. +{%- endtrans %}
    10. +
    11. {% trans -%} +HTTP host-add forms which allow users to add hosts to their local hosts.txt +{%- endtrans %}
    12. +
    13. {% trans -%} +HTTP jump services which provide their own lookups and redirection. +{%- endtrans %}
    14. +
    15. {% trans -%} +The addressbook application which merges external +host lists, retrieved via HTTP, with the local list. +{%- endtrans %}
    16. +
    17. {% trans -%} +The SusiDNS application which is a simple web front-end for addressbook configuration and viewing of the local host lists. +{%- endtrans %}
    -

    Naming Files and Lookups

    -

    + +

    {% trans %}Naming Files and Lookups{% endtrans %}

    + +

    {% trans namingdiscussion=site_url('docs/discussions/naming'), todo=site_url('get-involved/todo') -%} All destinations in I2P are 516-byte (or longer) keys. (To be more precise, it is a 256-byte public key plus a 128-byte signing key plus a null certificate, which in Base64 representation is 516 bytes. -Certificates are not used now, +Certificates are not used now, if they are, the keys will be longer. -One possible use of certificates is for proof of work.) -

    +One possible use of certificates is for proof of work.) +{%- endtrans %}

    + +

    {% trans -%} If an application (i2ptunnel or the HTTP proxy) wishes to access a destination by name, the router does a very simple local lookup to resolve that name. The client application (technically, the client side of I2CP in the I2P API) does a linear search through three local files, in order, to look up host names and convert them to a 516-byte destination key: +{%- endtrans %}

    +
    1. privatehosts.txt
    2. userhosts.txt
    3. hosts.txt
    -

    The lookup is case-insensitive. + +

    {% trans -%} +The lookup is case-insensitive. The first match is used, and conflicts are not detected. There is no enforcement of naming rules in lookups. -

    +{%- endtrans %}

    + +

    {% trans namingdiscussion=site_url('docs/discussions/naming') -%} Lookups are cached for a few minutes. There is an experimental facility for real-time lookups (a la DNS) over the network within the router, although it is not enabled by default -(see "EepGet" under Alternatives on the discussion page). -

    +(see "EepGet" under Alternatives on the discussion page). +{%- endtrans %}

    -

    HTTP Proxy

    -

    The HTTP proxy does a lookup via the router for all hostnames ending in '.i2p'. +

    {% trans %}HTTP Proxy{% endtrans %}

    + +

    {% trans -%} +The HTTP proxy does a lookup via the router for all hostnames ending in '.i2p'. Otherwise, it forwards the request to a configured HTTP outproxy. Thus, in practice, all HTTP (eepsite) hostnames must end in the pseudo-Top Level Domain '.i2p'. -

    +{%- endtrans %}

    -

    +

    {% trans -%} If the router fails to resolve the hostname, the HTTP proxy returns an error page to the user with links to several "jump" services. See below for details. -

    +{%- endtrans %}

    -

    Addressbook

    -

    Incoming Subscriptions and Merging

    -

    +

    {% trans %}Addressbook{% endtrans %}

    +

    {% trans %}Incoming Subscriptions and Merging{% endtrans %}

    + +

    {% trans -%} The addressbook application periodically retrieves other users' hosts.txt files and merges them with the local hosts.txt, after several checks. Naming conflicts are resolved on a first-come first-served basis. -

    +{%- endtrans %}

    + +

    {% trans -%} Subscribing to another user's hosts.txt file involves giving them a certain amount of trust. You do not want them, for example, 'hijacking' a new site by quickly entering in their own key for a new site before passing the new host/key entry to you. -

    +{%- endtrans %}

    + +

    {% trans -%} For this reason, the only subscription configured by default is http://www.i2p2.i2p/hosts.txt, which contains a copy of the hosts.txt included in the I2P release. Users must configure additional subscriptions in their local addressbook application (via subscriptions.txt or SusiDNS). -

    +{%- endtrans %}

    + +

    {% trans -%} Some other public addressbook subscription links: -

    +{%- endtrans %}

    -

    +

    {% trans -%} The operators of these services may have various policies for listing hosts. Presence on this list does not imply endorsement. -

    +{%- endtrans %}

    -

    Naming Rules

    -

    +

    {% trans %}Naming Rules{% endtrans %}

    +

    {% trans -%} While there are hopefully not any technical limitations within I2P on host names, the addressbook enforces several restrictions on host names imported from subscriptions. @@ -143,30 +177,80 @@ and for security. The rules are essentially the same as those in RFC2396 Section 3.2.2. Any hostnames violating these rules may not be propagated to other routers. -

    -Naming rules:

    +{%- endtrans %}

    + +

    {% trans -%} +Naming rules: +{%- endtrans %}

      -
    • Names are converted to lower case on import. -
    • Names are checked for conflict with existing names in the existing userhosts.txt and hosts.txt +
    • {% trans -%} +Names are converted to lower case on import. +{%- endtrans %}
    • + +
    • {% trans -%} +Names are checked for conflict with existing names in the existing userhosts.txt and hosts.txt (but not privatehosts.txt) after conversion to lower case. -
    • Must contain only [a-z] [0-9] '.' and '-' after conversion to lower case. -
    • Must not start with '.' or '-'. -
    • Must end with '.i2p'. -
    • 67 characters maximum, including the '.i2p'. -
    • Must not contain '..'. -
    • Must not contain '.-' or '-.' (as of 0.6.1.33). -
    • Must not contain '--' except in 'xn--' for IDN. -
    • Base32 hostnames (*.b32.i2p) are not allowed. -
    • Certain hostnames reserved for project use are not allowed - (proxy.i2p, router.i2p, console.i2p, *.proxy.i2p, *.router.i2p, *.console.i2p, and others) -
    • Keys are checked for base64 validity. -
    • Keys are checked for conflict with existing keys in hosts.txt (but not privatehosts.txt). -
    • Minimum key length 516 bytes. -
    • Maximum key length 616 bytes (to account for certs up to 100 bytes). +{%- endtrans %}
    • + +
    • {% trans -%} +Must contain only [a-z] [0-9] '.' and '-' after conversion to lower case. +{%- endtrans %}
    • + +
    • {% trans -%} +Must not start with '.' or '-'. +{%- endtrans %}
    • + +
    • {% trans -%} +Must end with '.i2p'. +{%- endtrans %}
    • + +
    • {% trans -%} +67 characters maximum, including the '.i2p'. +{%- endtrans %}
    • + +
    • {% trans -%} +Must not contain '..'. +{%- endtrans %}
    • + +
    • {% trans -%} +Must not contain '.-' or '-.' (as of 0.6.1.33). +{%- endtrans %}
    • + +
    • {% trans -%} +Must not contain '--' except in 'xn--' for IDN. +{%- endtrans %}
    • + +
    • {% trans -%} +Base32 hostnames (*.b32.i2p) are not allowed. +{%- endtrans %}
    • + +
    • {% trans -%} +Certain hostnames reserved for project use are not allowed +(proxy.i2p, router.i2p, console.i2p, *.proxy.i2p, *.router.i2p, *.console.i2p, and others) +{%- endtrans %}
    • + +
    • {% trans -%} +Keys are checked for base64 validity. +{%- endtrans %}
    • + +
    • {% trans -%} +Keys are checked for conflict with existing keys in hosts.txt (but not privatehosts.txt). +{%- endtrans %}
    • + +
    • {% trans -%} +Minimum key length 516 bytes. +{%- endtrans %}
    • + +
    • {% trans -%} +Maximum key length 616 bytes (to account for certs up to 100 bytes). +{%- endtrans %}
    -

    + +

    {% trans -%} Any name received via subscription that passes all the checks is added to the local hosts.txt. -

    +{%- endtrans %}

    + +

    {% trans -%} Note that the '.' symbols in a host name are of no significance, and do not denote any actual naming or trust hierarchy. If the name 'host.i2p' already exists, there is nothing @@ -175,70 +259,110 @@ and this name can be imported by others' addressbook. Methods to deny subdomains to non-domain 'owners' (certificates?), and the desirability and feasibility of these methods, are topics for future discussion. -

    +{%- endtrans %}

    + +

    {% trans -%} International Domain Names (IDN) also work in i2p (using punycode 'xn--' form). To see IDN .i2p domain names rendered correctly in Firefox's location bar, add 'network.IDN.whitelist.i2p (boolean) = true' in about:config. -

    +{%- endtrans %}

    + +

    {% trans -%} As the addressbook application does not use privatehosts.txt at all, in practice this file is the only place where it is appropriate to place private aliases or "pet names" for sites already in hosts.txt. -

    +{%- endtrans %}

    -

    Outgoing Subscriptions

    -

    +

    {% trans %}Outgoing Subscriptions{% endtrans %}

    +

    {% trans -%} Addressbook will publish the merged hosts.txt to a location (traditionally hosts.txt in the local eepsite's home directory) to be accessed by others for their subscriptions. This step is optional and is disabled by default. -

    +{%- endtrans %}

    Hosting and HTTP Transport Issues

    -

    +

    {% trans -%} The addressbook application, together with eepget, saves the Etag and/or Last-Modified information returned by the web server of the subscription. This greatly reduces the bandwidth required, as the web server will return a '304 Not Modified' on the next fetch if nothing has changed. -

    -

    +{%- endtrans %}

    + +

    {% trans -%} However the entire hosts.txt is downloaded if it has changed. See below for discussion on this issue. -

    -

    +{%- endtrans %}

    + +

    {% trans -%} Hosts serving a static hosts.txt or an equivalent CGI application are strongly encouraged to deliver a Content-Length header, and either an Etag or Last-Modified header. Also ensure that the server delivers a '304 Not Modified' when appropriate. This will dramatically reduce the network bandwidth, and reduce chances of corruption. -

    +{%- endtrans %}

    -

    Host Add Services

    -

    +

    {% trans %}Host Add Services{% endtrans %}

    +

    {% trans -%} A host add service is a simple CGI application that takes a hostname and a Base64 key as parameters and adds that to its local hosts.txt. If other routers subscribe to that hosts.txt, the new hostname/key will be propagated through the network. -

    +{%- endtrans %}

    + +

    {% trans -%} It is recommended that host add services impose, at a minimum, the restrictions imposed by the addressbook application listed above. Host add services may impose additional restrictions on hostnames and keys, for example: -

    +{%- endtrans %}

      -
    • A limit on number of 'subdomains'. -
    • Authorization for 'subdomains' through various methods. -
    • Hashcash or signed certificates. -
    • Editorial review of host names and/or content. -
    • Categorization of hosts by content. -
    • Reservation or rejection of certain host names. -
    • Restrictions on the number of names registered in a given time period. -
    • Delays between registration and publication. -
    • Requirement that the host be up for verification. -
    • Expiration and/or revocation. -
    • IDN spoof rejection. +
    • {% trans -%} +A limit on number of 'subdomains'. +{%- endtrans %}
    • + +
    • {% trans -%} +Authorization for 'subdomains' through various methods. +{%- endtrans %}
    • + +
    • {% trans -%} +Hashcash or signed certificates. +{%- endtrans %}
    • + +
    • {% trans -%} +Editorial review of host names and/or content. +{%- endtrans %}
    • + +
    • {% trans -%} +Categorization of hosts by content. +{%- endtrans %}
    • + +
    • {% trans -%} +Reservation or rejection of certain host names. +{%- endtrans %}
    • + +
    • {% trans -%} +Restrictions on the number of names registered in a given time period. +{%- endtrans %}
    • + +
    • {% trans -%} +Delays between registration and publication. +{%- endtrans %}
    • + +
    • {% trans -%} +Requirement that the host be up for verification. +{%- endtrans %}
    • + +
    • {% trans -%} +Expiration and/or revocation. +{%- endtrans %}
    • + +
    • {% trans -%} +IDN spoof rejection. +{%- endtrans %}
    -

    Jump Services

    -

    +

    {% trans %}Jump Services{% endtrans %}

    +

    {% trans -%} A jump service is a simple CGI application that takes a hostname as a parameter and returns a 301 redirect to the proper URL with a ?i2paddresshelper=key string appended. @@ -246,34 +370,41 @@ The HTTP proxy will interpret the appended string and use that key as the actual destination. In addition, the proxy will cache that key so the address helper is not necessary until restart. -

    -

    +{%- endtrans %}

    + +

    {% trans -%} Note that, like with subscriptions, using a jump service implies a certain amount of trust, as a jump service could maliciously redirect a user to an incorrect destination. -

    -

    +{%- endtrans %}

    + +

    {% trans -%} To provide the best service, a jump service should be subscribed to several hosts.txt providers so that its local host list is current. -

    +{%- endtrans %}

    SusiDNS

    -

    +

    {% trans -%} SusiDNS is simply a web interface front-end to configuring addressbook subscriptions and accessing the four addressbook files. All the real work is done by the 'addressbook' application. -

    +{%- endtrans %}

    + +

    {% trans -%} Currently, there is little enforcement of addressbook naming rules within SusiDNS, so a user may enter hostnames locally that would be rejected by the addressbook subscription rules. -

    +{%- endtrans %}

    -

    Base32 Names

    -

    I2P supports Base32 hostnames similar to Tor's .onion addresses. +

    {% trans %}Base32 Names{% endtrans %}

    +

    {% trans -%} +I2P supports Base32 hostnames similar to Tor's .onion addresses. Base32 addresses are much shorter and easier to handle than the full 516-character Base64 Destinations or addresshelpers. Example: ukeu3k5oycgaauneqgtnvselmt4yemvoilkln7jpvamvfx7dnkdq.b32.i2p -

    +{%- endtrans %}

    + +

    {% trans -%} In Tor, the address is 16 characters (80 bits), or half of the SHA-1 hash. I2P uses 52 characters (256 bits) to represent the full SHA-256 hash. The form is {52 chars}.b32.i2p. @@ -283,10 +414,12 @@ Base32 lookups will only be successful when the Destination is up and publishing a LeaseSet. Because resolution may require a network database lookup, it may take significantly longer than a local address book lookup. -

    +{%- endtrans %}

    + +

    {% trans -%} Base32 addresses can be used in most places where hostnames or full destinations are used, however there are some exceptions where they may fail if the name does not immediately resolve. I2PTunnel will fail, for example, if the name does not resolve to a destination. -

    +{%- endtrans %}

    {% endblock %} diff --git a/i2p2www/pages/site/docs/plugins.html b/i2p2www/pages/site/docs/plugins.html index 9fbc4d2f..0f913c1f 100644 --- a/i2p2www/pages/site/docs/plugins.html +++ b/i2p2www/pages/site/docs/plugins.html @@ -1,108 +1,193 @@ {% extends "global/layout.html" %} -{% block title %}Plugins{% endblock %} -{% block lastupdated %}June 2012{% endblock %} +{% block title %}{% trans %}Plugins{% endtrans %}{% endblock %} +{% block lastupdated %}{% trans %}June 2012{% endtrans %}{% endblock %} {% block accuratefor %}0.9{% endblock %} {% block content %} -

    I2P Plugins

    +

    {% trans %}I2P Plugins{% endtrans %}

    -

    General Information

    -

    +

    {% trans %}General Information{% endtrans %}

    +

    {% trans -%} I2P includes a plugin architecture to support easy development and installation of additional software. -

    +{%- endtrans %}

    -

    +

    {% trans -%} There are now plugins available that support distributed email, blogs, IRC clients, distributed file storage, wikis, and more. -

    +{%- endtrans %}

    -

    +

    {% trans -%} Benefits to i2p users and app developers: -

    +{%- endtrans %}

      -
    • Easy distribution of applications
    • -
    • Allows innovation and use of additional libraries without worrying about -increasing the size of i2pupdate.sud
    • -
    • Support large or special-purpose applications that would never be bundled -with the I2P installation
    • -
    • Cryptographically signed and verified applications
    • -
    • Automatic updates of applications, just like for the router
    • -
    • Separate initial install and update packages, if desired, for smaller update downloads
    • -
    • One-click installation of applications. No more asking users to modify -wrapper.config or clients.config
    • -
    • Isolate applications from the base $I2P installation
    • -
    • Automatic compatibility checking for I2P version, Java version, Jetty -version, and previous installed application version
    • -
    • Automatic link addition in console
    • -
    • Automatic startup of application, including modifying classpath, without requiring a restart
    • -
    • Automatic integration and startup of webapps into console Jetty instance
    • -
    • Facilitate creation of 'app stores' like the one at plugins.i2p
    • -
    • One-click uninstall
    • -
    • Language and theme packs for the console
    • -
    • Bring detailed application information to the router console
    • -
    • Non-java applications also supported
    • +
    • {% trans -%} +Easy distribution of applications +{%- endtrans %}
    • + +
    • {% trans -%} +Allows innovation and use of additional libraries without worrying about +increasing the size of i2pupdate.sud +{%- endtrans %}
    • + +
    • {% trans -%} +Support large or special-purpose applications that would never be bundled +with the I2P installation +{%- endtrans %}
    • + +
    • {% trans -%} +Cryptographically signed and verified applications +{%- endtrans %}
    • + +
    • {% trans -%} +Automatic updates of applications, just like for the router +{%- endtrans %}
    • + +
    • {% trans -%} +Separate initial install and update packages, if desired, for smaller update downloads +{%- endtrans %}
    • + +
    • {% trans -%} +One-click installation of applications. No more asking users to modify +wrapper.config or clients.config +{%- endtrans %}
    • + +
    • {% trans -%} +Isolate applications from the base $I2P installation +{%- endtrans %}
    • + +
    • {% trans -%} +Automatic compatibility checking for I2P version, Java version, Jetty +version, and previous installed application version +{%- endtrans %}
    • + +
    • {% trans -%} +Automatic link addition in console +{%- endtrans %}
    • + +
    • {% trans -%} +Automatic startup of application, including modifying classpath, without requiring a restart +{%- endtrans %}
    • + +
    • {% trans -%} +Automatic integration and startup of webapps into console Jetty instance +{%- endtrans %}
    • + +
    • {% trans pluginsite=i2pconv('plugins.i2p') -%} +Facilitate creation of 'app stores' like the one at +{{ pluginsite }} +{%- endtrans %}
    • + +
    • {% trans -%} +One-click uninstall +{%- endtrans %}
    • + +
    • {% trans -%} +Language and theme packs for the console +{%- endtrans %}
    • + +
    • {% trans -%} +Bring detailed application information to the router console +{%- endtrans %}
    • + +
    • {% trans -%} +Non-java applications also supported +{%- endtrans %}
    -

    Required I2P version

    -

    0.7.12 or newer.

    +

    {% trans %}Required I2P version{% endtrans %}

    +

    {% trans %}0.7.12 or newer.{% endtrans %}

    -

    Installation

    -

    To install and start a plugin, copy the .xpi2p install link to -the form at the bottom of configclients.jsp in - your router console and click the "install plugin" button. After a +

    {% trans %}Installation{% endtrans %}

    +

    {% trans -%} +To install and start a plugin, copy the .xpi2p install link to +the form at the bottom of +configclients.jsp in +your router console and click the "install plugin" button. After a plugin is installed and started, a link to the plugin will usually appear at -the top of your summary bar.

    +the top of your summary bar. +{%- endtrans %}

    -

    To update a plugin to the latest version, just click the update button on +

    {% trans -%} +To update a plugin to the latest version, just click the update button on configclients.jsp. There is also a button to check if the plugin has a more recent version, as well as a button to check for updates for all plugins. Plugins will be checked for updates automatically when updating to a new I2P release (not including dev -builds).

    +builds). +{%- endtrans %}

    -

    Development

    -

    See the latest plugin specification and the plugin forum on zzz.i2p.

    See -also the sources for plugins developed by various people. Some plugins, such -as snowman, were developed -specifically as examples.

    +

    {% trans %}Development{% endtrans %}

    +

    {% trans pluginspec=site_url('docs/spec/plugin'), zzz=i2pconv('zzz.i2p') -%} +See the latest plugin specification and the +plugin forum on {{ zzz }}. +{%- endtrans %}

    -

    Developers wanted! Plugins are a great way to learn more about I2P -or easily add some feature.

    +

    {% trans pluginsite=i2pconv('plugins.i2p') -%} +See also the sources for plugins developed by various people. Some plugins, such +as snowman, were developed +specifically as examples. +{%- endtrans %}

    -

    Getting Started

    -

    To create a plugin from an existing binary package you will need to get -makeplugin.sh from the - i2p.scripts branch in monotone.

    +

    {% trans -%} +Developers wanted! Plugins are a great way to learn more about I2P +or easily add some feature. +{%- endtrans %}

    + +

    {% trans %}Getting Started{% endtrans %}

    +

    {% trans url='http://'+i2pconv('trac.i2p2.i2p')+'/browser/plugin/makeplugin.sh?rev=776519571fda0689ef09c42f66e7398f30432e87' -%} +To create a plugin from an existing binary package you will need to get +makeplugin.sh from the i2p.scripts branch in monotone. +{%- endtrans %}

    -

    Known Issues

    -

    Note that the router's plugin architecture does NOT currently -provide any additional security isolation or sandboxing of plugins.

    +

    {% trans %}Known Issues{% endtrans %}

    +

    {% trans -%} +Note that the router's plugin architecture does NOT currently +provide any additional security isolation or sandboxing of plugins. +{%- endtrans %}

      -
    • Updates of a plugin with included jars (not wars) won't be recognized if +
    • {% trans -%} +Updates of a plugin with included jars (not wars) won't be recognized if the plugin was already run, as it requires class loader trickery to flush the -class cache; a full router restart is required.
    • -
    • The stop button may be displayed even if there is nothing to stop.
    • -
    • Plugins running in a separate JVM create a logs/ directory in -$CWD.
    • -
    • No initial keys are present, except for those of jrandom and zzz (using the +class cache; a full router restart is required. +{%- endtrans %}
    • + +
    • {% trans -%} +The stop button may be displayed even if there is nothing to stop. +{%- endtrans %}
    • + +
    • {% trans -%} +Plugins running in a separate JVM create a logs/ directory in +$CWD. +{%- endtrans %}
    • + +
    • {% trans -%} +No initial keys are present, except for those of jrandom and zzz (using the same keys as for router update), so the first key seen for a signer is -automatically accepted—there is no signing key authority.
    • -
    • When deleting a plugin, the directory is not always deleted, especially on -Windows.
    • -
    • Installing a plugin requiring Java 1.6 on a Java 1.5 machine will result -in a "plugin is corrupt" message if pack200 compression of the plugin file is -used.
    • -
    • Theme and translation plugins are untested.
    • -
    • Disabling autostart doesn't always work.
    • +automatically accepted—there is no signing key authority. +{%- endtrans %} + +
    • {% trans -%} +When deleting a plugin, the directory is not always deleted, especially on +Windows. +{%- endtrans %}
    • + +
    • {% trans -%} +Installing a plugin requiring Java 1.6 on a Java 1.5 machine will result in a +"plugin is corrupt" message if pack200 compression of the plugin file is used. +{%- endtrans %}
    • + +
    • {% trans -%} +Theme and translation plugins are untested. +{%- endtrans %}
    • + +
    • {% trans -%} +Disabling autostart doesn't always work. +{%- endtrans %}
    diff --git a/i2p2www/pages/site/docs/ports.html b/i2p2www/pages/site/docs/ports.html index 22dcfd89..19f0d864 100644 --- a/i2p2www/pages/site/docs/ports.html +++ b/i2p2www/pages/site/docs/ports.html @@ -1,20 +1,23 @@ {% extends "global/layout.html" %} -{% block title %}Ports Used by I2P{% endblock %} -{% block lastupdated %}May 2012{% endblock %} +{% block title %}{% trans %}Ports Used by I2P{% endtrans %}{% endblock %} +{% block lastupdated %}{% trans %}May 2012{% endtrans %}{% endblock %} {% block accuratefor %}0.9{% endblock %} {% block content %} -

    +

    {% trans -%} These are the ports used or reserved by I2P, including those for known plugins, common alternates, and some typical related applications. -

    +{%- endtrans %}

    + +

    {% trans faq=site_url('faq') -%} Note that many of these are not enabled by default. -There is more information in the FAQ. +There is more information in the FAQ. See also the documentation for individual plugins. Plugin authors please add any ports you use here. For new plugins, we recommend using the next available port in the 766x range. +{%- endtrans %}

    @@ -45,7 +48,7 @@ in the 766x range. - + From 32c8fc9268cb8db71fdf8c507b9847c16d6772f7 Mon Sep 17 00:00:00 2001 From: str4d Date: Wed, 30 Jan 2013 20:23:24 +0000 Subject: [PATCH 359/650] Added translation tags to docs/api/* except SAM pages --- i2p2www/pages/site/docs/api/bob.html | 144 ++++- i2p2www/pages/site/docs/api/i2pcontrol.html | 261 +++++---- i2p2www/pages/site/docs/api/i2ptunnel.html | 123 +++-- .../pages/site/docs/api/ministreaming.html | 43 +- i2p2www/pages/site/docs/api/socks.html | 71 +-- i2p2www/pages/site/docs/api/streaming.html | 508 ++++++++++-------- 6 files changed, 680 insertions(+), 470 deletions(-) diff --git a/i2p2www/pages/site/docs/api/bob.html b/i2p2www/pages/site/docs/api/bob.html index ef058796..f0cbf0bd 100644 --- a/i2p2www/pages/site/docs/api/bob.html +++ b/i2p2www/pages/site/docs/api/bob.html @@ -1,48 +1,77 @@ {% extends "global/layout.html" %} {% block title %}BOB{% endblock %} +{% block lastupdated %}{% trans %}August 2010{% endtrans %}{% endblock %} {% block content %} -
    -Technical differences from SAM (for the better?)
    +

    {% trans %}BOB - Basic Open Bridge{% endtrans %}

    +

    {% trans %}Technical differences from SAM (for the better?){% endtrans %}

    +

    {% trans -%} BOB has separate command and data channels. One, an application command channel socket to router to configure. Two, the application data sockets to/from router that carry only data. The command channel is only needed for making or setting the initial destination key, and to set the destination key to port bindings. All connections run in parallel. +{%- endtrans %}

    -SAM One connection that does everything, and you need to parse every packet. +

    {% trans -%} +SAM has one connection that does everything, and you need to parse every packet. +{%- endtrans %}

    +

    {% trans -%} BOB does not hold keypair values, nor does the router. Your application holds the keypair values. This is to reduce any extra complexity in the router code, it also adds to your privacy. +{%- endtrans %}

    +

    {% trans -%} SAM router stores every keypair you ever make. +{%- endtrans %}

    +

    {% trans -%} Those are the important differences. +{%- endtrans %}

    -KEYS = keypair public+private, these are BASE64 -KEY = public key, also BASE64 +

    {% trans -%} +KEYS = keypair public+private, these are BASE64 +{%- endtrans %}

    +

    {% trans -%} +KEY = public key, also BASE64 +{%- endtrans %}

    +

    {% trans -%} +ERROR as is implied returns the message "ERROR "+DESCRIPTION+"\n", where the DESCRIPTION is what went wrong. +{%- endtrans %}

    +

    {% trans -%} +OK returns "OK", and if data is to be returned, it is on the same line. OK means the command is finished. +{%- endtrans %}

    +

    {% trans -%} +DATA lines contain information that you requested. There may be multiple DATA lines per request. +{%- endtrans %}

    -ERROR as is implied returns the message "ERROR "+DESCRIPTION+"\n", where the DESCRIPTION is what went wrong. -OK returns "OK", and if data is to be returned, it is on the same line. OK means the command is finished. -DATA lines contain information that you requested. There may be multiple DATA lines per request. - -NOTE: The help command is the ONLY command that has an exception to +

    {% trans -%} +NOTE: The help command is the ONLY command that has an exception to the rules... it can actually return nothing! This is intentional, since help is a HUMAN and not an APPLICATION command. +{%- endtrans %}

    -PLEASE NOTE: +

    {% trans -%} +PLEASE NOTE: For CURRENT details on the commands PLEASE use the built-in help command. Just telnet to localhost 2827 and type help and you can get full documentation on each command. +{%- endtrans %}

    +

    {% trans -%} Commands never get obsoleted or changed, however new commands do get added from time to time. +{%- endtrans %}

    -Here are the commands we have as of this writing (Aug 2010). +

    {% trans -%} +Here are the commands we have as of this writing: +{%- endtrans %}

    -COMMAND OPERAND RETURNS +
    +{{ _('COMMAND') }}     {{ _('OPERAND') }}                             {{ _('RETURNS') }}
     help        (optional command to get help on)   NOTHING or OK and description of the command
     clear                                           ERROR or OK
     getdest                                         ERROR or OK and KEY
    @@ -67,12 +96,16 @@ stop                                            ERROR or OK
     verify      KEY                                 ERROR or OK
     visit                                           OK, and dumps BOB's threads to the wrapper.log
     zap                                             nothing, quits BOB
    +
    +

    {% trans -%} Once set up, all TCP sockets can and will block as needed, and there is no need for any additional messages to/from the command channel. This allows the router to pace the stream without exploding with OOM like SAM does as it chokes on attempting to shove many streams in or out one socket -- that can't scale when you have alot of connections! +{%- endtrans %}

    +

    {% trans -%} What is also nice about this particular interface is that writing anything to interface to it, is much much easier than SAM. There is no other processing to do after the set up. It's configuration is so simple, that very simple tools, such as nc (netcat) can be used @@ -82,39 +115,53 @@ to stop that application. Instead, you can literally "unplug" the destination, a "plug it in" again. As long as the same IP/port addresses and destination keys are used when bringing the bridge up, the normal TCP application won't care, and won't notice. It will simply be fooled -- the destinations are not reachable, and that nothing is coming in. +{%- endtrans %}

    +

    {% trans -%} For the following example, we'll setup a very simple local loopback connection, with two destinations. Destination "mouth" will be the CHARGEN service from the INET superserver daemon. Destination "ear" will be a local port that you can telnet into, and watch the pretty ASCII test puke forth. +{%- endtrans %}

    -EXAMPLE SESSION DIALOGUE -- simple telnet 127.0.0.1 2827 works -A = Application -C = BOB's Command response. +
    +{% trans %}EXAMPLE SESSION DIALOGUE -- simple telnet 127.0.0.1 2827 works{% endtrans %}
    +A = {{ _('Application') }}
    +C = {% trans %}BOB's Command response.{% endtrans %}
     
    -FROM 	TO	DIALOGUE
    +{{ _('FROM') }} 	{{ _('TO') }}	{{ _('DIALOGUE') }}
     A	C	setnick mouth
     C	A	OK Nickname set to mouth
     A	C	newkeys
     C	A	OK ZMPz1zinTdy3~zGD~f3g9aikZTipujEvvXOEyYfq4Su-mNKerqG710hFbkR6P-xkouVyNQsqWLI8c6ngnkSwGdUfM7hGccqBYDjIubTrlr~0g2-l0vM7Y8nSqtFrSdMw~pyufXZ0Ys3NqUSb8NuZXpiH2lCCkFG21QPRVfKBGwvvyDVU~hPVfBHuR8vkd5x0teMXGGmiTzdB96DuNRWayM0y8vkP-1KJiPFxKjOXULjuXhLmINIOYn39bQprq~dAtNALoBgd-waZedYgFLvwHDCc9Gui8Cpp41EihlYGNW0cu0vhNFUN79N4DEpO7AtJyrSu5ZjFTAGjLw~lOvhyO2NwQ4RiC4UCKSuM70Fz0BFKTJquIjUNkQ8pBPBYvJRRlRG9HjAcSqAMckC3pvKKlcTJJBAE8GqexV7rdCCIsnasJXle-6DoWrDkY1s1KNbEVH6i1iUEtmFr2IHTpPeFCyWfZ581CAFNRbbUs-MmnZu1tXAYF7I2-oXTH2hXoxCGAAAA
    +
    +

    {% trans -%} MAKE NOTE OF THE ABOVE DESTINATION KEY, YOURS WILL BE DIFFERENT! +{%- endtrans %}

    -FROM TO DIALOGUE +
    +{{ _('FROM') }}    {{ _('TO') }}    {{ _('DIALOGUE') }}
     A       C     outhost 127.0.0.1
     C       A     OK outhost set
     A       C     outport 19
     C       A     OK outbound port set
     A       C     start
     C       A     OK tunnel starting
    +
    +

    {% trans -%} At this point, there was no error, a destination with a nickname of "mouth" is set up. When you contact the destination provided, you actually connect -to the CHARGEN service on 19/TCP. +to the CHARGEN service on 19/TCP. +{%- endtrans %}

    +

    {% trans -%} Now for the other half, so that we can actually contact this destination. +{%- endtrans %}

    -FROM TO DIALOGUE +
    +{{ _('FROM') }}    {{ _('TO') }}      {{ _('DIALOGUE') }}
     A       C       setnick ear
     C       A       OK Nickname set to ear
     A       C       newkeys
    @@ -127,14 +174,20 @@ A       C       start
     C       A       OK tunnel starting
     A       C       quit
     C       A       OK Bye!
    +
    +

    {% trans -%} Now all we need to do is telnet into 127.0.0.1, port 37337, send the destination key or host address from addressbook we want to contact. In this case, we want to contact "mouth", all we do is paste in the key and it goes. +{%- endtrans %}

    -NOTE: The "quit" command in the command channel does NOT disconnect the tunnels like SAM. +

    {% trans -%} +NOTE: The "quit" command in the command channel does NOT disconnect the tunnels like SAM. +{%- endtrans %}

    +
     # telnet 127.0.0.1 37337
     Trying 127.0.0.1...
     Connected to 127.0.0.1.
    @@ -146,20 +199,32 @@ ZMPz1zinTdy3~zGD~f3g9aikZTipujEvvXOEyYfq4Su-mNKerqG710hFbkR6P-xkouVyNQsqWLI8c6ng
     #$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghij
     $%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijk
     ...
    -After a few virtual miles of this spew, press Control-]
    +
    +

    {% trans -%} +After a few virtual miles of this spew, press Control-] +{%- endtrans %}

    +
     ...
     cdefghijklmnopqrstuvwxyz{|}~ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJK
     defghijklmnopqrstuvwxyz{|}~ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKL
     efghijklmnopqrstuvwxyz{|}~ !"#$%&'()*+,-./0123456789:;<=
     telnet> c
     Connection closed.
    +
    +

    {% trans -%} Here is what happened... +{%- endtrans %}

    +
     telnet -> ear -> i2p -> mouth -> chargen -.
     telnet <- ear <- i2p <- mouth <-----------'
    +
    +

    {% trans -%} You can connect to EEPSITES too! +{%- endtrans %}

    +
     # telnet 127.0.0.1 37337
     Trying 127.0.0.1...
     Connected to 127.0.0.1.
    @@ -186,36 +251,52 @@ Accept-Ranges: bytes
     </html>
     Connection closed by foreign host.
     #
    +
    +

    {% trans -%} Pretty cool isn't it? Try some other well known EEPSITES if you like, nonexistent ones, etc, to get a feel for what kind of output to expect in different situations. For the most part, it is suggested that you ignore any of the error messages. They would be meaningless to the application, and are only presented for human debugging. +{%- endtrans %}

    +

    {% trans -%} Let's put down our destinations now that we are all done with them. +{%- endtrans %}

    +

    {% trans -%} First, lets see what destination nicknames we have. +{%- endtrans %}

    -FROM TO DIALOGUE +
    +{{ _('FROM') }} 	{{ _('TO') }}	{{ _('DIALOGUE') }}
     A	C	list
     C	A	DATA NICKNAME: mouth STARTING: false RUNNING: true STOPPING: false KEYS: true QUIET: false INPORT: not_set INHOST: localhost OUTPORT: 19 OUTHOST: 127.0.0.1
     C	A	DATA NICKNAME: ear STARTING: false RUNNING: true STOPPING: false KEYS: true QUIET: false INPORT: 37337 INHOST: 127.0.0.1 OUTPORT: not_set OUTHOST: localhost
     C	A	OK Listing done
    +
    +

    {% trans -%} Alright, there they are. First, let's remove "mouth". +{%- endtrans %}

    -FROM TO DIALOGUE +
    +{{ _('FROM') }} 	{{ _('TO') }}	{{ _('DIALOGUE') }}
     A	C	getnick mouth
     C	A	OK Nickname set to mouth
     A	C	stop
     C	A	OK tunnel stopping
     A	C	clear
     C	A	OK cleared
    +
    +

    {% trans -%} Now to remove "ear", note that this is what happens when you type too fast, and shows you what typical ERROR messages looks like. +{%- endtrans %}

    -FROM TO DIALOGUE +
    +{{ _('FROM') }} 	{{ _('TO') }}	{{ _('DIALOGUE') }}
     A	C	getnick ear
     C	A	OK Nickname set to ear
     A	C	stop
    @@ -226,20 +307,31 @@ A	C	clear
     C	A	OK cleared
     A	C	quit
     C	A	OK Bye!
    +
    +

    {% trans -%} I won't bother to show an example of the receiver end of a bridge because it is very simple. There are two possible settings for it, and it is toggled with the "quiet" command. +{%- endtrans %}

    + +

    {% trans -%} The default is NOT quiet, and the first data to come into your listening socket is the destination that is making the contact. It is a single line consisting of the BASE64 address followed by a newline. Everything after that is for the application to actually consume. +{%- endtrans %}

    + +

    {% trans -%} In quiet mode, think of it as a regular Internet connection. No extra data comes in at all. It's just as if you are plain connected to the regular Internet. This mode allows a form of transparency much like is available on the router console tunnel settings pages, so that you can use BOB to point a destination at a web server, for example, and you would not have to modify the web server at all. +{%- endtrans %}

    + +

    {% trans -%} The advantage with using BOB for this is as discussed previously. You could schedule random uptimes for the application, redirect to a different machine, etc. One use of this may be something @@ -251,5 +343,5 @@ have to bother shutting it down and restarting it. You could redirect and point to a different machine on your LAN while you do updates, or point to a set of backup machines depending on what is running, etc, etc. Only your imagination limits what you could do with BOB. -

    +{%- endtrans %}

    {% endblock %} diff --git a/i2p2www/pages/site/docs/api/i2pcontrol.html b/i2p2www/pages/site/docs/api/i2pcontrol.html index 4053babc..c5052edf 100644 --- a/i2p2www/pages/site/docs/api/i2pcontrol.html +++ b/i2p2www/pages/site/docs/api/i2pcontrol.html @@ -1,86 +1,87 @@ {% extends "global/layout.html" %} {% block title %}I2PControl API{% endblock %} {% block content %} -

    I2PControl - Remote Control Service

    -

    I2P enables a JSONRPC2 interface via the plugin I2PControl. +

    {% trans %}I2PControl - Remote Control Service{% endtrans %}

    +

    {% trans itoopie='http://itoopie.net/' -%} +I2P enables a JSONRPC2 interface via the plugin I2PControl. The aim of the interface is to provide simple way to interface with a running I2P node. A client, itoopie, has been developed in parallel. The JSONRPC2 implementation for the client as well as the plugin is provided by the java libraries JSON-RPC 2.0. A list of implementations of JSON-RPC for various languages can be found at the JSON-RPC wiki. -

    -

    I2PControl is by default listening on localhost:7650

    +{%- endtrans %}

    -

    API, version 1.

    -

    +

    {% trans %}I2PControl is by default listening on localhost:7650{% endtrans %}

    + +

    {% trans %}API, version 1.{% endtrans %}

    +

    {% trans -%} Parameters are only provided in a named way (maps). +{%- endtrans %}

    -

    JSON-RPC 2 format

    +

    {% trans %}JSON-RPC 2 format{% endtrans %}

    -Request:
    +{{ _('Request:') }}
     {"id":"id", "method":"Method-name","params":{"Param-key-1":"param-value-1", "Param-key-2":"param-value-2", "Token":"**actual token**"}, "jsonrpc":"2.0"}
    -Response:
    +{{ _('Response:') }}
     {"id":"id","result":{"Result-key-1":"result-value-1","Result-key-2":"result-value-2"},"jsonrpc":"2.0"}
    -
     
    -

    -
      method-name – Description -
        Request -
      • Param-key-1 – Description
      • -
      • Param-key-2 – Description
      • -
      • Token – Token used for authenticating every request (excluding the 'Authenticate' RPC method)
      • +
          method-name – {{ _('Description') }} +
            {{ _('Request:') }} +
          • Param-key-1 – {{ _('Description') }}
          • +
          • Param-key-2 – {{ _('Description') }}
          • +
          • Token – {% trans %}Token used for authenticating every request (excluding the 'Authenticate' RPC method){% endtrans %}
          -
            Response -
          • Result-key-1 – Description
          • -
          • Result-key-2 – Description
          • +
              {{ _('Response:') }} +
            • Result-key-1 – {{ _('Description') }}
            • +
            • Result-key-2 – {{ _('Description') }}
          -

          Implemented methods

          -
            Authenticate – Creates and returns an authentication token used for further communication. -
              Request -
            • API – [long] The version of the I2PControl API used by the client.
            • -
            • Password – [String] The password used for authenticating against the remote server.
            • +

              {% trans %}Implemented methods{% endtrans %}

              +
                Authenticate – {% trans %}Creates and returns an authentication token used for further communication.{% endtrans %} +
                  {{ _('Request:') }} +
                • API – [long] {% trans %}The version of the I2PControl API used by the client.{% endtrans %}
                • +
                • Password – [String] {% trans %}The password used for authenticating against the remote server.{% endtrans %}
                -
                  Response -
                • API – [long] The primare I2PControl API version implemented by the server.
                • -
                • Token – [String] The token used for further communication.
                • +
                    {{ _('Response:') }} +
                  • API – [long] {% trans %}The primary I2PControl API version implemented by the server.{% endtrans %}
                  • +
                  • Token – [String] {% trans %}The token used for further communication.{% endtrans %}
                -
                  Echo – Echoes the value of the echo key, used for debugging and testing. -
                    Request -
                  • Echo – [String] Value will be returned in response.
                  • -
                  • Token – [String]Token used for authenticating the client. Is provided by the server via the 'Authenticate' RPC method.
                  • +
                      Echo – {% trans %}Echoes the value of the echo key, used for debugging and testing.{% endtrans %} +
                        {{ _('Request:') }} +
                      • Echo – [String] {% trans %}Value will be returned in response.{% endtrans %}
                      • +
                      • Token – [String] {% trans %}Token used for authenticating the client. Is provided by the server via the 'Authenticate' RPC method.{% endtrans %}
                      -
                        Response -
                      • Result – [String] Value of the key 'echo' in the request.
                      • +
                          {{ _('Response:') }} +
                        • Result – [String] {% trans %}Value of the key 'echo' in the request.{% endtrans %}
                      -
                        GetRate – Fetches rateStat from router statManager. Creates stat if not already created. -
                          Request -
                        • Stat – [String] Determines which rateStat to fetch, see ratestats.
                        • -
                        • Period – [long] Determines which period a stat is fetched for. Measured in ms.
                        • -
                        • Token – [String] Token used for authenticating the client. Is provided by the server via the 'Authenticate' RPC method.
                        • +
                            GetRate – {% trans %}Fetches rateStat from router statManager. Creates stat if not already created.{% endtrans %} +
                              {{ _('Request:') }} +
                            • Stat – [String] {% trans %}Determines which rateStat to fetch, see ratestats.{% endtrans %}
                            • +
                            • Period – [long] {% trans %}Determines which period a stat is fetched for. Measured in ms.{% endtrans %}
                            • +
                            • Token – [String] {% trans %}Token used for authenticating the client. Is provided by the server via the 'Authenticate' RPC method.{% endtrans %}
                            -
                              Response -
                            • Result – [double] Returns the average value for the reuested rateStat and period.
                            • +
                                {{ _('Response:') }} +
                              • Result – [double] {% trans %}Returns the average value for the reuested rateStat and period.{% endtrans %}
                            -
                              I2PControl – Manages I2PControl. Ports, passwords and the like. -
                                Request -
                              • *i2pcontrol.address – [String] Sets a new listen address for I2PControl (only 127.0.0.1 and 0.0.0.0 are implemented in I2PControl currently).
                              • -
                              • *i2pcontrol.password – [String] Sets a new password for I2PControl, all Authentication tokens will be revoked.
                              • -
                              • *i2pcontrol.port – [String] Switches which port I2PControl will listen for connections on.
                              • -
                              • Token – [String] Token used for authenticating the client. Is provided by the server via the 'Authenticate' RPC method.
                              • +
                                  I2PControl – {% trans %}Manages I2PControl. Ports, passwords and the like.{% endtrans %} +
                                    {{ _('Request:') }} +
                                  • *i2pcontrol.address – [String] {% trans %}Sets a new listen address for I2PControl (only 127.0.0.1 and 0.0.0.0 are implemented in I2PControl currently).{% endtrans %}
                                  • +
                                  • *i2pcontrol.password – [String] {% trans %}Sets a new password for I2PControl, all Authentication tokens will be revoked.{% endtrans %}
                                  • +
                                  • *i2pcontrol.port – [String] {% trans %}Switches which port I2PControl will listen for connections on.{% endtrans %}
                                  • +
                                  • Token – [String] {% trans %}Token used for authenticating the client. Is provided by the server via the 'Authenticate' RPC method.{% endtrans %}
                                  -
                                    Response -
                                  • **i2pcontrol.address – [null] Returned if address was changed
                                  • -
                                  • **i2pcontrol.password – [null] Returned if setting was changed
                                  • -
                                  • **i2pcontrol.port – [null] Returned if setting was changed
                                  • -
                                  • SettingsSaved – [Boolean] Returns true if any changes were made.
                                  • -
                                  • RestartNeeded – [Boolean] Returns true if any changes requiring a restart to take effect were made.
                                  • +
                                      {{ _('Response:') }} +
                                    • **i2pcontrol.address – [null] {% trans %}Returned if address was changed{% endtrans %}
                                    • +
                                    • **i2pcontrol.password – [null] {% trans %}Returned if setting was changed{% endtrans %}
                                    • +
                                    • **i2pcontrol.port – [null] {% trans %}Returned if setting was changed{% endtrans %}
                                    • +
                                    • SettingsSaved – [Boolean] {% trans %}Returns true if any changes were made.{% endtrans %}
                                    • +
                                    • RestartNeeded – [Boolean] {% trans %}Returns true if any changes requiring a restart to take effect were made.{% endtrans %}
                                  -
                                    RouterInfo – Fetches basic information about hte I2P router. Uptime, version etc. -
                                      Request +
                                        RouterInfo – {% trans %}Fetches basic information about the I2P router. Uptime, version etc.{% endtrans %} +
                                          {{ _('Request:') }}
                                        • *i2p.router.status – [n/a]
                                        • *i2p.router.uptime – [n/a]
                                        • *i2p.router.version – [n/a]
                                        • @@ -95,17 +96,17 @@ Response:
                                        • *i2p.router.netdb.highcapacitypeers – [n/a]
                                        • *i2p.router.netdb.isreseeding – [n/a]
                                        • *i2p.router.netdb.knownpeers – [n/a]
                                        • -
                                        • Token – [String] Token used for authenticating the client. Is provided by the server via the 'Authenticate' RPC method.
                                        • +
                                        • Token – [String] {% trans %}Token used for authenticating the client. Is provided by the server via the 'Authenticate' RPC method.{% endtrans %}
                                        -
                                          Response -
                                        • **i2p.router.status – [String] What the status of the router is.
                                        • -
                                        • **i2p.router.uptime – [long] What the uptime of the router is in ms.
                                        • -
                                        • **i2p.router.version – [String] What version of I2P the router is running.
                                        • -
                                        • **i2p.router.net.bw.inbound.1s – [double] The 1 second average inbound bandwidth in Bps.
                                        • -
                                        • **i2p.router.net.bw.inbound.15s – [double] The 15 second average inbound bandwidth in Bps.
                                        • -
                                        • **i2p.router.net.bw.outbound.1s – [double] The 1 second average outbound bandwidth in Bps.
                                        • -
                                        • **i2p.router.net.bw.outbound.15s – [double] The 15 second average outbound bandwidth in Bps.
                                        • -
                                        • **i2p.router.net.status – [long] What the current network status is. According to the below enum: +
                                            {{ _('Response:') }} +
                                          • **i2p.router.status – [String] {% trans %}What the status of the router is.{% endtrans %}
                                          • +
                                          • **i2p.router.uptime – [long] {% trans %}What the uptime of the router is in ms.{% endtrans %}
                                          • +
                                          • **i2p.router.version – [String] {% trans %}What version of I2P the router is running.{% endtrans %}
                                          • +
                                          • **i2p.router.net.bw.inbound.1s – [double] {% trans %}The 1 second average inbound bandwidth in Bps.{% endtrans %}
                                          • +
                                          • **i2p.router.net.bw.inbound.15s – [double] {% trans %}The 15 second average inbound bandwidth in Bps.{% endtrans %}
                                          • +
                                          • **i2p.router.net.bw.outbound.1s – [double] {% trans %}The 1 second average outbound bandwidth in Bps.{% endtrans %}
                                          • +
                                          • **i2p.router.net.bw.outbound.15s – [double] {% trans %}The 15 second average outbound bandwidth in Bps.{% endtrans %}
                                          • +
                                          • **i2p.router.net.status – [long] {% trans %}What the current network status is. According to the below enum:{% endtrans %}
                                            • 0 – OK
                                            • 1 – TESTING
                                            • @@ -124,83 +125,81 @@ Response:
                                            • 14 – ERROR_UDP_DISABLED_AND_TCP_UNSET
                                          • -
                                          • **i2p.router.net.tunnels.participating – [long] How many tunnels on the I2P net are we participating in.
                                          • -
                                          • **i2p.router.netdb.activepeers – [long] How many peers have we communicated with recently.
                                          • -
                                          • **i2p.router.netdb.fastpeers &ndasg; [long] How many peers are considered 'fast'.
                                          • -
                                          • **i2p.router.netdb.highcapacitypeers – [long] How many peers are considered 'high capacity'.
                                          • -
                                          • **i2p.router.netdb.isreseeding – [boolean] Is the router reseeding hosts to its NetDB?
                                          • -
                                          • **i2p.router.netdb.knownpeers – [long] How many peers are known to us (listed in our NetDB).
                                          • +
                                          • **i2p.router.net.tunnels.participating – [long] {% trans %}How many tunnels on the I2P net are we participating in.{% endtrans %}
                                          • +
                                          • **i2p.router.netdb.activepeers – [long] {% trans %}How many peers have we communicated with recently.{% endtrans %}
                                          • +
                                          • **i2p.router.netdb.fastpeers &ndasg; [long] {% trans %}How many peers are considered 'fast'.{% endtrans %}
                                          • +
                                          • **i2p.router.netdb.highcapacitypeers – [long] {% trans %}How many peers are considered 'high capacity'.{% endtrans %}
                                          • +
                                          • **i2p.router.netdb.isreseeding – [boolean] {% trans %}Is the router reseeding hosts to its NetDB?{% endtrans %}
                                          • +
                                          • **i2p.router.netdb.knownpeers – [long] {% trans %}How many peers are known to us (listed in our NetDB).{% endtrans %}
                                        -
                                          RouterManager – Manages I2P router restart/shutdown. -
                                            Request -
                                          • *Reseed – [n/a] Initiates a router reseed, fetching peers into our NetDB from a remote host.
                                          • -
                                          • *Restart – [n/a] Restarts the router.
                                          • -
                                          • *RestartGraceful – [n/a] Restarts the router gracefully (waits for participating tunnels to expire).
                                          • -
                                          • *Shutdown – [n/a] Shuts down the router.
                                          • -
                                          • *ShutdownGraceful – [n/a] Shuts down the router gracefully (waits for participating tunnels to expire).
                                          • -
                                          • Token – [String] Token used for authenticating the client. Is provided by the server via the 'Authenticate' RPC method.
                                          • +
                                              RouterManager – {% trans %}Manages I2P router restart/shutdown.{% endtrans %} +
                                                {{ _('Request:') }} +
                                              • *Reseed – [n/a] {% trans %}Initiates a router reseed, fetching peers into our NetDB from a remote host.{% endtrans %}
                                              • +
                                              • *Restart – [n/a] {% trans %}Restarts the router.{% endtrans %}
                                              • +
                                              • *RestartGraceful – [n/a] {% trans %}Restarts the router gracefully (waits for participating tunnels to expire).{% endtrans %}
                                              • +
                                              • *Shutdown – [n/a] {% trans %}Shuts down the router.{% endtrans %}
                                              • +
                                              • *ShutdownGraceful – [n/a] {% trans %}Shuts down the router gracefully (waits for participating tunnels to expire).{% endtrans %}
                                              • +
                                              • Token – [String] {% trans %}Token used for authenticating the client. Is provided by the server via the 'Authenticate' RPC method.{% endtrans %}
                                              -
                                                Response -
                                              • **Reseed – [null] If requested, verifies that a reseed has been initiated.
                                              • -
                                              • **Restart – [null] If requested, verifies that a restart has been initiated.
                                              • -
                                              • **RestartGraceful – [null] If requested, verifies that a graceful restart has been initiated.
                                              • -
                                              • **Shutdown – [null] If requested, verifies that a shutdown has been initiated
                                              • -
                                              • **ShutdownGraceful – [null] If requested, verifies that a graceful shutdown has been initiated
                                              • +
                                                  {{ _('Response:') }} +
                                                • **Reseed – [null] {% trans %}If requested, verifies that a reseed has been initiated.{% endtrans %}
                                                • +
                                                • **Restart – [null] {% trans %}If requested, verifies that a restart has been initiated.{% endtrans %}
                                                • +
                                                • **RestartGraceful – [null] {% trans %}If requested, verifies that a graceful restart has been initiated.{% endtrans %}
                                                • +
                                                • **Shutdown – [null] {% trans %}If requested, verifies that a shutdown has been initiated{% endtrans %}
                                                • +
                                                • **ShutdownGraceful – [null] {% trans %}If requested, verifies that a graceful shutdown has been initiated{% endtrans %}
                                              -
                                                NetworkSetting – Fetches or sets various network related settings. Ports, addresses etc. -
                                                  Request -
                                                • *i2p.router.net.ntcp.port – [String] What port is used for the TCP transport. If null is submitted, current setting will be returned.
                                                • -
                                                • *i2p.router.net.ntcp.hostname – [String] What hostname is used for the TCP transport. If null is submitted, current setting will be returned.
                                                • -
                                                • *i2p.router.net.ntcp.autoip – [String] Use automatically detected ip for TCP transport. If null is submitted, current setting will be returned.
                                                • -
                                                • *i2p.router.net.ssu.port – [String] What port is used for the UDP transport. If null is submitted, current setting will be returned.
                                                • -
                                                • *i2p.router.net.ssu.hostname – [String] What hostname is used for the UDP transport. If null is submitted, current setting will be returned.
                                                • -
                                                • *i2p.router.net.ssu.autoip – [String] Which methods should be used for detecting the ip address of the UDP transport. If null is submitted, current setting will be returned.
                                                • -
                                                • *i2p.router.net.ssu.detectedip – [null] What ip has been detected by the UDP transport.
                                                • -
                                                • *i2p.router.net.upnp – [String] Is UPNP enabled. If null is submitted, current setting will be returned.
                                                • -
                                                • *i2p.router.net.bw.share – [String] How many percent of bandwidth is usable for participating tunnels. If null is submitted, current setting will be returned.
                                                • -
                                                • *i2p.router.net.bw.in – [String] How many KB/s of inbound bandwidth is allowed. If null is submitted, current setting will be returned.
                                                • -
                                                • *i2p.router.net.bw.out – [String] How many KB/s of outbound bandwidth is allowed. If null is submitted, current setting will be returned.
                                                • -
                                                • *i2p.router.net.laptopmode – [String] Is laptop mode enabled (change router identity and UDP port when IP changes ). If null is submitted, current setting will be returned.
                                                • -
                                                • Token – [String] Token used for authenticating the client. Is provided by the server via the 'Authenticate' RPC method. If null is submitted, current setting will be returned.
                                                • +
                                                    NetworkSetting – {% trans %}Fetches or sets various network related settings. Ports, addresses etc.{% endtrans %} +
                                                      {{ _('Request:') }} +
                                                    • *i2p.router.net.ntcp.port – [String] {% trans %}What port is used for the TCP transport. If null is submitted, current setting will be returned.{% endtrans %}
                                                    • +
                                                    • *i2p.router.net.ntcp.hostname – [String] {% trans %}What hostname is used for the TCP transport. If null is submitted, current setting will be returned.{% endtrans %}
                                                    • +
                                                    • *i2p.router.net.ntcp.autoip – [String] {% trans %}Use automatically detected ip for TCP transport. If null is submitted, current setting will be returned.{% endtrans %}
                                                    • +
                                                    • *i2p.router.net.ssu.port – [String] {% trans %}What port is used for the UDP transport. If null is submitted, current setting will be returned.{% endtrans %}
                                                    • +
                                                    • *i2p.router.net.ssu.hostname – [String] {% trans %}What hostname is used for the UDP transport. If null is submitted, current setting will be returned.{% endtrans %}
                                                    • +
                                                    • *i2p.router.net.ssu.autoip – [String] {% trans %}Which methods should be used for detecting the ip address of the UDP transport. If null is submitted, current setting will be returned.{% endtrans %}
                                                    • +
                                                    • *i2p.router.net.ssu.detectedip – [null] {% trans %}What ip has been detected by the UDP transport.{% endtrans %}
                                                    • +
                                                    • *i2p.router.net.upnp – [String] {% trans %}Is UPnP enabled. If null is submitted, current setting will be returned.{% endtrans %}
                                                    • +
                                                    • *i2p.router.net.bw.share – [String] {% trans %}How many percent of bandwidth is usable for participating tunnels. If null is submitted, current setting will be returned.{% endtrans %}
                                                    • +
                                                    • *i2p.router.net.bw.in – [String] {% trans %}How many KB/s of inbound bandwidth is allowed. If null is submitted, current setting will be returned.{% endtrans %}
                                                    • +
                                                    • *i2p.router.net.bw.out – [String] {% trans %}How many KB/s of outbound bandwidth is allowed. If null is submitted, current setting will be returned.{% endtrans %}
                                                    • +
                                                    • *i2p.router.net.laptopmode – [String] {% trans %}Is laptop mode enabled (change router identity and UDP port when IP changes ). If null is submitted, current setting will be returned.{% endtrans %}
                                                    • +
                                                    • Token – [String] {% trans %}Token used for authenticating the client. Is provided by the server via the 'Authenticate' RPC method. If null is submitted, current setting will be returned.{% endtrans %}
                                                    -
                                                      Response -
                                                    • **i2p.router.net.ntcp.port – [String] If requested, returns the port used for the TCP transport.
                                                    • -
                                                    • **i2p.router.net.ntcp.hostname – [String] If requested, returns the hostname used for the TCP transport.
                                                    • -
                                                    • **i2p.router.net.ntcp.autoip – [String] If requested, returns the method used for automatically detecting ip for the TCP transport.
                                                    • -
                                                    • **i2p.router.net.ssu.port – [String] If requested, returns the port used for the UDP transport.
                                                    • -
                                                    • **i2p.router.net.ssu.hostname – [String] If requested, returns the hostname used for the UDP transport.
                                                    • -
                                                    • **i2p.router.net.ssu.autoip – [String] If requested, returns methods used for detecting the ip address of the UDP transport.
                                                    • -
                                                    • **i2p.router.net.ssu.detectedip – [String] If requested, returns what ip has been detected by the UDP transport.
                                                    • -
                                                    • **i2p.router.net.upnp – [String] If requested, returns the UPNP setting.
                                                    • -
                                                    • **i2p.router.net.bw.share – [String] If requested, returns how many percent of bandwidth is usable for participating tunnels.
                                                    • -
                                                    • **i2p.router.net.bw.in – [String] If requested, returns how many KB/s of inbound bandwidth is allowed.
                                                    • -
                                                    • **i2p.router.net.bw.out – [String] If requested, returns how many KB/s of outbound bandwidth is allowed.
                                                    • -
                                                    • **i2p.router.net.laptopmode – [String] If requested, returns the laptop mode.
                                                    • -
                                                    • SettingsSaved – [boolean] Have the provided settings been saved.
                                                    • -
                                                    • RestartNeeded – [boolean] Is a restart needed for the new settings to be used.
                                                    • +
                                                        {{ _('Response:') }} +
                                                      • **i2p.router.net.ntcp.port – [String] {% trans %}If requested, returns the port used for the TCP transport.{% endtrans %}
                                                      • +
                                                      • **i2p.router.net.ntcp.hostname – [String] {% trans %}If requested, returns the hostname used for the TCP transport.{% endtrans %}
                                                      • +
                                                      • **i2p.router.net.ntcp.autoip – [String] {% trans %}If requested, returns the method used for automatically detecting ip for the TCP transport.{% endtrans %}
                                                      • +
                                                      • **i2p.router.net.ssu.port – [String] {% trans %}If requested, returns the port used for the UDP transport.{% endtrans %}
                                                      • +
                                                      • **i2p.router.net.ssu.hostname – [String] {% trans %}If requested, returns the hostname used for the UDP transport.{% endtrans %}
                                                      • +
                                                      • **i2p.router.net.ssu.autoip – [String] {% trans %}If requested, returns methods used for detecting the ip address of the UDP transport.{% endtrans %}
                                                      • +
                                                      • **i2p.router.net.ssu.detectedip – [String] {% trans %}If requested, returns what ip has been detected by the UDP transport.{% endtrans %}
                                                      • +
                                                      • **i2p.router.net.upnp – [String] {% trans %}If requested, returns the UPNP setting.{% endtrans %}
                                                      • +
                                                      • **i2p.router.net.bw.share – [String] {% trans %}If requested, returns how many percent of bandwidth is usable for participating tunnels.{% endtrans %}
                                                      • +
                                                      • **i2p.router.net.bw.in – [String] {% trans %}If requested, returns how many KB/s of inbound bandwidth is allowed.{% endtrans %}
                                                      • +
                                                      • **i2p.router.net.bw.out – [String] {% trans %}If requested, returns how many KB/s of outbound bandwidth is allowed.{% endtrans %}
                                                      • +
                                                      • **i2p.router.net.laptopmode – [String] {% trans %}If requested, returns the laptop mode.{% endtrans %}
                                                      • +
                                                      • SettingsSaved – [boolean] {% trans %}Have the provided settings been saved.{% endtrans %}
                                                      • +
                                                      • RestartNeeded – [boolean] {% trans %}Is a restart needed for the new settings to be used.{% endtrans %}
                                                    -

                                                    * denotes an optional value.

                                                    -

                                                    ** denotes a possibly occuring return value

                                                    +

                                                    * {% trans %}denotes an optional value.{% endtrans %}

                                                    +

                                                    ** {% trans %}denotes a possibly occuring return value{% endtrans %}

                                                    -

                                                    Error codes

                                                    -
                                                      Standard JSON-RPC2 error codes. -
                                                    • -32700 – JSON parse error.
                                                    • -
                                                    • -32600 – Invalid request.
                                                    • -
                                                    • -32601 – Method not found.
                                                    • -
                                                    • -32603 – Internal error.
                                                    • +

                                                      {% trans %}Error codes{% endtrans %}

                                                      +
                                                        {% trans %}Standard JSON-RPC2 error codes.{% endtrans %} +
                                                      • -32700 – {% trans %}JSON parse error.{% endtrans %}
                                                      • +
                                                      • -32600 – {% trans %}Invalid request.{% endtrans %}
                                                      • +
                                                      • -32601 – {% trans %}Method not found.{% endtrans %}
                                                      • +
                                                      • -32603 – {% trans %}Internal error.{% endtrans %}
                                                      -
                                                        I2PControl specific error codes. -
                                                      • -32001 – Invalid password provided.
                                                      • -
                                                      • -32002 – No authentication token presented.
                                                      • -
                                                      • -32003 – Authentication token doesn't exist.
                                                      • -
                                                      • -32004 – The provided authentication token was expired and will be removed.
                                                      • -
                                                      • -32005 – The version of the I2PControl API used wasn't specified, but is required to be specified.
                                                      • -
                                                      • -32006 – The version of the I2PControl API specified is not supported by I2PControl.
                                                      • +
                                                          {% trans %}I2PControl specific error codes.{% endtrans %} +
                                                        • -32001 – {% trans %}Invalid password provided.{% endtrans %}
                                                        • +
                                                        • -32002 – {% trans %}No authentication token presented.{% endtrans %}
                                                        • +
                                                        • -32003 – {% trans %}Authentication token doesn't exist.{% endtrans %}
                                                        • +
                                                        • -32004 – {% trans %}The provided authentication token was expired and will be removed.{% endtrans %}
                                                        • +
                                                        • -32005 – {% trans %}The version of the I2PControl API used wasn't specified, but is required to be specified.{% endtrans %}
                                                        • +
                                                        • -32006 – {% trans %}The version of the I2PControl API specified is not supported by I2PControl.{% endtrans %}
                                                        - - {% endblock %} diff --git a/i2p2www/pages/site/docs/api/i2ptunnel.html b/i2p2www/pages/site/docs/api/i2ptunnel.html index ebb16074..608ab170 100644 --- a/i2p2www/pages/site/docs/api/i2ptunnel.html +++ b/i2p2www/pages/site/docs/api/i2ptunnel.html @@ -1,92 +1,100 @@ {% extends "global/layout.html" %} {% block title %}i2ptunnel{% endblock %} -{% block content %}Description of i2ptunnel and tunneling modes +{% block content %} +

                                                        I2PTunnel

                                                        -

                                                        Overview

                                                        -

                                                        +

                                                        {% trans %}Overview{% endtrans %}

                                                        +

                                                        {% trans naming=site_url('docs/naming') -%} I2PTunnel is a tool for interfacing with and providing services on I2P. -Destination of an I2PTunnel can be defined using a hostname, -Base32, or a full 516-byte destination key. +Destination of an I2PTunnel can be defined using a hostname, +Base32, or a full 516-byte destination key. An established I2PTunnel will be available on your client machine as localhost:port. If you wish to provide a service on I2P network, you simply create I2PTunnel to the appropriate ip_address:port. A corresponding 516-byte destination key will be generated for the service and it will become avaliable throughout I2P. A web interface for I2PTunnel management is avaliable on localhost:7657/i2ptunnel/. -

                                                        +{%- endtrans %}

                                                        -
                                                        -

                                                        Default Services

                                                        -

                                                        Server tunnels

                                                        +

                                                        {% trans %}Default Services{% endtrans %}

                                                        +

                                                        {% trans %}Server tunnels{% endtrans %}

                                                          -
                                                        • I2P Webserver - A tunnel pointed to a Jetty webserver run - on localhost:7658 for convenient and quick hosting on I2P. -
                                                          The document root is: +
                                                        • {% trans -%} +I2P Webserver - A tunnel pointed to a Jetty webserver run +on localhost:7658 for convenient and quick hosting on I2P. +
                                                          The document root is:{% endtrans %}
                                                          Unix - %APPDATA%\I2P\eepsite\docroot
                                                          Windows - C:\Users\**username**\AppData\Roaming\I2P\eepsite\docroot
                                                        -

                                                        Client tunnels

                                                        +

                                                        {% trans %}Client tunnels{% endtrans %}

                                                          -
                                                        • I2P HTTP Proxy - localhost:4444 - A HTTP proxy used for browsing I2P and the regular internet anonymously through I2P. +
                                                        • I2P HTTP Proxy - localhost:4444 - {% trans -%} +A HTTP proxy used for browsing I2P and the regular internet anonymously through I2P. Browsing internet through I2P uses a random proxy specified by the "Outproxies:" option. -
                                                        • -
                                                        • IRC Proxy - localhost:6668 - A IRC proxy to the default anonymous IRC-servers.
                                                        • -
                                                        • mtn.i2p2.i2p - localhost:8998 - The anonymous monotone - sourcecode repository for I2P -
                                                        • -
                                                        • smtp.postman.i2p - localhost:7659 - A SMTP service provided by postman at - hq.postman.i2p - (via inproxy) -
                                                        • -
                                                        • pop3.postman.i2p - localhost:7660 - The accompanying POP sevice of postman at - hq.postman.i2p - (via inproxy) +{%- endtrans %}
                                                        • +
                                                        • Irc2P - localhost:6668 - {% trans %}An IRC tunnel to the default anonymous IRC network, Irc2P.{% endtrans %}
                                                        • +
                                                        • mtn.i2p2.i2p - localhost:8998 - {% trans -%} +The anonymous monotone +sourcecode repository for I2P +{%- endtrans %}
                                                        • +
                                                        • smtp.postman.i2p - localhost:7659 - {% trans postman=i2pconv('hq.postman.i2p') -%} +A SMTP service provided by postman at {{ postman }} +{%- endtrans %}
                                                        • +
                                                        • pop3.postman.i2p - localhost:7660 - {% trans postman=i2pconv('hq.postman.i2p') -%} +The accompanying POP sevice of postman at {{ postman }} +{%- endtrans %}
                                                        -
                                                        -

                                                        Client Modes

                                                        -

                                                        Standard

                                                        +

                                                        {% trans %}Client Modes{% endtrans %}

                                                        +

                                                        {% trans %}Standard{% endtrans %}

                                                        +

                                                        {% trans -%} Opens a local TCP port that connects to a service (like HTTP, FTP or SMTP) on a destination inside of I2P. The tunnel is directed to a random host from the comma seperated (", ") list of destinations. +{%- endtrans %}

                                                        -

                                                        HTTP

                                                        -

                                                        A HTTP-client tunnel. The tunnel connects to the destination specified by the URL - in a HTTP request. Supports proxying onto internet if an outproxy is provided. Strips HTTP connections of the following headers: -

                                                        +

                                                        {% trans -%} +A HTTP-client tunnel. The tunnel connects to the destination specified by the URL +in a HTTP request. Supports proxying onto internet if an outproxy is provided. Strips HTTP connections of the following headers: +{%- endtrans %}

                                                          -
                                                        • Accept, Accept-Charset, Accept-Encoding, Accept-Language +
                                                        • {% trans -%} +Accept, Accept-Charset, Accept-Encoding, Accept-Language and Accept-Ranges as they vary greatly between browsers and can be used as an identifier. -
                                                        • +{%- endtrans %}
                                                        • Referer:
                                                        • Via:
                                                        • From:
                                                        -

                                                        +

                                                        {% trans -%} HTTP client/server tunnels are via I2Ptunnel force-enabling compression via the following http headers: +{%- endtrans %}

                                                        • Accept-Encoding:
                                                        • X-Accept-Encoding: x-i2p-gzip;q=1.0, identity;q=0.5, deflate;q=0, gzip;q=0, *;q=0
                                                        -

                                                        +

                                                        {% trans -%} Depending on if the tunnel is using an outproxy or not it will append the following User-Agent: -

                                                        +{%- endtrans %}

                                                          -
                                                        • Outproxy: User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.6) Gecko/20100625 Firefox/3.6.6
                                                        • -
                                                        • Internal I2P use: User-Agent: MYOB/6.66 (AN/ON)
                                                        • +
                                                        • {% trans %}Outproxy:{% endtrans %} User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.6) Gecko/20100625 Firefox/3.6.6
                                                        • +
                                                        • {% trans %}Internal I2P use:{% endtrans %} User-Agent: MYOB/6.66 (AN/ON)

                                                        IRC

                                                        +

                                                        {% trans -%} Creates a connection to a random IRC server specified by the comma seprated (", ") list of destinations. Only a whitelisted subset of IRC commands are allowed due to anonymity concerns. -
                                                        Whitelist: +{%- endtrans %} +
                                                        {% trans %}Whitelist:{% endtrans %}

                                                        • MODE
                                                        • JOIN
                                                        • @@ -101,41 +109,58 @@ list of destinations. Only a whitelisted subset of IRC commands are allowed due

                                                        SOCKS 4/4a/5

                                                        +

                                                        {% trans -%} Enables using the I2P router as a SOCKS proxy. +{%- endtrans %}

                                                        SOCKS IRC

                                                        +

                                                        {% trans -%} Enables using the I2P router as a SOCKS proxy with the command whitelist specified by - IRC client mode. +IRC client mode. +{%- endtrans %}

                                                        CONNECT

                                                        +

                                                        {% trans -%} Creates a HTTP tunnel and uses the HTTP request method "CONNECT" to build a TCP tunnel that usually is used for SSL and HTTPS. +{%- endtrans %}

                                                        Streamr

                                                        +

                                                        {% trans -%} Creates a UDP-server attached to a Streamr client I2PTunnel. The streamr client tunnel will subscribe to a streamr server tunnel. -
                                                        - +{%- endtrans %}

                                                        +
                                                        -

                                                        Server Modes

                                                        -

                                                        Standard

                                                        +

                                                        {% trans %}Server Modes{% endtrans %}

                                                        +

                                                        {% trans %}Standard{% endtrans %}

                                                        +

                                                        {% trans -%} Creates a destination to a local ip:port with an open TCP port. +{%- endtrans %}

                                                        HTTP

                                                        +

                                                        {% trans -%} Creates a destination to a local HTTP server ip:port. Supports gzip for requests with Accept-encoding: x-i2p-gzip, replies with Content-encoding: x-i2p-gzip in such a request. +{%- endtrans %}

                                                        HTTP Bidirectional

                                                        +

                                                        {% trans -%} Functions as both a I2PTunnel HTTP Server, and a I2PTunnel HTTP client with no outproxying - capabilities. An example application would be a web application that does client-type - requests, or loopback-testing an eepsite as a diagnostic tool. +capabilities. An example application would be a web application that does client-type +requests, or loopback-testing an eepsite as a diagnostic tool. +{%- endtrans %}

                                                        IRC

                                                        +

                                                        {% trans -%} Creates a destination that filters the reqistration sequence of a client and passes the clients destination key as a hostname to the IRC-server. +{%- endtrans %}

                                                        Streamr

                                                        +

                                                        {% trans -%} A UDP-client that connects to a media server is created. The UDP-Client is coupled with a Streamr server I2PTunnel. +{%- endtrans %}

                                                        {% endblock %} diff --git a/i2p2www/pages/site/docs/api/ministreaming.html b/i2p2www/pages/site/docs/api/ministreaming.html index d3f78c5d..82b91d80 100644 --- a/i2p2www/pages/site/docs/api/ministreaming.html +++ b/i2p2www/pages/site/docs/api/ministreaming.html @@ -1,47 +1,56 @@ {% extends "global/layout.html" %} -{% block title %}Ministreaming Library{% endblock %} +{% block title %}{% trans %}Ministreaming Library{% endtrans %}{% endblock %} {% block content %} -

                                                        Note

                                                        +

                                                        {% trans %}Note{% endtrans %}

                                                        + +

                                                        {% trans streaming=site_url('docs/api/streaming'), api='http://docs.i2p-projekt.de/javadoc/net/i2p/client/streaming/package-summary.html' -%} The ministreaming library has been enhanced and extended by the -"full" streaming library. +"full" streaming library. Ministreaming is deprecated and is incompatible with today's applications. The following documentation is old. Also note that streaming extends ministreaming in the same Java package (net.i2p.client.streaming), -so the current -API documentation -contains both. +so the current API documentation contains both. Obsolete ministreaming classes and methods are clearly marked as deprecated in the Javadocs. +{%- endtrans %}

                                                        -

                                                        Ministreaming Library

                                                        +

                                                        {% trans %}Ministreaming Library{% endtrans %}

                                                        -

                                                        The ministreaming library is a layer on top of the core -I2CP that allows reliable, in order, and authenticated streams +

                                                        {% trans i2cp=site_url('docs/protocol/i2cp') %} +The ministreaming library is a layer on top of the core +I2CP that allows reliable, in order, and authenticated streams of messages to operate across an unreliable, unordered, and unauthenticated message layer. Just like the TCP to IP relationship, this streaming functionality has a whole series of tradeoffs and optimizations available, but rather than embed that functionality into the base I2P code, it has been factored off into its own library both to keep the TCP-esque complexities separate and to -allow alternative optimized implementations.

                                                        +allow alternative optimized implementations. +{%- endtrans %}

                                                        -

                                                        The ministreaming library was written by mihi as a part of his -I2PTunnel application and then factored out and released +

                                                        {% trans i2ptunnel=site_url('docs/api/i2ptunnel'), minwww=site_url('misc/minwww') -%} +The ministreaming library was written by mihi as a part of his +I2PTunnel application and then factored out and released under the BSD license. It is called the "mini"streaming library because it makes some simplifications in the implementation, while a more robust streaming library could be further optimized for operation over I2P. The two main issues with the ministreaming library are its use of the traditional TCP two phase establishment protocol and the current fixed window size of 1. The establishment issue is minor for long lived streams, but for short ones, such as quick HTTP -requests, the impact can be significant. As for the window +requests, the impact can be significant. As for the window size, the ministreaming library doesn't maintain any ID or ordering within the messages sent (or include any application level ACK or SACK), so it must wait -on average twice the time it takes to send a message before sending another.

                                                        +on average twice the time it takes to send a message before sending another. +{%- endtrans %}

                                                        -

                                                        Even with those issues, the ministreaming library performs quite well in many -situations, and its API +

                                                        {% trans api='http://docs.i2p-projekt.de/javadoc/net/i2p/client/streaming/package-summary.html', +samv3=site_url('docs/api/samv3') -%} +Even with those issues, the ministreaming library performs quite well in many +situations, and its API is both quite simple and capable of remaining unchanged as different streaming implementations are introduced. The library is deployed in its own ministreaming.jar. Developers in Java who would like to use it can access the API directly, while developers in other languages can use it through -SAM's streaming support.

                                                        {% endblock %} +SAM's streaming support. +{%- endtrans %}

                                                        +{% endblock %} diff --git a/i2p2www/pages/site/docs/api/socks.html b/i2p2www/pages/site/docs/api/socks.html index 926189a1..b31a1552 100644 --- a/i2p2www/pages/site/docs/api/socks.html +++ b/i2p2www/pages/site/docs/api/socks.html @@ -1,34 +1,39 @@ {% extends "global/layout.html" %} {% block title %}SOCKS{% endblock %} {% block content %} -

                                                        SOCKS and SOCKS proxies

                                                        -

                                                        - The SOCKS proxy is working as of release 0.7.1. SOCKS 4/4a/5 are supported. - Enable SOCKS by creating a SOCKS client tunnel in i2ptunnel. - Both shared-clients and non-shared are supported. - There is no SOCKS outproxy so it is of limited use. -

                                                        -

                                                        -As it says on the -FAQ: -

                                                        - Many applications leak sensitive - information that could identify you on the Internet. I2P only filters - connection data, but if the program you intend to run sends this - information as content, I2P has no way to protect your anonymity. For - example, some mail applications will send the IP address of the machine - they are running on to a mail server. There is no way for I2P to filter - this, thus using I2P to 'socksify' existing applications is possible, but - extremely dangerous. -

                                                        +

                                                        {% trans %}SOCKS and SOCKS proxies{% endtrans %}

                                                        +

                                                        {% trans %} +The SOCKS proxy is working as of release 0.7.1. SOCKS 4/4a/5 are supported. +Enable SOCKS by creating a SOCKS client tunnel in i2ptunnel. +Both shared-clients and non-shared are supported. +There is no SOCKS outproxy so it is of limited use. +{%- endtrans %}

                                                        + +

                                                        {% trans faq=site_url('faq') %} +As it says on the FAQ: +{%- endtrans %}

                                                        +
                                                        {% trans -%}
                                                        +Many applications leak sensitive
                                                        +information that could identify you on the Internet. I2P only filters
                                                        +connection data, but if the program you intend to run sends this
                                                        +information as content, I2P has no way to protect your anonymity.  For
                                                        +example, some mail applications will send the IP address of the machine
                                                        +they are running on to a mail server. There is no way for I2P to filter
                                                        +this, thus using I2P to 'socksify' existing applications is possible, but
                                                        +extremely dangerous.
                                                        +{%- endtrans %}
                                                        +

                                                        {% trans -%} And quoting from a 2005 email: -

                                                        +{%- endtrans %}

                                                        +
                                                        {% trans -%}
                                                         ... there is a reason why human and
                                                         others have both built and abandoned the SOCKS proxies.  Forwarding
                                                         arbitrary traffic is just plain unsafe, and it behooves us as
                                                         developers of anonymity and security software to have the safety of
                                                         our end users foremost in our minds.
                                                        +{%- endtrans %}
                                                        +

                                                        {% trans -%} Hoping that we can simply strap an arbitrary client on top of I2P without auditing both its behavior and its exposed protocols for security and anonymity is naive. Pretty much *every* application @@ -38,33 +43,33 @@ reality. End users are better served with systems designed for anonymity and security. Modifying existing systems to work in anonymous environments is no small feat, orders of magnitude more work that simply using the existing I2P APIs. -

                                                        +{%- endtrans %}

                                                        -

                                                        +

                                                        {% trans -%} The SOCKS proxy supports standard addressbook names, but not Base64 destinations. Base32 hashes should work as of release 0.7. It supports outgoing connections only, i.e. an I2PTunnel Client. UDP support is stubbed out but not working yet. Outproxy selection by port number is stubbed out. -

                                                        +{%- endtrans %}

                                                        -

                                                        See Also

                                                        +

                                                        {% trans %}See Also{% endtrans %}

                                                        -

                                                        If You Do Get Something Working

                                                        +

                                                        {% trans %}If You Do Get Something Working{% endtrans %}

                                                        +

                                                        {% trans -%} Please let us know. And please provide substantial warnings about the risks of socks proxies. +{%- endtrans %} {% endblock %} diff --git a/i2p2www/pages/site/docs/api/streaming.html b/i2p2www/pages/site/docs/api/streaming.html index ef416d55..13616fa8 100644 --- a/i2p2www/pages/site/docs/api/streaming.html +++ b/i2p2www/pages/site/docs/api/streaming.html @@ -1,30 +1,32 @@ {% extends "global/layout.html" %} -{% block title %}Streaming Library{% endblock %} -{% block lastupdated %}November 2012{% endblock %} +{% block title %}{% trans %}Streaming Library{% endtrans %}{% endblock %} +{% block lastupdated %}{% trans %}November 2012{% endtrans %}{% endblock %} {% block accuratefor %}0.9.3{% endblock %} {% block content %} -

                                                        Overview

                                                        +

                                                        {% trans %}Overview{% endtrans %}

                                                        -

                                                        +

                                                        {% trans datagrams=site_url('docs/spec/datagrams') -%} The streaming library is technically part of the "application" layer, as it is not a core router function. In practice, however, it provides a vital function for almost all existing I2P applications, by providing a TCP-like streams over I2P, and allowing existing apps to be easily ported to I2P. The other end-to-end transport library for client communication is the -datagram library. -

                                                        +datagram library. +{%- endtrans %}

                                                        -

                                                        The streaming library is a layer on top of the core -I2CP API that allows reliable, in-order, and authenticated streams +

                                                        {% trans i2cp=site_url('docs/protocol/i2cp') -%} +The streaming library is a layer on top of the core +I2CP API that allows reliable, in-order, and authenticated streams of messages to operate across an unreliable, unordered, and unauthenticated message layer. Just like the TCP to IP relationship, this streaming functionality has a whole series of tradeoffs and optimizations available, but rather than embed that functionality into the base I2P code, it has been factored off into its own library both to keep the TCP-esque complexities separate and to -allow alternative optimized implementations.

                                                        +allow alternative optimized implementations. +{%- endtrans %}

                                                        -

                                                        +

                                                        {% trans -%} In consideration of the relatively high cost of messages, the streaming library's protocol for scheduling and delivering those messages has been optimized to allow individual messages passed to contain as much information as is available. @@ -34,184 +36,256 @@ the small HTTP request payload, and the reply bundles the SYN, FIN, ACK, and the HTTP response payload. While an additional ACK must be transmitted to tell the HTTP server that the SYN/FIN/ACK has been received, the local HTTP proxy can often deliver the full response to the browser -immediately. -

                                                        +immediately. +{%- endtrans %}

                                                        -

                                                        +

                                                        {% trans -%} The streaming library bears much resemblance to an abstraction of TCP, with its sliding windows, congestion control algorithms (both slow start and congestion avoidance), and general packet behavior (ACK, SYN, FIN, RST, rto calculation, etc). -

                                                        +{%- endtrans %}

                                                        -

                                                        +

                                                        {% trans -%} The streaming library is a robust library which is optimized for operation over I2P. It has a one-phase setup, and it contains a full windowing implementation. -

                                                        +{%- endtrans %}

                                                        +

                                                        {% trans %}API{% endtrans %}

                                                        - -

                                                        API

                                                        - -

                                                        +

                                                        {% trans i2cp=site_url('docs/protocol/i2cp') -%} The streaming library API provides a standard socket paradigm to Java applications. -The lower-level -I2CP -API is completely hidden, except that applications may pass -I2CP parameters through the streaming library, -to be interpreted by I2CP. -

                                                        +The lower-level I2CP API is completely hidden, except that +applications may pass I2CP parameters through the +streaming library, to be interpreted by I2CP. +{%- endtrans %}

                                                        -

                                                        +

                                                        {% trans i2cp=site_url('docs/protocol/i2cp'), +i2psktmf='http://docs.i2p-projekt.de/javadoc/net/i2p/client/streaming/I2PSocketManagerFactory.html', +i2psktm='http://docs.i2p-projekt.de/javadoc/net/i2p/client/streaming/I2PSocketManager.html', +i2psess='http://docs.i2p-projekt.de/javadoc/net/i2p/client/streaming/I2PSession.html', +i2pskt='http://docs.i2p-projekt.de/javadoc/net/i2p/client/streaming/I2PSocket.html', +i2psskt='http://docs.i2p-projekt.de/javadoc/net/i2p/client/streaming/I2PServerSocket.html' -%} The standard interface to the streaming lib is for the application to use the -I2PSocketManagerFactory -to create an -I2PSocketManager. -The application then asks the socket manager for an -I2PSession, -which will cause a connection to the router via -I2CP. -The application can then setup connections with an -I2PSocket -or receive connections with an -I2PServerSocket. -

                                                        -

                                                        -Here are the -full streaming library Javadocs. -

                                                        +I2PSocketManagerFactory to create an +I2PSocketManager. The application then asks the +socket manager for an I2PSession, which will cause +a connection to the router via I2CP. The application +can then setup connections with an I2PSocket or +receive connections with an I2PServerSocket. +{%- endtrans %}

                                                        -

                                                        +

                                                        {% trans url='http://docs.i2p-projekt.de/javadoc/net/i2p/client/streaming/package-summary.html' -%} +Here are the full streaming library Javadocs. +{%- endtrans %}

                                                        + +

                                                        {% trans -%} For a good example of usage, see the i2psnark code. -

                                                        +{%- endtrans %}

                                                        -

                                                        Options and Defaults

                                                        -

                                                        +

                                                        {% trans %}Options and Defaults{% endtrans %}

                                                        +

                                                        {% trans i2psktmf='http://docs.i2p-projekt.de/javadoc/net/i2p/client/streaming/I2PSocketManagerFactory.html' -%} The options and current default values are listed below. Options are case-sensitive and may be set for the whole router, for a particular client, or for an individual socket on a per-connection basis. Many values are tuned for HTTP performance over typical I2P conditions. Other applications such as peer-to-peer services are strongly encouraged to modify as necessary, by setting the options and passing them via the call to -I2PSocketManagerFactory.createManager(_i2cpHost, _i2cpPort, opts). +I2PSocketManagerFactory.createManager(_i2cpHost, _i2cpPort, opts). Time values are in ms. -

                                                        -

                                                        -Note that higher-layer APIs, such as -SAM, -BOB, and -I2PTunnel, +{%- endtrans %}

                                                        + +

                                                        {% trans samv3=site_url('docs/api/samv3'), bob=site_url('docs/api/bob'), i2ptunnel=site_url('docs/api/i2ptunnel') -%} +Note that higher-layer APIs, such as SAM, +BOB, and I2PTunnel, may override these defaults with their own defaults. Also note that many options only apply to servers listening for incoming connections. -

                                                        +{%- endtrans %}

                                                        + +

                                                        {% trans -%} As of release 0.9.1, most, but not all, options may be changed on an active socket manager or session. See the javadocs for details. -

                                                        +{%- endtrans %}

    PortUsage
    7662Zzzot Plugin
    7663?? Plugin ??
    7664JAMWiki Plugin
    recommended spot for new plugins/applications
    {% trans %}recommended spot for new plugins/applications{% endtrans %}
    8118Privoxy (reserve)
    8123Tor Polipo (reserve)
    8887Old default network port
    - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    OptionDefaultNotes
    {{ _('Option') }}{{ _('Default') }}{{ _('Notes') }}
    i2cp.accessListnullComma- or space-separated list of Base64 peer Hashes used for either access list or blacklist - As of release 0.7.13. -
    i2cp.enableAccessListfalse -Use the access list as a whitelist for incoming connections - As of release 0.7.13. -
    i2cp.enableBlackListfalse -Use the access list as a blacklist for incoming connections - As of release 0.7.13. -
    i2p.streaming.answerPingstrueWhether to respond to incoming pings -
    i2p.streaming.blacklistnullComma- or space-separated list of Base64 peer Hashes to be - blacklisted for incoming connections to ALL destinations in the context. - This option must be set in the context properties, NOT in the createManager() options argument. - Note that setting this in the router context will not affect clients outside the - router in a separate JVM and context. - As of release 0.9.3. -
    i2p.streaming.bufferSize64K - How much transmit data (in bytes) will be accepted that hasn't been written out yet. -
    i2p.streaming.congestionAvoidanceGrowthRateFactor1 - - When we're in congestion avoidance, we grow the window size at the rate - of 1/(windowSize*factor). In standard TCP, window sizes are in bytes, - while in I2P, window sizes are in messages. - A higher number means slower growth. -
    i2p.streaming.connectDelay-1 - - How long to wait after instantiating a new con - before actually attempting to connect. If this is - <= 0, connect immediately with no initial data. If greater than 0, wait - until the output stream is flushed, the buffer fills, - or that many milliseconds pass, and include any initial data with the SYN. -
    i2p.streaming.connectTimeout5*60*1000 - How long to block on connect, in milliseconds. Negative means indefinitely. Default is 5 minutes. -
    i2p.streaming.disableRejectLoggingfalse - Whether to disable warnings in the logs when an incoming connection is rejected due to connection limits. - As of release 0.9.4. -
    i2p.streaming.enforceProtocolfalseWhether to listen only for the streaming protocol. - Setting to true will prohibit communication with Destinations earlier than release 0.7.1 - (released March 2009). Set to true if running multiple protocols on this Destination. - As of release 0.9.1. -
    i2p.streaming.inactivityAction2 (send) (0=noop, 1=disconnect) - What to do on an inactivity timeout - do nothing, disconnect, or send a duplicate ack. -
    i2p.streaming.inactivityTimeout90*1000 -
    i2p.streaming.initialAckDelay2000 -
    i2p.streaming.initialResendDelay1000 - - The initial value of the resend delay field in the packet header, times 1000. - Not fully implemented; see below. -
    i2p.streaming.initialRTT8000 (if no sharing data available) -
    i2p.streaming.initialWindowSize6(if no sharing data available) - In standard TCP, window sizes are in bytes, while in I2P, window sizes are in messages. -
    i2p.streaming.maxConcurrentStreams-1 (0 or negative value means unlimited) - This is a total limit for incoming and outgoing combined. -
    i2p.streaming.maxConnsPerMinute0 Incoming connection limit (per peer; 0 means disabled) - As of release 0.7.14. -
    i2p.streaming.maxConnsPerHour0 (per peer; 0 means disabled) - As of release 0.7.14. -
    i2p.streaming.maxConnsPerDay0 (per peer; 0 means disabled) - As of release 0.7.14. -
    i2p.streaming.maxMessageSize1730The MTU in bytes. -
    i2p.streaming.maxResends8 - - Maximum number of retransmissions before failure. -
    i2p.streaming.maxTotalConnsPerMinute0 Incoming connection limit (all peers; 0 means disabled) - As of release 0.7.14. -
    i2p.streaming.maxTotalConnsPerHour0 (all peers; 0 means disabled) - Use with caution as exceeding this will disable a server for a long time. - As of release 0.7.14. -
    i2p.streaming.maxTotalConnsPerDay0 (all peers; 0 means disabled) - Use with caution as exceeding this will disable a server for a long time. - As of release 0.7.14. -
    i2p.streaming.maxWindowSize128 -
    i2p.streaming.profile1 (bulk)(2=interactive not supported) - This doesn't currently do anything, but setting it to a value other than 1 will cause an error. -
    i2p.streaming.readTimeout-1 - - How long to block on read, in milliseconds. Negative means indefinitely. -
    i2p.streaming.slowStartGrowthRateFactor1 - - When we're in slow start, we grow the window size at the rate - of 1/(factor). In standard TCP, window sizes are in bytes, - while in I2P, window sizes are in messages. - A higher number means slower growth. -
    i2p.streaming.writeTimeout-1 - - How long to block on write/flush, in milliseconds. Negative means indefinitely. -
    i2cp.accessListnull{% trans -%} +Comma- or space-separated list of Base64 peer Hashes used for either access list or blacklist. +{%- endtrans %} {% trans release='0.7.13' -%} +As of release {{ release }}. +{%- endtrans %}
    i2cp.enableAccessListfalse{% trans -%} +Use the access list as a whitelist for incoming connections. +{%- endtrans %} {% trans release='0.7.13' -%} +As of release {{ release }}. +{%- endtrans %}
    i2cp.enableBlackListfalse{% trans -%} +Use the access list as a blacklist for incoming connections. +{%- endtrans %} {% trans release='0.7.13' -%} +As of release {{ release }}. +{%- endtrans %}
    i2p.streaming.answerPingstrue{% trans -%} +Whether to respond to incoming pings +{%- endtrans %}
    i2p.streaming.blacklistnull{% trans -%} +Comma- or space-separated list of Base64 peer Hashes to be +blacklisted for incoming connections to ALL destinations in the context. +This option must be set in the context properties, NOT in the createManager() options argument. +Note that setting this in the router context will not affect clients outside the +router in a separate JVM and context. +{%- endtrans %} {% trans release='0.9.3' -%} +As of release {{ release }}. +{%- endtrans %}
    i2p.streaming.bufferSize64K{% trans -%} +How much transmit data (in bytes) will be accepted that hasn't been written out yet. +{%- endtrans %}
    i2p.streaming.congestionAvoidanceGrowthRateFactor1{% trans -%} +When we're in congestion avoidance, we grow the window size at the rate +of 1/(windowSize*factor). In standard TCP, window sizes are in bytes, +while in I2P, window sizes are in messages. +A higher number means slower growth. +{%- endtrans %}
    i2p.streaming.connectDelay-1{% trans -%} +How long to wait after instantiating a new con +before actually attempting to connect. If this is +<= 0, connect immediately with no initial data. If greater than 0, wait +until the output stream is flushed, the buffer fills, +or that many milliseconds pass, and include any initial data with the SYN. +{%- endtrans %}
    i2p.streaming.connectTimeout5*60*1000{% trans -%} +How long to block on connect, in milliseconds. Negative means indefinitely. Default is 5 minutes. +{%- endtrans %}
    i2p.streaming.disableRejectLoggingfalse{% trans -%} +Whether to disable warnings in the logs when an incoming connection is rejected due to connection limits. +{%- endtrans %} {% trans release='0.9.4' -%} +As of release {{ release }}. +{%- endtrans %}
    i2p.streaming.enforceProtocolfalse{% trans -%} +Whether to listen only for the streaming protocol. +Setting to true will prohibit communication with Destinations earlier than release 0.7.1 +(released March 2009). Set to true if running multiple protocols on this Destination. +{%- endtrans %} {% trans release='0.9.1' -%} +As of release {{ release }}. +{%- endtrans %}
    i2p.streaming.inactivityAction2 (send) {% trans -%} +(0=noop, 1=disconnect) +What to do on an inactivity timeout - do nothing, disconnect, or send a duplicate ack. +{%- endtrans %}
    i2p.streaming.inactivityTimeout90*1000
    i2p.streaming.initialAckDelay2000
    i2p.streaming.initialResendDelay1000{% trans -%} +The initial value of the resend delay field in the packet header, times 1000. +Not fully implemented; see below. +{%- endtrans %}
    i2p.streaming.initialRTT8000 ({% trans %}if no sharing data available{% endtrans %})
    i2p.streaming.initialWindowSize6({% trans %}if no sharing data available{% endtrans %}) {% trans -%} +In standard TCP, window sizes are in bytes, while in I2P, window sizes are in messages. +{%- endtrans %}
    i2p.streaming.maxConcurrentStreams-1 {% trans -%} +(0 or negative value means unlimited) +This is a total limit for incoming and outgoing combined. +{%- endtrans %}
    i2p.streaming.maxConnsPerMinute0 {% trans -%} +Incoming connection limit (per peer; 0 means disabled) +{%- endtrans %} {% trans release='0.7.14' -%} +As of release {{ release }}. +{%- endtrans %}
    i2p.streaming.maxConnsPerHour0 {% trans -%} +(per peer; 0 means disabled) +{%- endtrans %} {% trans release='0.7.14' -%} +As of release {{ release }}. +{%- endtrans %}
    i2p.streaming.maxConnsPerDay0 {% trans -%} +(per peer; 0 means disabled) +{%- endtrans %} {% trans release='0.7.14' -%} +As of release {{ release }}. +{%- endtrans %}
    i2p.streaming.maxMessageSize1730{% trans -%} +The MTU in bytes. +{%- endtrans %}
    i2p.streaming.maxResends8{% trans -%} +Maximum number of retransmissions before failure. +{%- endtrans %}
    i2p.streaming.maxTotalConnsPerMinute0 {% trans -%} +Incoming connection limit (all peers; 0 means disabled) +{%- endtrans %} {% trans release='0.7.14' -%} +As of release {{ release }}. +{%- endtrans %}
    i2p.streaming.maxTotalConnsPerHour0 {% trans -%} +(all peers; 0 means disabled) +Use with caution as exceeding this will disable a server for a long time. +{%- endtrans %} {% trans release='0.7.14' -%} +As of release {{ release }}. +{%- endtrans %}
    i2p.streaming.maxTotalConnsPerDay0 {% trans -%} +(all peers; 0 means disabled) +Use with caution as exceeding this will disable a server for a long time. +{%- endtrans %} {% trans release='0.7.14' -%} +As of release {{ release }}. +{%- endtrans %}
    i2p.streaming.maxWindowSize128
    i2p.streaming.profile1 (bulk){% trans -%} +(2=interactive not supported) +This doesn't currently do anything, but setting it to a value other than 1 will cause an error. +{%- endtrans %}
    i2p.streaming.readTimeout-1{% trans -%} +How long to block on read, in milliseconds. Negative means indefinitely. +{%- endtrans %}
    i2p.streaming.slowStartGrowthRateFactor1{% trans -%} +When we're in slow start, we grow the window size at the rate +of 1/(factor). In standard TCP, window sizes are in bytes, +while in I2P, window sizes are in messages. +A higher number means slower growth. +{%- endtrans %}
    i2p.streaming.writeTimeout-1{% trans -%} +How long to block on write/flush, in milliseconds. Negative means indefinitely. +{%- endtrans %}
    -

    Protocol Specification

    -

    Packet Format

    -

    +

    {% trans %}Protocol Specification{% endtrans %}

    +

    {% trans %}Packet Format{% endtrans %}

    +

    {% trans -%} The format of a single packet in the streaming protocol is: +{%- endtrans %}

     
     +----+----+----+----+----+----+----+----+
    @@ -232,7 +306,7 @@ The format of a single packet in the streaming protocol is:
     
    -
    FieldLengthContents +
    {{ _('Field') }}{{ _('Length') }}{{ _('Contents') }}
    sendStreamId 4 byte IntegerRandom number selected by the connection recipient and constant for the life of the connection. 0 in the SYN message sent by the originator, and in subsequent messages, until a SYN reply is received, @@ -280,11 +354,14 @@ As specified by the flags. See below.
    payload remaining packet size
    -

    Flags and Option Data Fields

    -

    The flags field above specifies some metadata about the packet, and in +

    {% trans %}Flags and Option Data Fields{% endtrans %}

    +

    {% trans -%} +The flags field above specifies some metadata about the packet, and in turn may require certain additional data to be included. The flags are as follows. Any data structures specified must be added to the options area -in the given order.

    +in the given order. +{%- endtrans %}

    +

    Bit order: 15....0 (15 is MSB)

    @@ -329,30 +406,32 @@ Currently unused, the ackThrough field is always valid. 11-15unused -

    Implementation Details

    +

    {% trans %}Implementation Details{% endtrans %}

    -

    Setup

    -

    +

    {% trans %}Setup{% endtrans %}

    +

    {% trans -%} The initiator sends a packet with the SYNCHRONIZE flag set. This packet may contain the initial data as well. The peer replies with a packet with the SYNCHRONIZE flag set. This packet may contain the initial response data as well. -

    -

    +{%- endtrans %}

    + +

    {% trans -%} The initiator may send additional data packets, up to the initial window size, before receiving the SYNCHRONIZE response. These packets will also have the send Stream ID field set to 0. Recipients must buffer packets received on unknown streams for a short period of time, as they may arrive out of order, in advance of the SYNCHRONIZE packet. -

    +{%- endtrans %}

    -

    MTU Selection and Negotiation

    -

    +

    {% trans %}MTU Selection and Negotiation{% endtrans %}

    +

    {% trans -%} The maximum message size (also called the MTU / MRU) is negotiated to the lower value supported by the two peers. As tunnel messages are padded to 1KB, a poor MTU selection will lead to a large amount of overhead. The MTU is specified by the option i2p.streaming.maxMessageSize. The current default MTU of 1730 was chosen to fit precisely into two 1K I2NP tunnel messages, including overhead for the typical case. -

    -

    +{%- endtrans %}

    + +

    {% trans -%} The first message in a connection includes a 387 byte (typical) Destination added by the streaming layer, and usually a 898 byte (typical) LeaseSet, and Session keys, bundled in the Garlic message by the router. (The LeaseSet and Session Keys will not be bundled if an ElGamal Session was previously established). @@ -360,42 +439,45 @@ Therefore, the goal of fitting a complete HTTP request in a single 1KB I2NP mess However, the selection of the MTU, together with careful implementation of fragmentation and batching strategies in the tunnel gateway processor, are important factors in network bandwidth, latency, reliability, and efficiency, especially for long-lived connections. -

    +{%- endtrans %}

    -

    Data Integrity

    +

    {% trans %}Data Integrity{% endtrans %}

    +

    {% trans i2cp=site_url('docs/protocol/i2cp') -%} Data integrity is assured by the gzip CRC-32 checksum implemented in -the I2CP layer. +the I2CP layer. There is no checksum field in the streaming protocol. +{%- endtrans %}

    -

    Packet Encapsulation

    +

    {% trans %}Packet Encapsulation{% endtrans %}

    +

    {% trans garlicrouting=site_url('docs/how/garlic-routing'), i2cp=site_url('docs/protocol/i2cp'), +i2np=site_url('docs/protocol/i2np'), tunnelmessage=site_url('docs/spec/tunnel-message') -%} Each packet is sent through I2P as a single message (or as an individual clove in a -Garlic Message). -Message encapsulation is implemented in the underlying -I2CP, -I2NP, and -tunnel message layers. -There is no packet delimiter mechanism or payload length field in the streaming protocol. +Garlic Message). Message encapsulation is implemented +in the underlying I2CP, I2NP, and +tunnel message layers. There is no packet delimiter +mechanism or payload length field in the streaming protocol. +{%- endtrans %}

    -

    Windowing

    -

    +

    {% trans %}Windowing{% endtrans %}

    +

    {% trans -%} The streaming lib uses standard slow-start (exponential window growth) and congestion avoidance (linear window growth) phases, with exponential backoff. Windowing and acknowledgments use packet count, not byte count. -

    +{%- endtrans %}

    -

    Close

    -

    +

    {% trans %}Close{% endtrans %}

    +

    {% trans -%} Any packet, including one with the SYNCHRONIZE flag set, may have the CLOSE flag sent as well. The connection is not closed until the peer responds with the CLOSE flag. CLOSE packets may contain data as well. -

    +{%- endtrans %}

    -

    Control Block Sharing

    -

    +

    {% trans %}Control Block Sharing{% endtrans %}

    +

    {% trans -%} The streaming lib supports "TCP" Control Block sharing. This shares two important streaming lib parameters (window size and round trip time) @@ -407,10 +489,12 @@ There is a separate share per ConnectionManager (i.e. per local Destination) so that there is no information leakage to other Destinations on the same router. The share data for a given peer expires after a few minutes. -

    +{%- endtrans %}

    -

    Other Parameters

    +

    {% trans %}Other Parameters{% endtrans %}

    +

    {% trans -%} The following parameters are hardcoded, but may be of interest for analysis: +{%- endtrans %}

    • MIN_RESEND_DELAY = 2*1000 (minimum RTO)
    • MAX_RESEND_DELAY = 45*1000 (maximum RTO) @@ -425,8 +509,8 @@ The following parameters are hardcoded, but may be of interest for analysis:

    -

    History

    -

    +

    {% trans %}History{% endtrans %}

    +

    {% trans -%} The streaming library has grown organically for I2P - first mihi implemented the "mini streaming library" as part of I2PTunnel, which was limited to a window size of 1 message (requiring an ACK before sending the next one), and then it was @@ -437,26 +521,25 @@ streams may adjust the maximum packet size and other options. The default message size is selected to fit precisely in two 1K I2NP tunnel messages, and is a reasonable tradeoff between the bandwidth costs of retransmitting lost messages, and the latency and overhead of multiple messages. -

    +{%- endtrans %}

    - - - -

    Future Work

    +

    {% trans %}Future Work{% endtrans %}

    +

    {% trans -%} The behavior of the streaming library has a profound impact on application-level performance, and as such, is an important area for further analysis. +{%- endtrans %}

      -
    • +
    • {% trans -%} Additional tuning of the streaming lib parameters may be necessary. -
    • -
    • +{%- endtrans %}
    • +
    • {% trans ntcpdisc=site_url('docs/discussions/ntcp') -%} Another area for research is the interaction of the streaming lib with the NTCP and SSU transport layers. -See the NTCP discussion page for details. -
    • -
    • +See the NTCP discussion page for details. +{%- endtrans %}
    • +
    • {% trans -%} The interaction of the routing algorithms with the streaming lib strongly affects performance. In particular, random distribution of messages to multiple tunnels in a pool leads to a high degree of out-of-order delivery which results in smaller window @@ -465,38 +548,35 @@ messages for a single from/to destination pair through a consistent set of tunnels, until tunnel expiration or delivery failure. The router's failure and tunnel selection algorithms should be reviewed for possible improvements. -
    • -
    • +{%- endtrans %}
    • +
    • {% trans -%} The data in the first SYN packet may exceed the receiver's MTU. -
    • -
    • +{%- endtrans %}
    • +
    • {% trans -%} The DELAY_REQUESTED field could be used more. -
    • -
    • +{%- endtrans %}
    • +
    • {% trans -%} Duplicate initial SYNCHRONIZE packets on short-lived streams may not be recognized and removed. -
    • -
    • +{%- endtrans %}
    • +
    • {% trans -%} Don't send the MTU in a retransmission. -
    • -
    • - Data is sent along unless the outbound window is full. - (i.e. no-Nagle or TCP_NODELAY) - Probably should have a configuration option for this. -
    • -
    • +{%- endtrans %}
    • +
    • {% trans -%} +Data is sent along unless the outbound window is full. +(i.e. no-Nagle or TCP_NODELAY) +Probably should have a configuration option for this. +{%- endtrans %}
    • +
    • {% trans -%} zzz has added debug code to the streaming library to log packets in a wireshark-compatible (pcap) format; Use this to further analyze performance. The format may require enhancement to map more streaming lib parameters to TCP fields. -
    • -
    • +{%- endtrans %}
    • +
    • {% trans -%} There are proposals to replace the streaming lib with standard TCP (or perhaps a null layer together with raw sockets). This would unfortunately be incompatible with the streaming lib but it would be good to compare the performance of the two. -
    • +{%- endtrans %}
    - - - {% endblock %} From 4a801a9fcd4a68492e6fcfdbb3f13537875e0bd9 Mon Sep 17 00:00:00 2001 From: kytv Date: Wed, 30 Jan 2013 21:46:43 +0000 Subject: [PATCH 360/650] typo fix --- i2p2www/pages/downloads/debian.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/i2p2www/pages/downloads/debian.html b/i2p2www/pages/downloads/debian.html index a13dc546..8b3d8557 100644 --- a/i2p2www/pages/downloads/debian.html +++ b/i2p2www/pages/downloads/debian.html @@ -188,7 +188,7 @@ i2p
    " as root or using sudo. This is the recommended means of operation. When installing for the first time, please remember to adjust your NAT/firewall if you can. The ports to forward can be found on the network configuration page in the router console. If guidance with respect to forwarding ports is needed, -you may portforward.com to be helpful. +you may find portforward.com to be helpful. {%- endtrans %}

    {% trans -%} From 8c043011656e25135a15f0d416a8a70959005276 Mon Sep 17 00:00:00 2001 From: kytv Date: Wed, 30 Jan 2013 21:57:14 +0000 Subject: [PATCH 361/650] minor shell script tweaks - add shebang line and make bourne compatible - report bugs to trac --- compile-messages.sh | 3 ++- extract-messages.sh | 9 +++++++-- init-new-po.sh | 3 ++- update-existing-po.sh | 3 ++- 4 files changed, 13 insertions(+), 5 deletions(-) diff --git a/compile-messages.sh b/compile-messages.sh index 68f3d282..819e4e81 100755 --- a/compile-messages.sh +++ b/compile-messages.sh @@ -1,3 +1,4 @@ -source ./translation.vars +#!/bin/sh +. ./translation.vars TZ=UTC env/bin/pybabel compile -d $TRANSDIR diff --git a/extract-messages.sh b/extract-messages.sh index c87dc1d2..1593068d 100755 --- a/extract-messages.sh +++ b/extract-messages.sh @@ -1,3 +1,8 @@ -source ./translation.vars +#!/bin/sh +. ./translation.vars -TZ=UTC env/bin/pybabel extract --project=$PROJECT --version=$VERSION -F $BABELCFG -o $POTFILE $PROJDIR +TZ=UTC env/bin/pybabel extract --msgid-bugs-address="http://trac.i2p2.de" \ + --project=$PROJECT \ + --version=$VERSION \ + -F $BABELCFG \ + -o $POTFILE $PROJDIR diff --git a/init-new-po.sh b/init-new-po.sh index c232ba83..4d9ea0f7 100755 --- a/init-new-po.sh +++ b/init-new-po.sh @@ -1,4 +1,5 @@ -source ./translation.vars +#!/bin/sh +. ./translation.vars if [ $# -ge 1 ] then diff --git a/update-existing-po.sh b/update-existing-po.sh index 8d6b600c..6d4d1717 100755 --- a/update-existing-po.sh +++ b/update-existing-po.sh @@ -1,3 +1,4 @@ -source ./translation.vars +#!/bin/sh +. ./translation.vars TZ=UTC env/bin/pybabel update -i $POTFILE -d $TRANSDIR From 27824b70e66ed17abab3fae88e3c6aa25c7c4589 Mon Sep 17 00:00:00 2001 From: str4d Date: Wed, 30 Jan 2013 23:19:19 +0000 Subject: [PATCH 362/650] Added translation tags to docs/applications/* --- .../site/docs/applications/bittorrent.html | 235 ++++--- .../site/docs/applications/supported.html | 658 ++++++++++-------- 2 files changed, 501 insertions(+), 392 deletions(-) diff --git a/i2p2www/pages/site/docs/applications/bittorrent.html b/i2p2www/pages/site/docs/applications/bittorrent.html index 013dbefa..79320856 100644 --- a/i2p2www/pages/site/docs/applications/bittorrent.html +++ b/i2p2www/pages/site/docs/applications/bittorrent.html @@ -1,183 +1,203 @@ {% extends "global/layout.html" %} -{% block title %}Bittorrent over I2P{% endblock %} -{% block lastupdated %}September 2012{% endblock %} +{% block title %}{% trans %}Bittorrent over I2P{% endtrans %}{% endblock %} +{% block lastupdated %}{% trans %}September 2012{% endtrans %}{% endblock %} {% block accuratefor %}0.9.2{% endblock %} {% block content %} -

    There are several bittorrent clients and trackers on I2P. +

    {% trans -%} +There are several bittorrent clients and trackers on I2P. As I2P addressing uses a Destination instead of an IP and port, minor changes are required to tracker and client software for operation on I2P. These changes are specified below. Note carefully the guidelines for compatibility with older I2P clients and trackers. -

    -

    +{%- endtrans %}

    + +

    {% trans -%} This page specifies protocol details common to all clients and trackers. Specific clients and trackers may implement other unique features or protocols. -

    -

    +{%- endtrans %}

    + +

    {% trans -%} We welcome additional ports of client and tracker software to I2P. -

    +{%- endtrans %}

    -

    Announces

    -

    +

    {% trans %}Announces{% endtrans %}

    +

    {% trans -%} Clients generally include a fake port=6881 parameter in the announce, for compatibility with older trackers. Trackers may ignore the port parameter, and should not require it. -

    -

    +{%- endtrans %}

    + +

    {% trans commonstructures=site_url('docs/spec/common-structures') -%} The ip parameter is the base 64 of the client's -Destination, +Destination, using the I2P Base 64 alphabet [A-Z][a-z][0-9]-~. -Destinations +Destinations are 387+ bytes, so the Base 64 is 516+ bytes. Clients generally append ".i2p" to the Base 64 Destination for compatibility with older trackers. Trackers should not require an appended ".i2p". -

    -

    +{%- endtrans %}

    + +

    {% trans -%} Other parameters are the same as in standard bittorrent. -

    -

    +{%- endtrans %}

    + +

    {% trans -%} While all current Destinations for clients are exactly 387 bytes, a tracker should not presume that will always be so. A reasonable maximum to assume, for now, is 475 bytes. As the tracker must decode the Base64 to deliver compact responses (see below), the tracker should probably decode and reject bad Base64 when announced. -

    -

    +{%- endtrans %}

    + +

    {% trans -%} The default response type is non-compact. Clients may request a compact response with the parameter compact=1. A tracker may, but is not required to, return a compact response when requested. -

    -

    +{%- endtrans %}

    + +

    {% trans -%} Developers of new I2P clients are strongly encouraged to implemenent announces over their own tunnel rather than the HTTP client proxy at port 4444. Doing so is both more efficient and it allows destination enforcement by the tracker (see below). -

    -

    +{%- endtrans %}

    + +

    {% trans -%} There are no known I2P clients or trackers that currently support UDP announce/responses. -

    +{%- endtrans %}

    -

    Non-Compact Tracker Responses

    -

    +

    {% trans %}Non-Compact Tracker Responses{% endtrans %}

    +

    {% trans -%} The non-compact response is just as in standard bittorrent, with an I2P "ip". -

    -

    +{%- endtrans %}

    + +

    {% trans -%} Trackers generally include a fake port key, or use the port from the announce, for compatibility with older clients. Clients must ignore the port parameter, and should not require it. -

    -

    +{%- endtrans %}

    + +

    {% trans commonstructures=site_url('docs/spec/common-structures') -%} The value of the ip key is the base 64 of the client's -Destination, as described above. +Destination, as described above. Trackers generally append ".i2p" to the Base 64 Destination if it wasn't in the announce ip, for compatibility with older clients. Clients should not require an appended ".i2p" in the responses. -

    -

    +{%- endtrans %}

    + +

    {% trans -%} Other response keys and values are the same as in standard bittorrent. -

    +{%- endtrans %}

    -

    Compact Tracker Responses

    -

    +

    {% trans %}Compact Tracker Responses{% endtrans %}

    +

    {% trans commonstructures=site_url('docs/spec/common-structures') -%} In the compact response, the value of the "peers" dictionary key is a single byte string, whose length is a multiple of 32 bytes. This string contains the concatenated -32-byte SHA-256 Hashes +32-byte SHA-256 Hashes of the binary -Destinations +Destinations of the peers. This hash must be computed by the tracker, unless destination enforcement (see below) is used, in which case the hash delivered in the X-I2P-DestHash or X-I2P-DestB32 HTTP headers may be converted to binary and stored. The peers key may be absent, or the peers value may be zero-length. -

    -

    +{%- endtrans %}

    + +

    {% trans -%} While compact response support is optional for both clients and trackers, it is highly recommended as it reduces the nominal response size by over 90%. -

    +{%- endtrans %}

    -

    Destination Enforcement

    -

    +

    {% trans %}Destination Enforcement{% endtrans %}

    +

    {% trans commonstructures=site_url('docs/spec/common-structures') -%} Some, but not all, I2P bittorrent clients announce over their own tunnels. Trackers may choose to prevent spoofing by requiring this, and verifying the client's -Destination +Destination using HTTP headers added by the I2PTunnel HTTP Server tunnel. The headers are X-I2P-DestHash, X-I2P-DestB64, and X-I2P-DestB32, which are different formats for the same information. These headers cannot be spoofed by the client. A tracker enforcing destinations need not require the ip announce parameter at all. -

    -

    +{%- endtrans %}

    + +

    {% trans -%} As several clients use the HTTP proxy instead of their own tunnel for announces, destination enforcement will prevent usage by those clients unless or until those clients are converted to announcing over their own tunnel. -

    -

    +{%- endtrans %}

    + +

    {% trans -%} Unfortunately, as the network grows, so will the amount of maliciousness, so we expect that all trackers will eventually enforce destinations. Both tracker and client developers should anticipate it. -

    +{%- endtrans %}

    -

    Announce Host Names

    -

    +

    {% trans %}Announce Host Names{% endtrans %}

    +

    {% trans naming=site_url('docs/naming') -%} Announce URL host names in torrent files generally follow the -I2P naming standards. +I2P naming standards. In addition to host names from address books and ".b32.i2p" Base 32 hostnames, the full Base 64 Destination (with [or without?] ".i2p" appended) should be supported. Non-open trackers should recognize their own host name in any of these formats. -

    -

    +{%- endtrans %}

    + +

    {% trans -%} To preserve anonymity, clients should generally ignore non-I2P announce URLs in torrent files. -

    +{%- endtrans %}

    -

    Client Connections

    -

    +

    {% trans %}Client Connections{% endtrans %}

    +

    {% trans -%} Client-to-client connections use the standard protocol over TCP. There are no known I2P clients that currently support uTP communication. -

    -

    -I2P uses 387+ byte -Destinations for addresses, as explained above. -

    -

    +{%- endtrans %}

    + +

    {% trans commonstructures=site_url('docs/spec/common-structures') -%} +I2P uses 387+ byte Destinations +for addresses, as explained above. +{%- endtrans %}

    + +

    {% trans -%} If the client has only the hash of the destination (such as from a compact response or PEX), it must perform a lookup by encoding it with Base 32, appending ".b32.i2p", and querying the Naming Service, which will return the full Destination if available. -

    -

    +{%- endtrans %}

    + +

    {% trans -%} If the client has a peer's full Destination it received in a non-compact response, it should use it directly in the connection setup. Do not convert a Destination back to a Base 32 hash for lookup, this is quite inefficient. -

    +{%- endtrans %}

    -

    Cross-Network Prevention

    -

    +

    {% trans %}Cross-Network Prevention{% endtrans %}

    +

    {% trans -%} To preserve anonymity, I2P bittorrent clients generally do not support non-I2P announces or peer connections. I2P HTTP outproxies often block announces. There are no known SOCKS outproxies supporting bittorrent traffic. -

    -

    +{%- endtrans %}

    + +

    {% trans -%} To prevent usage by non-I2P clients via an HTTP inproxy, I2P trackers often block accesses or announces that contain an X-Forwarded-For HTTP header. Trackers should reject standard network announces with IPv4 or IPv6 IPs, and not deliver them in responses. -

    +{%- endtrans %}

    PEX

    -

    +

    {% trans commonstructures=site_url('docs/spec/common-structures') -%} I2P PEX is based on ut_pex. As there does not appear to be a formal specification of ut_pex available, it may be necessary to review the libtorrent source for assistance. @@ -186,37 +206,40 @@ It is an extension message, identified as "i2p_pex" in It contains a bencoded dictionary with up to 3 keys, "added", "added.f", and "dropped". The added and dropped values are each a single byte string, whose length is a multiple of 32 bytes. These byte strings are the concatenated SHA-256 Hashes of the binary -Destinations +Destinations of the peers. This is the same format as the peers dictionary value in the i2p compact response format specified above. The added.f value, if present, is the same as in ut_pex. -

    +{%- endtrans %}

    DHT

    -

    +

    {% trans -%} DHT support is included in the i2psnark client as of version 0.9.2. Preliminary differences from BEP 5 are described below, and are subject to change. Contact the I2P developers if you wish to develop a client supporting DHT. -

    -

    +{%- endtrans %}

    + +

    {% trans -%} Unlike standard DHT, I2P DHT does not use a bit in the options handshake, or the PORT message. It is advertised with an extension message, identified as "i2p_dht" in the extension handshake. It contains a bencoded dictionary with two keys, "port" and "rport", both integers. -

    -

    +{%- endtrans %}

    + +

    {% trans -%} The UDP (datagram) port listed in the compact node info is used to receive repliable (signed) datagrams. This is used for queries, except for announces. We call this the "query port". This is the "port" value from the extension message. Queries use I2CP protocol number 17. -

    -

    +{%- endtrans %}

    + +

    {% trans -%} In addition to that UDP port, we use a second datagram port equal to the query port + 1. This is used to receive unsigned (raw) datagrams for replies, errors, and announces. @@ -226,25 +249,29 @@ We call this the "response port". This is the "rport" value from the extension message. It must be 1 + the query port. Responses and announces use I2CP protocol number 18. -

    -

    +{%- endtrans %}

    + +

    {% trans -%} Compact peer info is 32 bytes (32 byte SHA256 Hash) instead of 4 byte IP + 2 byte port. There is no peer port. In a response, the "values" key is a list of strings, each containing a single compact peer info. -

    -

    +{%- endtrans %}

    + +

    {% trans -%} Compact node info is 54 bytes (20 byte SHA1 Hash + 32 byte SHA256 Hash + 2 byte port) instead of 20 byte SHA1 Hash + 4 byte IP + 2 byte port. In a response, the "nodes" key is a single byte string with concatenated compact node info. -

    -

    +{%- endtrans %}

    + +

    {% trans -%} Secure node ID requirement: To make various DHT attacks more difficult, the first 4 bytes of the Node ID must match the first 4 bytes of the destination Hash, and the next two bytes of the Node ID must match the next two bytes of the destination hash exclusive-ORed with the port. -

    -

    +{%- endtrans %}

    + +

    {% trans -%} In a torrent file, the trackerless torrent dictionary "nodes" key is TBD. It could be a list of @@ -252,24 +279,24 @@ It could be a list of containing a host string and a port integer. Alternatives: A single byte string with concatenated hashes, or a list of strings alone. -

    +{%- endtrans %}

    -

    Additional Information

    +

    {% trans %}Additional Information{% endtrans %}

    diff --git a/i2p2www/pages/site/docs/applications/supported.html b/i2p2www/pages/site/docs/applications/supported.html index 6deda707..52f0ce66 100644 --- a/i2p2www/pages/site/docs/applications/supported.html +++ b/i2p2www/pages/site/docs/applications/supported.html @@ -1,36 +1,34 @@ {% extends "global/layout.html" %} -{% block title %}Supported Applications{% endblock %} +{% block title %}{% trans %}Supported Applications{% endtrans %}{% endblock %} {% block content %} -

    Supported Applications

    +

    {% trans %}Supported Applications{% endtrans %}

    -

    This is intended to be a comprehensive listing of applications used with +

    {% trans trac=i2pconv('trac.i2p2.i2p') -%} +This is intended to be a comprehensive listing of applications used with I2P. If you know of something that's missing please submit a ticket on -Trac, and be sure to select the -“www” component in the submission form.

    +Trac, and be sure to select the +“www” component in the submission form. +{%- endtrans %}

    -

    Supported applications are tagged with one or more of the following:

    +

    {% trans %} +Supported applications are tagged with one or more of the following: +{%- endtrans %}

    -
    bundled
    +
    {{ _('bundled') }}
    -

    Bundled application — I2P ships with a few officially - supported applications that let new users take immediate advantage of - some of I2P's more useful capabilities.

    +

    {% trans -%} +Bundled application — I2P ships with a few officially +supported applications that let new users take immediate advantage of +some of I2P's more useful capabilities. +{%- endtrans %}

    -
    plugin
    +
    {{ _('plugin') }}
    -

    Third-party plugin — I2P's plugin system provides convenient - deployment of I2P-enabled applications and allows tighter integration - with the router. Plugins are [reviewed by the community](http://plugins.i2p) to identify security and - anonymity issues.

    +

    {% trans plugins=i2pconv('plugins.i2p') -%} +Third-party plugin — I2P's plugin system provides convenient +deployment of I2P-enabled applications and allows tighter integration +with the router. Plugins are [reviewed by the community](http://{{ plugins }}) to identify security and +anonymity issues. +{%- endtrans %}

    -
    standalone, standalone/mod
    +
    {{ _('standalone') }}, {{ _('standalone/mod') }}
    -

    Third-party standalone application — Many standard network - applications only require careful setup and configuration to communicate - anonymously over I2P. These are tagged with standalone. Some - applications, tagged with standalone/mod, require patching to - function properly over I2P or to prevent inadvertent disclosure of - identifying information such as the user's hostname or external IP - address.

    +

    {% trans -%} +Third-party standalone application — Many standard network +applications only require careful setup and configuration to communicate +anonymously over I2P. These are tagged with standalone. Some +applications, tagged with standalone/mod, require patching to +function properly over I2P or to prevent inadvertent disclosure of +identifying information such as the user's hostname or external IP +address. +{%- endtrans %}

    -
    service
    +
    {{ _('service') }}
    -

    Third-party essential network service — Services which on - the I2P network are analogous to those provided on the public Internet - by hosting providers, ISPs, and Google: eepsite indexes and jump - services, search engines, email, DNS-style name services, hosting, - proxies, etc. These services focus on boosting the usefulness of the - network as a whole, and making network content more discoverable.

    +

    {% trans -%} +Third-party essential network service — Services which on +the I2P network are analogous to those provided on the public Internet +by hosting providers, ISPs, and Google: eepsite indexes and jump +services, search engines, email, DNS-style name services, hosting, +proxies, etc. These services focus on boosting the usefulness of the +network as a whole, and making network content more discoverable. +{%- endtrans %}

    -
    unmaintained
    +
    {{ _('unmaintained') }}
    -

    Unmaintained — This is used to tag plugins, applications, - and services which appear to be unmaintained and may be removed from - this listing in the future.

    +

    {% trans -%} +Unmaintained — This is used to tag plugins, applications, +and services which appear to be unmaintained and may be removed from +this listing in the future. +{%- endtrans %}

    -

    Warning: Using an application, plugin, or service with I2P +

    {% trans threatmodel=site_url('docs/how/threat-model') -%} +Warning: Using an application, plugin, or service with I2P doesn't automatically protect your anonymity. I2P is merely a set of tools -which can help you mitigate certain identified +which can help you mitigate certain identified threats to anonymity. We do not and cannot make any guarantees about the safety of the applications, plugins, and services listed below. Most applications and plugins must be properly configured, and some will need to be patched — and even then your anonymity might not be assured. Similarly, services could put your anonymity at risk, either by design or through -carelessness on their part or your own.

    +carelessness on their part or your own. +{%- endtrans %}

    -

    If you have doubts about the suitability of an application, +

    {% trans -%} +If you have doubts about the suitability of an application, plugin, or service for use with I2P, you are urged to inquire about privacy issues with its maintainers, to search its mailing lists and bug tracker if one exists, and consult trusted, knowledgeable members of the I2P -community.

    +community. +{%- endtrans %}

    -

    Take responsibility for your own anonymity and safety — always +

    {% trans -%} +Take responsibility for your own anonymity and safety — always seek expert advice, educate yourself, practice good judgment, be mindful of disclosing personally identifying information, and don't take -shortcuts.

    +shortcuts. +{%- endtrans %}

    -

    Blogging, Forums, and Wikis

    +

    {% trans %}Blogging, Forums, and Wikis{% endtrans %}

    • -

      El - Dorado — Lightweight forum software. - [standalone/mod]

      +

      El Dorado — + {% trans %}Lightweight forum software.{% endtrans %} + [{{ _('standalone/mod') }}]

    • -

      Pebble - — Another lightweight blogging platform. - [plugin, standalone/mod]

      +

      Pebble — + {% trans %}Another lightweight blogging platform.{% endtrans %} + [{{ _('plugin') }}, {{ _('standalone/mod') }}]

    • -

      phpBB — Most - popular open source forum software. - [standalone/mod]

      +

      phpBB — + {% trans %}Most popular open source forum software.{% endtrans %} + [{{ _('standalone/mod') }}]

    • Syndie — - Distributed forums software, originally developed by jrandom. - [plugin, standalone, unmaintained]

      + {% trans %}Distributed forums software, originally developed by jrandom.{% endtrans %} + [{{ _('plugin') }}, {{ _('standalone') }}, {{ _('unmaintained') }}]

    • JAMWiki — - A Java-based MediaWiki clone. No external database needed. - Plugin available here. - [standalone, plugin]

      +{% trans plugins=i2pconv('plugins.i2p') -%} +A Java-based MediaWiki clone. No external database needed. +Plugin available here. +{%- endtrans %} + [{{ _('standalone') }}, {{ _('plugin') }}]

    -

    Decentralized File -Storage

    +

    {% trans %}Decentralized File Storage{% endtrans %}

      -
    • Tahoe-LAFS-I2P — Port - of the Tahoe-LAFS - distributed file system to the I2P network. Controller plugin here. - [plugin, standalone]
    • +
    • Tahoe-LAFS-I2P — +{% trans stats=i2pconv('stats.i2p') -%} +Port of the Tahoe-LAFS +distributed file system to the I2P network. Controller plugin here. +{%- endtrans %} + [{{ _('plugin') }}, {{ _('standalone') }}]
    -

    Development Tools

    +

    {% trans %}Development Tools{% endtrans %}

    -

    Version control

    +

    {% trans %}Version control{% endtrans %}

    • -

      Git — Most popular - distributed version control system. [standalone]

      +

      Git — + {% trans %}Most popular distributed version control system.{% endtrans %} + [{{ _('standalone') }}]

    • -

      Monotone — Another - distributed version control system. Currently used in I2P development. - [standalone]

      +

      Monotone — +{% trans monotone=site_url('get-involved/guides/monotone') -%} +Another distributed version control system. Currently +used in I2P development. +{%- endtrans %} + [{{ _('standalone') }}]

    -

    Domain Naming

    +

    {% trans %}Domain Naming{% endtrans %}

      -
    • susidns - — Provides management of addressbooks, which are part of a simple, - user-controlled I2P naming system somewhat - analogous to the Internet's Domain Name System (DNS). Addressbooks map - Base64 destinations to short, usually human-readable “domain” names ending - with a .i2p suffix which the I2P router's HTTP client can resolve back to - Base64 addresses. (Note: While Base64 destinations are globally - unique, addressbook “domain” names only resolve to unique destinations - locally.) [bundled]
    • -
    - -

    Email

    - -
      -
    • -

      I2P-Bote — - Serverless peer-to-peer email application using a distributed hash table - (DHT) for secure mail storage. [plugin]

      -
    • - -
    • -

      Postman's anonymous email - service — Provides email service within the I2P network via - @mail.i2p addresses, and email gateway service between the I2P network - and the public Internet via @i2pmail.org addresses. One of the oldest - continuous services on I2P. [service]

      -
    • - -
    • -

      susimail - — Simple web browser-based email interface. Configured to use Postman's - email service by default. [bundled]

      +
    • susidns — +{% trans naming=site_url('docs/naming') -%} +Provides management of addressbooks, which are part of a simple, +user-controlled I2P naming system somewhat +analogous to the Internet's Domain Name System (DNS). Addressbooks map +Base64 destinations to short, usually human-readable “domain” names ending +with a .i2p suffix which the I2P router's HTTP client can resolve back to +Base64 addresses. (Note: While Base64 destinations are globally +unique, addressbook “domain” names only resolve to unique destinations +locally.) +{%- endtrans %} + [{{ _('bundled') }}]
    -

    File Sharing

    - -

    BitTorrent clients

    +

    {% trans %}Email{% endtrans %}

    • -

      I2PSnark — I2P's - integrated BitTorrent client. [bundled]

      +

      I2P-Bote — +{% trans -%} +Serverless peer-to-peer email application using a distributed hash table +(DHT) for secure mail storage. +{%- endtrans %} + [{{ _('plugin') }}]

    • -

      I2PSnarkXL - — Modified version of I2PSnark. [standalone]

      +

      Postman's anonymous email service — +{% trans -%} +Provides email service within the I2P network via @mail.i2p addresses, +and email gateway service between the I2P network and the public Internet +via @i2pmail.org addresses. One of the oldest continuous services on I2P. +{%- endtrans %} + [{{ _('service') }}]

    • -

      Robert — a - fork of rufus that uses the Basic Open Bridge (BOB) and has many - improvements, including using the latest wxwidgets and python. It also - supports use of seedless if installed for trackerless torrents and - magnet-link like fetching of torrents within i2p. - [standalone]

      +

      susimail — +{% trans -%} +Simple web browser-based email interface. Configured to use Postman's +email service by default. +{%- endtrans %} + [{{ _('bundled') }}]

      +
    • +
    + +

    {% trans %}File Sharing{% endtrans %}

    + +

    {% trans %}BitTorrent clients{% endtrans %}

    + +
      +
    • +

      I2PSnark — + {% trans %}I2P's integrated BitTorrent client.{% endtrans %} + [{{ _('bundled') }}]

    • -

      Transmission — - Clean, full-featured cross-platform BitTorrent client with official - ports for several GUI toolkits. [standalone/mod]

      +

      I2PSnarkXL — + {% trans %}Modified version of I2PSnark.{% endtrans %} + [{{ _('standalone') }}]

      +
    • + +
    • +

      Robert — +{% trans %} +A fork of rufus that uses the Basic Open Bridge (BOB) and has many +improvements, including using the latest wxwidgets and python. It also +supports use of seedless if installed for trackerless torrents and +magnet-link like fetching of torrents within I2P. +{% endtrans %} + [{{ _('standalone') }}]

      +
    • + +
    • +

      Transmission — +{% trans -%} +Clean, full-featured cross-platform BitTorrent client with official +ports for several GUI toolkits. +{%- endtrans %} + [{{ _('standalone/mod') }}]

    • Azureus/Vuze — - Had a built-in I2P transport for a while. - [standalone, unmaintained]

      + {% trans %}Has a plugin providing I2P support.{% endtrans %} + [{{ _('standalone') }}, {{ _('unmaintained') }}]

    -

    BitTorrent trackers -and indexers

    +

    {% trans %}BitTorrent trackers and indexers{% endtrans %}

    -

    For a detailed feature comparison of I2P-enabled trackers/indexers, see -here.

    +

    {% trans zzz=i2pconv('zzz.i2p') -%} +For a detailed feature comparison of I2P-enabled trackers/indexers, see +here. +{%- endtrans %}

    • -

      Bytemonsoon — The - code that powered one of the first major tracker/indexer sites on the - Internet. Patched for I2P. [standalone/mod]

      +

      Bytemonsoon — +{% trans -%} +The code that powered one of the first major tracker/indexer sites on the +Internet. Patched for I2P. +{%- endtrans %} + [{{ _('standalone/mod') }}]

    • -

      opentracker - — Lightweight tracker/indexer. I2P mod available in the i2p.opentracker - branch of the I2P Monotone repository. - [standalone/mod]

      +

      opentracker — +{% trans newdevs=site_url('get-involved/guides/new-developers') -%} +Lightweight tracker/indexer. I2P mod available in the i2p.opentracker +branch of the I2P Monotone repository. +{%- endtrans %} + [{{ _('standalone/mod') }}]

    • -

      zzzot — - zzz's Java-based open tracker. More info - here. - [plugin]

      +

      zzzot — +{% trans zzz=i2pconv('zzz.i2p') -%} +zzz's Java-based open tracker. More info +here. +{%- endtrans %} + [{{ _('plugin') }}]

    ED2K

      -
    • iMule — I2P - port of the aMule ED2K client. [standalone]
    • +
    • + iMule — + {% trans %}I2P port of the aMule ED2K client.{% endtrans %} + [{{ _('standalone') }}]

    Gnutella

    • -

      I2Phex — Port - of the Phex Gnutella client. Website - for plugin version here. - [plugin, standalone]

      +

      I2Phex — +{% trans stats=i2pconv('stats.i2p') -%} +Port of the Phex Gnutella client. Website +for plugin version here. +{%- endtrans %} + [{{ _('plugin') }}, {{ _('standalone') }}]

    • -

      jwebcache - — Cache for Gnutella peers on I2P. Website for plugin version here. - [plugin, standalone]

      +

      jwebcache — +{% trans stats=i2pconv('stats.i2p') -%} +Cache for Gnutella peers on I2P. Website for plugin version +here. +{%- endtrans %} + [{{ _('plugin') }}, {{ _('standalone') }}]

    -

    Network -Administration

    +

    {% trans %}Network Administration{% endtrans %}

    -

    General-purpose -socket utilities

    +

    {% trans %}General-purpose socket utilities{% endtrans %}

    • netcat — - Unix standard tool for socket relaying. Several clones, ports, and forks - have appeared over the years. [standalone]

      +{% trans -%} +Unix standard tool for socket relaying. Several clones, ports, and forks +have appeared over the years. +{%- endtrans %} + [{{ _('standalone') }}]

    • -

      socat — Like - netcat but more powerful. [standalone]

      +

      socat — + {% trans %}Like netcat but more powerful.{% endtrans %} + [{{ _('standalone') }}]

    • -

      tsocks - — Proxy providing simple, transparent SOCKS-ification of network - applications. [standalone]

      +

      tsocks — + {% trans %}Proxy providing simple, transparent SOCKS-ification of network applications.{% endtrans %} + [{{ _('standalone') }}]

    @@ -408,213 +454,249 @@ socket utilities

    • -

      OpenSSH — Most - popular implementation of the Secure Shell (SSH) protocol and related - tools. [standalone]

      +

      OpenSSH — + {% trans %}Most popular implementation of the Secure Shell (SSH) protocol and related tools.{% endtrans %} + [{{ _('standalone') }}]

    • -

      PuTTY - — Open source Secure Shell (SSH) client for Windows. - [standalone]

      +

      PuTTY — + {% trans %}Open source Secure Shell (SSH) client for Windows.{% endtrans %} + [{{ _('standalone') }}]

    -

    Real-time Chat

    +

    {% trans %}Real-time Chat{% endtrans %}

    -

    Instant messaging -clients

    +

    {% trans %}Instant messaging clients{% endtrans %}

      -
    • I2P - Messenger — IM client with multiple incarnations. - [standalone]
    • +
    • + I2P Messenger — + {% trans %}IM client with multiple incarnations.{% endtrans %} + [{{ _('standalone') }}] +
    -

    IRC clients

    +

    {% trans %}IRC clients{% endtrans %}

    -

    Many IRC clients leak identifying information to servers or other +

    {% trans -%} +Many IRC clients leak identifying information to servers or other clients, so I2P's IRC and SOCKS IRC client tunnels filter certain inbound and outbound messages to scrub data such as LAN IP addresses, external IP addresses, local hostnames, and the name and version of the IRC client. Two message types in particular, DCC and CTCP, can't be sufficiently anonymized without changes to the protocols or to IRC client/server code, so they are completely blocked, except for CTCP ACTION (the message emitted by the -/me command) which isn't inherently dangerous.

    +/me command) which isn't inherently dangerous. +{%- endtrans %}

    -

    I2P's IRC filtering may not cover every possible leak — users should also +

    {% trans -%} +I2P's IRC filtering may not cover every possible leak — users should also check if their client is sending their real name or local username. Packet sniffers such as Wireshark are useful here. Eliminating remaining leaks may be as simple as changing the client's default configuration. If that doesn't help, inform the I2P -developers; they may be able to solve it via additional filtering.

    +developers; they may be able to solve it via additional filtering. +{%- endtrans %}

    • jIRCii — - Small Java-based IRC client. Plugin available here. - [plugin, standalone]

      +{% trans stats=i2pconv('stats.i2p') -%} +Small Java-based IRC client. Plugin available here. +{%- endtrans %} + [{{ _('plugin') }}, {{ _('standalone') }}]

    • XChat — - Cross-platform graphical IRC client. - [standalone]

      + {% trans %}Cross-platform graphical IRC client.{% endtrans %} + [{{ _('standalone') }}]

    • -

      irssi — Unixy - terminal-based IRC client. [standalone]

      +

      irssi — + {% trans %}Unixy terminal-based IRC client.{% endtrans %} + [{{ _('standalone') }}]

    • WeeChat — - Another Unixy terminal-based IRC client. - [standalone]

      + {% trans %}Another Unixy terminal-based IRC client.{% endtrans %} + [{{ _('standalone') }}]

    -

    IRC servers

    +

    {% trans %}IRC servers{% endtrans %}

    • -

      ngIRCd — IRC - server developed from scratch. [standalone/mod]

      +

      ngIRCd — + {% trans %}IRC server developed from scratch.{% endtrans %} + [{{ _('standalone/mod') }}]

    • -

      UnrealIRCd - — Most popular IRC server. [standalone/mod]

      +

      UnrealIRCd — + {% trans %}Most popular IRC server.{% endtrans %} + [{{ _('standalone/mod') }}]

    -

    Web Browsing

    +

    {% trans %}Web Browsing{% endtrans %}

    -

    Anonymous websites

    +

    {% trans %}Anonymous websites{% endtrans %}

    • -

      Eepsites — Any website hosted anonymously on I2P, - reachable through the I2P router's HTTP proxy. - [service]

      +

      Eepsites — +{% trans -%} +Any website hosted anonymously on I2P, reachable through the I2P router's HTTP proxy. +{%- endtrans %} + [{{ _('service') }}]

    • -

      Deepsites — Distributed anonymous websites hosted - using Tahoe-LAFS-I2P, currently only reachable with Tahoe-LAFS-I2P - clients or through the Tahoe-LAFS-I2P HTTP proxy. - [service]

      +

      Deepsites — +{% trans -%} +Distributed anonymous websites hosted +using Tahoe-LAFS-I2P, currently only reachable with Tahoe-LAFS-I2P +clients or through the Tahoe-LAFS-I2P HTTP proxy. +{%- endtrans %} + [{{ _('service') }}]

    • -

      i2host.i2p — - Website for sponge's jump service. - Source code available. [service]

      +

      {{ i2pconv('i2host.i2p') }} — +{% trans sponge=i2pconv('sponge.i2p') -%} +Website for sponge's jump service. +Source code available. +{%- endtrans %} + [{{ _('service') }}]

    • -

      i2jump.i2p — - Another jump service. [service]

      +

      {{ i2pconv('i2jump.i2p') }} — + {% trans %}Another jump service.{% endtrans %} + [{{ _('service') }}]

    • -

      perv.i2p — - Dynamically updated eepsite index. [service]

      +

      {{ i2pconv('perv.i2p') }} — + {% trans %}Dynamically updated eepsite index.{% endtrans %} + [{{ _('service') }}]

    • -

      stats.i2p — Website - for zzz's jump service. - [service]

      +

      {{ i2pconv('stats.i2p') }} — + {% trans zzz=i2pconv('zzz.i2p') %}Website for zzz's jump service.{% endtrans %} + [{{ _('service') }}]

    -

    Proxy software

    +

    {% trans %}Proxy software{% endtrans %}

    • -

      Polipo - — SOCKS-enabled caching web proxy with basic filtering capabilities. - [standalone]

      +

      Polipo — + {% trans %}SOCKS-enabled caching web proxy with basic filtering capabilities.{% endtrans %} + [{{ _('standalone') }}]

    • Privoxy — - Privacy-focused non-caching web proxy with advanced filtering - capabilities. Excels at removing ads and other junk. - [standalone]

      +{% trans -%} +Privacy-focused non-caching web proxy with advanced filtering +capabilities. Excels at removing ads and other junk. +{%- endtrans %} + [{{ _('standalone') }}]

    • Squid — - Venerable caching web proxy. [standalone]

      + {% trans %}Venerable caching web proxy.{% endtrans %} + [{{ _('standalone') }}]

    -

    Inproxies

    +

    {% trans %}Inproxies{% endtrans %}

    -

    Gateways allowing users on the public Internet to access eepsites.

    +

    {% trans -%} +Gateways allowing users on the public Internet to access eepsites. +{%- endtrans %}

      -
    • i2p.totino's inproxy on the public Internet. - [service]
    • +
    • + i2p.to — +{% trans tino=i2pconv('tino.i2p') -%} +tino's inproxy on the public Internet. +{%- endtrans %} + [{{ _('service') }}] +
    -

    Outproxies

    +

    {% trans %}Outproxies{% endtrans %}

    -

    Gateways allowing I2P users to access content hosted on the public -Internet.

    +

    {% trans -%} +Gateways allowing I2P users to access content hosted on the public Internet. +{%- endtrans %}

      -
    • false.i2p — Publicly - advertised outproxy running Squid, located in Germany. - [service]
    • +
    • + {{ i2pconv('false.i2p') }} — + {% trans %}Publicly advertised outproxy running Squid, located in Germany.{% endtrans %} + [{{ _('service') }}] +
    -

    Website Hosting

    +

    {% trans %}Website Hosting{% endtrans %}

      -
    • Jetty - — Lightweight web server and Java servlet container. I2P is tightly - integrated with a bundled copy of Jetty which by default is configured to - host the user's eepsite. The bundled - Jetty also serves the I2P router console and web applications bundled with - I2P. [bundled, standalone]
    • +
    • + Jetty — +{% trans -%} +Lightweight web server and Java servlet container. I2P is tightly +integrated with a bundled copy of Jetty which by default is configured to +host the user's eepsite. The bundled +Jetty also serves the I2P router console and web applications bundled with +I2P. +{%- endtrans %} + [{{ _('bundled') }}, {{ _('standalone') }}]
    -

    Web servers

    +

    {% trans %}Web servers{% endtrans %}

    -

    In addition to Jetty, any web server should function over I2P without +

    {% trans -%} +In addition to Jetty, any web server should function over I2P without modification so long as it's HTTP-compliant. Some web servers known to -currently serve content on the I2P network are:

    +currently serve content on the I2P network are: +{%- endtrans %}

    • -

      Apache HTTP - Server — Most popular web server on the public WWW. - [standalone]

      +

      Apache HTTP Server — + {% trans %}Most popular web server on the public WWW.{% endtrans %} + [{{ _('standalone') }}]

    • -

      Apache - Tomcat — Web server and Java servlet container. More - features than Jetty. [standalone]

      +

      Apache Tomcat — + {% trans %}Web server and Java servlet container. More features than Jetty.{% endtrans %} + [{{ _('standalone') }}]

    • lighttpd — - Fast lightweight web server. [standalone]

      + {% trans %}Fast lightweight web server.{% endtrans %} + [{{ _('standalone') }}]

    • nginx — - High-performance lightweight web server. - [standalone]

      + {% trans %}High-performance lightweight web server.{% endtrans %} + [{{ _('standalone') }}]

    From c9f436c73879d5c1093764cea74e2e89a595ac8f Mon Sep 17 00:00:00 2001 From: str4d Date: Thu, 31 Jan 2013 02:15:30 +0000 Subject: [PATCH 363/650] Added translation tags to docs/discussions/naming --- .../pages/site/docs/discussions/naming.html | 198 ++++++++++++------ 1 file changed, 130 insertions(+), 68 deletions(-) diff --git a/i2p2www/pages/site/docs/discussions/naming.html b/i2p2www/pages/site/docs/discussions/naming.html index 1c30a8d0..1ae02e26 100644 --- a/i2p2www/pages/site/docs/discussions/naming.html +++ b/i2p2www/pages/site/docs/discussions/naming.html @@ -1,22 +1,22 @@ {% extends "global/layout.html" %} -{% block title %}Naming discussion{% endblock %} +{% block title %}{% trans %}Naming discussion{% endtrans %}{% endblock %} {% block content %} -

    +

    {% trans naming=site_url('docs/naming') -%} NOTE: The following is a discussion of the reasons behind the I2P naming system, common arguments and possible alternatives. -See the naming page for current documentation. -

    +See the naming page for current documentation. +{%- endtrans %}

    -

    Discarded alternatives

    +

    {% trans %}Discarded alternatives{% endtrans %}

    -

    +

    {% trans -%} Naming within I2P has been an oft-debated topic since the very beginning with advocates across the spectrum of possibilities. However, given I2P's inherent demand for secure communication and decentralized operation, the traditional DNS-style naming system is clearly out, as are "majority rules" voting systems. -

    +{%- endtrans %}

    -

    +

    {% trans -%} I2P does not promote the use of DNS-like services though, as the damage done by hijacking a site can be tremendous - and insecure destinations have no value. DNSsec itself still falls back on registrars and certificate authorities, @@ -28,203 +28,265 @@ of service and spoofing attacks. Adding on a certificate authenticating the responses as signed by some centralized certificate authority would address many of the hostile nameserver issues but would leave open replay attacks as well as hostile certificate authority attacks. -

    +{%- endtrans %}

    -

    +

    {% trans -%} Voting style naming is dangerous as well, especially given the effectiveness of Sybil attacks in anonymous systems - the attacker can simply create an arbitrarily high number of peers and "vote" with each to take over a given name. Proof-of-work methods can be used to make identity non-free, but as the network grows the load required to contact everyone to conduct online voting is implausible, or if the full network is not queried, different sets of answers may be reachable. -

    +{%- endtrans %}

    -

    +

    {% trans -%} As with the Internet however, I2P is keeping the design and operation of a naming system out of the (IP-like) communication layer. The bundled naming library includes a simple service provider interface which alternate naming systems can plug into, allowing end users to drive what sort of naming tradeoffs they prefer. -

    +{%- endtrans %}

    Discussion

    -

    +

    {% trans -%} See also Names: Decentralized, Secure, Human-Meaningful: Choose Two. -

    +{%- endtrans %}

    Comments by jrandom

    -

    (adapted from a post in the old Syndie, November 26, 2005)

    -

    +

    {% trans -%} +(adapted from a post in the old Syndie, November 26, 2005) +{%- endtrans %}

    +

    {% trans -%} Q: What to do if some hosts do not agree on one address and if some addresses are working, others are not? Who is the right source of a name? -

    +{%- endtrans %}

    +

    {% trans -%} A: You don't. This is actually a critical difference between names on I2P and how DNS works - names in I2P are human readable, secure, but not globally unique. This is by design, and an inherent part of our need for security. -

    +{%- endtrans %}

    +

    {% trans -%} If I could somehow convince you to change the destination associated with some name, I'd successfully "take over" the site, and under no circumstances is that acceptable. Instead, what we do is make names locally unique: they are what you use to call a site, just as how you can call things whatever you want when you add them to your browser's bookmarks, or your IM client's buddy list. Who you call "Boss" may be who someone else calls "Sally". -

    +{%- endtrans %}

    +

    {% trans -%} Names will not, ever, be securely human readable and globally unique. -

    +{%- endtrans %}

    Comments by zzz

    -

    The following from zzz is a review of several common +

    {% trans -%} +The following from zzz is a review of several common complaints about I2P's naming system. +{%- endtrans %}

      -
    • Inefficiency
      +
    • +

      {% trans -%} +Inefficiency: The whole hosts.txt is downloaded (if it has changed, since eepget uses the etag and last-modified headers). It's about 400K right now for almost 800 hosts. -

      +{%- endtrans %}

      +

      {% trans -%} True, but this isn't a lot of traffic in the context of i2p, which is itself wildly inefficient (floodfill databases, huge encryption overhead and padding, garlic routing, etc.). If you downloaded a hosts.txt file from someone every 12 hours it averages out to about 10 bytes/sec. -

      +{%- endtrans %}

      +

      {% trans -%} As is usually the case in i2p, there is a fundamental tradeoff here between anonymity and efficiency. Some would say that using the etag and last-modified headers is hazardous because it exposes when you last requested the data. Others have suggested asking for specific keys only (similar to what jump services do, but in a more automated fashion), possibly at a further cost in anonymity. -

      -Possible improvements would be a replacement or supplement to addressbook (see i2host.i2p), +{%- endtrans %}

      +

      {% trans i2host=i2pconv('i2host.i2p') -%} +Possible improvements would be a replacement or supplement to addressbook (see {{ i2host }}p), or something simple like subscribing to http://example.i2p/cgi-bin/recenthosts.cgi rather than http://example.i2p/hosts.txt. If a hypothetical recenthosts.cgi distributed all hosts from the last 24 hours, for example, that could be both more efficient and more anonymous than the current hosts.txt with last-modified and etag. -

      +{%- endtrans %}

      +

      {% trans url='http://'+i2pconv('stats.i2p')+'/cgi-bin/newhosts.txt' -%} A sample implementation is on stats.i2p at -http://stats.i2p/cgi-bin/newhosts.txt. +{{ url }}. This script returns an Etag with a timestamp. When a request comes in with the If-None-Match etag, the script ONLY returns new hosts since that timestamp, or 304 Not Modified if there are none. In this way, the script efficiently returns only the hosts the subscriber does not know about, in an addressbook-compatible manner. - - -

      +{%- endtrans %}

      +

      {% trans -%} So the inefficiency is not a big issue and there are several ways to improve things without radical change. +{%- endtrans %}

      -
    • Not Scalable
      +
    • +

      {% trans -%} +Not Scalable: The 400K hosts.txt (with linear search) isn't that big at the moment and we can probably grow by 10x or 100x before it's a problem. -

      +{%- endtrans %}

      +

      {% trans -%} As far as network traffic see above. But unless you're going to do a slow real-time query over the network for a key, you need to have the whole set of keys stored locally, at a cost of about 500 bytes per key. -

    • Requires configuration and "trust"
      +{%- endtrans %}

      + +
    • +

      {% trans -%} +Requires configuration and "trust": Out-of-the-box addressbook is only subscribed to http://www.i2p2.i2p/hosts.txt, which is rarely updated, leading to poor new-user experience. -

      +{%- endtrans %}

      +

      {% trans -%} This is very much intentional. jrandom wants a user to "trust" a hosts.txt provider, and as he likes to say, "trust is not a boolean". The configuration step attempts to force users to think about issues of trust in an anonymous network. -

      +{%- endtrans %}

      +

      {% trans -%} As another example, the "Eepsite Unknown" error page in the HTTP Proxy lists some jump services, but doesn't "recommend" any one in particular, and it's up to the user to pick one (or not). jrandom would say we trust the listed providers enough to list them but not enough to automatically go fetch the key from them. -

      +{%- endtrans %}

      +

      {% trans -%} How successful this is, I'm not sure. But there must be some sort of hierarchy of trust for the naming system. To treat everyone equally may increase the risk of hijacking. +{%- endtrans %}

      -
    • It isn't DNS
      +
    • +

      {% trans -%} +It isn't DNS +{%- endtrans %}

      +

      {% trans -%} Unfortunately real-time lookups over i2p would significantly slow down web browsing. -

      +{%- endtrans %}

      +

      {% trans -%} Also, DNS is based on lookups with limited caching and time-to-live, while i2p keys are permanent. -

      +{%- endtrans %}

      +

      {% trans -%} Sure, we could make it work, but why? It's a bad fit. -

    • Not reliable
      +{%- endtrans %}

      + +
    • +

      {% trans -%} +Not reliable: It depends on specific servers for addressbook subscriptions. -

      +{%- endtrans %}

      +

      {% trans -%} Yes it depends on a few servers that you have configured. Within i2p, servers and services come and go. Any other centralized system (for example DNS root servers) would have the same problem. A completely decentralized system (everybody is authoritative) is possible by implementing an "everybody is a root DNS server" solution, or by something even simpler, like a script that adds everybody in your hosts.txt to your addressbook. -

      +{%- endtrans %}

      +

      {% trans -%} People advocating all-authoritative solutions generally haven't thought through the issues of conflicts and hijacking, however. +{%- endtrans %}

      -
    • Awkward, not real-time
      +
    • +

      {% trans -%} +Awkward, not real-time: It's a patchwork of hosts.txt providers, key-add web form providers, jump service providers, eepsite status reporters. Jump servers and subscriptions are a pain, it should just work like DNS. -

      +{%- endtrans %}

      +

      {% trans -%} See the reliability and trust sections. -

      +{%- endtrans %}

      +
    -

    So, in summary, the current system is not horribly broken, inefficient, or un-scalable, +

    {% trans -%} +So, in summary, the current system is not horribly broken, inefficient, or un-scalable, and proposals to "just use DNS" aren't well thought-through. -

    +{%- endtrans %}

    -

    Alternatives

    -

    The I2P source contains several pluggable naming systems and supports configuration options +

    {% trans %}Alternatives{% endtrans %}

    +

    {% trans -%} +The I2P source contains several pluggable naming systems and supports configuration options to enable experimentation with naming systems. +{%- endtrans %}

      -
    • Meta - calls two or more other naming systems in order. +
    • {% trans -%} +Meta - calls two or more other naming systems in order. By default, calls PetName then HostsTxt. -
    • PetName - Looks up in a petnames.txt file. +{%- endtrans %}
    • +
    • {% trans -%} +PetName - Looks up in a petnames.txt file. The format for this file is NOT the same as hosts.txt. -
    • HostsTxt - Looks up in the following files, in order: +{%- endtrans %}
    • +
    • {% trans -%} +HostsTxt - Looks up in the following files, in order: +{%- endtrans %}
      1. privatehosts.txt
      2. userhosts.txt
      3. hosts.txt
      -
    • AddressDB - Each host is listed in a separate file in a addressDb/ directory. -
    • +
    • {% trans -%} +AddressDB - Each host is listed in a separate file in a addressDb/ directory. +{%- endtrans %}
    • +
    • {% trans -%} Eepget - does an HTTP lookup request from an external server - must be stacked after the HostsTxt lookup with Meta. This could augment or replace the jump system. Includes in-memory caching. -
    • +{%- endtrans %}
    • +
    • {% trans -%} Exec - calls an external program for lookup, allows additional experimentation in lookup schemes, independent of java. Can be used after HostsTxt or as the sole naming system. Includes in-memory caching. -
    • Dummy - used as a fallback for Base64 names, otherwise fails. +{%- endtrans %}
    • +
    • {% trans -%} +Dummy - used as a fallback for Base64 names, otherwise fails. +{%- endtrans %}
    -

    +

    {% trans -%} The current naming system can be changed with the advanced config option 'i2p.naming.impl' (restart required). See core/java/src/net/i2p/client/naming for details. -

    +{%- endtrans %}

    +

    {% trans -%} Any new system should be stacked with HostsTxt, or should implement local storage and/or the addressbook subscription functions, since addressbook only knows about the hosts.txt files and format. +{%- endtrans %}

    -

    Certificates

    -

    +

    {% trans %}Certificates{% endtrans %}

    +

    {% trans -%} I2P destinations contain a certificate, however at the moment that certificate is always null. With a null certificate, base64 destinations are always 516 bytes ending in "AAAA", and this is checked in the addressbook merge mechanism, and possibly other places. Also, there is no method available to generate a certificate or add it to a destination. So these will have to be updated to implement certificates. -

    -One possible use of certificates is for proof of work. -

    +{%- endtrans %}

    +

    {% trans todo=site_url('get-involved/todo') -%} +One possible use of certificates is for proof of work. +{%- endtrans %}

    +

    {% trans -%} Another is for "subdomains" (in quotes because there is really no such thing, i2p uses a flat naming system) to be signed by the 2nd level domain's keys. -

    +{%- endtrans %}

    +

    {% trans -%} With any certificate implementation must come the method for verifying the certificates. Presumably this would happen in the addressbook merge code. Is there a method for multiple types of certificates, or multiple certificates? -

    +{%- endtrans %}

    +

    {% trans -%} Adding on a certificate authenticating the responses as signed by some centralized certificate authority would address many of the hostile nameserver issues but would leave open replay attacks as well as hostile certificate authority attacks. -

    +{%- endtrans %}

    {% endblock %} From b09a7f4099030f1a82ca7e3390d200ada12cdf4a Mon Sep 17 00:00:00 2001 From: str4d Date: Thu, 31 Jan 2013 02:23:23 +0000 Subject: [PATCH 364/650] Added placeholder CSS files to the other themes --- i2p2www/static/styles/danimoth/default.css | 0 i2p2www/static/styles/danimoth/mobile.css | 0 i2p2www/static/styles/dark/default.css | 0 i2p2www/static/styles/dark/mobile.css | 0 i2p2www/static/styles/light/default.css | 0 i2p2www/static/styles/light/mobile.css | 0 6 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 i2p2www/static/styles/danimoth/default.css create mode 100644 i2p2www/static/styles/danimoth/mobile.css create mode 100644 i2p2www/static/styles/dark/default.css create mode 100644 i2p2www/static/styles/dark/mobile.css create mode 100644 i2p2www/static/styles/light/default.css create mode 100644 i2p2www/static/styles/light/mobile.css diff --git a/i2p2www/static/styles/danimoth/default.css b/i2p2www/static/styles/danimoth/default.css new file mode 100644 index 00000000..e69de29b diff --git a/i2p2www/static/styles/danimoth/mobile.css b/i2p2www/static/styles/danimoth/mobile.css new file mode 100644 index 00000000..e69de29b diff --git a/i2p2www/static/styles/dark/default.css b/i2p2www/static/styles/dark/default.css new file mode 100644 index 00000000..e69de29b diff --git a/i2p2www/static/styles/dark/mobile.css b/i2p2www/static/styles/dark/mobile.css new file mode 100644 index 00000000..e69de29b diff --git a/i2p2www/static/styles/light/default.css b/i2p2www/static/styles/light/default.css new file mode 100644 index 00000000..e69de29b diff --git a/i2p2www/static/styles/light/mobile.css b/i2p2www/static/styles/light/mobile.css new file mode 100644 index 00000000..e69de29b From 05df4171d68339d11f710ffb1c08a95baf176b49 Mon Sep 17 00:00:00 2001 From: str4d Date: Thu, 31 Jan 2013 03:20:24 +0000 Subject: [PATCH 365/650] Fixed URLs in docs/how/intro --- i2p2www/pages/site/docs/how/intro.html | 32 +++++++++++++------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/i2p2www/pages/site/docs/how/intro.html b/i2p2www/pages/site/docs/how/intro.html index 200a2281..a9374630 100644 --- a/i2p2www/pages/site/docs/how/intro.html +++ b/i2p2www/pages/site/docs/how/intro.html @@ -25,7 +25,7 @@ is quite likely that any outbound proxies to the normal Internet will be monitor even taken over to attempt more malicious attacks. {%- endtrans %}

    -

    {% trans i2ptunnel=site_url('docs/applications/i2ptunnel') -%} +

    {% trans i2ptunnel=site_url('docs/api/i2ptunnel') -%} The network itself is message oriented - it is essentially a secure and anonymous IP layer, where messages are addressed to cryptographic keys (Destinations) and can be significantly larger than IP packets. Some example uses of the network include "eepsites" (webservers hosting normal web @@ -37,7 +37,7 @@ of the I2P enabled applications, or perhaps as a little controller app to turn o proxies to enable the anonymizing functionality. {%- endtrans %}

    -

    {% trans threatmodel=site_url('docs/how/threatmodel') -%} +

    {% trans threatmodel=site_url('docs/how/threat-model') -%} An essential part of designing, developing, and testing an anonymizing network is to define the threat model, since there is no such thing as "true" anonymity, just increasingly expensive costs to identify someone. Briefly, I2P's intent is to allow people to @@ -49,16 +49,16 @@ from the others. {%- endtrans %}

    {% trans %}Why?{% endtrans %}

    -

    {% trans networkcomparisons=site_url('docs/how/networkcomparisons') -%} +

    {% trans comparisons=site_url('comparison') -%} There are a multitude of reasons why we need a system to support anonymous communication, and -everyone has their own personal rationale. There are many other +everyone has their own personal rationale. There are many other efforts working on finding ways to provide varying degrees of anonymity to people through the Internet, but we could not find any that met our needs or threat model. {%- endtrans %}

    {% trans %}How?{% endtrans %}

    -

    {% trans tunnelrouting=site_url('docs/how/tunnelrouting'), netdb=site_url('docs/how/networkdatabase') -%} +

    {% trans tunnelrouting=site_url('docs/how/tunnel-routing'), netdb=site_url('docs/how/network-database') -%} The network at a glance is made up of a set of nodes ("routers") with a number of unidirectional inbound and outbound virtual paths ("tunnels", as outlined on the tunnel routing page). Each router is identified by a cryptographic RouterIdentity which is @@ -85,7 +85,7 @@ to those tunnels on the correct router by querying the network database, which i as new leases are authorized and old ones expire. {%- endtrans %}

    -

    {% trans garlicrouting=site_url('docs/how/garlicrouting') -%} +

    {% trans garlicrouting=site_url('docs/how/garlic-routing') -%} If Bob wants to reply to Alice, he simply goes through the same process - send a message out one of his outbound tunnels targeting one of Alice's inbound tunnels (tunnel 1 or 2). To make things easier, most messages sent between Alice and Bob are garlic @@ -93,7 +93,7 @@ wrapped, bundling the sender's own current lease information so that the recipie immediately without having to look in the network database for the current data. {%- endtrans %}

    -

    {% trans peerselection=site_url('docs/how/peerselection') -%} +

    {% trans peerselection=site_url('docs/how/peer-selection') -%} To deal with a wide range of attacks, I2P is fully distributed with no centralized resources - and hence there are no directory servers keeping statistics regarding the performance and reliability of routers within the network. As such, each router must keep and maintain profiles of various routers @@ -102,7 +102,7 @@ reliability needs of the users, as described in the cryptographic techniques and algorithms - a full laundry list includes 2048bit ElGamal encryption, 256bit AES in CBC mode with PKCS#5 padding, 1024bit DSA signatures, SHA256 hashes, 2048bit Diffie-Hellman @@ -128,7 +128,7 @@ applications running atop of I2P.

    {% trans %}End to end layered encryption{% endtrans %}
    -

    {% trans crypto=site_url('docs/how/cryptography') -%} +

    {% trans cryptography=site_url('docs/how/cryptography') -%} The specific use of these algorithms are outlined elsewhere. {%- endtrans %}

    @@ -141,7 +141,7 @@ people to set up and operate behind restricted routes (perhaps with trusted peer deployment of more flexible and anonymous transports. {%- endtrans %}

    -

    {% trans netdb=site_url('docs/how/networkdatabase') -%} +

    {% trans netdb=site_url('docs/how/network-database') -%} Some questions have been raised with regards to the scalability of I2P, and reasonably so. There will certainly be more analysis over time, but peer lookup and integration should be bounded by O(log(N)) due to the network database's algorithm, while end @@ -151,7 +151,7 @@ the network (N) bears no impact. {%- endtrans %}

    {% trans %}When?{% endtrans %}

    -

    {% trans roadmap=site_url('volunteer/roadmap') -%} +

    {% trans roadmap=site_url('get-involved/roadmap') -%} I2P initially began in Feb 2003 as a proposed modification to Freenet to allow it to use alternate transports, such as JMS, then grew into its own as an @@ -161,7 +161,7 @@ starting in August '03. I2P is currently under development, following the

    {% trans %}Who?{% endtrans %}

    -

    {% trans team=site_url('team') -%} +

    {% trans team=site_url('about/team') -%} We have a small team spread around several continents, working to advance different aspects of the project. We are very open to other developers who want to get involved and anyone else who would like to contribute in other ways, such as critiques, peer review, testing, @@ -173,19 +173,19 @@ on Sun Java SE and other Java Virtual Machines {%- endtrans %}

    {% trans %}Where?{% endtrans %}

    -

    {% trans meetings=url_for('meetings_index', lang=g.lang) -%} +

    {% trans meetings=get_url('meetings_index') -%} Anyone interested should join us on the IRC channel #i2p (hosted concurrently on irc.freenode.net, irc.postman.i2p, irc.freshcoffee.i2p, irc.welterde.i2p and irc.einirc.de). There are currently no scheduled development meetings, however archives are available. {%- endtrans %}

    -

    {% trans monotone=site_url('develop/monotone') -%} +

    {% trans monotone=site_url('get-involved/guides/monotone') -%} The current source is available in monotone. {%- endtrans %}

    {% trans %}Additional Information{% endtrans %}

    -

    {% trans how_index=site_url('docs/how') -%} -See the Index to Technical Documentation. +

    {% trans docs=site_url('docs') -%} +See the Index to Technical Documentation. {%- endtrans %}

    {% endblock %} From 5c112cc5cb53947e8614e55b8732d9536ad1037a Mon Sep 17 00:00:00 2001 From: str4d Date: Thu, 31 Jan 2013 03:21:08 +0000 Subject: [PATCH 366/650] Added translation tags to docs/how/cryptography --- i2p2www/pages/site/docs/how/cryptography.html | 346 ++++++++++-------- 1 file changed, 195 insertions(+), 151 deletions(-) diff --git a/i2p2www/pages/site/docs/how/cryptography.html b/i2p2www/pages/site/docs/how/cryptography.html index 02bbf107..93b2e2c0 100644 --- a/i2p2www/pages/site/docs/how/cryptography.html +++ b/i2p2www/pages/site/docs/how/cryptography.html @@ -1,45 +1,53 @@ {% extends "global/layout.html" %} -{% block title %}Low-level Cryptography Details{% endblock %} -{% block lastupdated %}March 2012{% endblock %} +{% block title %}{% trans %}Low-level Cryptography Details{% endtrans %}{% endblock %} +{% block lastupdated %}{% trans %}March 2012{% endtrans %}{% endblock %} {% block accuratefor %}0.8.13{% endblock %} {% block content %} -

    +

    {% trans -%} This page specifies the low-level details of the cryptography in I2P. -

    +{%- endtrans %}

    + +

    {% trans elgamalaes=site_url('docs/how/elgamal-aes') -%} There are a handful of cryptographic algorithms in use within I2P, but we have reduced them to a bare minimum to deal with our needs - one symmetric algorithm one asymmetric algorithm, one signing algorithm, and one hashing algorithm. However, we do combine them in some particular ways to provide message integrity (rather than relying on a MAC). In addition, as much as we hate doing anything new in regards to cryptography, we can't seem to find a reference discussing (or even naming) the -technique used in ElGamal/AES+SessionTag (but we're sure others have done it). -

    -

    ElGamal encryption

    +technique used in ElGamal/AES+SessionTag (but we're sure others have done it). +{%- endtrans %}

    -

    +

    {% trans %}ElGamal encryption{% endtrans %}

    + +

    {% trans %} ElGamal is used for asymmetric encryption. ElGamal is used in several places in I2P: -

    -

    +

    {% trans -%} We use common primes for 2048 ElGamal encryption and decryption, as given by IETF RFC-3526. We currently only use ElGamal to encrypt the IV and session key in a single block, followed by the AES encrypted payload using that key and IV. -

    +{%- endtrans %}

    + +

    {% trans -%} The unencrypted ElGamal contains: -

    -

    -

    +{%- endtrans %}

    +
        +----+----+----+----+----+----+----+----+
        |nonz|           H(data)                |
        +----+                                  +
    @@ -52,8 +60,8 @@ The unencrypted ElGamal contains:
        |    |  data...
        +----+----+----+--//                   
     
    -
    -

    +

    +

    {% trans -%} The H(data) is the SHA256 of the data that is encrypted in the ElGamal block, and is preceded by a nonzero byte. This byte could be random, but as implemented it is always 0xFF. @@ -63,11 +71,13 @@ As the encrypted data may contain a substantial number of zeros if the cleartext is smaller than 222 bytes, it is recommended that higher layers pad the cleartext to 222 bytes with random data. Total length: typically 255 bytes. -

    +{%- endtrans %}

    + +

    {% trans -%} The encrypted ElGamal contains: +{%- endtrans %}

    -

    -

    +
        +----+----+----+----+----+----+----+----+
        |  zero padding...       |              |
        +----+----+----+--// ----+              +
    @@ -88,25 +98,31 @@ The encrypted ElGamal contains:
        |         +
        +----+----+
     
    -
    +
    +

    {% trans -%} Each encrypted part is prepended with zeros to a size of exactly 257 bytes. Total length: 514 bytes. In typical usage, higher layers pad the cleartext data to 222 bytes, resulting in an unencrypted block of 255 bytes. This is encoded as two 256-byte encrypted parts, and there is a single byte of zero padding before each part at this layer. -

    -See -the ElGamal code. -

    -The shared prime is the +{%- endtrans %}

    +

    {% trans url='http://'+i2pconv('trac.i2p2.i2p')+'/browser/core/java/src/net/i2p/crypto/ElGamalEngine.java?rev=85a542c53d910dffbf34cdcefb8a2faeee96adc4' -%} +See the ElGamal code. +{%- endtrans %}

    + +

    {% trans -%} +The shared prime is the [Oakley prime for 2048 bit keys] -

    +{%- endtrans %}

    +
      2^2048 - 2^1984 - 1 + 2^64 * { [2^1918 pi] + 124476 }
    -
    +
    +

    {% trans -%} or as a hexadecimal value: -

    +{%- endtrans %}

    +
      FFFFFFFF FFFFFFFF C90FDAA2 2168C234 C4C6628B 80DC1CD1
      29024E08 8A67CC74 020BBEA6 3B139B22 514A0879 8E3404DD
      EF9519B3 CD3A431B 302B0A6D F25F1437 4FE1356D 6D51C245
    @@ -118,64 +134,79 @@ or as a hexadecimal value:
      E39E772C 180E8603 9B2783A2 EC07A28F B5C55DF0 6F4C52C9
      DE2BCBF6 95581718 3995497C EA956AE5 15D22618 98FA0510
      15728E5A 8AACAA68 FFFFFFFF FFFFFFFF
    -
    -

    +

    +

    {% trans -%} Using 2 as the generator. -

    Short Exponent

    +{%- endtrans %}

    + +

    {% trans %}Short Exponent{% endtrans %}

    +

    {% trans commonstructures=site_url('docs/spec/common-structures'), +pdf='http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.14.5952&rep=rep1&type=pdf', +benchmarks=site_url('misc/benchmarks') -%} While the standard exponent size is 2048 bits (256 bytes) and the I2P -PrivateKey +PrivateKey is a full 256 bytes, we use the short exponent size of 226 bits (28.25 bytes). -This should be safe for use with the Oakley primes, -per - -On Diffie-Hellman Key Agreement with Short Exponents - van Oorschot, Weiner -at EuroCrypt 96, and -crypto++'s benchmarks. +This should be safe for use with the Oakley primes, per +On Diffie-Hellman Key Agreement with Short Exponents - van Oorschot, Weiner +at EuroCrypt 96, and crypto++'s benchmarks. Benchmarks originally at this link, now dead, rescued from the wayback machine, dated Apr 23, 2008. -

    -Also, - -Koshiba & Kurosawa: Short Exponent Diffie-Hellman Problems (PKC 2004, LNCS 2947, pp. 173-186) - -(full text on google books) -apparently supports this, according to -this sci.crypt thread. -The remainder of the PrivateKey is padded with zeroes. +{%- endtrans %}

    -

    Obsolescence

    -

    +

    {% trans book='http://www.springerlink.com/content/2jry7cftp5bpdghm/', +fulltext='http://books.google.com/books?id=cXyiNZ2_Pa0C&lpg=PA173&ots=PNIz3dWe4g&pg=PA173#v=onepage&q&f=false', +thread='http://groups.google.com/group/sci.crypt/browse_thread/thread/1855a5efa7416677/339fa2f945cc9ba0#339fa2f945cc9ba0' -%} +Also, Koshiba & Kurosawa: Short Exponent Diffie-Hellman Problems (PKC 2004, LNCS 2947, pp. 173-186) +(full text on Google Books) apparently supports this, according to +this sci.crypt thread. +The remainder of the PrivateKey is padded with zeroes. +{%- endtrans %}

    + +

    {% trans %}Obsolescence{% endtrans %}

    +

    {% trans -%} The vulnerability of the network to an ElGamal attack and the impact of transitioning to a longer bit length is to be studied. It may be quite difficult to make any change backward-compatible. -

    +{%- endtrans %}

    -

    AES

    +

    AES

    -

    +

    {% trans -%} AES is used for symmetric encryption, in several cases: -

    + +

    {% trans rfc2313='http://tools.ietf.org/html/rfc2313', +code1='http://'+i2pconv('trac.i2p2.i2p')+'/browser/core/java/src/net/i2p/crypto/CryptixAESEngine.java?rev=85a542c53d910dffbf34cdcefb8a2faeee96adc4', +code2='http://'+i2pconv('trac.i2p2.i2p')+'/browser/core/java/src/net/i2p/crypto/CryptixRijndael_Algorithm.java?rev=85a542c53d910dffbf34cdcefb8a2faeee96adc4', +code3='http://'+i2pconv('trac.i2p2.i2p')+'/browser/core/java/src/net/i2p/crypto/ElGamalAESEngine.java?rev=85a542c53d910dffbf34cdcefb8a2faeee96adc4' -%} We use AES with 256 bit keys and 128 bit blocks in CBC mode. -The padding used is specified in IETF RFC-2313 (PKCS#5 1.5, section 8.1 (for block type 02)). +The padding used is specified in IETF RFC-2313 (PKCS#5 1.5, section 8.1 (for block type 02)). In this case, padding exists of pseudorandomly generated octets to match 16 byte blocks. -Specifically, see -[the CBC code] -and the Cryptix AES -[implementation], -as well as the padding, found in the -ElGamalAESEngine.getPadding function. +Specifically, see [the CBC code] and the Cryptix AES +[implementation], as well as the padding, found in the +ElGamalAESEngine.getPadding function. +{%- endtrans %}

    -

    Obsolescence

    -

    +

    {% trans %}Obsolescence{% endtrans %}

    +

    {% trans -%} The vulnerability of the network to an AES attack and the impact of transitioning to a longer bit length is to be studied. It may be quite difficult to make any change backward-compatible. -

    +{%- endtrans %}

    -

    References

    +

    {% trans %}References{% endtrans %}

    -

    DSA

    +

    DSA

    -

    +

    {% trans code='http://'+i2pconv('trac.i2p2.i2p')+'/browser/core/java/src/net/i2p/crypto/DSAEngine.java?rev=85a542c53d910dffbf34cdcefb8a2faeee96adc4' -%} Signatures are generated and verified with 1024 bit DSA (L=1024, N=160), as implemented in -[DSAEngine]. +[DSAEngine]. DSA was chosen because it is much faster for signatures than ElGamal. -

    -

    The DSA constants

    +{%- endtrans %}

    -

    +

    {% trans %}The DSA constants{% endtrans %}

    -

    SEED

    +

    SEED

    160 bit

    -
    +
      86108236b8526e296e923a4015b4282845b572cc
    -
    -

    Counter

    +
    -
    +

    Counter

    + +
      33
    -
    +

    DSA prime (p)

    1024 bit

    -

    +
      9C05B2AA 960D9B97 B8931963 C9CC9E8C 3026E9B8 ED92FAD0
      A69CC886 D5BF8015 FCADAE31 A0AD18FA B3F01B00 A358DE23
      7655C496 4AFAA2B3 37E96AD3 16B9FB1C C564B5AE C5B69A9F
      F6C3E454 8707FEF8 503D91DD 8602E867 E6D35D22 35C1869C
      E2479C3B 9D5401DE 04E0727F B33D6511 285D4CF2 9538D9E3
      B6051F5B 22CC1C93
    -
    +

    DSA quotient (q)

    -

    +
      A5DFC28F EF4CA1E2 86744CD8 EED9D29D 684046B7
    -
    +

    DSA generator (g)

    1024 bit

    -

    +
      C1F4D27D 40093B42 9E962D72 23824E0B BC47E7C8 32A39236
      FC683AF8 48895810 75FF9082 ED32353D 4374D730 1CDA1D23
      C431F469 8599DDA0 2451824F F3697525 93647CC3 DDC197DE
      985E43D1 36CDCFC6 BD5409CD 2F450821 142A5E6F 8EB1C3AB
      5D0484B8 129FCF17 BCE4F7F3 3321C3CB 3DBB14A9 05E7B2B3
      E93BE470 8CBCC82
    -
    +
    -

    -The Signing Public Key is 1024 bits. -The Signing Private Key is 160 bits. -

    +

    {% trans commonstructures=site_url('docs/spec/common-structures') -%} +The Signing Public Key is 1024 bits. +The Signing Private Key is 160 bits. +{%- endtrans %}

    -

    Obsolescence

    -

    -NIST 800-57 +

    {% trans %}Obsolescence{% endtrans %}

    +

    {% trans pdf='http://csrc.nist.gov/publications/nistpubs/800-57/sp800-57-Part1-revised2_Mar08-2007.pdf' -%} +NIST 800-57 recommends a minimum of (L=2048, N=224) for usage beyond 2010. This may be mitigated somewhat by the "cryptoperiod", or lifespan of a given key. -

    -

    +{%- endtrans %}

    + +

    {% trans -%} The prime number was chosen in 2003, and the person that chose the number (TheCrypto) is currently no longer an I2P developer. As such, we do not know if the prime chosen is a 'strong prime'. If a larger prime is chosen for future purposes, this should be a strong prime, and we will document the construction process. -

    -

    +{%- endtrans %}

    + +

    {% trans -%} The vulnerability of the network to a DSA attack and the impact of transitioning to longer keys is to be studied. It may be quite difficult to make any change backward-compatible. -

    +{%- endtrans %}

    -

    References

    +

    {% trans %}References{% endtrans %}

    @@ -339,25 +373,25 @@ It may be quite difficult to make any change backward-compatible.

    SHA256

    -

    +

    {% trans code='http://'+i2pconv('trac.i2p2.i2p')+'/browser/core/java/src/net/i2p/crypto/SHA256Generator.java?rev=85a542c53d910dffbf34cdcefb8a2faeee96adc4' -%} Hashes within I2P are plain old SHA256, as implemented in -[SHA256Generator] +[SHA256Generator] +{%- endtrans %}

    - -

    Obsolescence

    -

    +

    {% trans %}Obsolescence{% endtrans %}

    +

    {% trans -%} The vulnerability of the network to a SHA-256 attack and the impact of transitioning to a longer hash is to be studied. It may be quite difficult to make any change backward-compatible. -

    +{%- endtrans %}

    -

    References

    +

    {% trans %}References{% endtrans %}

    -

    Transports

    -

    +

    {% trans %}Transports{% endtrans %}

    +

    {% trans -%} At the lowest protocol layer, point-to-point inter-router communication is protected by the transport layer security. Both transports use 256 byte (2048 bit) Diffie-Hellman key exchange @@ -367,52 +401,62 @@ followed by symmetric AES encryption as described above. This provides perfect forward secrecy on the transport links. -

    +{%- endtrans %}

    -

    NTCP connections

    +

    {% trans %}NTCP connections{% endtrans %}

    -

    +

    {% trans elgamalaes=site_url('docs/how/elgamal-aes') -%} NTCP connections are negotiated with a 2048 Diffie-Hellman implementation, using the router's identity to proceed with a station to station agreement, followed by some encrypted protocol specific fields, with all subsequent data encrypted with AES (as above). -The primary reason to do the DH negotiation instead of using ElGamalAES+SessionTag is that it provides '(perfect) forward secrecy', while ElGamalAES+SessionTag does not. -

    -

    +The primary reason to do the DH negotiation instead of using ElGamalAES+SessionTag is that it provides '(perfect) forward secrecy', while ElGamalAES+SessionTag does not. +{%- endtrans %}

    + +

    {% trans -%} In order to migrate to a more standardized implementation (TLS/SSL or even SSH), the following issues must be addressed: -

    -

      -
    1. can we somehow reestablish sessions securely (ala session tags) or do we need to do full negotiation each time? -
    2. can we simplify/avoid the x509 or other certificate formats and use our own RouterInfo structure (which - contains the ElGamal and DSA keys)? - -
    -

    -See the NTCP specification for details. - -

    UDP connections

    +{%- endtrans %}

    +
      +
    1. {% trans -%} +Can we somehow reestablish sessions securely (ala session tags) or do we need to do full negotiation each time? +{%- endtrans %}
    2. +
    3. {% trans -%} +Can we simplify/avoid the x509 or other certificate formats and use our own RouterInfo structure (which +contains the ElGamal and DSA keys)? +{%- endtrans %}
    4. +
    +

    {% trans ntcp=site_url('docs/transport/ntcp') -%} +See the NTCP specification for details. +{%- endtrans %}

    +

    {% trans %}UDP connections{% endtrans %}

    +

    {% trans -%} SSU (the UDP transport) encrypts each packet with AES256/CBC with both an explicit IV and MAC (HMAC-MD5-128) after agreeing upon an ephemeral session key through a 2048 bit Diffie-Hellman exchange, station-to-station authentication with the other router's DSA key, plus each network message has their own hash for local integrity checking. -

    -See the SSU specification for details. -

    +{%- endtrans %}

    + +

    {% trans ssu=site_url('docs/transport/ssu') -%} +See the SSU specification for details. +{%- endtrans %}

    + +

    {% trans statusnotes=get_url('blog_post', slug='2005/07/05/status') -%} WARNING - I2P's HMAC-MD5-128 used in SSU is apparently non-standard. Apparently, an early version of SSU used HMAC-SHA256, and then it was switched to MD5-128 for performance reasons, but left the 32-byte buffer size intact. See HMACGenerator.java and -the 2005-07-05 status notes +the 2005-07-05 status notes for details. +{%- endtrans %}

    -

    References

    +

    {% trans %}References{% endtrans %}

    - {% endblock %} From dc6608837506efc7cc21b227f305aec02eaa8266 Mon Sep 17 00:00:00 2001 From: str4d Date: Thu, 31 Jan 2013 11:40:21 +0000 Subject: [PATCH 367/650] Added translation tags to docs/how/threat-model --- i2p2www/pages/site/docs/how/threat-model.html | 857 +++++++++++------- 1 file changed, 506 insertions(+), 351 deletions(-) diff --git a/i2p2www/pages/site/docs/how/threat-model.html b/i2p2www/pages/site/docs/how/threat-model.html index 5ab111bf..09d3c402 100644 --- a/i2p2www/pages/site/docs/how/threat-model.html +++ b/i2p2www/pages/site/docs/how/threat-model.html @@ -1,65 +1,82 @@ {% extends "global/layout.html" %} -{% block title %}I2P's Threat Model{% endblock %} -{% block lastupdated %}November 2010{% endblock %} +{% block title %}{% trans %}I2P's Threat Model{% endtrans %}{% endblock %} +{% block lastupdated %}{% trans %}November 2010{% endtrans %}{% endblock %} {% block accuratefor %}0.8.1{% endblock %} {% block content %} -

    What do we mean by "anonymous"?

    +

    {% trans %}What do we mean by "anonymous"?{% endtrans %}

    -

    Your level of anonymity can be described as "how hard it is for someone +

    {% trans -%} +Your level of anonymity can be described as "how hard it is for someone to find out information you don't want them to know?" - who you are, where you are located, who you communicate with, or even when you communicate. "Perfect" anonymity is not a useful concept here - software will not make you indistinguishable from people that don't use computers or who are not on the Internet. Instead, we are working to provide sufficient anonymity to meet the real needs of whomever we can - from those simply browsing websites, to those exchanging -data, to those fearful of discovery by powerful organizations or states.

    +data, to those fearful of discovery by powerful organizations or states. +{%- endtrans %}

    -

    The question of whether I2P provides sufficient anonymity for your +

    {% trans -%} +The question of whether I2P provides sufficient anonymity for your particular needs is a hard one, but this page will hopefully assist in answering that question by exploring how I2P operates under various attacks -so that you may decide whether it meets your needs.

    +so that you may decide whether it meets your needs. +{%- endtrans %}

    -

    We welcome further research and analysis on I2P's resistance to the threats described below. +

    {% trans -%} +We welcome further research and analysis on I2P's resistance to the threats described below. More review of existing literature (much of it focused on Tor) and original -work focused on I2P is needed.

    +work focused on I2P is needed. +{%- endtrans %}

    -

    Network Topology Summary

    -

    I2P builds off the ideas of many other -systems, but a few key points should be kept in mind when -reviewing related literature:

      -
    • I2P is a free route mixnet - the message creator explicitly defines the - path that messages will be sent out (the outbound tunnel), and the message - recipient explicitly defines the path that messages will be received on (the - inbound tunnel). -
    • -
    • I2P has no official entry and exit points - all peers fully participate in the - mix, and there are no network layer in- or out-proxies (however, at the - application layer, a few proxies do exist)
    • -
    • I2P is fully distributed - there are no central controls or authorities. - One could modify some routers to operate mix cascades (building tunnels and giving - out the keys necessary to control the forwarding at the tunnel endpoint) or directory - based profiling and selection, all without breaking compatibility with the rest of - the network, but doing so is of course not necessary (and may even harm one's - anonymity).
    • +

      {% trans %}Network Topology Summary{% endtrans %}

      +

      {% trans comparisons=site_url('comparison'), links=site_url('links') -%} +I2P builds off the ideas of many other +systems, but a few key points should be kept in mind when +reviewing related literature: +{%- endtrans %}

      +
        +
      • {% trans -%} +I2P is a free route mixnet - the message creator explicitly defines the +path that messages will be sent out (the outbound tunnel), and the message +recipient explicitly defines the path that messages will be received on (the +inbound tunnel). +{%- endtrans %}
      • +
      • {% trans -%} +I2P has no official entry and exit points - all peers fully participate in the +mix, and there are no network layer in- or out-proxies (however, at the +application layer, a few proxies do exist) +{%- endtrans %}
      • +
      • {% trans -%} +I2P is fully distributed - there are no central controls or authorities. +One could modify some routers to operate mix cascades (building tunnels and giving +out the keys necessary to control the forwarding at the tunnel endpoint) or directory +based profiling and selection, all without breaking compatibility with the rest of +the network, but doing so is of course not necessary (and may even harm one's +anonymity). +{%- endtrans %}
      -

      - We have documented plans to implement - nontrivial delays and batching strategies - whose existence is only known to the particular hop or tunnel gateway that - receives the message, allowing a mostly low latency mixnet to provide cover - traffic for higher latency communication (e.g. email). - However we are aware that significant delays are required to provide meaningful - protection, and that implementation of such delays will be a significant challenge. - It is not clear at this time whether we will actually implement these delay features. -

      - In theory, routers along the message path may inject an - arbitrary number of hops before forwarding the message to the next peer, though - the current implementation does not. -

      + +

      {% trans todo=site_url('get-involved/todo') -%} +We have documented plans to implement nontrivial delays +and batching strategies +whose existence is only known to the particular hop or tunnel gateway that +receives the message, allowing a mostly low latency mixnet to provide cover +traffic for higher latency communication (e.g. email). +However we are aware that significant delays are required to provide meaningful +protection, and that implementation of such delays will be a significant challenge. +It is not clear at this time whether we will actually implement these delay features. +{%- endtrans %}

      + +

      {% trans -%} +In theory, routers along the message path may inject an +arbitrary number of hops before forwarding the message to the next peer, though +the current implementation does not. +{%- endtrans %}

      -

      The Threat Model (Attacks)

      -

      +

      {% trans %}The Threat Model (Attacks){% endtrans %}

      +

      {% trans -%} I2P design started in 2003, not long after the advent of [Onion Routing], [Freenet], and @@ -67,18 +84,24 @@ I2P design started in 2003, not long after the advent of Our design benefits substantially from the research published around that time. I2P uses several onion routing techniques, so we continue to benefit from the significant academic interest in Tor. -

      +{%- endtrans %}

      + +

      {% trans -%} Taking from the attacks and analysis put forth in the anonymity literature (largely Traffic Analysis: Protocols, Attacks, Design Issues and Open Problems), the following briefly describes a wide variety of attacks as well as many of I2Ps defenses. We update this list to include new attacks as they are identified. -

      +{%- endtrans %}

      + +

      {% trans -%} Included are some attacks that may be unique to I2P. We do not have good answers for all these attacks, however we continue to do research and improve our defenses. -

      +{%- endtrans %}

      + +

      {% trans -%} In addition, many of these attacks are significantly easier than they should be, due to the modest size of the current network. While we are aware of some limitations that need to be addressed, @@ -86,38 +109,41 @@ I2P is designed to support hundreds of thousands, or millions, of participants. As we continue to spread the word and grow the network, these attacks will become much harder. -

      -The -network comparisons and -"garlic" terminology pages may also be helpful -to review. -

      +{%- endtrans %}

      -

      Index

      +

      {% trans comparisons=site_url('comparison'), garlicrouting=site_url('docs/how/garlic-routing') -%} +The +network comparisons and +"garlic" terminology pages may also be helpful +to review. +{%- endtrans %}

      + +

      {% trans %}Index{% endtrans %}

      -

      Brute force attacks

      +

      {% trans %}Brute force attacks{% endtrans %}

      -

      A brute force attack can be mounted by a global passive or active adversary, +

      {% trans -%} +A brute force attack can be mounted by a global passive or active adversary, watching all the messages pass between all of the nodes and attempting to correlate which message follows which path. Mounting this attack against I2P should be nontrivial, as all peers in the network are frequently sending messages (both @@ -125,9 +151,11 @@ end to end and network maintenance messages), plus an end to end message changes size and data along its path. In addition, the external adversary does not have access to the messages either, as inter-router communication is both encrypted and streamed (making two 1024 byte messages indistinguishable from one 2048 byte -message).

      +message). +{%- endtrans %}

      -

      However, a powerful attacker can use brute force to detect trends - if they +

      {% trans -%} +However, a powerful attacker can use brute force to detect trends - if they can send 5GB to an I2P destination and monitor everyone's network connection, they can eliminate all peers who did not receive 5GB of data. Techniques to defeat this attack exist, but may be prohibitively expensive (see: @@ -141,193 +169,238 @@ would want to take appropriate countermeasures, such as setting low bandwidth limits, and using unpublished or encrypted leasesets for eepsites. Other countermeasures, such as nontrivial delays and restricted routes, are not currently implemented. -

      +{%- endtrans %}

      + +

      {% trans peerselection=site_url('docs/how/peer-selection') -%} As a partial defense against a single router or group of routers trying to route all the network's traffic, routers contain limits as to how many tunnels can be routed through a single peer. As the network grows, these limits are subject to further adjustment. Other mechanisms for peer rating, selection and avoidance are discussed on the -peer selection page. -

      +peer selection page. +{%- endtrans %}

      -

      Timing attacks

      +

      {% trans %}Timing attacks{% endtrans %}

      -

      I2P's messages are unidirectional and do not necessarily imply that a reply +

      {% trans -%} +I2P's messages are unidirectional and do not necessarily imply that a reply will be sent. However, applications on top of I2P will most likely have recognizable patterns within the frequency of their messages - for instance, an HTTP request will be a small message with a large sequence of reply messages containing the HTTP response. Using this data as well as a broad view of the network topology, an attacker may be able to disqualify some links as being too -slow to have passed the message along.

      +slow to have passed the message along. +{%- endtrans %}

      -

      This sort of attack is powerful, but its applicability to I2P is non obvious, +

      {% trans -%} +This sort of attack is powerful, but its applicability to I2P is non obvious, as the variation on message delays due to queuing, message processing, and throttling will often meet or exceed the time of passing a message along a single link - even when the attacker knows that a reply will be sent as soon as the message is received. There are some scenarios which will expose fairly automatic replies though - the streaming library does (with the SYN+ACK) as does the -message mode of guaranteed delivery (with the DataMessage+DeliveryStatusMessage).

      +message mode of guaranteed delivery (with the DataMessage+DeliveryStatusMessage). +{%- endtrans %}

      -

      Without protocol scrubbing or higher latency, global active adversaries can +

      {% trans todo=site_url('get-involved/todo') -%} +Without protocol scrubbing or higher latency, global active adversaries can gain substantial information. As such, people concerned with these attacks could -increase the latency (using nontrivial delays or -batching strategies), include protocol scrubbing, or -other advanced tunnel routing techniques, +increase the latency (using nontrivial delays or +batching strategies), include protocol scrubbing, or +other advanced tunnel routing techniques, but these are unimplemented in I2P. -

      +{%- endtrans %}

      -

      References: -Low-Resource Routing Attacks Against Anonymous Systems -

      +

      {% trans pdf='http://www.cs.colorado.edu/department/publications/reports/docs/CU-CS-1025-07.pdf' -%} +References: Low-Resource Routing Attacks Against Anonymous Systems +{%- endtrans %}

      -

      Intersection attacks

      +

      {% trans %}Intersection attacks{% endtrans %}

      -

      Intersection attacks against low latency systems are extremely powerful - +

      {% trans -%} +Intersection attacks against low latency systems are extremely powerful - periodically make contact with the target and keep track of what peers are on the network. Over time, as node churn occurs the attacker will gain significant information about the target by simply intersecting the sets of peers that are online when a message successfully goes through. The cost of this attack is significant as the network grows, but may be feasible in some -scenarios.

      - -

      +scenarios. +{%- endtrans %}

      + +

      {% trans url='https://trac.torproject.org/projects/tor/wiki/TheOnionRouter/TorFAQ#Whatattacksremainagainstonionrouting' -%} In summary, if an attacker is at both ends of your tunnel at the same time, he may be successful. I2P does not have a full defense to this for low latency communication. This is an inherent weakness of low-latency onion routing. -Tor provides a similar disclaimer. -

      +Tor provides a similar disclaimer. +{%- endtrans %}

      + +

      {% trans -%} Partial defenses implemented in I2P: -

      • -strict ordering of peers -
      • -peer profiling and selection from a small group that changes slowly -
      • +{%- endtrans %}

        +
          +
        • {% trans tunnelimpl=site_url('docs/tunnels/implementation') -%} +strict ordering of peers +{%- endtrans %}
        • +
        • {% trans peerselection=site_url('docs/how/peer-selection') -%} +peer profiling and selection from a small group that changes slowly +{%- endtrans %}
        • +
        • {% trans -%} Limits on the number of tunnels routed through a single peer -
        • +{%- endtrans %}
        • +
        • {% trans -%} Prevention of peers from the same /16 IP range from being members of a single tunnel -
        • +{%- endtrans %}
        • +
        • {% trans -%} For eepsites or other hosted services, we support simultaneous hosting on multiple routers, or -multihoming -
        +multihoming +{%- endtrans %}
      • +
      +

      {% trans -%} Even in total, these defenses are not a complete solution. Also, we have made some design choices that may significantly increase our vulnerability: -

      • +{%- endtrans %}

        +
          +
        • {% trans -%} We do not use low-bandwidth "guard nodes" -
        • +{%- endtrans %}
        • +
        • {% trans -%} We use tunnel pools comprised of several tunnels, and traffic can shift from tunnel to tunnel. -
        • +{%- endtrans %}
        • +
        • {% trans -%} Tunnels are not long-lived; new tunnels are built every 10 minutes. -
        • +{%- endtrans %}
        • +
        • {% trans -%} Tunnel lengths are configurable. While 3-hop tunnels are recommended for full protection, several applications and services use 2-hop tunnels by default. -
        +{%- endtrans %}
      • +
      - -

      +

      {% trans todo=site_url('get-involved/todo') -%} In the future, it could -for peers who can afford significant delays (per nontrivial -delays and batching strategies). In addition, +for peers who can afford significant delays (per nontrivial +delays and batching strategies). In addition, this is only relevant for destinations that other people know about - a private group whose destination is only known to trusted peers does not have to worry, as an adversary can't "ping" them to mount the attack.

      +{%- endtrans %}

      -

      Reference: -One Cell Enough -

      +

      {% trans oce='http://blog.torproject.org/blog/one-cell-enough' -%} +Reference: One Cell Enough +{%- endtrans %}

      +

      {% trans %}Denial of service attacks{% endtrans %}

      -

      Denial of service attacks

      - -

      There are a whole slew of denial of service attacks available against I2P, -each with different costs and consequences:

        -
      • Greedy user attack: This is simply - people trying to consume significantly more resources than they are - willing to contribute. The defense against this is:
          -
        • Set defaults so that most users provide resources to the network. - In I2P, users route traffic by default. In sharp distinction to - other networks, - over 95% of I2P users relay traffic for others. -
        • -
        • Provide easy configuration options so that users may increase their - contribution (share percentage) to the network. Display easy-to-understand - metrics such as "share ratio" so that users may see what they are contributing. -
        • - Maintain a strong community with blogs, forums, IRC, and other means of communication. -
        -
      • Starvation attack: A hostile user may attempt to harm the network by - creating a significant number of peers in the network who are not identified as - being under control of the same entity (as with Sybil). These nodes then - decide not to provide any resources to the network, causing existing peers - to search through a larger network database or request more tunnels than - should be necessary. - Alternatively, the nodes may provide intermittent service by periodically - dropping selected traffic, or refusing connections to certain peers. - This behavior may be indistinguishable from that of a heavily-loaded or failing node. - I2P addresses these issues by maintaining profiles on the - peers, attempting to identify underperforming ones and simply ignoring - them, or using them rarely. - We have significantly enhanced the - ability to recognize and avoid troublesome peers; however there are still - significant efforts required in this area. -
      • -
      • Flooding attack: A hostile user may attempt to flood the network, - a peer, a destination, or a tunnel. Network and peer flooding is possible, - and I2P does nothing to prevent standard IP layer flooding. The flooding of - a destination with messages by sending a large number to the target's various - inbound tunnel gateways is possible, but the destination will know this both - by the contents of the message and because the tunnel's tests will fail. The - same goes for flooding just a single tunnel. I2P has no defenses for a network - flooding attack. For a destination and tunnel flooding attack, the target - identifies which tunnels are unresponsive and builds new ones. New code could - also be written to add even more tunnels if the client wishes to handle the - larger load. If, on the other hand, the load is more than the client can - deal with, they can instruct the tunnels to throttle the number of messages or - bytes they should pass on (once the advanced tunnel - operation is implemented).
      • -
      • CPU load attack: There are currently some methods for people to - remotely request that a peer perform some cryptographically expensive - operation, and a hostile attacker could use these to flood that peer with - a large number of them in an attempt to overload the CPU. Both using good - engineering practices and potentially requiring nontrivial certificates - (e.g. HashCash) to be attached to these expensive requests should mitigate - the issue, though there may be room for an attacker to exploit various - bugs in the implementation.
      • -
      • Floodfill DOS attack: A hostile user may attempt to harm the network by - becoming a floodfill router. The current defenses against unreliable, - intermittent, or malicious floodfill routers are poor. - A floodfill router may provide bad or no response to lookups, and - it may also interfere with inter-floodfill communication. - Some defenses and - peer profiling are implemented, - however there is much more to do. - For more information see the - network database page. +

        {% trans -%} +There are a whole slew of denial of service attacks available against I2P, +each with different costs and consequences: +{%- endtrans %}

        +
          +
        • {% trans -%} +Greedy user attack: This is simply +people trying to consume significantly more resources than they are +willing to contribute. The defense against this is: +{%- endtrans %} +
            +
          • {% trans comparisons=site_url('comparison') -%} +Set defaults so that most users provide resources to the network. +In I2P, users route traffic by default. In sharp distinction to +other networks, +over 95% of I2P users relay traffic for others. +{%- endtrans %}
          • +
          • {% trans -%} +Provide easy configuration options so that users may increase their +contribution (share percentage) to the network. Display easy-to-understand +metrics such as "share ratio" so that users may see what they are contributing. +{%- endtrans %}
          • +
          • {% trans -%} +Maintain a strong community with blogs, forums, IRC, and other means of communication. +{%- endtrans %}
          • +
        • +
        • {% trans peerselection=site_url('docs/how/peer-selection') -%} +Starvation attack: A hostile user may attempt to harm the network by +creating a significant number of peers in the network who are not identified as +being under control of the same entity (as with Sybil). These nodes then +decide not to provide any resources to the network, causing existing peers +to search through a larger network database or request more tunnels than +should be necessary. +Alternatively, the nodes may provide intermittent service by periodically +dropping selected traffic, or refusing connections to certain peers. +This behavior may be indistinguishable from that of a heavily-loaded or failing node. +I2P addresses these issues by maintaining profiles on the +peers, attempting to identify underperforming ones and simply ignoring +them, or using them rarely. +We have significantly enhanced the +ability to recognize and avoid troublesome peers; however there are still +significant efforts required in this area. +{%- endtrans %}
        • +
        • {% trans todo=site_url('get-involved/todo') -%} +Flooding attack: A hostile user may attempt to flood the network, +a peer, a destination, or a tunnel. Network and peer flooding is possible, +and I2P does nothing to prevent standard IP layer flooding. The flooding of +a destination with messages by sending a large number to the target's various +inbound tunnel gateways is possible, but the destination will know this both +by the contents of the message and because the tunnel's tests will fail. The +same goes for flooding just a single tunnel. I2P has no defenses for a network +flooding attack. For a destination and tunnel flooding attack, the target +identifies which tunnels are unresponsive and builds new ones. New code could +also be written to add even more tunnels if the client wishes to handle the +larger load. If, on the other hand, the load is more than the client can +deal with, they can instruct the tunnels to throttle the number of messages or +bytes they should pass on (once the advanced tunnel +operation is implemented). +{%- endtrans %}
        • +
        • {% trans -%} +CPU load attack: There are currently some methods for people to +remotely request that a peer perform some cryptographically expensive +operation, and a hostile attacker could use these to flood that peer with +a large number of them in an attempt to overload the CPU. Both using good +engineering practices and potentially requiring nontrivial certificates +(e.g. HashCash) to be attached to these expensive requests should mitigate +the issue, though there may be room for an attacker to exploit various +bugs in the implementation. +{%- endtrans %}
        • +
        • {% trans peerselection=site_url('docs/how/peer-selection'), +netdb=site_url('docs/how/network-database') -%} +Floodfill DOS attack: A hostile user may attempt to harm the network by +becoming a floodfill router. The current defenses against unreliable, +intermittent, or malicious floodfill routers are poor. +A floodfill router may provide bad or no response to lookups, and +it may also interfere with inter-floodfill communication. +Some defenses and +peer profiling are implemented, +however there is much more to do. +For more information see the +network database page. +{%- endtrans %}
        -

        Tagging attacks

        -

        Tagging attacks - modifying a message so that it can later be identified +

        {% trans %}Tagging attacks{% endtrans %}

        +

        {% trans todo=site_url('get-involved/todo') -%} +Tagging attacks - modifying a message so that it can later be identified further along the path - are by themselves impossible in I2P, as messages passed through tunnels are signed. However, if an attacker is the inbound tunnel gateway as well as a participant further along in that tunnel, with collusion they can identify the fact that they are in the same tunnel (and -prior to adding unique hop ids and other updates, +prior to adding unique hop ids and other updates, colluding peers within the same tunnel can recognize that fact without any effort). An attacker in an outbound tunnel and any part of an inbound tunnel cannot collude however, as the tunnel encryption pads and modifies the data separately for the inbound and outbound tunnels. External attackers cannot do anything, -as the links are encrypted and messages signed.

        +as the links are encrypted and messages signed. +{%- endtrans %}

        -

        Partitioning attacks

        +

        {% trans %}Partitioning attacks{% endtrans %}

        -

        Partitioning attacks - finding ways to segregate (technically or analytically) +

        {% trans -%} +Partitioning attacks - finding ways to segregate (technically or analytically) the peers in a network - are important to keep in mind when dealing with a powerful adversary, since the size of the network plays a key role in determining your anonymity. Technical partitioning by cutting links between peers to create @@ -339,142 +412,177 @@ isolating the target, no amount of network database healing will fix it. At that point, the only thing the router can hope to do is notice that a significant number of previously reliable peers have become unavailable and alert the client that it is temporarily disconnected (this detection code is not implemented at -the moment).

        +the moment). +{%- endtrans %}

        -

        Partitioning the network analytically by looking for differences in how routers +

        {% trans todo=site_url('get-involved/todo') -%} +Partitioning the network analytically by looking for differences in how routers and destinations behave and grouping them accordingly is also a very powerful attack. For instance, an attacker harvesting the network database will know when a particular destination has 5 inbound tunnels in their LeaseSet while others have only 2 or 3, allowing the adversary to potentially partition clients by the number of tunnels selected. Another partition is -possible when dealing with the nontrivial delays and -batching strategies, as the tunnel gateways and the +possible when dealing with the nontrivial delays and +batching strategies, as the tunnel gateways and the particular hops with non-zero delays will likely stand out. However, this data is only exposed to those specific hops, so to partition effectively on that matter, the attacker would need to control a significant portion of the network (and still that would only be a probabilistic partition, as they wouldn't know which other tunnels or messages have those delays). -

        -Also discussed on the - network database page (bootstrap attack). -

        +{%- endtrans %}

        -

        Predecessor attacks

        +

        {% trans netdb=site_url('docs/how/networkdatabase') -%} +Also discussed on the network database page (bootstrap attack). +{%- endtrans %}

        -

        The predecessor attack is passively gathering statistics in an attempt to see +

        {% trans %}Predecessor attacks{% endtrans %}

        + +

        {% trans -%} +The predecessor attack is passively gathering statistics in an attempt to see what peers are 'close' to the destination by participating in their tunnels and keeping track of the previous or next hop (for outbound or inbound tunnels, respectively). Over time, using a perfectly random sample of peers and random ordering, an attacker would be able to see which peer shows up as 'closer' statistically more than the rest, and that peer would in turn be where the -target is located.

        +target is located. +{%- endtrans %}

        -

        I2P avoids this in four ways: first, the peers selected to participate in +

        {% trans peerselection=site_url('docs/how/peer-selection'), +tunnelimpl=site_url('docs/tunnels/implementation'), +todo=site_url('get-involved/todo') -%} +I2P avoids this in four ways: first, the peers selected to participate in tunnels are not randomly sampled throughout the network - they are derived from -the peer selection algorithm which breaks them -into tiers. Second, with strict ordering of peers +the peer selection algorithm which breaks them +into tiers. Second, with strict ordering of peers in a tunnel, the fact that a peer shows up more frequently does not mean they're -the source. Third, with permuted tunnel length +the source. Third, with permuted tunnel length (not enabled by default) even 0 hop tunnels can provide plausible deniability as the occasional variation of the gateway will look like normal tunnels. Fourth, with -restricted routes (unimplemented), only the peer with +restricted routes (unimplemented), only the peer with a restricted connection to the target will ever contact the target, while attackers will merely run into that gateway. -

        -The current -tunnel build method +{%- endtrans %}

        + +

        {% trans tunnelcreation=site_url('docs/spec/tunnel-creation') -%} +The current tunnel build method was specifically designed to combat the predecessor attack. See also the intersection attack. -

        +{%- endtrans %}

        -

        References: -http://prisms.cs.umass.edu/brian/pubs/wright.tissec.2008.pdf +

        {% trans pdf2008='http://prisms.cs.umass.edu/brian/pubs/wright.tissec.2008.pdf', +pdf2004='http://prisms.cs.umass.edu/brian/pubs/wright-tissec.pdf' -%} +References: {{ pdf2008 }} which is an update to the 2004 predecessor attack paper -http://prisms.cs.umass.edu/brian/pubs/wright-tissec.pdf. -

        +{{ pdf2004 }}. +{%- endtrans %}

        -

        Harvesting attacks

        -

        +

        {% trans %}Harvesting attacks{% endtrans %}

        +

        {% trans -%} "Harvesting" means compiling a list of users running I2P. It can be used for legal attacks and to help other attacks by simply running a peer, seeing who it connects to, and harvesting whatever references to other peers it can find. -

        +{%- endtrans %}

        + +

        {% trans -%} I2P itself is not designed with effective defenses against this attack, since there is the distributed network database containing just this information. The following factors make the attack somewhat harder in practice: -

        • +{%- endtrans %}

          +
            +
          • {% trans -%} Network growth will make it more difficult to obtain a given proportion of the network -
          • +{%- endtrans %}
          • +
          • {% trans -%} Floodfill routers implement query limits as DOS protection -
          • +{%- endtrans %}
          • +
          • {% trans -%} "Hidden mode", which prevents a router from publishing its information to the netDb, (but also prevents it from relaying data) is not widely used now but could be. -
          +{%- endtrans %}
        • +
        + +

        {% trans todo=site_url('get-involved/todo') -%} In future implementations, -basic and -comprehensive restricted routes, +basic and +comprehensive restricted routes, this attack loses much of its power, as the "hidden" peers do not publish their contact addresses in the network database - only the tunnels through which they can be reached (as well as their public keys, etc). -

        +{%- endtrans %}

        + +

        {% trans -%} In the future, routers could use GeoIP to identify if they are in a particular country where identification as an I2P node would be risky. In that case, the router could automatically enable hidden mode, or enact other restricted route methods. -

        +{%- endtrans %}

        - -

        Identification Through Traffic Analysis

        -

        +

        {% trans %}Identification Through Traffic Analysis{% endtrans %}

        +

        {% trans transport=site_url('docs/transport') -%} By inspecting the traffic into and out of a router, a malicious ISP or state-level firewall could identify that a computer is running I2P. As discussed above, I2P is not specifically designed to hide that a computer is running I2P. However, several design decisions made in the design of the -transport layer and protocols +transport layer and protocols make it somewhat difficult to identify I2P traffic: -

        • +{%- endtrans %}

          +
            +
          • {% trans -%} Random port selection -
          • +{%- endtrans %}
          • +
          • {% trans -%} Point-to-Point Encryption of all traffic -
          • +{%- endtrans %}
          • +
          • {% trans -%} DH key exchange with no protocol bytes or other unencrypted constant fields -
          • +{%- endtrans %}
          • +
          • {% trans ntcp=site_url('docs/transport/ntcp'), ssu=site_url('docs/transport/ssu') -%} Simultaneous use of both -TCP and -UDP transports. +TCP and +UDP transports. UDP may be much harder for some Deep Packet Inspection (DPI) equipment to track. -
          +{%- endtrans %}
        • +
        +

        {% trans -%} In the near future, we plan to directly address traffic analysis issues by further obfuscation of I2P transport protocols, possibly including: -

        • +{%- endtrans %}

          +
            +
          • {% trans -%} Padding at the transport layer to random lengths, especially during the connection handshake -
          • +{%- endtrans %}
          • +
          • {% trans -%} Study of packet size distribution signatures, and additional padding as necessary -
          • +{%- endtrans %}
          • +
          • {% trans -%} Development of additional transport methods that mimic SSL or other common protocols -
          • +{%- endtrans %}
          • +
          • {% trans -%} Review of padding strategies at higher layers to see how they affect packet sizes at the transport layer -
          • +{%- endtrans %}
          • +
          • {% trans -%} Review of methods implemented by various state-level firewalls to block Tor -
          • +{%- endtrans %}
          • +
          • {% trans -%} Working directly with DPI and obfuscation experts -
          -

          -Reference: -Breaking and Improving Protocol Obfuscation -

          +{%- endtrans %}
        • +
        + +

        {% trans pdf='http://www.cse.chalmers.se/%7Ejohnwolf/publications/hjelmvik_breaking.pdf' -%} +Reference: Breaking and Improving Protocol Obfuscation +{%- endtrans %}

        +

        {% trans %}Sybil attacks{% endtrans %}

        -

        Sybil attacks

        - -

        Sybil describes a category of attacks where the adversary creates arbitrarily +

        {% trans -%} +Sybil describes a category of attacks where the adversary creates arbitrarily large numbers of colluding nodes and uses the increased numbers to help mounting other attacks. For instance, if an attacker is in a network where peers are selected randomly and they want an 80% chance to be one of those peers, they @@ -489,39 +597,47 @@ identity. We currently have not implemented any particular technique to address Sybil, but do include placeholder certificates in the router's and destination's data structures which can contain a HashCash certificate of appropriate value when necessary (or some other certificate proving scarcity). -

        +{%- endtrans %}

        + +

        {% trans -%} Requiring HashCash Certificates in various places has two major problems: -

        • +{%- endtrans %}

          +
            +
          • {% trans -%} Maintaining backward compatibility -
          • +{%- endtrans %}
          • +
          • {% trans -%} The classic HashCash problem - selecting HashCash values that are meaningful proofs of work on high-end machines, while still being feasible on low-end machines such as mobile devices. -
          -

          +{%- endtrans %}

        • +
        + +

        {% trans -%} Various limitations on the number of routers in a given IP range restrict the vulnerability to attackers that don't have the ability to put machines in several IP blocks. However, this is not a meaningful defense against a powerful adversary. -

        -See the - network database page +{%- endtrans %}

        + +

        {% trans netdb=site_url('docs/how/network-database') -%} +See the network database page for more Sybil discussion. -

        +{%- endtrans %}

        -

        Buddy Exhaustion attacks

        -

        - (Reference: - In Search of an Anonymouns and Secure Lookup Section 5.2) -

        -

        +

        {% trans %}Buddy Exhaustion attacks{% endtrans %}

        +

        {% trans pdf='https://netfiles.uiuc.edu/mittal2/www/nisan-torsk-ccs10.pdf' -%} +(Reference: In Search of an Anonymouns and Secure Lookup Section 5.2) +{%- endtrans %}

        + +

        {% trans peerselection=site_url('docs/how/peer-selection') -%} By refusing to accept or forward tunnel build requests, except to a colluding peer, a router could ensure that a tunnel is formed wholly from its set of colluding routers. The chances of success are enhanced if there is a large number of colluding routers, i.e. a Sybil attack. This is somewhat mitigated by our -peer profiling methods used to monitor the performance +peer profiling methods used to monitor the performance of peers. However, this is a powerful attack as the number of routers approaches f = 0.2, or 20% malicious nodes, as specifed in the paper. @@ -529,17 +645,16 @@ The malicous routers could also maintain connections to the target router and pr excellent forwarding bandwidth for traffic over those connections, in an attempt to manipulate the profiles managed by the target and appear attractive. Further research and defenses may be necessary. -

        +{%- endtrans %}

        -

        Cryptographic attacks

        +

        {% trans %}Cryptographic attacks{% endtrans %}

        -

        +

        {% trans cryptography=site_url('docs/how/cryptography') -%} We use strong cryptography with long keys, and we assume the security of the industry-standard cryptographic primitives used in I2P, as documented -on the low-level cryptography page. -Security features -include the immediate detection of +on the low-level cryptography page. +Security features include the immediate detection of altered messages along the path, the inability to decrypt messages not addressed to you, and defense against man-in-the-middle attacks. The key sizes chosen in 2003 were quite conservative at the time, and are still longer than @@ -552,53 +667,56 @@ the advent of faster processors, cryptographic research, and advancements in methods such as rainbow tables, clusters of video game hardware, etc. Unfortunately, I2P was not designed with easy mechanisms to lengthen keys or change shared secret values while maintaining backward compatibility. -

        +{%- endtrans %}

        + +

        {% trans cryptography=site_url('docs/how/cryptography') -%} Upgrading the various data structures and protocols to support longer keys will have to be tackled eventually, and this will be a -major undertaking, just as it will be for +major undertaking, just as it will be for others. Hopefully, through careful planning, we can minimize the disruption, and implement mechanisms to make it easier for future transitions. -

        -In the future, -several I2P protocols and data structures +{%- endtrans %}

        + +

        {% trans -%} +In the future, several I2P protocols and data structures support securely padding messages to arbitrary sizes, so messages could be made constant size or garlic messages could be modified randomly so that some cloves appear to contain more subcloves than they actually do. At the moment, however, garlic, tunnel, and -end to end messages include simple random padding.

        +end to end messages include simple random padding. +{%- endtrans %}

        -

        Floodfill Anonymity attacks

        -

        +

        {% trans %}Floodfill Anonymity attacks{% endtrans %}

        +

        {% trans netdb=site_url('docs/how/network-database') -%} In addition to the floodfill DOS attacks described above, floodfill routers are uniquely positioned to learn about network participants, due to their role in the netDb, and the high frequency of communication with those participants. This is somewhat mitigated because floodfill routers only manage a portion of the total keyspace, and the keyspace rotates daily, as explained -on the - network database page. +on the network database page. The specific mechanisms by which routers communicate with floodfills have been - carefully designed. +carefully designed. However, these threats should be studied further. The specific potential threats and corresponding defenses are a topic for future research. -

        +{%- endtrans %}

        -

        Other Network Database attacks

        -

        - A hostile user may attempt to harm the network by - creating one or more floodfill routers and crafting them to offer - bad, slow, or no responses. - Several scenarios are discussed on the - network database page. -

        +

        {% trans %}Other Network Database attacks{% endtrans %}

        +

        {% trans netdb=site_url('docs/how/network-database') -%} +A hostile user may attempt to harm the network by +creating one or more floodfill routers and crafting them to offer +bad, slow, or no responses. +Several scenarios are discussed on the +network database page. +{%- endtrans %}

        -

        Central Resource Attacks

        -

        +

        {% trans %}Central Resource Attacks{% endtrans %}

        +

        {% trans -%} There are a few centralized or limited resources (some inside I2P, some not) that could be attacked or used as a vector for attacks. The absence of jrandom starting November 2007, followed by the loss of the i2p.net hosting service in January 2008, @@ -606,65 +724,90 @@ highlighted numerous centralized resources in the development and operation of t most of which are now distributed. Attacks on externally-reachable resources mainly affect the ability of new users to find us, not the operation of the network itself. +{%- endtrans %}

          -
        • The website is mirrored and uses DNS round-robin for external public access. -
        • Routers now support multiple external reseed locations, - however more reseed hosts may be needed, and the handling of unreliable or malicious - reseed hosts may need improvement. -
        • Routers now support multiple update file locations. - A malicious update host could feed a huge file, need to limit the size. -
        • Routers now support multiple default trusted update signers. -
        • Routers now better handle multiple unreliable floodfill peers. - Malicious floodfills needs more study. -
        • The code is now stored in a distributed source control system. -
        • Routers rely on a single news host, but there is a hardcoded backup URL pointing to a different host. - A malicious news host could feed a huge file, need to limit the size. -
        • Naming system services, including addressbook subscription providers, add-host services, - and jump services, could be malicious. Substantial protections for subscriptions were implemented - in release 0.6.1.31, with additional enhancements in subsequent releases. - However, all naming services require some measure of trust, see - the naming page for details. -
        • We remain reliant on the DNS service for i2p2.de, losing this would cause substantial - disruption in our ability to attract new users, - and would shrink the network (in the short-to-medium term), just as the loss of i2p.net did. +
        • {% trans site=site_url() -%} +The website is mirrored and uses DNS round-robin for external public access. +{%- endtrans %}
        • +
        • {% trans faq=site_url('faq') -%} +Routers now support multiple external reseed locations, +however more reseed hosts may be needed, and the handling of unreliable or malicious +reseed hosts may need improvement. +{%- endtrans %}
        • +
        • {% trans -%} +Routers now support multiple update file locations. +A malicious update host could feed a huge file, need to limit the size. +{%- endtrans %}
        • +
        • {% trans -%} +Routers now support multiple default trusted update signers. +{%- endtrans %}
        • +
        • {% trans -%} +Routers now better handle multiple unreliable floodfill peers. +Malicious floodfills needs more study. +{%- endtrans %}
        • +
        • {% trans monotone=site_url('get-involved/guides/monotone') -%} +The code is now stored in a distributed source control system. +{%- endtrans %}
        • +
        • {% trans -%} +Routers rely on a single news host, but there is a hardcoded backup URL pointing to a different host. +A malicious news host could feed a huge file, need to limit the size. +{%- endtrans %}
        • +
        • {% trans naming=site_url('docs/naming') -%} +Naming system services, including addressbook subscription providers, add-host services, +and jump services, could be malicious. Substantial protections for subscriptions were implemented +in release 0.6.1.31, with additional enhancements in subsequent releases. +However, all naming services require some measure of trust, see +the naming page for details. +{%- endtrans %}
        • +
        • {% trans -%} +We remain reliant on the DNS service for i2p2.de, losing this would cause substantial +disruption in our ability to attract new users, +and would shrink the network (in the short-to-medium term), just as the loss of i2p.net did. +{%- endtrans %}
        -

        Development attacks

        +

        {% trans %}Development attacks{% endtrans %}

        -

        +

        {% trans -%} These attacks aren't directly on the network, but instead go after its development team by either introducing legal hurdles on anyone contributing to the development of the software, or by using whatever means are available to get the developers to subvert the software. Traditional technical measures cannot defeat these attacks, and if someone threatened the life or livelihood of a developer (or even just issuing a court order along with a gag order, under threat of prison), we would have a big problem. -

        +{%- endtrans %}

        -

        +

        {% trans -%} However, two techniques help defend against these attacks: +{%- endtrans %}

          -
        • All components of the network must be open source to enable inspection, verification, - modification, and improvement. If a developer is compromised, once it is noticed - the community should demand explanation and cease to accept that developer's work. - All checkins to our distributed source control system - are cryptographically signed, and the release packagers use a trust-list system - to restrict modifications to those previously approved. -
        • -
        • Development over the network itself, allowing developers to stay anonymous but still - secure the development process. All I2P development can occur through I2P - using - a distributed source control system, - a distributed source control system, IRC chat, - public web servers, - discussion forums (forum.i2p), and the software distribution sites, - all available within I2P.
        • +
        • {% trans monotone=site_url('get-involved/guides/monotone') -%} +All components of the network must be open source to enable inspection, verification, +modification, and improvement. If a developer is compromised, once it is noticed +the community should demand explanation and cease to accept that developer's work. +All checkins to our distributed source control system +are cryptographically signed, and the release packagers use a trust-list system +to restrict modifications to those previously approved. +{%- endtrans %}
        • +
        • {% trans monotone=site_url('get-involved/guides/monotone') -%} +Development over the network itself, allowing developers to stay anonymous but still +secure the development process. All I2P development can occur through I2P - using +a distributed source control system, +a distributed source control system, IRC chat, +public web servers, +discussion forums (forum.i2p), and the software distribution sites, +all available within I2P. +{%- endtrans %}
        + +

        {% trans -%} We also maintain relationships with various organizations that offer legal advice, should any defense be necessary. -

        +{%- endtrans %}

        -

        Implementation attacks (bugs)

        -

        +

        {% trans %}Implementation attacks (bugs){% endtrans %}

        +

        {% trans -%} Try as we might, most nontrivial applications include errors in the design or implementation, and I2P is no exception. There may be bugs that could be exploited to attack the anonymity or security of the communication running over I2P in unexpected @@ -673,7 +816,9 @@ all designs and documentation and solicit review and criticism with the hope that many eyes will improve the system. We do not believe in security through obscurity. -

        +{%- endtrans %}

        + +

        {% trans -%} In addition, the code is being treated the same way, with little aversion towards reworking or throwing out something that isn't meeting the needs of the software system (including ease of @@ -681,57 +826,67 @@ modification). Documentation for the design and implementation of the network a the software components are an essential part of security, as without them it is unlikely that developers would be willing to spend the time to learn the software enough to identify shortcomings and bugs. -

        +{%- endtrans %}

        + +

        {% trans -%} Our software is likely, in particular, to contain bugs related to denial of service through out-of-memory errors (OOMs), cross-site-scripting (XSS) issues in the router console, and other vulnerabilities to non-standard inputs via the various protocols. -

        +{%- endtrans %}

        + +

        {% trans volunteer=site_url('get-involved') -%} I2P is still a small network with a small development community and almost no interest from academic or research groups. Therefore we lack the analysis that other anonymity networks may have received. We continue to recruit people to -get involved and help. -

        +get involved and help. +{%- endtrans %}

        -

        Other Defenses

        -

        Blocklists

        -

        +

        {% trans %}Other Defenses{% endtrans %}

        +

        {% trans %}Blocklists{% endtrans %}

        +

        {% trans -%} To some extent, I2P could be enhanced to avoid peers operating at IP addresses listed in a blocklist. Several blocklists are commonly available in standard formats, listing anti-P2P organizations, potential state-level adversaries, and others. -

        +{%- endtrans %}

        + +

        {% trans -%} To the extent that active peers actually do show up in the actual blocklist, blocking by only a subset of peers would tend to segment the network, exacerbate reachability problems, and decrease overall reliability. Therefore we would want to agree on a particular blocklist and enable it by default. +{%- endtrans %}

        -

        +

        {% trans -%} Blocklists are only a part (perhaps a small part) of an array of defenses against maliciousness. In large part the profiling system does a good job of measuring router behavior so that we don't need to trust anything in netDb. However there is more that can be done. For each of the areas in the list above there are improvements we can make in detecting badness. -

        +{%- endtrans %}

        + +

        {% trans -%} If a blocklist is hosted at a central location with automatic updates the network is vulnerable to a central resource attack. Automatic subscription to a list gives the list provider the power to shut the i2p network down. Completely. -

        +{%- endtrans %}

        + +

        {% trans -%} Currently, a default blocklist is distributed with our software, listing only the IPs of past DOS sources. -There -is no automatic update mechanism. +There is no automatic update mechanism. Should a particular IP range implement serious attacks on the I2P network, we would have to ask people to update their blocklist manually through out-of-band mechanisms such as forums, blogs, etc. -

        +{%- endtrans %}

        {% endblock %} From 39e335455f63678da381c32560612093da54a2a1 Mon Sep 17 00:00:00 2001 From: str4d Date: Fri, 1 Feb 2013 10:16:08 +0000 Subject: [PATCH 368/650] Added translation tags to docs/how/tech-intro --- i2p2www/pages/site/docs/how/tech-intro.html | 1820 ++++++++++--------- 1 file changed, 1001 insertions(+), 819 deletions(-) diff --git a/i2p2www/pages/site/docs/how/tech-intro.html b/i2p2www/pages/site/docs/how/tech-intro.html index b27a092b..aa7fdc9e 100644 --- a/i2p2www/pages/site/docs/how/tech-intro.html +++ b/i2p2www/pages/site/docs/how/tech-intro.html @@ -1,888 +1,1070 @@ {% extends "global/layout.html" %} -{% block title %}Introducing I2P{% endblock %} +{% block title %}{% trans %}Introducing I2P{% endtrans %}{% endblock %} {% block content %} -

        I2P: A scalable framework for anonymous communication

        +

        {% trans %}I2P: A scalable framework for anonymous communication{% endtrans %}


        -

        Introduction

        -

        - I2P is a scalable, self organizing, resilient packet switched anonymous - network layer, upon which any number of different anonymity or security conscious - applications can operate. Each of these applications may make their own anonymity, - latency, and throughput tradeoffs without worrying about the proper implementation - of a free route mixnet, allowing them to blend their activity with the larger - anonymity set of users already running on top of I2P. -

        -

        - Applications available already provide the full range of typical Internet activities - - anonymous web browsing, web hosting, chat, file sharing, e-mail, - blogging and content syndication, newsgroups, as well as several other applications under development. +

        {% trans %}Introduction{% endtrans %}

        +

        {% trans -%} +I2P is a scalable, self organizing, resilient packet switched anonymous +network layer, upon which any number of different anonymity or security conscious +applications can operate. Each of these applications may make their own anonymity, +latency, and throughput tradeoffs without worrying about the proper implementation +of a free route mixnet, allowing them to blend their activity with the larger +anonymity set of users already running on top of I2P. +{%- endtrans %}

        + +

        {% trans -%} +Applications available already provide the full range of typical Internet activities - +anonymous web browsing, web hosting, chat, file sharing, e-mail, +blogging and content syndication, newsgroups, as well as several other applications under development. +{%- endtrans %}

          -
        • Web browsing: using any existing browser that supports using a proxy.
        • -
        • Chat: IRC, Jabber, I2P-Messenger.
        • -
        • File sharing: I2PSnark, Robert, iMule, - I2Phex, PyBit, I2P-bt - and others. -
        • -
        • E-mail: susimail and I2P-Bote.
        • -
        • Blog: using e.g. the pebble plugin or the distributed blogging software Syndie.
        • -
        • Distributed Data Store: Save your data redundantly in the Tahoe-LAFS cloud over I2P.
        • -
        • Newsgroups: using any newsgroup reader that supports using a proxy.
        • +
        • {% trans %}Web browsing: using any existing browser that supports using a proxy.{% endtrans %}
        • +
        • {% trans %}Chat: IRC, Jabber, I2P-Messenger.{% endtrans %}
        • +
        • {% trans -%} +File sharing: I2PSnark, Robert, iMule, +I2Phex, PyBit, I2P-bt +and others. +{%- endtrans %}
        • +
        • {% trans %}E-mail: susimail and I2P-Bote.{% endtrans %}
        • +
        • {% trans %}Blog: using e.g. the pebble plugin or the distributed blogging software Syndie.{% endtrans %}
        • +
        • {% trans %}Distributed Data Store: Save your data redundantly in the Tahoe-LAFS cloud over I2P.{% endtrans %}
        • +
        • {% trans %}Newsgroups: using any newsgroup reader that supports using a proxy.{% endtrans %}
        -

        - Unlike web sites hosted within content distribution networks like Freenet - or GNUnet, the services hosted on - I2P are fully interactive - there are traditional web-style search engines, - bulletin boards, blogs you can comment on, database driven sites, and bridges - to query static systems like Freenet without needing to install it locally. -

        -

        - With all of these anonymity enabled applications, I2P takes on the role - of the message oriented middleware - applications say that they want to send - some data to a cryptographic identifier (a "destination") and I2P takes care - of making sure it gets there securely and anonymously. I2P also bundles a - simple streaming library to allow I2P's anonymous - best-effort messages to transfer as reliable, in-order streams, transparently - offering a TCP based congestion control algorithm tuned for the high bandwidth - delay product of the network. While there have been several simple SOCKS proxies - available to tie existing applications into the network, their value has been - limited as nearly every application routinely exposes what, in an anonymous - context, is sensitive information. The only safe way to go is to fully audit - an application to ensure proper operation and to assist in that we provide - a series of APIs in various languages which can be used to make the most out - of the network. -

        -

        - I2P is not a research project - academic, commercial, or governmental, but - is instead an engineering effort aimed at doing whatever is necessary to provide - a sufficient level of anonymity to those who need it. It has been in active - development since early 2003 with one full time developer and a dedicated - group of part time contributors from all over the world. All of the work done - on I2P is open source and freely available on the website, - with the majority of the code released outright into the public domain, though - making use of a few cryptographic routines under BSD-style licenses. The people - working on I2P do not control what people release client applications under, - and there are several GPL'ed applications available (I2PTunnel, - susimail, I2PSnark, I2P-Bote, - I2Phex and others.). - Funding for I2P comes entirely from donations, - and does not receive any tax breaks in any jurisdiction at this time, - as many of the developers are themselves anonymous. -

        -

        Operation

        -

        Overview

        -

        - To understand I2P's operation, it is essential to understand a few key concepts. - First, I2P makes a strict separation between the software participating in - the network (a "router") and the anonymous endpoints ("destinations") associated - with individual applications. The fact that someone is running I2P is not - usually a secret. What is hidden is information on what the user is doing, - if anything at all, as well as what router a particular destination is connected - to. End users will typically have several local destinations on their router - - for instance, one proxying in to IRC servers, another supporting the user's - anonymous webserver ("eepsite"), another for an I2Phex instance, another for - torrents, etc. -

        -

        - Another critical concept to understand is the "tunnel". - A tunnel is a directed path through an explicitly selected list of routers. - Layered encryption is used, so each of the routers can only decrypt a single layer. - The decrypted information contains the IP of the next router, along with - the encrypted information to be forwarded. - Each tunnel has a starting point (the first router, also known as "gateway") - and an end point. Messages can be sent only in one way. To send messages back, - another tunnel is required. -

        + +

        {% trans -%} +Unlike web sites hosted within content distribution networks like Freenet +or GNUnet, the services hosted on +I2P are fully interactive - there are traditional web-style search engines, +bulletin boards, blogs you can comment on, database driven sites, and bridges +to query static systems like Freenet without needing to install it locally. +{%- endtrans %}

        + +

        {% trans -%} +With all of these anonymity enabled applications, I2P takes on the role +of the message oriented middleware - applications say that they want to send +some data to a cryptographic identifier (a "destination") and I2P takes care +of making sure it gets there securely and anonymously. I2P also bundles a +simple streaming library to allow I2P's anonymous +best-effort messages to transfer as reliable, in-order streams, transparently +offering a TCP based congestion control algorithm tuned for the high bandwidth +delay product of the network. While there have been several simple SOCKS proxies +available to tie existing applications into the network, their value has been +limited as nearly every application routinely exposes what, in an anonymous +context, is sensitive information. The only safe way to go is to fully audit +an application to ensure proper operation and to assist in that we provide +a series of APIs in various languages which can be used to make the most out +of the network. +{%- endtrans %}

        + +

        {% trans site=site_url(), halloffame=site_url('about/hall-of-fame') -%} +I2P is not a research project - academic, commercial, or governmental, but +is instead an engineering effort aimed at doing whatever is necessary to provide +a sufficient level of anonymity to those who need it. It has been in active +development since early 2003 with one full time developer and a dedicated +group of part time contributors from all over the world. All of the work done +on I2P is open source and freely available on the website, +with the majority of the code released outright into the public domain, though +making use of a few cryptographic routines under BSD-style licenses. The people +working on I2P do not control what people release client applications under, +and there are several GPL'ed applications available (I2PTunnel, +susimail, I2PSnark, I2P-Bote, +I2Phex and others.). +Funding for I2P comes entirely from donations, +and does not receive any tax breaks in any jurisdiction at this time, +as many of the developers are themselves anonymous. +{%- endtrans %}

        + +

        {% trans %}Operation{% endtrans %}

        +

        {% trans %}Overview{% endtrans %}

        +

        {% trans -%} +To understand I2P's operation, it is essential to understand a few key concepts. +First, I2P makes a strict separation between the software participating in +the network (a "router") and the anonymous endpoints ("destinations") associated +with individual applications. The fact that someone is running I2P is not +usually a secret. What is hidden is information on what the user is doing, +if anything at all, as well as what router a particular destination is connected +to. End users will typically have several local destinations on their router +- for instance, one proxying in to IRC servers, another supporting the user's +anonymous webserver ("eepsite"), another for an I2Phex instance, another for +torrents, etc. +{%- endtrans %}

        + +

        {% trans -%} +Another critical concept to understand is the "tunnel". +A tunnel is a directed path through an explicitly selected list of routers. +Layered encryption is used, so each of the routers can only decrypt a single layer. +The decrypted information contains the IP of the next router, along with +the encrypted information to be forwarded. +Each tunnel has a starting point (the first router, also known as "gateway") +and an end point. Messages can be sent only in one way. To send messages back, +another tunnel is required. +{%- endtrans %}

        - Inbound and outbound tunnel schematic + {{ _('Inbound and outbound tunnel schematic') }}

        - Figure 1: Two types of tunnels exist: inbound and outbound. + {% trans %}Figure 1: Two types of tunnels exist: inbound and outbound.{% endtrans %}
        -
        -

        - Two types of tunnels exist: - "outbound" tunnels send messages away from the tunnel creator, - while "inbound" tunnels bring messages to the tunnel creator. - Combining these two tunnels allows users to send messages to each other. - The sender ("Alice" in the above image) sets up an outbound tunnel, - while the receiver ("Bob" in the above image) creates an inbound tunnel. - The gateway of an inbound tunnel can receive messages from any other user - and will send them on until the endpoint ("Bob"). - The endpoint of the outbound tunnel will need to send the message - on to the gateway of the inbound tunnel. - To do this, the sender ("Alice") adds instructions to her encrypted message. - Once the endpoint of the outbound tunnel decrypts the message, - it will have instructions to forward the message to the correct - inbound gateway (the gateway to "Bob"). -

        -

        - A third critical concept to understand is I2P's "network database" (or "netDb") - - a pair of algorithms used to share network metadata. The two types of metadata - carried are "routerInfo" and "leaseSets" - the routerInfo gives routers the - data necessary for contacting a particular router (their public keys, transport - addresses, etc), while the leaseSet gives routers the information necessary - for contacting a particular destination. A leaseSet contains a number of "leases". - Each of this leases specifies a tunnel gateway, which allows reaching a specific destination. - The full information contained in a lease: + +

        {% trans -%} +Two types of tunnels exist: +"outbound" tunnels send messages away from the tunnel creator, +while "inbound" tunnels bring messages to the tunnel creator. +Combining these two tunnels allows users to send messages to each other. +The sender ("Alice" in the above image) sets up an outbound tunnel, +while the receiver ("Bob" in the above image) creates an inbound tunnel. +The gateway of an inbound tunnel can receive messages from any other user +and will send them on until the endpoint ("Bob"). +The endpoint of the outbound tunnel will need to send the message +on to the gateway of the inbound tunnel. +To do this, the sender ("Alice") adds instructions to her encrypted message. +Once the endpoint of the outbound tunnel decrypts the message, +it will have instructions to forward the message to the correct +inbound gateway (the gateway to "Bob"). +{%- endtrans %}

        + +

        {% trans -%} +A third critical concept to understand is I2P's "network database" (or "netDb") +- a pair of algorithms used to share network metadata. The two types of metadata +carried are "routerInfo" and "leaseSets" - the routerInfo gives routers the +data necessary for contacting a particular router (their public keys, transport +addresses, etc), while the leaseSet gives routers the information necessary +for contacting a particular destination. A leaseSet contains a number of "leases". +Each of this leases specifies a tunnel gateway, which allows reaching a specific destination. +The full information contained in a lease: +{%- endtrans %}

          -
        • Inbound gateway for a tunnel that allows reaching a specific destination.
        • -
        • Time when a tunnel expires.
        • -
        • Pair of public keys to be able to encrypt messages (to send through the tunnel and reach the destination).
        • +
        • {% trans %}Inbound gateway for a tunnel that allows reaching a specific destination.{% endtrans %}
        • +
        • {% trans %}Time when a tunnel expires.{% endtrans %}
        • +
        • {% trans %}Pair of public keys to be able to encrypt messages (to send through the tunnel and reach the destination).{% endtrans %}
        - Routers themselves send their routerInfo to the netDb directly, while leaseSets are sent through outbound tunnels - (leaseSets need to be sent anonymously, to avoid correlating a router with his leaseSets). -

        -

        - We can combine the above concepts to build successful connections in the network. -

        -

        - To build up her own inbound and outbound tunnels, Alice does a lookup in the netDb to collect routerInfo. - This way, she gathers lists of peers she can use as hops in her tunnels. - She can then send a build message to the first hop, requesting the construction of a tunnel and asking - that router to send the construction message onward, until the tunnel has been constructed. -

        +

        {% trans -%} +Routers themselves send their routerInfo to the netDb directly, while leaseSets are sent through outbound tunnels +(leaseSets need to be sent anonymously, to avoid correlating a router with his leaseSets). +{%- endtrans %}

        + +

        {% trans -%} +We can combine the above concepts to build successful connections in the network. +{%- endtrans %}

        + +

        {% trans -%} +To build up her own inbound and outbound tunnels, Alice does a lookup in the netDb to collect routerInfo. +This way, she gathers lists of peers she can use as hops in her tunnels. +She can then send a build message to the first hop, requesting the construction of a tunnel and asking +that router to send the construction message onward, until the tunnel has been constructed. +{%- endtrans %}

        - Request information on other routers + {{ _('Request information on other routers') }}                     - Build tunnel using router information + {{ _('Build tunnel using router information') }}

        - Figure 2: Router information is used to build tunnels. + {% trans %}Figure 2: Router information is used to build tunnels.{% endtrans %}

        -

        - When Alice wants to send a message to Bob, she first does a lookup in the - netDb to find Bob's leaseSet, giving her his current inbound tunnel gateways. - She then picks one of her outbound tunnels and sends the message down it with - instructions for the outbound tunnel's endpoint to forward the message on - to one of Bob's inbound tunnel gateways. When the outbound tunnel endpoint - receives those instructions, it forwards the message as requested, and when - Bob's inbound tunnel gateway receives it, it is forwarded down the tunnel - to Bob's router. If Alice wants Bob to be able to reply to the message, she - needs to transmit her own destination explicitly as part of the message itself. - This can be done by introducing a higher-level layer, which is done in the - streaming library. - Alice may also cut down on the response time by bundling her most - recent leaseSet with the message so that Bob doesn't need to do a netDb lookup - for it when he wants to reply, but this is optional. -

        +

        {% trans -%} +When Alice wants to send a message to Bob, she first does a lookup in the +netDb to find Bob's leaseSet, giving her his current inbound tunnel gateways. +She then picks one of her outbound tunnels and sends the message down it with +instructions for the outbound tunnel's endpoint to forward the message on +to one of Bob's inbound tunnel gateways. When the outbound tunnel endpoint +receives those instructions, it forwards the message as requested, and when +Bob's inbound tunnel gateway receives it, it is forwarded down the tunnel +to Bob's router. If Alice wants Bob to be able to reply to the message, she +needs to transmit her own destination explicitly as part of the message itself. +This can be done by introducing a higher-level layer, which is done in the +streaming library. +Alice may also cut down on the response time by bundling her most +recent LeaseSet with the message so that Bob doesn't need to do a netDb lookup +for it when he wants to reply, but this is optional. +{%- endtrans %}

        - Connect tunnels using leaseSets + {{ _('Connect tunnels using LeaseSets') }}

        - Figure 3: Leasesets are used to connect outbound and inbound tunnels. + {% trans %}Figure 3: LeaseSets are used to connect outbound and inbound tunnels.{% endtrans %}

        -

        - While the tunnels themselves have layered encryption to prevent unauthorized - disclosure to peers inside the network (as the transport layer itself does - to prevent unauthorized disclosure to peers outside the network), it is necessary - to add an additional end to end layer of encryption to hide the message from - the outbound tunnel endpoint and the inbound tunnel gateway. This "garlic - encryption" lets Alice's router wrap up multiple messages into a single - "garlic message", encrypted to a particular public key so that intermediary - peers cannot determine either how many messages are within the garlic, what - those messages say, or where those individual cloves are destined. For typical - end to end communication between Alice and Bob, the garlic will be encrypted - to the public key published in Bob's leaseSet, allowing the message to be - encrypted without giving out the public key to Bob's own router. -

        -

        - Another important fact to keep in mind is that I2P is entirely message based - and that some messages may be lost along the way. Applications using I2P can - use the message oriented interfaces and take care of their own congestion - control and reliability needs, but most would be best served by reusing the - provided streaming library to view I2P as a streams - based network. -

        -

        Tunnels

        -

        - Both inbound and outbound tunnels work along similar principles. - The tunnel gateway accumulates a number of tunnel messages, eventually preprocessing - them into something for tunnel delivery. Next, the gateway encrypts that preprocessed - data and forwards it to the first hop. That peer and subsequent tunnel participants - add on a layer of encryption after verifying that it isn't a duplicate before - forward it on to the next peer. Eventually, the message arrives at the endpoint - where the messages are split out again and forwarded on as requested. The - difference arises in what the tunnel's creator does - for inbound tunnels, - the creator is the endpoint and they simply decrypt all of the layers added, - while for outbound tunnels, the creator is the gateway and they pre-decrypt - all of the layers so that after all of the layers of per-hop encryption are - added, the message arrives in the clear at the tunnel endpoint. -

        -

        - The choice of specific peers to pass on messages as well as their particular - ordering is important to understanding both I2P's anonymity and performance - characteristics. While the network database (below) has its own criteria for - picking what peers to query and store entries on, tunnel creators may use any peers - in the network in any order (and even any number of times) in a single tunnel. - If perfect latency and capacity data were globally known, selection and ordering - would be driven by the particular needs of the client in tandem with their - threat model. Unfortunately, latency and capacity data is not trivial to gather - anonymously, and depending upon untrusted peers to provide this information - has its own serious anonymity implications. -

        -

        - From an anonymity perspective, the simplest technique would be to pick peers - randomly from the entire network, order them randomly and use those peers - in that order for all eternity. From a performance perspective, the simplest - technique would be to pick the fastest peers with the necessary spare capacity, - spreading the load across different peers to handle transparent failover, - and to rebuild the tunnel whenever capacity information changes. While the - former is both brittle and inefficient, the later requires inaccessible information - and offers insufficient anonymity. I2P is instead working on offering a range - of peer selection strategies, coupled with anonymity aware measurement code - to organize the peers by their profiles. -

        -

        - As a base, I2P is constantly profiling the peers with which it interacts - with by measuring their indirect behavior - for instance, when a peer responds - to a netDb lookup in 1.3 seconds, that round trip latency is recorded in the - profiles for all of the routers involved in the two tunnels (inbound and outbound) - through which the request and response passed, as well as the queried peer's - profile. Direct measurement, such as transport layer latency or congestion, - is not used as part of the profile, as it can be manipulated and associated - with the measuring router, exposing them to trivial attacks. While gathering - these profiles, a series of calculations are run on each to summarize its - performance - its latency, capacity to handle lots of activity, whether they - are currently overloaded, and how well integrated into the network they seem - to be. These calculations are then compared for active peers to organize the - routers into four tiers - fast and high capacity, high capacity, not failing, - and failing. The thresholds for those tiers are determined dynamically, and - while they currently use fairly simple algorithms, alternatives exist. -

        -

        Using this profile data, the simplest reasonable peer selection strategy - is to pick peers randomly from the top tier (fast and high capacity), and - this is currently deployed for client tunnels. Exploratory tunnels (used for - netDb and tunnel management) pick peers randomly from the "not failing" tier - (which includes routers in 'better' tiers as well), allowing the peer to sample - routers more widely, in effect optimizing the peer selection through randomized - hill climbing. These strategies alone do however leak information regarding - the peers in the router's top tier through predecessor and netDb harvesting - attacks. In turn, several alternatives exist which, while not balancing the - load as evenly, will address the attacks mounted by particular classes of - adversaries. -

        -

        - By picking a random key and ordering the peers according to their XOR distance - from it, the information leaked is reduced in predecessor and harvesting attacks - according to the peers' failure rate and the tier's churn. Another simple - strategy for dealing with netDb harvesting attacks is to simply fix the inbound - tunnel gateway(s) yet randomize the peers further on in the tunnels. To deal - with predecessor attacks for adversaries which the client contacts, the outbound - tunnel endpoints would also remain fixed. The selection of which peer to fix - on the most exposed point would of course need to have a limit to the duration, - as all peers fail eventually, so it could either be reactively adjusted or - proactively avoided to mimic a measured mean time between failures of other - routers. These two strategies can in turn be combined, using a fixed exposed - peer and an XOR based ordering within the tunnels themselves. A more rigid - strategy would fix the exact peers and ordering of a potential tunnel, only - using individual peers if all of them agree to participate in the same way - each time. This varies from the XOR based ordering in that the predecessor - and successor of each peer is always the same, while the XOR only makes sure - their order doesn't change. -

        -

        - As mentioned before, I2P currently (release 0.8) includes the tiered - random strategy above, with XOR-based ordering. A - more detailed discussion of the mechanics involved in tunnel operation, management, - and peer selection can be found in the tunnel spec. -

        -

        Network Database

        -

        - As mentioned earlier, I2P's netDb works to share the network's metadata. - This is detailed in the networkdatabase page, - but a basic explanation is available below. -

        -

        - A percentage of I2P users are appointed as 'floodfill peers'. - Currently, I2P installations that have a lot of bandwidth and are fast enough, - will appoint themselves as floodfill as soon as the number of existing floodfill routers - drops too low. -

        -

        - Other I2P routers will store their data and lookup data by sending simple 'store' and 'lookup' queries to the floodfills. - If a floodfill router receives a 'store' query, it will spread the information to other floodfill routers - using the Kademlia algorithm. - The 'lookup' queries currently function differently, to avoid an important - security issue. - When a lookup is done, the floodfill router will not forward the lookup to other peers, - but will always answer by itself (if it has the requested data). -

        -

        - Two types of information are stored in the network database. +

        {% trans -%} +While the tunnels themselves have layered encryption to prevent unauthorized +disclosure to peers inside the network (as the transport layer itself does +to prevent unauthorized disclosure to peers outside the network), it is necessary +to add an additional end to end layer of encryption to hide the message from +the outbound tunnel endpoint and the inbound tunnel gateway. This "garlic +encryption" lets Alice's router wrap up multiple messages into a single +"garlic message", encrypted to a particular public key so that intermediary +peers cannot determine either how many messages are within the garlic, what +those messages say, or where those individual cloves are destined. For typical +end to end communication between Alice and Bob, the garlic will be encrypted +to the public key published in Bob's leaseSet, allowing the message to be +encrypted without giving out the public key to Bob's own router. +{%- endtrans %}

        + +

        {% trans -%} +Another important fact to keep in mind is that I2P is entirely message based +and that some messages may be lost along the way. Applications using I2P can +use the message oriented interfaces and take care of their own congestion +control and reliability needs, but most would be best served by reusing the +provided streaming library to view I2P as a streams +based network. +{%- endtrans %}

        + +

        {% trans %}Tunnels{% endtrans %}

        +

        {% trans -%} +Both inbound and outbound tunnels work along similar principles. +The tunnel gateway accumulates a number of tunnel messages, eventually preprocessing +them into something for tunnel delivery. Next, the gateway encrypts that preprocessed +data and forwards it to the first hop. That peer and subsequent tunnel participants +add on a layer of encryption after verifying that it isn't a duplicate before +forward it on to the next peer. Eventually, the message arrives at the endpoint +where the messages are split out again and forwarded on as requested. The +difference arises in what the tunnel's creator does - for inbound tunnels, +the creator is the endpoint and they simply decrypt all of the layers added, +while for outbound tunnels, the creator is the gateway and they pre-decrypt +all of the layers so that after all of the layers of per-hop encryption are +added, the message arrives in the clear at the tunnel endpoint. +{%- endtrans %}

        + +

        {% trans -%} +The choice of specific peers to pass on messages as well as their particular +ordering is important to understanding both I2P's anonymity and performance +characteristics. While the network database (below) has its own criteria for +picking what peers to query and store entries on, tunnel creators may use any peers +in the network in any order (and even any number of times) in a single tunnel. +If perfect latency and capacity data were globally known, selection and ordering +would be driven by the particular needs of the client in tandem with their +threat model. Unfortunately, latency and capacity data is not trivial to gather +anonymously, and depending upon untrusted peers to provide this information +has its own serious anonymity implications. +{%- endtrans %}

        + +

        {% trans -%} +From an anonymity perspective, the simplest technique would be to pick peers +randomly from the entire network, order them randomly and use those peers +in that order for all eternity. From a performance perspective, the simplest +technique would be to pick the fastest peers with the necessary spare capacity, +spreading the load across different peers to handle transparent failover, +and to rebuild the tunnel whenever capacity information changes. While the +former is both brittle and inefficient, the later requires inaccessible information +and offers insufficient anonymity. I2P is instead working on offering a range +of peer selection strategies, coupled with anonymity aware measurement code +to organize the peers by their profiles. +{%- endtrans %}

        + +

        {% trans -%} +As a base, I2P is constantly profiling the peers with which it interacts +with by measuring their indirect behavior - for instance, when a peer responds +to a netDb lookup in 1.3 seconds, that round trip latency is recorded in the +profiles for all of the routers involved in the two tunnels (inbound and outbound) +through which the request and response passed, as well as the queried peer's +profile. Direct measurement, such as transport layer latency or congestion, +is not used as part of the profile, as it can be manipulated and associated +with the measuring router, exposing them to trivial attacks. While gathering +these profiles, a series of calculations are run on each to summarize its +performance - its latency, capacity to handle lots of activity, whether they +are currently overloaded, and how well integrated into the network they seem +to be. These calculations are then compared for active peers to organize the +routers into four tiers - fast and high capacity, high capacity, not failing, +and failing. The thresholds for those tiers are determined dynamically, and +while they currently use fairly simple algorithms, alternatives exist. +{%- endtrans %}

        + +

        {% trans -%} +Using this profile data, the simplest reasonable peer selection strategy +is to pick peers randomly from the top tier (fast and high capacity), and +this is currently deployed for client tunnels. Exploratory tunnels (used for +netDb and tunnel management) pick peers randomly from the "not failing" tier +(which includes routers in 'better' tiers as well), allowing the peer to sample +routers more widely, in effect optimizing the peer selection through randomized +hill climbing. These strategies alone do however leak information regarding +the peers in the router's top tier through predecessor and netDb harvesting +attacks. In turn, several alternatives exist which, while not balancing the +load as evenly, will address the attacks mounted by particular classes of +adversaries. +{%- endtrans %}

        + +

        {% trans -%} +By picking a random key and ordering the peers according to their XOR distance +from it, the information leaked is reduced in predecessor and harvesting attacks +according to the peers' failure rate and the tier's churn. Another simple +strategy for dealing with netDb harvesting attacks is to simply fix the inbound +tunnel gateway(s) yet randomize the peers further on in the tunnels. To deal +with predecessor attacks for adversaries which the client contacts, the outbound +tunnel endpoints would also remain fixed. The selection of which peer to fix +on the most exposed point would of course need to have a limit to the duration, +as all peers fail eventually, so it could either be reactively adjusted or +proactively avoided to mimic a measured mean time between failures of other +routers. These two strategies can in turn be combined, using a fixed exposed +peer and an XOR based ordering within the tunnels themselves. A more rigid +strategy would fix the exact peers and ordering of a potential tunnel, only +using individual peers if all of them agree to participate in the same way +each time. This varies from the XOR based ordering in that the predecessor +and successor of each peer is always the same, while the XOR only makes sure +their order doesn't change. +{%- endtrans %}

        + +

        {% trans tunnelimpl=site_url('docs/tunnels/implementation') -%} +As mentioned before, I2P currently (release 0.8) includes the tiered +random strategy above, with XOR-based ordering. A +more detailed discussion of the mechanics involved in tunnel operation, management, +and peer selection can be found in the tunnel spec. +{%- endtrans %}

        + +

        {% trans %}Network Database{% endtrans %}

        +

        {% trans netdb=site_url('docs/how/network-database') -%} +As mentioned earlier, I2P's netDb works to share the network's metadata. +This is detailed in the network database page, +but a basic explanation is available below. +{%- endtrans %}

        + +

        {% trans -%} +A percentage of I2P users are appointed as 'floodfill peers'. +Currently, I2P installations that have a lot of bandwidth and are fast enough, +will appoint themselves as floodfill as soon as the number of existing floodfill routers +drops too low. +{%- endtrans %}

        + +

        {% trans netdb=site_url('docs/how/network-database') -%} +Other I2P routers will store their data and lookup data by sending simple 'store' and 'lookup' queries to the floodfills. +If a floodfill router receives a 'store' query, it will spread the information to other floodfill routers +using the Kademlia algorithm. +The 'lookup' queries currently function differently, to avoid an important +security issue. +When a lookup is done, the floodfill router will not forward the lookup to other peers, +but will always answer by itself (if it has the requested data). +{%- endtrans %}

        + +

        {% trans -%} +Two types of information are stored in the network database. +{%- endtrans %}

          -
        • A routerInfo stores information on a specific I2P router and how to contact it
        • -
        • A leaseSet stores information on a specific destination (e.g. I2P website, e-mail server...)
        • +
        • {% trans %}A RouterInfo stores information on a specific I2P router and how to contact it{% endtrans %}
        • +
        • {% trans %}A LeaseSet stores information on a specific destination (e.g. I2P website, e-mail server...){% endtrans %}
        - All of this information is signed by the publishing party and verified by any I2P router using or storing the information. - In addition, the data contains timing information, to avoid storage of old entries and possible attacks. - This is also why I2P bundles the necessary code for maintaining the correct time, occasionally querying some SNTP servers - (the pool.ntp.org round robin by default) - and detecting skew between routers at the transport layer. -

        -

        - Some additional remarks are also important. +

        {% trans -%} +All of this information is signed by the publishing party and verified by any I2P router using or storing the information. +In addition, the data contains timing information, to avoid storage of old entries and possible attacks. +This is also why I2P bundles the necessary code for maintaining the correct time, occasionally querying some SNTP servers +(the pool.ntp.org round robin by default) +and detecting skew between routers at the transport layer. +{%- endtrans %}

        + +

        {% trans -%} +Some additional remarks are also important. +{%- endtrans %}

        • - Unpublished and encrypted leasesets: -

          - One could only want specific people to be able to reach a destination. - This is possible by not publishing the destination in the netDb. You will however have to transmit the destination by other means. - An alternative are the 'encrypted leaseSets'. These leaseSets can only be decoded by people with access to the decryption key. -

          + {% trans %}Unpublished and encrypted leasesets:{% endtrans %} +

          {% trans -%} +One could only want specific people to be able to reach a destination. +This is possible by not publishing the destination in the netDb. You will however have to transmit the destination by other means. +An alternative are the 'encrypted leaseSets'. These leaseSets can only be decoded by people with access to the decryption key. +{%- endtrans %}

        • - Bootstrapping: -

          - Bootstrapping the netDb is quite simple. Once a router manages to receive a single routerInfo of a reachable peer, - it can query that router for references to other routers in the network. - Currently, a number of users post their routerInfo files to a website to make this information available. - I2P automatically connects to one of these websites to gather routerInfo files and bootstrap. -

          + {% trans %}Bootstrapping:{% endtrans %} +

          {% trans -%} +Bootstrapping the netDb is quite simple. Once a router manages to receive a single routerInfo of a reachable peer, +it can query that router for references to other routers in the network. +Currently, a number of users post their routerInfo files to a website to make this information available. +I2P automatically connects to one of these websites to gather routerInfo files and bootstrap. +{%- endtrans %}

        • - Lookup scalability: -

          - Lookups in the I2P network are not forwarded to other netDb routers. - Currently, this is not a major problem, since the network is not very large. - However, as the network grows, not all routerInfo and leaseSet files will be present - on each netDb router. This will cause a deterioration of the percentage of successful lookups. - Because of this, refinements to the netDb will be done in the next releases. -

          + {% trans %}Lookup scalability:{% endtrans %} +

          {% trans -%} +Lookups in the I2P network are not forwarded to other netDb routers. +Currently, this is not a major problem, since the network is not very large. +However, as the network grows, not all routerInfo and leaseSet files will be present +on each netDb router. This will cause a deterioration of the percentage of successful lookups. +Because of this, refinements to the netDb will be done in the next releases. +{%- endtrans %}

        -

        -

        Transport protocols

        -

        Communication between routers needs to provide confidentiality and integrity - against external adversaries while authenticating that the router contacted - is the one who should receive a given message. The particulars of how routers - communicate with other routers aren't critical - three separate protocols - have been used at different points to provide those bare necessities.

        -

        I2P started with a TCP-based protocol which - has since been disabled. Then, to accommodate the need for high degree communication - (as a number of routers will end up speaking with many others), I2P moved - from a TCP based transport to a UDP-based one - "Secure - Semireliable UDP", or "SSU".

        -

        As described in the SSU spec:

        -
        The goal of this protocol is to provide secure, authenticated, - semireliable and unordered message delivery, exposing only a minimal amount - of data easily discernible to third parties. It should support high degree - communication as well as TCP-friendly congestion control and may include - PMTU detection. It should be capable of efficiently moving bulk data at rates - sufficient for home users. In addition, it should support techniques for addressing - network obstacles, like most NATs or firewalls.
        -

        Following the introduction of SSU, after issues with congestion collapse - appeared, a new NIO-based TCP transport called NTCP - was implemented. It is enabled by default for outbound connections only. Those - who configure their NAT/firewall to allow inbound connections and specify - the external host and port (dyndns/etc is ok) on /config.jsp can receive inbound - connections. As NTCP is NIO based, so it doesn't suffer from the 1 thread - per connection issues of the old TCP transport.

        -

        I2P supports multiple transports simultaneously. A particular transport - for an outbound connection is selected with "bids". Each transport bids for - the connection and the relative value of these bids assigns the priority. - Transports may reply with different bids, depending on whether there is already - an established connection to the peer.

        -

        The current implementation ranks NTCP as the highest-priority transport - for outbound connections in most situations. SSU is enabled for both outbound - and inbound connections. Your firewall and your I2P router must be configured - to allow inbound NTCP connections. For further information see the NTCP - page.

        -

        Cryptography

        -

        A bare minimum set of cryptographic primitives are combined together to - provide I2P's layered defenses against a variety of adversaries. At the lowest - level, inter router communication is protected by the transport layer security - - SSU encrypts each packet with AES256/CBC with both an explicit IV and MAC - (HMAC-MD5-128) after agreeing upon an ephemeral session key through a 2048bit - Diffie-Hellman exchange, station-to-station authentication with the other - router's DSA key, plus each network message has their own hash for local integrity - checking. Tunnel messages passed over the transports - have their own layered AES256/CBC encryption with an explicit IV and verified - at the tunnel endpoint with an additional SHA256 hash. Various other messages - are passed along inside "garlic messages", which are encrypted with ElGamal/AES+SessionTags - (explained below).

        -

        Garlic messages

        -

        Garlic messages are an extension of "onion" layered encryption, allowing - the contents of a single message to contain multiple "cloves" - fully formed - messages alongside their own instructions for delivery. Messages are wrapped - into a garlic message whenever the message would otherwise be passing in cleartext - through a peer who should not have access to the information - for instance, - when a router wants to ask another router to participate in a tunnel, they - wrap the request inside a garlic, encrypt that garlic to the receiving router's - 2048bit ElGamal public key, and forward it through a tunnel. Another example - is when a client wants to send a message to a destination - the sender's router - will wrap up that data message (alongside some other messages) into a garlic, - encrypt that garlic to the 2048bit ElGamal public key published in the recipient's - leaseSet, and forward it through the appropriate tunnels.

        -

        The "instructions" attached to each clove inside the encryption layer includes - the ability to request that the clove be forwarded locally, to a remote router, - or to a remote tunnel on a remote router. There are fields in those instructions - allowing a peer to request that the delivery be delayed until a certain time - or condition has been met, though they won't be honored until the nontrivial - delays are deployed. It is possible to explicitly route garlic messages - any number of hops without building tunnels, or even to reroute tunnel messages - by wrapping them in garlic messages and forwarding them a number of hops prior - to delivering them to the next hop in the tunnel, but those techniques are - not currently used in the existing implementation.

        -

        Session tags

        -

        As an unreliable, unordered, message based system, I2P uses a simple combination - of asymmetric and symmetric encryption algorithms to provide data confidentiality - and integrity to garlic messages. As a whole, the combination is referred - to as ElGamal/AES+SessionTags, but that is an excessively verbose way to describe - the simple use of 2048bit ElGamal, AES256, SHA256 and 32 byte nonces.

        -

        The first time a router wants to encrypt a garlic message to another router, - they encrypt the keying material for an AES256 session key with ElGamal and - append the AES256/CBC encrypted payload after that encrypted ElGamal block. - In addition to the encrypted payload, the AES encrypted section contains the - payload length, the SHA256 hash of the unencrypted payload, as well as a number - of "session tags" - random 32 byte nonces. The next time the sender wants - to encrypt a garlic message to another router, rather than ElGamal encrypt - a new session key they simply pick one of the previously delivered session - tags and AES encrypt the payload like before, using the session key used with - that session tag, prepended with the session tag itself. When a router receives - a garlic encrypted message, they check the first 32 bytes to see if it matches - an available session tag - if it does, they simply AES decrypt the message, - but if it does not, they ElGamal decrypt the first block.

        -

        Each session tag can be used only once so as to prevent internal adversaries - from unnecessarily correlating different messages as being between the same - routers. The sender of an ElGamal/AES+SessionTag encrypted message chooses - when and how many tags to deliver, prestocking the recipient with enough tags - to cover a volley of messages. Garlic messages may detect the successful tag - delivery by bundling a small additional message as a clove (a "delivery status - message") - when the garlic message arrives at the intended recipient and - is decrypted successfully, this small delivery status message is one of the - cloves exposed and has instructions for the recipient to send the clove back - to the original sender (through an inbound tunnel, of course). When the original - sender receives this delivery status message, they know that the session tags - bundled in the garlic message were successfully delivered.

        -

        Session tags themselves have a very short lifetime, after which they are - discarded if not used. In addition, the quantity stored for each key is limited, - as are the number of keys themselves - if too many arrive, either new or old - messages may be dropped. The sender keeps track whether messages using session - tags are getting through, and if there isn't sufficient communication it may - drop the ones previously assumed to be properly delivered, reverting back - to the full expensive ElGamal encryption.

        -

        One alternative is to transmit only a single session tag, and from that, - seed a deterministic PRNG for determining what tags to use or expect. By keeping - this PRNG roughly synchronized between the sender and recipient (the recipient - precomputes a window of the next e.g. 50 tags), the overhead of periodically - bundling a large number of tags is removed, allowing more options in the space/time - tradeoff, and perhaps reducing the number of ElGamal encryptions necessary. - However, it would depend upon the strength of the PRNG to provide the necessary - cover against internal adversaries, though perhaps by limiting the amount - of times each PRNG is used, any weaknesses can be minimized. At the moment, - there are no immediate plans to move towards these synchronized PRNGs.

        -

        Future

        -

        While I2P is currently functional and sufficient for many scenarios, there - are several areas which require further improvement to meet the needs of those - facing more powerful adversaries as well as substantial user experience optimization. -

        -

        Restricted route operation

        -

        I2P is an overlay network designed to be run on top of a functional packet - switched network, exploiting the end to end principle to offer anonymity and - security. While the Internet no longer fully embraces the end to end principle - (due to the usage of NAT), - I2P does require a substantial portion of the network to be reachable - there - may be a number of peers along the edges running using restricted routes, - but I2P does not include an appropriate routing algorithm for the degenerate - case where most peers are unreachable. It would, however work on top of a - network employing such an algorithm.

        -

        Restricted route operation, where there are limits to what peers are reachable - directly, has several different functional and anonymity implications, dependent - upon how the restricted routes are handled. At the most basic level, restricted - routes exist when a peer is behind a NAT or firewall which does not allow - inbound connections. This was largely addressed in I2P 0.6.0.6 by integrating - distributed hole punching into the transport layer, allowing people behind - most NATs and firewalls to receive unsolicited connections without any configuration. - However, this does not limit the exposure of the peer's IP address to routers - inside the network, as they can simply get introduced to the peer through - the published introducer.

        -

        Beyond the functional handling of restricted routes, there are two levels - of restricted operation that can be used to limit the exposure of one's IP - address - using router-specific tunnels for communication, and offering 'client - routers'. For the former, routers can either build a new pool of tunnels or - reuse their exploratory pool, publishing the inbound gateways to some of them - as part of their routerInfo in place of their transport addresses. When a - peer wants to get in touch with them, they see those tunnel gateways in the - netDb and simply send the relevant message to them through one of the published - tunnels. If the peer behind the restricted route wants to reply, it may do - so either directly (if they are willing to expose their IP to the peer) or - indirectly through their outbound tunnels. When the routers that the peer - has direct connections to want to reach it (to forward tunnel messages, for - instance), they simply prioritize their direct connection over the published - tunnel gateway. The concept of 'client routers' simply extends the restricted - route by not publishing any router addresses. Such a router would not even - need to publish their routerInfo in the netDb, merely providing their self - signed routerInfo to the peers that it contacts (necessary to pass the router's - public keys). Both levels of restricted route operation are planned for I2P - 2.0.

        -

        There are tradeoffs for those behind restricted routes, as they would likely - participate in other people's tunnels less frequently, and the routers which - they are connected to would be able to infer traffic patterns that would not - otherwise be exposed. On the other hand, if the cost of that exposure is less - than the cost of an IP being made available, it may be worthwhile. This, of - course, assumes that the peers that the router behind a restricted route contacts - are not hostile - either the network is large enough that the probability - of using a hostile peer to get connected is small enough, or trusted (and - perhaps temporary) peers are used instead.

        -

        Variable latency

        -

        Even though the bulk of I2P's initial efforts have been on low latency communication, - it was designed with variable latency services in mind from the beginning. - At the most basic level, applications running on top of I2P can offer the - anonymity of medium and high latency communication while still blending their - traffic patterns in with low latency traffic. Internally though, I2P can offer - its own medium and high latency communication through the garlic encryption - - specifying that the message should be sent after a certain delay, at a certain - time, after a certain number of messages have passed, or another mix strategy. - With the layered encryption, only the router that the clove exposed the delay - request would know that the message requires high latency, allowing the traffic - to blend in further with the low latency traffic. Once the transmission precondition - is met, the router holding on to the clove (which itself would likely be a - garlic message) simply forwards it as requested - to a router, to a tunnel, - or, most likely, to a remote client destination.

        -

        There are a substantial number of ways to exploit this capacity for high - latency comm in I2P, but for the moment, doing so has been scheduled for the - I2P 3.0 release. In the meantime, those requiring the anonymity that high - latency comm can offer should look towards the application layer to provide - it.

        -

        Open questions

        -
        -How to get rid of the timing constraint?
        -Can we deal with the sessionTags more efficiently?
        -What, if any, batching/mixing strategies should be made available on the tunnels?
        -What other tunnel peer selection and ordering strategies should be available?
        -
        -

        Similar systems

        -

        I2P's architecture builds on the concepts of message oriented middleware, - the topology of DHTs, the anonymity and cryptography of free route mixnets, - and the adaptability of packet switched networking. The value comes not from - novel concepts of algorithms though, but from careful engineering combining - the research results of existing systems and papers. While there are a few - similar efforts worth reviewing, both for technical and functional comparisons, - two in particular are pulled out here - Tor and Freenet.

        -

        See also the Network Comparisons Page. -

        + +

        {% trans %}Transport protocols{% endtrans %}

        +

        {% trans -%} +Communication between routers needs to provide confidentiality and integrity +against external adversaries while authenticating that the router contacted +is the one who should receive a given message. The particulars of how routers +communicate with other routers aren't critical - three separate protocols +have been used at different points to provide those bare necessities. +{%- endtrans %}

        + +

        {% trans ssu=site_url('docs/transport/ssu') -%} +I2P started with a TCP-based protocol which +has since been disabled. Then, to accommodate the need for high degree communication +(as a number of routers will end up speaking with many others), I2P moved +from a TCP based transport to a UDP-based one - "Secure +Semireliable UDP", or "SSU". +{%- endtrans %}

        + +

        {% trans ssu=site_url('docs/transport/ssu') -%} +As described in the SSU spec: +{%- endtrans %}

        + +
        {% trans -%} +The goal of this protocol is to provide secure, authenticated, +semireliable and unordered message delivery, exposing only a minimal amount +of data easily discernible to third parties. It should support high degree +communication as well as TCP-friendly congestion control and may include +PMTU detection. It should be capable of efficiently moving bulk data at rates +sufficient for home users. In addition, it should support techniques for addressing +network obstacles, like most NATs or firewalls. +{%- endtrans %}
        + +

        {% trans ntcp=site_url('docs/transport/ntcp') -%} +Following the introduction of SSU, after issues with congestion collapse +appeared, a new NIO-based TCP transport called NTCP +was implemented. It is enabled by default for outbound connections only. Those +who configure their NAT/firewall to allow inbound connections and specify +the external host and port (dyndns/etc is ok) on /config.jsp can receive inbound +connections. As NTCP is NIO based, so it doesn't suffer from the 1 thread +per connection issues of the old TCP transport. +{%- endtrans %}

        + +

        {% trans -%} +I2P supports multiple transports simultaneously. A particular transport +for an outbound connection is selected with "bids". Each transport bids for +the connection and the relative value of these bids assigns the priority. +Transports may reply with different bids, depending on whether there is already +an established connection to the peer. +{%- endtrans %}

        + +

        {% trans ntcp=site_url('docs/transport/ntcp') -%} +The current implementation ranks NTCP as the highest-priority transport +for outbound connections in most situations. SSU is enabled for both outbound +and inbound connections. Your firewall and your I2P router must be configured +to allow inbound NTCP connections. For further information see the NTCP +page. +{%- endtrans %}

        + +

        {% trans %}Cryptography{% endtrans %}

        +

        {% trans -%} +A bare minimum set of cryptographic primitives are combined together to +provide I2P's layered defenses against a variety of adversaries. At the lowest +level, inter router communication is protected by the transport layer security +- SSU encrypts each packet with AES256/CBC with both an explicit IV and MAC +(HMAC-MD5-128) after agreeing upon an ephemeral session key through a 2048bit +Diffie-Hellman exchange, station-to-station authentication with the other +router's DSA key, plus each network message has their own hash for local integrity +checking. Tunnel messages passed over the transports +have their own layered AES256/CBC encryption with an explicit IV and verified +at the tunnel endpoint with an additional SHA256 hash. Various other messages +are passed along inside "garlic messages", which are encrypted with ElGamal/AES+SessionTags +(explained below). +{%- endtrans %}

        + +

        {% trans %}Garlic messages{% endtrans %}

        +

        {% trans -%} +Garlic messages are an extension of "onion" layered encryption, allowing +the contents of a single message to contain multiple "cloves" - fully formed +messages alongside their own instructions for delivery. Messages are wrapped +into a garlic message whenever the message would otherwise be passing in cleartext +through a peer who should not have access to the information - for instance, +when a router wants to ask another router to participate in a tunnel, they +wrap the request inside a garlic, encrypt that garlic to the receiving router's +2048bit ElGamal public key, and forward it through a tunnel. Another example +is when a client wants to send a message to a destination - the sender's router +will wrap up that data message (alongside some other messages) into a garlic, +encrypt that garlic to the 2048bit ElGamal public key published in the recipient's +leaseSet, and forward it through the appropriate tunnels. +{%- endtrans %}

        + +

        {% trans -%} +The "instructions" attached to each clove inside the encryption layer includes +the ability to request that the clove be forwarded locally, to a remote router, +or to a remote tunnel on a remote router. There are fields in those instructions +allowing a peer to request that the delivery be delayed until a certain time +or condition has been met, though they won't be honored until the nontrivial +delays are deployed. It is possible to explicitly route garlic messages +any number of hops without building tunnels, or even to reroute tunnel messages +by wrapping them in garlic messages and forwarding them a number of hops prior +to delivering them to the next hop in the tunnel, but those techniques are +not currently used in the existing implementation. +{%- endtrans %}

        + +

        {% trans %}Session tags{% endtrans %}

        +

        {% trans -%} +As an unreliable, unordered, message based system, I2P uses a simple combination +of asymmetric and symmetric encryption algorithms to provide data confidentiality +and integrity to garlic messages. As a whole, the combination is referred +to as ElGamal/AES+SessionTags, but that is an excessively verbose way to describe +the simple use of 2048bit ElGamal, AES256, SHA256 and 32 byte nonces. +{%- endtrans %}

        + +

        {% trans -%} +The first time a router wants to encrypt a garlic message to another router, +they encrypt the keying material for an AES256 session key with ElGamal and +append the AES256/CBC encrypted payload after that encrypted ElGamal block. +In addition to the encrypted payload, the AES encrypted section contains the +payload length, the SHA256 hash of the unencrypted payload, as well as a number +of "session tags" - random 32 byte nonces. The next time the sender wants +to encrypt a garlic message to another router, rather than ElGamal encrypt +a new session key they simply pick one of the previously delivered session +tags and AES encrypt the payload like before, using the session key used with +that session tag, prepended with the session tag itself. When a router receives +a garlic encrypted message, they check the first 32 bytes to see if it matches +an available session tag - if it does, they simply AES decrypt the message, +but if it does not, they ElGamal decrypt the first block. +{%- endtrans %}

        + +

        {% trans -%} +Each session tag can be used only once so as to prevent internal adversaries +from unnecessarily correlating different messages as being between the same +routers. The sender of an ElGamal/AES+SessionTag encrypted message chooses +when and how many tags to deliver, prestocking the recipient with enough tags +to cover a volley of messages. Garlic messages may detect the successful tag +delivery by bundling a small additional message as a clove (a "delivery status +message") - when the garlic message arrives at the intended recipient and +is decrypted successfully, this small delivery status message is one of the +cloves exposed and has instructions for the recipient to send the clove back +to the original sender (through an inbound tunnel, of course). When the original +sender receives this delivery status message, they know that the session tags +bundled in the garlic message were successfully delivered. +{%- endtrans %}

        + +

        {% trans -%} +Session tags themselves have a very short lifetime, after which they are +discarded if not used. In addition, the quantity stored for each key is limited, +as are the number of keys themselves - if too many arrive, either new or old +messages may be dropped. The sender keeps track whether messages using session +tags are getting through, and if there isn't sufficient communication it may +drop the ones previously assumed to be properly delivered, reverting back +to the full expensive ElGamal encryption. +{%- endtrans %}

        + +

        {% trans -%} +One alternative is to transmit only a single session tag, and from that, +seed a deterministic PRNG for determining what tags to use or expect. By keeping +this PRNG roughly synchronized between the sender and recipient (the recipient +precomputes a window of the next e.g. 50 tags), the overhead of periodically +bundling a large number of tags is removed, allowing more options in the space/time +tradeoff, and perhaps reducing the number of ElGamal encryptions necessary. +However, it would depend upon the strength of the PRNG to provide the necessary +cover against internal adversaries, though perhaps by limiting the amount +of times each PRNG is used, any weaknesses can be minimized. At the moment, +there are no immediate plans to move towards these synchronized PRNGs. +{%- endtrans %}

        + +

        {% trans %}Future{% endtrans %}

        +

        {% trans -%} +While I2P is currently functional and sufficient for many scenarios, there +are several areas which require further improvement to meet the needs of those +facing more powerful adversaries as well as substantial user experience optimization. +{%- endtrans %}

        + +

        {% trans %}Restricted route operation{% endtrans %}

        +

        {% trans -%} +I2P is an overlay network designed to be run on top of a functional packet +switched network, exploiting the end to end principle to offer anonymity and +security. While the Internet no longer fully embraces the end to end principle +(due to the usage of NAT), +I2P does require a substantial portion of the network to be reachable - there +may be a number of peers along the edges running using restricted routes, +but I2P does not include an appropriate routing algorithm for the degenerate +case where most peers are unreachable. It would, however work on top of a +network employing such an algorithm. +{%- endtrans %}

        + +

        {% trans -%} +Restricted route operation, where there are limits to what peers are reachable +directly, has several different functional and anonymity implications, dependent +upon how the restricted routes are handled. At the most basic level, restricted +routes exist when a peer is behind a NAT or firewall which does not allow +inbound connections. This was largely addressed in I2P 0.6.0.6 by integrating +distributed hole punching into the transport layer, allowing people behind +most NATs and firewalls to receive unsolicited connections without any configuration. +However, this does not limit the exposure of the peer's IP address to routers +inside the network, as they can simply get introduced to the peer through +the published introducer. +{%- endtrans %}

        + +

        {% trans -%} +Beyond the functional handling of restricted routes, there are two levels +of restricted operation that can be used to limit the exposure of one's IP +address - using router-specific tunnels for communication, and offering 'client +routers'. For the former, routers can either build a new pool of tunnels or +reuse their exploratory pool, publishing the inbound gateways to some of them +as part of their routerInfo in place of their transport addresses. When a +peer wants to get in touch with them, they see those tunnel gateways in the +netDb and simply send the relevant message to them through one of the published +tunnels. If the peer behind the restricted route wants to reply, it may do +so either directly (if they are willing to expose their IP to the peer) or +indirectly through their outbound tunnels. When the routers that the peer +has direct connections to want to reach it (to forward tunnel messages, for +instance), they simply prioritize their direct connection over the published +tunnel gateway. The concept of 'client routers' simply extends the restricted +route by not publishing any router addresses. Such a router would not even +need to publish their routerInfo in the netDb, merely providing their self +signed routerInfo to the peers that it contacts (necessary to pass the router's +public keys). Both levels of restricted route operation are planned for I2P +2.0. +{%- endtrans %}

        + +

        {% trans -%} +There are tradeoffs for those behind restricted routes, as they would likely +participate in other people's tunnels less frequently, and the routers which +they are connected to would be able to infer traffic patterns that would not +otherwise be exposed. On the other hand, if the cost of that exposure is less +than the cost of an IP being made available, it may be worthwhile. This, of +course, assumes that the peers that the router behind a restricted route contacts +are not hostile - either the network is large enough that the probability +of using a hostile peer to get connected is small enough, or trusted (and +perhaps temporary) peers are used instead. +{%- endtrans %}

        + +

        {% trans %}Variable latency{% endtrans %}

        +

        {% trans -%} +Even though the bulk of I2P's initial efforts have been on low latency communication, +it was designed with variable latency services in mind from the beginning. +At the most basic level, applications running on top of I2P can offer the +anonymity of medium and high latency communication while still blending their +traffic patterns in with low latency traffic. Internally though, I2P can offer +its own medium and high latency communication through the garlic encryption +- specifying that the message should be sent after a certain delay, at a certain +time, after a certain number of messages have passed, or another mix strategy. +With the layered encryption, only the router that the clove exposed the delay +request would know that the message requires high latency, allowing the traffic +to blend in further with the low latency traffic. Once the transmission precondition +is met, the router holding on to the clove (which itself would likely be a +garlic message) simply forwards it as requested - to a router, to a tunnel, +or, most likely, to a remote client destination. +{%- endtrans %}

        + +

        {% trans -%} +There are a substantial number of ways to exploit this capacity for high +latency comm in I2P, but for the moment, doing so has been scheduled for the +I2P 3.0 release. In the meantime, those requiring the anonymity that high +latency comm can offer should look towards the application layer to provide +it. +{%- endtrans %}

        + +

        {% trans %}Open questions{% endtrans %}

        +
          +
        • {% trans %}How to get rid of the timing constraint?{% endtrans %}
        • +
        • {% trans %}Can we deal with the sessionTags more efficiently?{% endtrans %}
        • +
        • {% trans %}What, if any, batching/mixing strategies should be made available on the tunnels?{% endtrans %}
        • +
        • {% trans %}What other tunnel peer selection and ordering strategies should be available?{% endtrans %}
        • +
        + +

        {% trans %}Similar systems{% endtrans %}

        + +

        {% trans -%} +I2P's architecture builds on the concepts of message oriented middleware, +the topology of DHTs, the anonymity and cryptography of free route mixnets, +and the adaptability of packet switched networking. The value comes not from +novel concepts of algorithms though, but from careful engineering combining +the research results of existing systems and papers. While there are a few +similar efforts worth reviewing, both for technical and functional comparisons, +two in particular are pulled out here - Tor and Freenet. +{%- endtrans %}

        + +

        {% trans comparisons=site_url('comparison') -%} +See also the Network Comparisons Page. +{%- endtrans %}

        Tor

        -

        website

        -

        At first glance, Tor and I2P have many functional and anonymity related - similarities. While I2P's development began before we were aware of the early - stage efforts on Tor, many of the lessons of the original onion routing and - ZKS efforts were integrated into I2P's design. Rather than building an essentially - trusted, centralized system with directory servers, I2P has a self organizing - network database with each peer taking on the responsibility of profiling - other routers to determine how best to exploit available resources. Another - key difference is that while both I2P and Tor use layered and ordered paths - (tunnels and circuits/streams), I2P is fundamentally a packet switched network, - while Tor is fundamentally a circuit switched one, allowing I2P to transparently - route around congestion or other network failures, operate redundant pathways, - and load balance the data across available resources. While Tor offers the - useful outproxy functionality by offering integrated outproxy discovery and - selection, I2P leaves such application layer decisions up to applications - running on top of I2P - in fact, I2P has even externalized the TCP-like streaming - library itself to the application layer, allowing developers to experiment - with different strategies, exploiting their domain specific knowledge to offer - better performance.

        -

        From an anonymity perspective, there is much similarity when the core networks - are compared. However, there are a few key differences. When dealing with - an internal adversary or most external adversaries, I2P's simplex tunnels - expose half as much traffic data than would be exposed with Tor's duplex circuits - by simply looking at the flows themselves - an HTTP request and response would - follow the same path in Tor, while in I2P the packets making up the request - would go out through one or more outbound tunnels and the packets making up - the response would come back through one or more different inbound tunnels. - While I2P's peer selection and ordering strategies should sufficiently address - predecessor attacks, should a switch to bidirectional tunnels be necessary, - we could simply build an inbound and outbound tunnel along the same routers.

        -

        Another anonymity issue comes up in Tor's use of telescopic tunnel creation, - as simple packet counting and timing measurements as the cells in a circuit - pass through an adversary's node exposes statistical information regarding - where the adversary is within the circuit. I2P's unidirectional tunnel creation - with a single message so that this data is not exposed. Protecting the position - in a tunnel is important, as an adversary would otherwise be able to mount - a series of powerful predecessor, intersection, and traffic confirmation attacks. -

        -

        Tor's support for a second tier of "onion proxies" does offer a non-trivial - degree of anonymity while requiring a low cost of entry, while I2P will not - offer this topology until 2.0.

        -

        On the whole, Tor and I2P complement each other in their focus - Tor works - towards offering high speed anonymous Internet outproxying, while I2P works - towards offering a decentralized resilient network in itself. In theory, both - can be used to achieve both purposes, but given limited development resources, - they both have their strengths and weaknesses. The I2P developers have considered - the steps necessary to modify Tor to take advantage of I2P's design, but concerns - of Tor's viability under resource scarcity suggest that I2P's packet switching - architecture will be able to exploit scarce resources more effectively.

        +

        {% trans %}website{% endtrans %}

        + +

        {% trans -%} +At first glance, Tor and I2P have many functional and anonymity related +similarities. While I2P's development began before we were aware of the early +stage efforts on Tor, many of the lessons of the original onion routing and +ZKS efforts were integrated into I2P's design. Rather than building an essentially +trusted, centralized system with directory servers, I2P has a self organizing +network database with each peer taking on the responsibility of profiling +other routers to determine how best to exploit available resources. Another +key difference is that while both I2P and Tor use layered and ordered paths +(tunnels and circuits/streams), I2P is fundamentally a packet switched network, +while Tor is fundamentally a circuit switched one, allowing I2P to transparently +route around congestion or other network failures, operate redundant pathways, +and load balance the data across available resources. While Tor offers the +useful outproxy functionality by offering integrated outproxy discovery and +selection, I2P leaves such application layer decisions up to applications +running on top of I2P - in fact, I2P has even externalized the TCP-like streaming +library itself to the application layer, allowing developers to experiment +with different strategies, exploiting their domain specific knowledge to offer +better performance. +{%- endtrans %}

        + +

        {% trans -%} +From an anonymity perspective, there is much similarity when the core networks +are compared. However, there are a few key differences. When dealing with +an internal adversary or most external adversaries, I2P's simplex tunnels +expose half as much traffic data than would be exposed with Tor's duplex circuits +by simply looking at the flows themselves - an HTTP request and response would +follow the same path in Tor, while in I2P the packets making up the request +would go out through one or more outbound tunnels and the packets making up +the response would come back through one or more different inbound tunnels. +While I2P's peer selection and ordering strategies should sufficiently address +predecessor attacks, should a switch to bidirectional tunnels be necessary, +we could simply build an inbound and outbound tunnel along the same routers. +{%- endtrans %}

        + +

        {% trans -%} +Another anonymity issue comes up in Tor's use of telescopic tunnel creation, +as simple packet counting and timing measurements as the cells in a circuit +pass through an adversary's node exposes statistical information regarding +where the adversary is within the circuit. I2P's unidirectional tunnel creation +with a single message so that this data is not exposed. Protecting the position +in a tunnel is important, as an adversary would otherwise be able to mount +a series of powerful predecessor, intersection, and traffic confirmation attacks. +{%- endtrans %}

        + +

        {% trans -%} +Tor's support for a second tier of "onion proxies" does offer a non-trivial +degree of anonymity while requiring a low cost of entry, while I2P will not +offer this topology until 2.0. +{%- endtrans %}

        + +

        {% trans -%} +On the whole, Tor and I2P complement each other in their focus - Tor works +towards offering high speed anonymous Internet outproxying, while I2P works +towards offering a decentralized resilient network in itself. In theory, both +can be used to achieve both purposes, but given limited development resources, +they both have their strengths and weaknesses. The I2P developers have considered +the steps necessary to modify Tor to take advantage of I2P's design, but concerns +of Tor's viability under resource scarcity suggest that I2P's packet switching +architecture will be able to exploit scarce resources more effectively. +{%- endtrans %}

        Freenet

        -

        website

        -

        Freenet played a large part in the initial stages of I2P's design - giving - proof to the viability of a vibrant pseudonymous community completely contained - within the network, demonstrating that the dangers inherent in outproxies - could be avoided. The first seed of I2P began as a replacement communication - layer for Freenet, attempting to factor out the complexities of a scalable, - anonymous and secure point to point communication from the complexities of - a censorship resistant distributed data store. Over time however, some of - the anonymity and scalability issues inherent in Freenet's algorithms made - it clear that I2P's focus should stay strictly on providing a generic anonymous - communication layer, rather than as a component of Freenet. Over the years, - the Freenet developers have come to see the weaknesses in the older design, - prompting them to suggest that they will require a "premix" layer to offer - substantial anonymity. In other words, Freenet needs to run on top of a mixnet - such as I2P or Tor, with "client nodes" requesting and publishing data through - the mixnet to the "server nodes" which then fetch and store the data according - to Freenet's heuristic distributed data storage algorithms.

        -

        Freenet's functionality is very complementary to I2P's, as Freenet natively - provides many of the tools for operating medium and high latency systems, - while I2P natively provides the low latency mix network suitable for offering - adequate anonymity. The logic of separating the mixnet from the censorship- - resistant distributed data store still seems self-evident from an engineering, - anonymity, security, and resource allocation perspective, so hopefully the - Freenet team will pursue efforts in that direction, if not simply reusing - (or helping to improve, as necessary) existing mixnets like I2P or Tor.

        -

        It is worth mentioning that there has recently been discussion and work - by the Freenet developers on a "globally scalable darknet" using restricted - routes between peers of various trust. While insufficient information has - been made publicly available regarding how such a system would operate for - a full review, from what has been said the anonymity and scalability claims - seem highly dubious. In particular, the appropriateness for use in hostile - regimes against state level adversaries has been tremendously overstated, - and any analysis on the implications of resource scarcity upon the scalability - of the network has seemingly been avoided. Further questions regarding susceptibility - to traffic analysis, trust and other topics do exist, but a more in-depth - review of this "globally scalable darknet" will have to wait until the Freenet - team makes more information available.

        +

        {% trans %}website{% endtrans %}

        + +

        {% trans -%} +Freenet played a large part in the initial stages of I2P's design - giving +proof to the viability of a vibrant pseudonymous community completely contained +within the network, demonstrating that the dangers inherent in outproxies +could be avoided. The first seed of I2P began as a replacement communication +layer for Freenet, attempting to factor out the complexities of a scalable, +anonymous and secure point to point communication from the complexities of +a censorship resistant distributed data store. Over time however, some of +the anonymity and scalability issues inherent in Freenet's algorithms made +it clear that I2P's focus should stay strictly on providing a generic anonymous +communication layer, rather than as a component of Freenet. Over the years, +the Freenet developers have come to see the weaknesses in the older design, +prompting them to suggest that they will require a "premix" layer to offer +substantial anonymity. In other words, Freenet needs to run on top of a mixnet +such as I2P or Tor, with "client nodes" requesting and publishing data through +the mixnet to the "server nodes" which then fetch and store the data according +to Freenet's heuristic distributed data storage algorithms. +{%- endtrans %}

        + +

        {% trans -%} +Freenet's functionality is very complementary to I2P's, as Freenet natively +provides many of the tools for operating medium and high latency systems, +while I2P natively provides the low latency mix network suitable for offering +adequate anonymity. The logic of separating the mixnet from the censorship- +resistant distributed data store still seems self-evident from an engineering, +anonymity, security, and resource allocation perspective, so hopefully the +Freenet team will pursue efforts in that direction, if not simply reusing +(or helping to improve, as necessary) existing mixnets like I2P or Tor. +{%- endtrans %}

        + +

        {% trans -%} +It is worth mentioning that there has recently been discussion and work +by the Freenet developers on a "globally scalable darknet" using restricted +routes between peers of various trust. While insufficient information has +been made publicly available regarding how such a system would operate for +a full review, from what has been said the anonymity and scalability claims +seem highly dubious. In particular, the appropriateness for use in hostile +regimes against state level adversaries has been tremendously overstated, +and any analysis on the implications of resource scarcity upon the scalability +of the network has seemingly been avoided. Further questions regarding susceptibility +to traffic analysis, trust and other topics do exist, but a more in-depth +review of this "globally scalable darknet" will have to wait until the Freenet +team makes more information available. +{%- endtrans %}

        Appendix A: Application layer

        +

        {% trans -%} +I2P itself doesn't really do much - it simply sends messages to remote destinations +and receives messages targeting local destinations - most of the interesting +work goes on at the layers above it. By itself, I2P could be seen as an anonymous +and secure IP layer, and the bundled streaming library +as an implementation of an anonymous and secure TCP layer on top of it. Beyond +that, I2PTunnel exposes a generic TCP proxying +system for either getting into or out of the I2P network, plus a variety of +network applications provide further functionality for end users. +{%- endtrans %}

        -

        - I2P itself doesn't really do much - it simply sends messages to remote destinations - and receives messages targeting local destinations - most of the interesting - work goes on at the layers above it. By itself, I2P could be seen as an anonymous - and secure IP layer, and the bundled streaming library - as an implementation of an anonymous and secure TCP layer on top of it. Beyond - that, I2PTunnel exposes a generic TCP proxying - system for either getting into or out of the I2P network, plus a variety of - network applications provide further functionality for end users. -

        +

        {% trans %}Streaming library{% endtrans %}

        +

        {% trans -%} +The I2P streaming library can be viewed as a generic streaming interface (mirroring TCP sockets), +and the implementation supports a sliding window protocol +with several optimizations, to take into account the high delay over I2P. +Individual streams may adjust the maximum packet size and +other options, though the default of 4KB compressed seems a reasonable tradeoff +between the bandwidth costs of retransmitting lost messages and the latency +of multiple messages. +{%- endtrans %}

        -

        Streaming library

        -

        - The I2P streaming library can be viewed as a generic streaming interface (mirroring TCP sockets), - and the implementation supports a sliding window protocol - with several optimizations, to take into account the high delay over I2P. - Individual streams may adjust the maximum packet size and - other options, though the default of 4KB compressed seems a reasonable tradeoff - between the bandwidth costs of retransmitting lost messages and the latency - of multiple messages. -

        -

        - In addition, in consideration of the relatively high cost of subsequent - messages, the streaming library's protocol for scheduling and delivering messages - has been optimized to allow individual messages passed to contain as much - information as is available. For instance, a small HTTP transaction proxied - through the streaming library can be completed in a single round trip - the - first message bundles a SYN, FIN and the small payload (an HTTP request typically - fits) and the reply bundles the SYN, FIN, ACK and the small payload (many - HTTP responses fit). While an additional ACK must be transmitted to tell the - HTTP server that the SYN/FIN/ACK has been received, the local HTTP proxy can - deliver the full response to the browser immediately. -

        -

        - On the whole, however, the streaming library bears much resemblance to an - abstraction of TCP, with its sliding windows, congestion control algorithms - (both slow start and congestion avoidance), and general packet behavior (ACK, - SYN, FIN, RST, etc). -

        +

        {% trans -%} +In addition, in consideration of the relatively high cost of subsequent +messages, the streaming library's protocol for scheduling and delivering messages +has been optimized to allow individual messages passed to contain as much +information as is available. For instance, a small HTTP transaction proxied +through the streaming library can be completed in a single round trip - the +first message bundles a SYN, FIN and the small payload (an HTTP request typically +fits) and the reply bundles the SYN, FIN, ACK and the small payload (many +HTTP responses fit). While an additional ACK must be transmitted to tell the +HTTP server that the SYN/FIN/ACK has been received, the local HTTP proxy can +deliver the full response to the browser immediately. +{%- endtrans %}

        -

        Naming library and addressbook

        -

        For more information see the Naming and Addressbook - page.

        -

        Developed by: mihi, Ragnarok

        -

        Naming within I2P has been an oft-debated topic since the very beginning - with advocates across the spectrum of possibilities. However, given I2P's - inherent demand for secure communication and decentralized operation, the - traditional DNS-style naming system is clearly out, as are "majority rules" - voting systems. Instead, I2P ships with a generic naming library and a base - implementation designed to work off a local name to destination mapping, as - well as an optional add-on application called the "addressbook". The addressbook - is a web-of-trust-driven secure, distributed, and human readable naming system, - sacrificing only the call for all human readable names to be globally unique - by mandating only local uniqueness. While all messages in I2P are cryptographically - addressed by their destination, different people can have local addressbook - entries for "Alice" which refer to different destinations. People can still - discover new names by importing published addressbooks of peers specified - in their web of trust, by adding in the entries provided through a third party, - or (if some people organize a series of published addressbooks using a first - come first serve registration system) people can choose to treat these addressbooks - as name servers, emulating traditional DNS.

        -

        I2P does not promote the use of DNS-like services though, as the damage - done by hijacking a site can be tremendous - and insecure destinations have - no value. DNSsec itself still falls back on registrars and certificate authorities, - while with I2P, requests sent to a destination cannot be intercepted or the - reply spoofed, as they are encrypted to the destination's public keys, and - a destination itself is just a pair of public keys and a certificate. DNS-style - systems on the other hand allow any of the name servers on the lookup path - to mount simple denial of service and spoofing attacks. Adding on a certificate - authenticating the responses as signed by some centralized certificate authority - would address many of the hostile nameserver issues but would leave open replay - attacks as well as hostile certificate authority attacks.

        -

        Voting style naming is dangerous as well, especially given the effectiveness - of Sybil attacks in anonymous systems - the attacker can simply create an - arbitrarily high number of peers and "vote" with each to take over a given - name. Proof-of-work methods can be used to make identity non-free, but as - the network grows the load required to contact everyone to conduct online - voting is implausible, or if the full network is not queried, different sets - of answers may be reachable.

        -

        As with the Internet however, I2P is keeping the design and operation of - a naming system out of the (IP-like) communication layer. The bundled naming - library includes a simple service provider interface which alternate naming - systems can plug into, allowing end users to drive what sort of naming tradeoffs - they prefer.

        +

        {% trans -%} +On the whole, however, the streaming library bears much resemblance to an +abstraction of TCP, with its sliding windows, congestion control algorithms +(both slow start and congestion avoidance), and general packet behavior (ACK, +SYN, FIN, RST, etc). +{%- endtrans %}

        + +

        {% trans %}Naming library and addressbook{% endtrans %}

        +

        {% trans naming=site_url('docs/naming') -%} +For more information see the Naming and Addressbook page. +{%- endtrans %}

        + +

        {% trans dev='mihi, Ragnarok' -%}Developed by: {{ dev }}{%- endtrans %}

        + +

        {% trans -%} +Naming within I2P has been an oft-debated topic since the very beginning +with advocates across the spectrum of possibilities. However, given I2P's +inherent demand for secure communication and decentralized operation, the +traditional DNS-style naming system is clearly out, as are "majority rules" +voting systems. Instead, I2P ships with a generic naming library and a base +implementation designed to work off a local name to destination mapping, as +well as an optional add-on application called the "addressbook". The addressbook +is a web-of-trust-driven secure, distributed, and human readable naming system, +sacrificing only the call for all human readable names to be globally unique +by mandating only local uniqueness. While all messages in I2P are cryptographically +addressed by their destination, different people can have local addressbook +entries for "Alice" which refer to different destinations. People can still +discover new names by importing published addressbooks of peers specified +in their web of trust, by adding in the entries provided through a third party, +or (if some people organize a series of published addressbooks using a first +come first serve registration system) people can choose to treat these addressbooks +as name servers, emulating traditional DNS. +{%- endtrans %}

        + +

        {% trans -%} +I2P does not promote the use of DNS-like services though, as the damage +done by hijacking a site can be tremendous - and insecure destinations have +no value. DNSsec itself still falls back on registrars and certificate authorities, +while with I2P, requests sent to a destination cannot be intercepted or the +reply spoofed, as they are encrypted to the destination's public keys, and +a destination itself is just a pair of public keys and a certificate. DNS-style +systems on the other hand allow any of the name servers on the lookup path +to mount simple denial of service and spoofing attacks. Adding on a certificate +authenticating the responses as signed by some centralized certificate authority +would address many of the hostile nameserver issues but would leave open replay +attacks as well as hostile certificate authority attacks. +{%- endtrans %}

        + +

        {% trans -%} +Voting style naming is dangerous as well, especially given the effectiveness +of Sybil attacks in anonymous systems - the attacker can simply create an +arbitrarily high number of peers and "vote" with each to take over a given +name. Proof-of-work methods can be used to make identity non-free, but as +the network grows the load required to contact everyone to conduct online +voting is implausible, or if the full network is not queried, different sets +of answers may be reachable. +{%- endtrans %}

        + +

        {% trans -%} +As with the Internet however, I2P is keeping the design and operation of +a naming system out of the (IP-like) communication layer. The bundled naming +library includes a simple service provider interface which alternate naming +systems can plug into, allowing end users to drive what sort of naming tradeoffs +they prefer. +{%- endtrans %}

        Syndie

        -

        The old Syndie bundled with I2P has been replaced by the new Syndie which - is distributed separately. For more information see the Syndie - pages.

        -

        Syndie is a safe, anonymous blogging / content publication / content aggregation - system. It lets you create information, share it with others, and read posts - from those you're interested in, all while taking into consideration your - needs for security and anonymity. Rather than building its own content distribution - network, Syndie is designed to run on top of existing networks, syndicating - content through eepsites, Tor hidden services, Freenet freesites, normal websites, - usenet newsgroups, email lists, RSS feeds, etc. Data published with Syndie - is done so as to offer pseudonymous authentication to anyone reading or archiving - it.

        +

        {% trans -%} +The old Syndie bundled with I2P has been replaced by the new Syndie which +is distributed separately. For more information see the Syndie +pages. +{%- endtrans %}

        + +

        {% trans -%} +Syndie is a safe, anonymous blogging / content publication / content aggregation +system. It lets you create information, share it with others, and read posts +from those you're interested in, all while taking into consideration your +needs for security and anonymity. Rather than building its own content distribution +network, Syndie is designed to run on top of existing networks, syndicating +content through eepsites, Tor hidden services, Freenet freesites, normal websites, +usenet newsgroups, email lists, RSS feeds, etc. Data published with Syndie +is done so as to offer pseudonymous authentication to anyone reading or archiving +it. +{%- endtrans %}

        I2PTunnel

        -

        Developed by: mihi

        -

        I2PTunnel is probably I2P's most popular and versatile client application, - allowing generic proxying both into and out of the I2P network. I2PTunnel - can be viewed as four separate proxying applications - a "client" which receives - inbound TCP connections and forwards them to a given I2P destination, an "httpclient" - (aka "eepproxy") which acts like an HTTP proxy and forwards the requests to - the appropriate I2P destination (after querying the naming service if necessary), - a "server" which receives inbound I2P streaming connections on a destination - and forwards them to a given TCP host+port, and an "httpserver" which extends - the "server" by parsing the HTTP request and responses to allow safer operation. - There is an additional "socksclient" application, but its use is not encouraged - for reasons previously mentioned.

        -

        I2P itself is not an outproxy network - the anonymity and security concerns - inherent in a mix net which forwards data into and out of the mix have kept - I2P's design focused on providing an anonymous network which capable of meeting - the user's needs without requiring external resources. However, the I2PTunnel - "httpclient" application offers a hook for outproxying - if the hostname requested - doesn't end in ".i2p", it picks a random destination from a user-provided - set of outproxies and forwards the request to them. These destinations are - simply I2PTunnel "server" instances run by volunteers who have explicitly - chosen to run outproxies - no one is an outproxy by default, and running an - outproxy doesn't automatically tell other people to proxy through you. While - outproxies do have inherent weaknesses, they offer a simple proof of concept - for using I2P and provide some functionality under a threat model which may - be sufficient for some users.

        -

        I2PTunnel enables most of the applications in use. An "httpserver" pointing - at a webserver lets anyone run their own anonymous website (or "eepsite") - - a webserver is bundled with I2P for this purpose, but any webserver can - be used. Anyone may run a "client" pointing at one of the anonymously hosted - IRC servers, each of which are running a "server" pointing at their local - IRCd and communicating between IRCds over their own "client" tunnels. End - users also have "client" tunnels pointing at I2Pmail's - POP3 and SMTP destinations (which in turn are simply "server" instances pointing - at POP3 and SMTP servers), as well as "client" tunnels pointing at I2P's CVS - server, allowing anonymous development. At times people have even run "client" - proxies to access the "server" instances pointing at an NNTP server.

        +

        {% trans dev='mihi' -%}Developed by: {{ dev }}{%- endtrans %}

        + +

        {% trans -%} +I2PTunnel is probably I2P's most popular and versatile client application, +allowing generic proxying both into and out of the I2P network. I2PTunnel +can be viewed as four separate proxying applications - a "client" which receives +inbound TCP connections and forwards them to a given I2P destination, an "httpclient" +(aka "eepproxy") which acts like an HTTP proxy and forwards the requests to +the appropriate I2P destination (after querying the naming service if necessary), +a "server" which receives inbound I2P streaming connections on a destination +and forwards them to a given TCP host+port, and an "httpserver" which extends +the "server" by parsing the HTTP request and responses to allow safer operation. +There is an additional "socksclient" application, but its use is not encouraged +for reasons previously mentioned. +{%- endtrans %}

        + +

        {% trans -%} +I2P itself is not an outproxy network - the anonymity and security concerns +inherent in a mix net which forwards data into and out of the mix have kept +I2P's design focused on providing an anonymous network which capable of meeting +the user's needs without requiring external resources. However, the I2PTunnel +"httpclient" application offers a hook for outproxying - if the hostname requested +doesn't end in ".i2p", it picks a random destination from a user-provided +set of outproxies and forwards the request to them. These destinations are +simply I2PTunnel "server" instances run by volunteers who have explicitly +chosen to run outproxies - no one is an outproxy by default, and running an +outproxy doesn't automatically tell other people to proxy through you. While +outproxies do have inherent weaknesses, they offer a simple proof of concept +for using I2P and provide some functionality under a threat model which may +be sufficient for some users. +{%- endtrans %}

        + +

        {% trans -%} +I2PTunnel enables most of the applications in use. An "httpserver" pointing +at a webserver lets anyone run their own anonymous website (or "eepsite") +- a webserver is bundled with I2P for this purpose, but any webserver can +be used. Anyone may run a "client" pointing at one of the anonymously hosted +IRC servers, each of which are running a "server" pointing at their local +IRCd and communicating between IRCds over their own "client" tunnels. End +users also have "client" tunnels pointing at I2Pmail's +POP3 and SMTP destinations (which in turn are simply "server" instances pointing +at POP3 and SMTP servers), as well as "client" tunnels pointing at I2P's CVS +server, allowing anonymous development. At times people have even run "client" +proxies to access the "server" instances pointing at an NNTP server. +{%- endtrans %}

        i2p-bt

        -

        Developed by: duck, et al

        -

        i2p-bt is a port of the mainline python BitTorrent client to run both the - tracker and peer communication over I2P. Tracker requests are forwarded through - the eepproxy to eepsites specified in the torrent file while tracker responses - refer to peers by their destination explicitly, allowing i2p-bt to open up - a streaming lib connection to query them for - blocks.

        -

        In addition to i2p-bt, a port of bytemonsoon has been made to I2P, making - a few modifications as necessary to strip any anonymity-compromising information - from the application and to take into consideration the fact that IPs cannot - be used for identifying peers.

        +

        {% trans dev='duck, et al' -%}Developed by: {{ dev }}{%- endtrans %}

        + +

        {% trans -%} +i2p-bt is a port of the mainline python BitTorrent client to run both the +tracker and peer communication over I2P. Tracker requests are forwarded through +the eepproxy to eepsites specified in the torrent file while tracker responses +refer to peers by their destination explicitly, allowing i2p-bt to open up +a streaming lib connection to query them for +blocks. +{%- endtrans %}

        + +

        {% trans -%} +In addition to i2p-bt, a port of bytemonsoon has been made to I2P, making +a few modifications as necessary to strip any anonymity-compromising information +from the application and to take into consideration the fact that IPs cannot +be used for identifying peers. +{%- endtrans %}

        I2PSnark

        -

        I2PSnark developed: jrandom, et al, ported from {% trans -%} +I2PSnark developed: jrandom, et al, ported from mjw's Snark client

        -

        Bundled with the I2P install, I2PSnark offers a simple anonymous BitTorrent - client with multitorrent capabilities, exposing all of the functionality through - a plain HTML web interface.

        +href="http://www.klomp.org/snark/">Snark client +{%- endtrans %}

        + +

        {% trans -%} +Bundled with the I2P install, I2PSnark offers a simple anonymous BitTorrent +client with multitorrent capabilities, exposing all of the functionality through +a plain HTML web interface. +{%- endtrans %}

        Robert

        -

        Developed by: sponge

        -

        Robert is a Bittorrent client written in Python. - It is hosted on http://bob.i2p/Robert.html

        +

        {% trans dev='sponge' -%}Developed by: {{ dev }}{%- endtrans %}

        + +

        {% trans bob=i2pconv('bob.i2p') -%} +Robert is a Bittorrent client written in Python. +It is hosted on http://{{ bob }}/Robert.html +{%- endtrans %}

        PyBit

        -

        Developed by: Blub

        -

        PyBit is a Bittorrent client written in Python. - It is hosted on http://pebcache.i2p/

        +

        {% trans dev='Blub' -%}Developed by: {{ dev }}{%- endtrans %}

        + +

        {% trans pebcache=i2pconv('pebcache.i2p') -%} +PyBit is a Bittorrent client written in Python. +It is hosted on http://{{ pebcache }}/ +{%- endtrans %}

        I2Phex

        -

        Developed by: sirup

        -

        I2Phex is a fairly direct port of the Phex Gnutella filesharing client to - run entirely on top of I2P. While it has disabled some of Phex's functionality, - such as integration with Gnutella webcaches, the basic file sharing and chatting - system is fully functional.

        -

        iMule

        -

        Developed by: mkvore

        -

        iMule is a fairly direct port of the aMule filesharing client - running entirely inside I2P.

        +

        {% trans dev='sirup' -%}Developed by: {{ dev }}{%- endtrans %}

        + +

        {% trans -%} +I2Phex is a fairly direct port of the Phex Gnutella filesharing client to +run entirely on top of I2P. While it has disabled some of Phex's functionality, +such as integration with Gnutella webcaches, the basic file sharing and chatting +system is fully functional. +{%- endtrans %}

        + +

        iMule

        +

        {% trans dev='mkvore' -%}Developed by: {{ dev }}{%- endtrans %}

        + +

        {% trans -%} +iMule is a fairly direct port of the aMule filesharing client +running entirely inside I2P. +{%- endtrans %}

        +

        I2Pmail/susimail

        -

        Developed by: postman, susi23, mastiejaner

        -

        I2Pmail is more a service than an application - postman offers both internal - and external email with POP3 and SMTP service through I2PTunnel instances - accessing a series of components developed with mastiejaner, allowing people - to use their preferred mail clients to send and receive mail pseudonymously. - However, as most mail clients expose substantial identifying information, - I2P bundles susi23's web based susimail client which has been built specifically - with I2P's anonymity needs in mind. The I2Pmail/mail.i2p service offers transparent - virus filtering as well as denial of service prevention with hashcash augmented - quotas. In addition, each user has control of their batching strategy prior - to delivery through the mail.i2p outproxies, which are separate from the mail.i2p - SMTP and POP3 servers - both the outproxies and inproxies communicate with - the mail.i2p SMTP and POP3 servers through I2P itself, so compromising those - non-anonymous locations does not give access to the mail accounts or activity - patterns of the user. At the moment the developers work on a decentralized - mailsystem, called "v2mail". More information can be found on the eepsite - hq.postman.i2p.

        +

        {% trans dev='postman, susi23, mastiejaner' -%}Developed by: {{ dev }}{%- endtrans %}

        + +

        {% trans postman=i2pconv('hq.postman.i2p') -%} +I2Pmail is more a service than an application - postman offers both internal +and external email with POP3 and SMTP service through I2PTunnel instances +accessing a series of components developed with mastiejaner, allowing people +to use their preferred mail clients to send and receive mail pseudonymously. +However, as most mail clients expose substantial identifying information, +I2P bundles susi23's web based susimail client which has been built specifically +with I2P's anonymity needs in mind. The I2Pmail/mail.i2p service offers transparent +virus filtering as well as denial of service prevention with hashcash augmented +quotas. In addition, each user has control of their batching strategy prior +to delivery through the mail.i2p outproxies, which are separate from the mail.i2p +SMTP and POP3 servers - both the outproxies and inproxies communicate with +the mail.i2p SMTP and POP3 servers through I2P itself, so compromising those +non-anonymous locations does not give access to the mail accounts or activity +patterns of the user. At the moment the developers work on a decentralized +mailsystem, called "v2mail". More information can be found on the eepsite +{{ postman }}. +{%- endtrans %}

        I2P-Bote

        -

        Developed by: HungryHobo

        -

        - I2P-Bote is a distributed e-mail application. It does not use the traditional - e-mail concept of sending an e-mail to a server and retrieving it from a server. - Instead, it uses a Kademlia Distributed Hash Table to store mails. - One user can push a mail into the DHT, while another can request the e-mail from the DHT. - And all the mails sent within the I2P-Bote network are automatically encrypted end-to-end.
        - Furthermore, I2P-Bote offers a remailer function on top of I2P, for increased high-latency anonymity. -

        +

        {% trans dev='HungryHobo' -%}Developed by: {{ dev }}{%- endtrans %}

        + +

        {% trans -%} +I2P-Bote is a distributed e-mail application. It does not use the traditional +e-mail concept of sending an e-mail to a server and retrieving it from a server. +Instead, it uses a Kademlia Distributed Hash Table to store mails. +One user can push a mail into the DHT, while another can request the e-mail from the DHT. +And all the mails sent within the I2P-Bote network are automatically encrypted end-to-end.
        +Furthermore, I2P-Bote offers a remailer function on top of I2P, for increased high-latency anonymity. +{%- endtrans %}

        I2P-Messenger

        -

        - I2P-Messenger is an end-to-end encrypted serverless communication application. - For communication between two users, they need to give each other their destination keys, to allow the other to connect. - It supports file transfer and has a search for other users, based on Seedless. -

        +

        {% trans -%} +I2P-Messenger is an end-to-end encrypted serverless communication application. +For communication between two users, they need to give each other their destination keys, to allow the other to connect. +It supports file transfer and has a search for other users, based on Seedless. +{%- endtrans %}

        {% endblock %} From ae9ca4497e2189fdd8e537d57f214025792ab722 Mon Sep 17 00:00:00 2001 From: str4d Date: Fri, 1 Feb 2013 10:49:46 +0000 Subject: [PATCH 369/650] Added translation tags to docs/how/garlic-routing --- .../pages/site/docs/how/garlic-routing.html | 252 +++++++++++------- 1 file changed, 152 insertions(+), 100 deletions(-) diff --git a/i2p2www/pages/site/docs/how/garlic-routing.html b/i2p2www/pages/site/docs/how/garlic-routing.html index 9bf8daf8..767b2018 100644 --- a/i2p2www/pages/site/docs/how/garlic-routing.html +++ b/i2p2www/pages/site/docs/how/garlic-routing.html @@ -1,69 +1,80 @@ {% extends "global/layout.html" %} -{% block title %}Garlic Routing{% endblock %} -{% block lastupdated %}August 2010{% endblock %} +{% block title %}{% trans %}Garlic Routing{% endtrans %}{% endblock %} +{% block lastupdated %}{% trans %}August 2010{% endtrans %}{% endblock %} {% block accuratefor %}0.8{% endblock %} {% block content %} -

        Garlic Routing and "Garlic" Terminology

        -

        +

        {% trans %}Garlic Routing and "Garlic" Terminology{% endtrans %}

        +

        {% trans -%} The terms "garlic routing" and "garlic encryption" are often used rather loosely when referring to I2P's technology. Here, we explain the history of the terms, the various meanings, and the usage of "garlic" methods in I2P. -

        +{%- endtrans %}

        + +

        {% trans -%} "Garlic routing" was first coined by Michael J. Freedman in Roger Dingledine's Free Haven Master's thesis Section 8.1.1 (June 2000), as derived from Onion Routing. -

        +{%- endtrans %}

        + +

        {% trans -%} "Garlic" may have been used originally by I2P developers because I2P implements a form of bundling as Freedman describes, or simply to emphasize general differences from Tor. The specific reasoning may be lost to history. Generally, when referring to I2P, the term "garlic" may mean one of three things: -

        1. -Layered Encryption -
        2. -Bundling multiple messages together -
        3. -ElGamal/AES Encryption -
        +{%- endtrans %}

        +
          +
        1. {% trans %}Layered Encryption{% endtrans %}
        2. +
        3. {% trans %}Bundling multiple messages together{% endtrans %}
        4. +
        5. {% trans %}ElGamal/AES Encryption{% endtrans %}
        6. +
        + +

        {% trans -%} Unfortunately, I2P's usage of "garlic" terminology over the past seven years has not always been precise; therefore the reader is cautioned when encountering the term. Hopefully, the explanation below will make things clear. -

        +{%- endtrans %}

        -

        Layered Encryption

        -

        +

        {% trans %}Layered Encryption{% endtrans %}

        +

        {% trans -%} Onion routing is a technique for building paths, or tunnels, through a series of peers, and then using that tunnel. Messages are repeatedly encrypted by the originator, and then decrypted by each hop. During the building phase, only the routing instructions for the next hop are exposed to each peer. During the operating phase, messages are passed through the tunnel, and the message and its routing instructions are only exposed to the endpoint of the tunnel. -

        +{%- endtrans %}

        + +

        {% trans comparisons=site_url('comparison') -%} This is similar to the way Mixmaster -(see network comparisons) sends messages - taking a message, encrypting it +(see network comparisons) sends messages - taking a message, encrypting it to the recipient's public key, taking that encrypted message and encrypting it (along with instructions specifying the next hop), and then taking that resulting encrypted message and so on, until it has one layer of encryption per hop along the path. -

        +{%- endtrans %}

        + +

        {% trans -%} In this sense, "garlic routing" as a general concept is identical to "onion routing". As implemented in I2P, of course, there are several differences from the implementation in Tor; see below. Even so, there are substantial similarities such that I2P benefits from a large amount of academic research on onion routing, Tor, and similar mixnets. -

        +{%- endtrans %}

        -

        Bundling Multiple Messages

        -

        +

        {% trans %}Bundling Multiple Messages{% endtrans %}

        +

        {% trans -%} Michael Freedman defined "garlic routing" as an extension to onion routing, in which multiple messages are bundled together. He called each message a "bulb". All the messages, each with its own delivery instructions, are exposed at the endpoint. This allows the efficient bundling of an onion routing "reply block" with the original message. -

        +{%- endtrans %}

        + +

        {% trans -%} This concept is implemented in I2P, as described below. Our term for garlic "bulbs" is "cloves". Any number of messages can be @@ -71,88 +82,107 @@ contained, instead of just a single message. This is a significant distinction from the onion routing implemented in Tor. However, it is only one of many major architectural differences between I2P and Tor; perhaps it is not, by itself, enough to justify a change in terminology. +{%- endtrans %}

        -

        +

        {% trans -%} Another difference from the method described by Freedman is that the path is unidirectional - there is no "turning point" as seen in onion routing or mixmaster reply blocks, which greatly simplifies the algorithm and allows for more flexible and reliable delivery. -

        +{%- endtrans %}

        -

        ElGamal/AES Encryption

        +

        {% trans %}ElGamal/AES Encryption{% endtrans %}

        +

        {% trans elgamalaes=site_url('docs/how/elgamal-aes') -%} In some cases, "garlic encryption" may simply mean -ElGamal/AES+SessionTag encryption +ElGamal/AES+SessionTag encryption (without multiple layers). +{%- endtrans %}

        -

        "Garlic" Methods in I2P

        - -

        +

        {% trans %}"Garlic" Methods in I2P{% endtrans %}

        +

        {% trans -%} Now that we've defined various "garlic" terms, we can say that I2P uses garlic routing, bundling and encryption in three places: +{%- endtrans %}

          -
        1. For building and routing through tunnels (layered encryption) -
        2. For determining the success or failure of end to end message delivery (bundling) -
        3. For publishing some network database entries (dampening the probability of a successful traffic analysis attack) - (ElGamal/AES) +
        4. {% trans %}For building and routing through tunnels (layered encryption){% endtrans %} +
        5. {% trans %}For determining the success or failure of end to end message delivery (bundling){% endtrans %} +
        6. {% trans %}For publishing some network database entries (dampening the probability of a successful traffic analysis attack) (ElGamal/AES){% endtrans %}
        -

        + +

        {% trans -%} There are also significant ways that this technique can be used to improve the performance of the network, exploiting transport latency/throughput tradeoffs, and branching data through redundant paths to increase reliability. +{%- endtrans %}

        -

        Tunnel Building and Routing

        -

        +

        {% trans %}Tunnel Building and Routing{% endtrans %}

        +

        {% trans -%} In I2P, tunnels are unidirectional. Each party builds two tunnels, one for outbound and one for inbound traffic. Therefore, four tunnels are required for a single round-trip message and reply. -

        +{%- endtrans %}

        + +

        {% trans tunnelimpl=site_url('docs/tunnels/implementation'), +tunnelcreation=site_url('docs/spec/tunnel-creation'), +elgamalaes=site_url('docs/how/elgamal-aes') -%} Tunnels are built, and then used, with layered encryption. This is described on the -tunnel implementation page. +tunnel implementation page. Tunnel building details are defined on -this page. +this page. We use -ElGamal/AES+SessionTag for the encryption. -

        +ElGamal/AES+SessionTag for the encryption. +{%- endtrans %}

        + +

        {% trans i2np=site_url('docs/protocol/i2np'), i2npspec=site_url('docs/spec/i2np') -%} Tunnels are a general-purpose mechanism to transport all -I2NP messages, and -Garlic Messages are not used to build tunnels. +I2NP messages, and +Garlic Messages are not used to build tunnels. We do not bundle multiple -I2NP messages into a single -Garlic Message for unwrapping at the outbound tunnel endpoint; +I2NP messages into a single +Garlic Message for unwrapping at the outbound tunnel endpoint; the tunnel encryption is sufficient. -

        +{%- endtrans %}

        -

        End-to-End Message Bundling

        -

        +

        {% trans %}End-to-End Message Bundling{% endtrans %}

        +

        {% trans commonstructures=site_url('docs/spec/common-structures'), +elgamalaes=site_url('docs/how/elgamal-aes'), +i2cp=site_url('docs/protocol/i2cp'), +i2npspec=site_url('docs/spec/i2np'), +tunnelmessage=site_url('docs/spec/tunnel-message') -%} At the layer above tunnels, I2P delivers end-to-end messages between -Destinations. +Destinations. Just as within a single tunnel, we use -ElGamal/AES+SessionTag for the encryption. +ElGamal/AES+SessionTag for the encryption. Each client message as delivered to the router through the -I2CP interface becomes a single -Garlic Clove +I2CP interface becomes a single +Garlic Clove with its own -Delivery Instructions, +Delivery Instructions, inside a -Garlic Message. +Garlic Message. Delivery Instructions may specify a Destination, Router, or Tunnel. -

        +{%- endtrans %}

        + +

        {% trans -%} Generally, a Garlic Message will contain only one clove. However, the router will periodically bundle two additional cloves in the Garlic Message: -Garlic Message Cloves +{%- endtrans %}

        +{{ _('Garlic Message Cloves') }} -
        1. +
            +
          1. {% trans i2npspec=site_url('docs/spec/i2np'), +tunnelmessage=site_url('docs/spec/tunnel-message') -%} A -Delivery Status Message, +Delivery Status Message, with -Delivery Instructions +Delivery Instructions specifying that it be sent back to the originating router as an acknowledgment. This is similar to the "reply block" or "reply onion" described in the references. @@ -160,99 +190,121 @@ It is used for determining the success or failure of end to end message delivery The originating router may, upon failure to receive the Delivery Status Message within the expected time period, modify the routing to the far-end Destination, or take other actions. - -
          2. +{%- endtrans %}
          3. +
          4. {% trans i2npspec=site_url('docs/spec/i2np'), +commonstructures=site_url('docs/spec/common-structures'), +tunnelmessage=site_url('docs/spec/tunnel-message'), +netdb=site_url('docs/how/network-database') -%} A -Database Store Message, +Database Store Message, containing a -LeaseSet +LeaseSet for the originating Destination, with -Delivery Instructions +Delivery Instructions specifying the far-end destination's router. By periodically bundling a LeaseSet, the router ensures that the far-end will be able to maintain communications. Otherwise the far-end would have to query a floodfill router for the network database entry, and all LeaseSets would have to be published to the network database, as explained on the -network database page. -
          +network database page. +{%- endtrans %}
        2. +
        -

        +

        {% trans commonstructures=site_url('docs/spec/common-structures') -%} In the current implementation, the Delivery Status and Database Store Messages are bundled when the local LeaseSet changes, when additional -Session Tags +Session Tags are delivered, or if the messages have not been bundled in the previous minute. +{%- endtrans %}

        -

        +

        {% trans -%} Obviously, the additional messages are currently bundled for specific purposes, and not part of a general-purpose routing scheme. -

        +{%- endtrans %}

        -

        Storage to the Floodfill Network Database

        -

        + +

        {% trans %}Storage to the Floodfill Network Database{% endtrans %}

        +

        {% trans netdb=site_url('docs/how/network-database'), +commonstructures=site_url('docs/spec/common-structures'), +i2npspec=site_url('docs/spec/i2np') -%} As explained on the -network database page, +network database page, local -LeaseSets +LeaseSets are sent to floodfill routers in a -Database Store Message +Database Store Message wrapped in a -Garlic Message +Garlic Message so it is not visible to the tunnel's outbound gateway. -

        +{%- endtrans %}

        -

        Future Work

        -

        +

        {% trans %}Future Work{% endtrans %}

        +

        {% trans tunnelmessage=site_url('docs/spec/tunnel-message') -%} The Garlic Message mechanism is very flexible and provides a structure for implementing many types of mixnet delivery methods. Together with the unused delay option in the -tunnel message Delivery Instructions, +tunnel message Delivery Instructions, a wide spectrum of batching, delay, mixing, and routing strategies are possible. -

        +{%- endtrans %}

        + +

        {% trans -%} In particular, there is potential for much more flexibility at the outbound tunnel endpoint. Messages could possibly be routed from there to one of several tunnels (thus minimizing point-to-point connections), or multicast to several tunnels for redundancy, or streaming audio and video. -

        +{%- endtrans %}

        + +

        {% trans -%} Such experiments may conflict with the need to ensure security and anonymity, such as limiting certain routing paths, restricting the types of I2NP messages that may be forwarded along various paths, and enforcing certain message expiration times. -

        +{%- endtrans %}

        + +

        {% trans elgamalaes=site_url('docs/how/elgamal-aes') -%} As a part of -ElGamal/AES encryption, +ElGamal/AES encryption, a garlic message contains a sender specified amount of padding data, allowing the sender to take active countermeasures against traffic analysis. This is not currently used, beyond the requirement to pad to a multiple of 16 bytes. -

        +{%- endtrans %}

        + +

        {% trans netdb=site_url('docs/how/network-database') -%} Encryption of additional messages to and from the -floodfill routers. -

        +floodfill routers. +{%- endtrans %}

        -

        References

        - {% endblock %} From 7a4c7df89928e43f4e0bb60a1d91021157386f28 Mon Sep 17 00:00:00 2001 From: str4d Date: Fri, 1 Feb 2013 19:50:20 +0000 Subject: [PATCH 370/650] Removed translation tags from names in the nav bar and footer --- i2p2www/pages/global/footer.html | 8 ++++---- i2p2www/pages/global/nav.html | 24 ++++++++++++------------ 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/i2p2www/pages/global/footer.html b/i2p2www/pages/global/footer.html index d4ab7104..ef6f899b 100644 --- a/i2p2www/pages/global/footer.html +++ b/i2p2www/pages/global/footer.html @@ -1,10 +1,10 @@
        diff --git a/i2p2www/pages/global/nav.html b/i2p2www/pages/global/nav.html index 391da543..558a9b33 100644 --- a/i2p2www/pages/global/nav.html +++ b/i2p2www/pages/global/nav.html @@ -7,9 +7,9 @@
      • @@ -37,15 +37,15 @@
      • @@ -58,8 +58,8 @@
      • From b8bfbc41c3770b9589691c15273dbd8b16d4cc57 Mon Sep 17 00:00:00 2001 From: str4d Date: Fri, 1 Feb 2013 19:52:41 +0000 Subject: [PATCH 371/650] Put blog post excerpts on a single line so translators don't break the Markdown --- i2p2www/blog/2012/10/27/0.9.3-Release.rst | 8 +------- i2p2www/blog/2012/12/17/0.9.4-Release.rst | 6 +----- 2 files changed, 2 insertions(+), 12 deletions(-) diff --git a/i2p2www/blog/2012/10/27/0.9.3-Release.rst b/i2p2www/blog/2012/10/27/0.9.3-Release.rst index 0572f8a8..4b8e655c 100644 --- a/i2p2www/blog/2012/10/27/0.9.3-Release.rst +++ b/i2p2www/blog/2012/10/27/0.9.3-Release.rst @@ -4,13 +4,7 @@ .. meta:: :date: 2012-10-27 :category: release - :excerpt: {% trans %} - 0.9.3 includes extensive low-level changes to the queueing of messages in the router. - We implement the CoDel Active Queue Management (AQM) algorithm. We also unify the - queueing and priority mechanisms in the transports to aid diagnosis and reduce network - latency. Work continues on fixing UDP transport bugs and making UDP more resistant to - attacks. There are more changes to improve the performance of the router and reduce its - memory usage. Also, we enable i2psnark's DHT support, introduced last release, by default.{% endtrans %} + :excerpt: {% trans %}0.9.3 includes extensive low-level changes to the queueing of messages in the router. We implement the CoDel Active Queue Management (AQM) algorithm. We also unify the queueing and priority mechanisms in the transports to aid diagnosis and reduce network latency. Work continues on fixing UDP transport bugs and making UDP more resistant to attacks. There are more changes to improve the performance of the router and reduce its memory usage. Also, we enable i2psnark's DHT support, introduced last release, by default.{% endtrans %} {% trans -%} 0.9.3 includes extensive low-level changes to the queueing of messages in the router. diff --git a/i2p2www/blog/2012/12/17/0.9.4-Release.rst b/i2p2www/blog/2012/12/17/0.9.4-Release.rst index 9f1bd991..13d45281 100644 --- a/i2p2www/blog/2012/12/17/0.9.4-Release.rst +++ b/i2p2www/blog/2012/12/17/0.9.4-Release.rst @@ -4,11 +4,7 @@ .. meta:: :date: 2012-12-17 :category: release - :excerpt: {% trans %} - 0.9.4 includes a fix for a network capacity bug, introduced in 0.9.2, - that was reducing network performance and reliability. It also includes - major changes in the in-network update system, and adds the capability - to update via in-network torrents.{% endtrans %} + :excerpt: {% trans %}0.9.4 includes a fix for a network capacity bug, introduced in 0.9.2, that was reducing network performance and reliability. It also includes major changes in the in-network update system, and adds the capability to update via in-network torrents.{% endtrans %} {% trans -%} 0.9.4 includes a fix for a network capacity bug, introduced in 0.9.2, From ac070805e477dbca1290d79ca6342cb1c5678a01 Mon Sep 17 00:00:00 2001 From: dg2 Date: Fri, 1 Feb 2013 20:12:08 +0000 Subject: [PATCH 372/650] misc/* translation tagging, URLs need fixing before it will parse correctly. First commit, huzzah. --- i2p2www/pages/site/misc/clt.html | 15 ++- i2p2www/pages/site/misc/cvs.html | 12 ++- .../pages/site/misc/i2ptunnel-migration.html | 22 ++-- .../pages/site/misc/i2ptunnel-services.html | 101 +++++++++--------- i2p2www/pages/site/misc/invisiblenet.html | 3 +- i2p2www/pages/site/misc/jbigi.html | 101 ++++++++++-------- i2p2www/pages/site/misc/jrandom-awol.html | 11 +- i2p2www/pages/site/misc/manual-wrapper.html | 35 +++--- i2p2www/pages/site/misc/minwww.html | 54 ++++++---- i2p2www/pages/site/misc/myi2p.html | 17 +-- i2p2www/pages/site/misc/ratestats.html | 10 +- i2p2www/pages/site/misc/transition-guide.html | 15 +-- i2p2www/pages/site/misc/upgrade-0.6.1.30.html | 28 ++--- 13 files changed, 241 insertions(+), 183 deletions(-) diff --git a/i2p2www/pages/site/misc/clt.html b/i2p2www/pages/site/misc/clt.html index 9a529f74..f6d99154 100644 --- a/i2p2www/pages/site/misc/clt.html +++ b/i2p2www/pages/site/misc/clt.html @@ -1,13 +1,12 @@ {% extends "global/layout.html" %} {% block title %}I2P at CLT and PetCon 2009.1{% endblock %} -{% block content %}

        Members of I2P will held a talk at CLT and PetCon 2009.1

        -Two members of the I2P team will be at two forthcoming Linux day and security convention. -On 14th march of 2009 there will be a short talk about general introduction to I2P at the Chemnitz Linux Tag 2009 hold by echelon.
        -Echelon and some other members of the I2P family will attend to the Linux meeting the whole two days (Saturday and Sunday) and will be recognizable as I2P family members. Meet them, ask them your questions, show them your props!
        -Show your support!
        -
        -Just 10 days later the Privacy and Data Security convention in Dresden will take place.
        +{% block content %}{% trans -%}

        +Members of I2P will held a talk at CLT and PetCon 2009.1 +Two members of the I2P team will be at two forthcoming Linux day and security convention.

        +On 14th march of 2009 there will be a short talk about general introduction to I2P at the Chemnitz Linux Tag 2009 hold by echelon. +Echelon and some other members of the I2P family will attend to the Linux meeting the whole two days (Saturday and Sunday) and will be recognizable as I2P family members. Meet them, ask them your questions, show them your props! Show your support!

        +Just 10 days later the Privacy and Data Security convention in Dresden will take place. Again, echelon will attend this event and hold a short talk about general introduction to I2P. Another talk about the profiling by the I2P clients will be held. -
        +{%- endtrans %}

        {% endblock %} diff --git a/i2p2www/pages/site/misc/cvs.html b/i2p2www/pages/site/misc/cvs.html index 52365d9d..05ca9df6 100644 --- a/i2p2www/pages/site/misc/cvs.html +++ b/i2p2www/pages/site/misc/cvs.html @@ -1,11 +1,13 @@ {% extends "global/layout.html" %} {% block title %}CVS{% endblock %} -{% block content %}

        The I2P sourcecode was kept in a CVS repository. Nowadays it is kept in an Monotone repository. +{% block content %}

        {% trans -%} +The I2P sourcecode was kept in a CVS repository. Nowadays it is kept in an Monotone repository. For those who aren't very familiar with CVS, there is a fantastic book on the subject (developers only need to deal with the first chapter - "An Overview of CVS", as subsequent chapters go into some nasty details very few ever need to -touch).

        +touch). +{%- endtrans %}

        Unix CVS

        cvs -d:pserver:anoncvs@cvs.i2p.net:/cvsroot login
        @@ -25,6 +27,8 @@ Password: anoncvs

        Commits are sent to the CVS mailinglist

        -

        Humorous quote from WinCVS: "Did you know... Never experiment with new CVS -commands on your working repository. Create a sample module instead."

        +

        {% trans -%} +Humorous quote from WinCVS: "Did you know... Never experiment with new CVS +commands on your working repository. Create a sample module instead." +{%- endtrans %}

        {% endblock %} diff --git a/i2p2www/pages/site/misc/i2ptunnel-migration.html b/i2p2www/pages/site/misc/i2ptunnel-migration.html index 0c5fa751..b585bc3d 100644 --- a/i2p2www/pages/site/misc/i2ptunnel-migration.html +++ b/i2p2www/pages/site/misc/i2ptunnel-migration.html @@ -1,16 +1,18 @@ {% extends "global/layout.html" %} {% block title %}i2ptunnel migration{% endblock %} -{% block content %}

        I2PTunnel migration:

        +{% block content %}

        {% trans -%}I2PTunnel migration:{%- endtrans %}

        -

        After upgrading to the new architecture, you'll have to do a +

        {% trans -%} +After upgrading to the new architecture, you'll have to do a little work to get your old I2PTunnel-driven servers running. Lets walk through a simple example. For an eepsite with the -old clientApp configuration, you had:

        +old clientApp configuration, you had: +{%- endtrans %}

           -e "server localhost 80 myWebPriv.dat"
         
        -

        To provide that same functionality on the new web architecture:

        +

        {% trans -%}To provide that same functionality on the new web architecture:{%- endtrans %}

        -

        That's it! Creating a new I2PTunnel server works the same way too, except you +

        {% trans -%} +That's it! Creating a new I2PTunnel server works the same way too, except you don't need to "copy the old file", obviously. Behind the scenes, it is all driven by the i2ptunnel.config file, which you may modify externally (if you do, hit "Reload config" on the I2PTunnel web page, which will tear down all of your -existing tunnels and rebuild new ones)

        +existing tunnels and rebuild new ones) +{%- endtrans %}

        -

        Note that you WILL need to wait until your router is integrated +

        {% trans -%} +Note that you WILL need to wait until your router is integrated into the network before you are able to use the /i2ptunnel/ web interface. It will say "Please be patient" if you try to beforehand, which means that it is still trying to build the -necessary I2PTunnel sessions it has been configured to create.

        {% endblock %} +necessary I2PTunnel sessions it has been configured to create. +{%- endtrans %}

        {% endblock %} diff --git a/i2p2www/pages/site/misc/i2ptunnel-services.html b/i2p2www/pages/site/misc/i2ptunnel-services.html index a9e9433a..5fec5bc5 100644 --- a/i2p2www/pages/site/misc/i2ptunnel-services.html +++ b/i2p2www/pages/site/misc/i2ptunnel-services.html @@ -1,109 +1,112 @@ {% extends "global/layout.html" %} {% block title %}i2ptunnel services{% endblock %} -{% block content %}Below is quick copy of aum's eepsite deployment guide. -
        +{% block content %}{% trans -%} +Below is quick copy of aum's eepsite deployment guide. +{%- endtrans %}

        -1. - Deploy a local server
        • For simplicity's sake, we will walk through the setup of a web server; however, this procedure is the same regardless what protocol of servers and/or clients you are setting up. +{% trans -%} +1. - Deploy a local server +{%- endtrans %}
          • {% trans %}For simplicity's sake, we will walk through the setup of a web server; however, this procedure is the same regardless what protocol of servers and/or clients you are setting up. {% endtrans %}
            -
          • I recommend the Tiny Httpd web server , thttpd, (windows version available on site) although you can use anything that you feel comfortable with. +
          • {% trans %}I recommend the Tiny Httpd web server , thttpd, (windows version available on site) although you can use anything that you feel comfortable with.{% endtrans %}
            -
          • Another more robust option would be to use EasyPHP, which is also open source. It comes with PHP, PHPmyadmin, mySQL, and Apache web server. For newbies who have no experience setting up and hosting content over servers, see the hosting page for help. +
          • {% trans %}Another more robust option would be to use EasyPHP, which is also open source. It comes with PHP, PHPmyadmin, mySQL, and Apache web server. For newbies who have no experience setting up and hosting content over servers, see the hosting page for help. {% endtrans %}
            -
          • With the web server you've chosen, configure it to listen on a port of your choice, and serve its documents from a directory of your choice. For this example, we'll assume port 10880. +
          • {% trans %}With the web server you've chosen, configure it to listen on a port of your choice, and serve its documents from a directory of your choice. For this example, we'll assume port 10880. {% endtrans %}
            -
          • Make sure your firewall is set up so that you cannot receive incoming connections on this port (which would breach your anonymity). +
          • {% trans %}Make sure your firewall is set up so that you cannot receive incoming connections on this port (which would breach your anonymity). {% endtrans %}
            -
          • Test the webserver, by pointing your normal browser (the one with the "direct connection") at http://localhost:10880 (changing the 10880 to the port number you have chosen). +
          • {% trans %}Test the webserver, by pointing your normal browser (the one with the "direct connection") at http://localhost:10880 (changing the 10880 to the port number you have chosen). {% endtrans %}
            -
          • Once your webserver is working, and you can access it locally with your browser, continue to the next step. +
          • {% trans %}Once your webserver is working, and you can access it locally with your browser, continue to the next step. {% endtrans %}
            -
          2 - Generate an I2P Destination Keypair
          • I2P does not deal in IP addresses. To protect your anonymity, it deals in unique addresses called destination keys. +
          {% trans %}2 - Generate an I2P Destination Keypair {% endtrans %}
          • {% trans %}I2P does not deal in IP addresses. To protect your anonymity, it deals in unique addresses called destination keys. {% endtrans %}
            -
          • A destination key works a lot like a regular IP address, except that it can't be traced to your IP address or physical location. When users place a request to speak with you, your gateways are the ones that answer for you. So the requesting user can only know the IP address of your gateways. However, gateways don't know your IP address, because gateways are the last nodes on your tunnels, and you anonymously create tunnels by way of garlic routing. (So gateways are like puppets that can't see their masters, and everyone communicates through these puppets) +
          • {% trans %}A destination key works a lot like a regular IP address, except that it can't be traced to your IP address or physical location. When users place a request to speak with you, your gateways are the ones that answer for you. So the requesting user can only know the IP address of your gateways. However, gateways don't know your IP address, because gateways are the last nodes on your tunnels, and you anonymously create tunnels by way of garlic routing. (So gateways are like puppets that can't see their masters, and everyone communicates through these puppets) {% endtrans %}
            -
          • To deploy a server on I2P, you create a destination keypair. You use the private key to authenticate your server when connecting it to I2P, and you make the public key (aka destination key) known publicly, so others can connect to your server. (indirectly, through your gateways) +
          • {% trans %}To deploy a server on I2P, you create a destination keypair. You use the private key to authenticate your server when connecting it to I2P, and you make the public key (aka destination key) known publicly, so others can connect to your server. (indirectly, through your gateways) {% endtrans %}
            -
          • Each service you run on I2P requires a different keypair. +
          • {% trans %}Each service you run on I2P requires a different keypair. {% endtrans %}
            -
          • To generate your keypair, type the command: java -jar lib/i2ptunnel.jar -nogui -e "genkeys myWebPrivKey.dat myWebPubKey.dat" (all on one line) +
          • {% trans %}To generate your keypair, type the command: java -jar lib/i2ptunnel.jar -nogui -e "genkeys myWebPrivKey.dat myWebPubKey.dat" (all on one line) {% endtrans %}
            -
          • In windows, to generate your keypair, type the command: java -jar lib/i2ptunnel.jar -nogui -e "genkeys myWebPrivKey.dat myWebPubKey.dat" +
          • {% trans %}In windows, to generate your keypair, type the command: java -jar lib/i2ptunnel.jar -nogui -e "genkeys myWebPrivKey.dat myWebPubKey.dat" {% endtrans %}
            -
          • The filenames myWebPrivKey.dat and myWebPubKey.dat are arbitrary - choose whatever you want here, as long as you understand your own choices. +
          • {% trans %}The filenames myWebPrivKey.dat and myWebPubKey.dat are arbitrary - choose whatever you want here, as long as you understand your own choices. {% endtrans %}
            -
          • We now need to export your public key into base64 format, which you will share with others. +
          • {% trans %} We now need to export your public key into base64 format, which you will share with others. {% endtrans %}
            -
          • To convert your myWebPubKey.dat file into shareable base64, type the command java -cp lib/i2p.jar net.i2p.data.Base64 encode myWebPubKey.dat > myWebPubKey.txt (all on one line). +
          • {% trans %}To convert your myWebPubKey.dat file into shareable base64, type the command java -cp lib/i2p.jar net.i2p.data.Base64 encode myWebPubKey.dat > myWebPubKey.txt (all on one line). {% endtrans %}
            -
          • This file you have just generated, myWebPubKey.txt, contains a long base64 string (516 chars at last count), which we call a destination key. All you need to know about this string for now is that it allows remote clients to uniquely pinpoint and connect to your server, just the same way as an IP address allows remote machines to pinpoint and connect to your machine. +
          • {% trans %}This file you have just generated, myWebPubKey.txt, contains a long base64 string (516 chars at last count), which we call a destination key. All you need to know about this string for now is that it allows remote clients to uniquely pinpoint and connect to your server, just the same way as an IP address allows remote machines to pinpoint and connect to your machine. {% endtrans %}
            -
          • However, in contrast to an IP address, there is no way to trace your machine's physical location - even though your server can be addressed via I2P, your IP address cannot be traced or associated with this destination key. +
          • {% trans %}However, in contrast to an IP address, there is no way to trace your machine's physical location - even though your server can be addressed via I2P, your IP address cannot be traced or associated with this destination key. {% endtrans %}
            -
          3 - Open a 'Tunnel' from I2P To Your Server
          • For clients elsewhere in I2P to be able to access your server, you must run a 'bridge' or 'tunnel', which takes connections from these clients and forwards them to your local server +
          {% trans %}3 - Open a 'Tunnel' from I2P To Your Server{% endtrans %}
          • {% trans %}For clients elsewhere in I2P to be able to access your server, you must run a 'bridge' or 'tunnel', which takes connections from these clients and forwards them to your local server {% endtrans %}
            -
          • To activate such a tunnel, type the command java -jar lib/i2ptunnel.jar -nogui -e "server localhost 10880 myWebPrivKey.dat" (all one line) +
          • {% trans %}To activate such a tunnel, type the command java -jar lib/i2ptunnel.jar -nogui -e "server localhost 10880 myWebPrivKey.dat" (all one line) {% endtrans %}
            -
          • If you used different filenames or port number earlier on, change these accordingly +
          • {% trans %}If you used different filenames or port number earlier on, change these accordingly {% endtrans %}
            -
          • Windows users, remember to replace apostrophes with double quotes. Thus: java -jar lib/i2ptunnel.jar -nogui -e "server localhost 10880 myWebPrivKey.dat" +
          • {% trans %}Windows users, remember to replace apostrophes with double quotes. Thus: java -jar lib/i2ptunnel.jar -nogui -e "server localhost 10880 myWebPrivKey.dat" {% endtrans %}
            -
          • Within a few seconds, the 'tunnel' should now be active, and remote clients should be able to reach your server anonymously. Remember to let your router "warm up" before opening clients to it. +
          • {% trans %}Within a few seconds, the 'tunnel' should now be active, and remote clients should be able to reach your server anonymously. Remember to let your router "warm up" before opening clients to it. {% endtrans %}
            -
          4 - Update Your hosts.txt File
          • To test your own server locally, you'll need to create an entry in your hosts.txt file, so I2P can translate the simple URL you place in the browser's address bar into the full public key text needed to find your server. +
          {% trans %}4 - Update Your hosts.txt File {% endtrans %}
          • {% trans %}To test your own server locally, you'll need to create an entry in your hosts.txt file, so I2P can translate the simple URL you place in the browser's address bar into the full public key text needed to find your server. {% endtrans %}
            -
          • Edit your hosts.txt, and add the line myserver.i2p=blahblahblah, where myserver.i2p is an I2P 'domain' you want to associate with your site, and the blahblahblah is the text of the base64 public key you created earlier in the file myWebPubKey.txt +
          • {% trans %}Edit your hosts.txt, and add the line myserver.i2p=blahblahblah, where myserver.i2p is an I2P 'domain' you want to associate with your site, and the blahblahblah is the text of the base64 public key you created earlier in the file myWebPubKey.txt {% endtrans %}
            -
          • With this in place, you and others can reach your server with the simple domain name myserver.i2p in the browser's address bar. +
          • {% trans %}With this in place, you and others can reach your server with the simple domain name myserver.i2p in the browser's address bar. {% endtrans %}
            -
          5 - Surf Your Site Within I2P
          • Using your secondary browser - the one you earlier configured to use localhost:4444 as a proxy - point this browser to the address http://myserver.i2p +
          {% trans %}5 - Surf Your Site Within I2P{% endtrans %}
          • {% trans %}Using your secondary browser - the one you earlier configured to use localhost:4444 as a proxy - point this browser to the address http://myserver.i2p{% endtrans %}
            -
          • You should see the main page of your webserver come up. +
          • {% trans %}You should see the main page of your webserver come up. {% endtrans %}
            -
          6 - Create a Local Client Tunnel Connection
          • We now have to think beyond just web servers. +
          {% trans %}6 - Create a Local Client Tunnel Connection {% endtrans %}
          • {% trans %}We now have to think beyond just web servers. {% endtrans %}
            -
          • As you grow into I2P and get more of a 'feel' for it, you will want to use all manner of servers and clients. +
          • {% trans %}As you grow into I2P and get more of a 'feel' for it, you will want to use all manner of servers and clients. {% endtrans %}
            -
          • The beauty of I2P is that it allows standard Internet clients and servers for most protocols to be transparently 'tunneled' through the anonymous network. +
          • {% trans %}The beauty of I2P is that it allows standard Internet clients and servers for most protocols to be transparently 'tunneled' through the anonymous network. {% endtrans %}
            -
          • You can run mailservers/clients, nameservers/clients, newsservers/clients - almost anything at all - perhaps even FTP in passive mode. +
          • {% trans %}You can run mailservers/clients, nameservers/clients, newsservers/clients - almost anything at all - perhaps even FTP in passive mode. {% endtrans %}
            -
          • Now, we'll create a client tunnel. This is like the server tunnel we created earlier, but works in reverse. It listens to a port on your local machine; your local client connects to this port; the connection gets forwarded through I2P to the service on the other end. +
          • {% trans %}Now, we'll create a client tunnel. This is like the server tunnel we created earlier, but works in reverse. It listens to a port on your local machine; your local client connects to this port; the connection gets forwarded through I2P to the service on the other end. {% endtrans %}
            -
          • To open your client tunnel for your server, type the command java -jar lib/i2ptunnel.jar -nogui -e "config localhost 7654" -e "client 10888 textofbase64key" (all one line). +
          • {% trans %}To open your client tunnel for your server, type the command java -jar lib/i2ptunnel.jar -nogui -e "config localhost 7654" -e "client 10888 textofbase64key" (all one line). {% endtrans %}
            -
          • The port 10888 is arbitrary - it just needs to be something other than the physical port your server is listening on. +
          • {% trans %}The port 10888 is arbitrary - it just needs to be something other than the physical port your server is listening on. {% endtrans %}
            -
          • textofbase64key is simply the contents of the public key text file myWebPubKey.txt, reproduced fully on one line (alternately, instead of textofbase64key, you can specify the name from your hosts.txt - e.g. myserver.i2p) +
          • {% trans %}textofbase64key is simply the contents of the public key text file myWebPubKey.txt, reproduced fully on one line (alternately, instead of textofbase64key, you can specify the name from your hosts.txt - e.g. myserver.i2p) {% endtrans %}
            -
          • Within a minute or two of launching this command, the client tunnel from your local machine into I2P will be open and ready for use. +
          • {% trans %}Within a minute or two of launching this command, the client tunnel from your local machine into I2P will be open and ready for use. {% endtrans %}
            -
          • Point your regular web browser (ie, not the one you configured to use localhost:4444), and point it to http://localhost:10888 +
          • {% trans %}Point your regular web browser (ie, not the one you configured to use localhost:4444), and point it to http://localhost:10888 {% endtrans %}
            -
          • Verify that the main page of your server eventually comes up in your browser. +
          • {% trans %}Verify that the main page of your server eventually comes up in your browser. {% endtrans %}
            -
          • You use the same procedure for using any local client program to access a remote I2P server - just get the base64 public key (called destination key) of the remote server, choose a local port to connect to the remote server, open the tunnel, and just connect with your client to your heart's content. +
          • {% trans %}You use the same procedure for using any local client program to access a remote I2P server - just get the base64 public key (called destination key) of the remote server, choose a local port to connect to the remote server, open the tunnel, and just connect with your client to your heart's content. {% endtrans %}
            -
          7 - Share your server details with others
          • Using an anonymous medium (eg the one of the I2P IRC servers or ugha's wiki), post your domain name (eg www.mynick.i2p as well as your destination key. Others will then be able to reach your server remotely, without either of you jeopardizing your anonymity. +
          {% trans %}7 - Share your server details with others{% endtrans %}
          • {% trans %}Using an anonymous medium (eg the one of the I2P IRC servers or ugha's wiki), post your domain name (eg www.mynick.i2p as well as your destination key. Others will then be able to reach your server remotely, without either of you jeopardizing your anonymity. {% endtrans %}
            -
          • Remember, you can go to What's on I2P and find the latest public keys linked to their URL. You should also post your own public key and URL their. However, you will want to do this anonymously, of course. Drupal.i2p.net is currently, as of this writing, only accessible from the net. So, to access the outside WWW anonymously from inside of I2P, you will need to start up your script called startSquid. Do it the same way you have been doing these other scripts. Reconfigure your browser to proxy on localhost:5555, as defined in the script, and when the script has generated it's keys, you can access the squid proxy. Put any WWW URL (such as Google or this i2p site) into your browser's address bar and you will be surfing the World Wide Web anonymously. Now you can safely post your public key, and no one can detect your IP address. +
          • {% trans %}Remember, you can go to What's on I2P and find the latest public keys linked to their URL. You should also post your own public key and URL their. However, you will want to do this anonymously, of course. Drupal.i2p.net is currently, as of this writing, only accessible from the net. So, to access the outside WWW anonymously from inside of I2P, you will need to start up your script called startSquid. Do it the same way you have been doing these other scripts. Reconfigure your browser to proxy on localhost:5555, as defined in the script, and when the script has generated it's keys, you can access the squid proxy. Put any WWW URL (such as Google or this i2p site) into your browser's address bar and you will be surfing the World Wide Web anonymously. Now you can safely post your public key, and no one can detect your IP address. {% endtrans %}
            -
          8 - Write Some Scripts To Handle All This Menial Nonsense
          • It would drive most people crazy, going through all these steps every time one sets up an I2P server, and/or deploys a client. +
          {% trans %}8 - Write Some Scripts To Handle All This Menial Nonsense{% endtrans %}
          • {% trans %}It would drive most people crazy, going through all these steps every time one sets up an I2P server, and/or deploys a client. {% endtrans %}
            -
          • Aum's website http://www.freenet.org.nz/i2p/ has a script called setupServer.py which automates all this nonsense into one simple command line . But I respect that people's tastes in user interfaces differ, and trying to write something which satisfies everyone's needs usually results in something so complex that it turns into newbie-repellent. +
          • {% trans %}Aum's website http://www.freenet.org.nz/i2p/ has a script called setupServer.py which automates all this nonsense into one simple command line . But I respect that people's tastes in user interfaces differ, and trying to write something which satisfies everyone's needs usually results in something so complex that it turns into newbie-repellent. {% endtrans %}
            -
          • So please feel free to use and/or customize setupServer.py to taste, or write your own in Python or another language. +
          • {% trans %}So please feel free to use and/or customize setupServer.py to taste, or write your own in Python or another language. {% endtrans %}
            -
          • Also, you may want to write a script which handles the startup of the I2P Router, the eepProxy, plus any and all tunnels you are using. I've got such a script called startEverything.sh, which gets launched at system startup. (Be sure to search this site for template scripts to automate your I2P commands. If I create a page for one, I'll try to remember to link it here. +
          • {% trans %}Also, you may want to write a script which handles the startup of the I2P Router, the eepProxy, plus any and all tunnels you are using. I've got such a script called startEverything.sh, which gets launched at system startup. (Be sure to search this site for template scripts to automate your I2P commands. If I create a page for one, I'll try to remember to link it here. {% endtrans %}
            -
          • Exercise for Windows users - port setupServer.py into a MS-DOS .BAT file. +
          • {% trans %}Exercise for Windows users - port setupServer.py into a MS-DOS .BAT file. { %endtrans % }
          {% endblock %} diff --git a/i2p2www/pages/site/misc/invisiblenet.html b/i2p2www/pages/site/misc/invisiblenet.html index 5c2c7a10..1d941e18 100644 --- a/i2p2www/pages/site/misc/invisiblenet.html +++ b/i2p2www/pages/site/misc/invisiblenet.html @@ -2,12 +2,13 @@ {% block title %}Old Documents{% endblock %} {% block content %} +{% trans -%} Following is a list of documents originally on www.invisiblenet.net/i2p/ and rescued via the Wayback Machine. They are quite dated and may or may not be accurate. However, the I2CP and I2NP documents in particular have some good information. - +{%- endtrans %}

          Index of /i2p

          Name                    Last modified       Size
          diff --git a/i2p2www/pages/site/misc/jbigi.html b/i2p2www/pages/site/misc/jbigi.html
          index 5a123c5b..e531c722 100644
          --- a/i2p2www/pages/site/misc/jbigi.html
          +++ b/i2p2www/pages/site/misc/jbigi.html
          @@ -3,12 +3,14 @@
           {% block lastupdated %}August 2011{% endblock %}
           {% block accuratefor %}0.8.7{% endblock %}
           {% block content %}
          -

          Overview

          -

          Using JNI (Java Native Interface), a bit of C code (thanks ugha!), a little +

          {% trans %}Overview{% endtrans %}

          +

          {% trans -%} +Using JNI (Java Native Interface), a bit of C code (thanks ugha!), a little manual work and a piece of chewing gum we have made several -cryptography operations quite a bit faster.

          +cryptography operations quite a bit faster. +{%- endtrans %}

          -

          +

          {% trans -%} The speedup comes from the super-fast GNU MP Bignum library (libgmp). We use a single function from libgmp - @@ -16,9 +18,9 @@ We use a single function from libgmp - as a replacement for the Java Math library's BigInteger modPow(). As modPow() is a significant computational portion of many crypto operations, this is of significant benefit. -

          +{%- endtrans %}

          -

          +

          {% trans -%} The standard I2P installation includes about 20 versions of the library for different platforms, each about 50KB, inside the jbigi.jar file. The initialization of the JBigI library, including CPU identification, selection, and extraction @@ -27,68 +29,79 @@ of the correct loadable module, is handled by the If no module is available for the current platform, the standard Java Math library's BigInteger modPow() is used. -

          +{%- endtrans %}

          -

          Rebuilding and Testing JBigI

          -Following are the instructions to build a new jbigi library for your own platform -and testing its performance. +

          {% trans %}Rebuilding and Testing JBigI{% endtrans %}

          +{% trans %}Following are the instructions to build a new jbigi library for your own platform +and testing its performance.{% endtrans %} -

          Requirements

          -

          This works on Linux, and with a few changes in build.sh probably also on +

          {% trans %}Requirements{% endtrans %}

          +

          {% trans -%} +This works on Linux, and with a few changes in build.sh probably also on other platforms. FreeBSD has also been reported to work too. On Kaffee the speedup is very small, because it already uses native BitInteger internally. Blackdown seems to cause strange errors. Because you are going to do -compilation, you need JDK; JRE won't work.

          -

          The required code is available in monotone database and the latest source tarball.

          -

          The GNU MP Bignum library (libgmp) needs to be installed, if it isn't +compilation, you need JDK; JRE won't work. +{%- endtrans %}

          +

          {% trans %}The required code is available in monotone database and the latest source tarball. {% endtrans %}

          +

          {% trans -%} +The GNU MP Bignum library (libgmp) needs to be installed, if it isn't included in your OS / distribution or installed already, it can be received from http://gmplib.org/#DOWNLOAD. Even if you have already installed it as binary, it might still be worth a try to compile GMP yourself, since then it will be able to use the specific instructions of your processor. The latest GMP may also be used instead of GMP 5.0.2, but it hasn't been tested by us. -

          +{%- endtrans %}

          -

          Step-by-step instructions

          +

          {% trans %}Step-by-step instructions{% endtrans %}

            -
          1. Look at your running environment on the logs.jsp page. -There should be one of two status messages for JBigI - either +
          2. {% trans %}Look at your running environment on the logs.jsp page. +There should be one of two status messages for JBigI - either{% endtrans %} -Locally optimized native BigInteger loaded from the library path +{% trans %}Locally optimized native BigInteger loaded from the library path{% endtrans %} -or +{% trans %}or{% endtrans %} -Native BigInteger library jbigi not loaded - using pure java. -If the native BitInteger library was NOT loaded, you definitely need to +{% trans %}Native BigInteger library jbigi not loaded - using pure java{% endtrans %}. +{% trans %}If the native BitInteger library was NOT loaded, you definitely need to compile your own. Certain platforms, such as OS X, OpenSolaris, and 64-bit systems, may require you to compile your own library. If the BigInteger library was loaded, do at least the next step to see -what your performance is. +what your performance is.{% endtrans %}
          3. -
          4. Look on http://localhost:7657/stats.jsp +
          5. {% trans -%} +Look on http://localhost:7657/stats.jsp to see what the lifetime average values for crypto.elGamal.decrypt and crypto.elGamal.encrypt are. The numbers are times in milliseconds. Copy these somewhere so you can compare them later on. The network average for encrypt time is about 20ms. If your encrypt time is less than 50ms for a relatively new processor, or less than 100ms for an older processor, and the native BigInteger library was loaded, you are probably fine. -
          6. -
          7. Get the latest released source code of I2P from +{%- endtrans %}
          8. +
          9. {% trans -%} +Get the latest released source code of I2P from the download page, or get the cutting-edge source -out of the monotone database mtn.i2p2.de
          10. -
          11. Inside the source tree change directory to: core/c/jbigi
          12. -
          13. Read the README file. +out of the monotone database mtn.i2p2.de +{%- endtrans %}
          14. +
          15. {$ trans %}Inside the source tree change directory to: core/c/jbigi{% endtrans %}
          16. +
          17. {% trans -%} +Read the README file. If you have a /usr/lib/libgmp.so file, you do not have to download GMP. Use the 'dynamic' argument to build.sh. Otherwise, you must download GMP version 5.0.2 from from http://gmplib.org/#DOWNLOAD, saving it to gmp-5.0.2.tar.bz2. If you decide to use a newer version, change the VER= line in core/c/jbigi/build.sh. -
          18. Take a look at build.sh, if your JAVA_HOME +{%- endtrans %} +
          19. {% trans -%} +Take a look at build.sh, if your JAVA_HOME environment variable is set and you are using Linux then it might just work. -Otherwise change the settings. Remember, you need the Java SDK installed.
          20. -
          21. Run build.sh (if you downloaded GMP) or +Otherwise change the settings. Remember, you need the Java SDK installed. +{%- endtrans %}
          22. +
          23. {% trans -%} +Run build.sh (if you downloaded GMP) or build.sh dynamic (if you have /usr/lib/libgmp.so).
            Maybe the build spewed out some errors of missing jni.h and jni_md.h files. Either copy these files from your java install into the core/c/jbigi/jbigi/include/ directory, @@ -97,24 +110,26 @@ You can run the build.sh from the core/c/ directory wh build all available jbigi libs into a jbigi.jar.
            A file named libjbigi.so should be created in the current directory. If this doesn't happen and/or you get errors then please report -them.
          24. -
          25. Follow the instructions in core/c/README to install the library and run +them. +{%- endtrans %}
          26. +
          27. {% trans -%} +Follow the instructions in core/c/README to install the library and run the speed test. Read the final lines of the speed test's output for some additional info, it will be something like this: -
            +{%- endtrans %}
             native run time:  5842ms ( 57ms each)
             java run time:   41072ms (406ms each)
             native = 14.223802103622907% of pure java time
             
            -If the native is indeed 5-7x faster (or more) then it looks all good. If not, please -report.
          28. -
          29. Copy libjbigi.so to your i2p directory
          30. -
          31. Restart your I2P programs.
          32. -
          33. On -http://localhost:7657/stats.jsp +{% trans %}If the native is indeed 5-7x faster (or more) then it looks all good. If not, please +report.{% endtrans %}
          34. +
          35. {% trans %}Copy libjbigi.so to your i2p directory{% endtrans %}
          36. +
          37. {% trans %}Restart your I2P programs.{% endtrans %}
          38. +
          39. {% trans %}On{% endtrans %} +{% trans %}http://localhost:7657/stats.jsp the crypto.elGamal.decrypt and crypto.elGamal.encrypt -should be a lot faster.
          40. +should be a lot faster.{% endtrans %}
          diff --git a/i2p2www/pages/site/misc/jrandom-awol.html b/i2p2www/pages/site/misc/jrandom-awol.html index a5ea40c6..d2c816d3 100644 --- a/i2p2www/pages/site/misc/jrandom-awol.html +++ b/i2p2www/pages/site/misc/jrandom-awol.html @@ -1,9 +1,9 @@ {% extends "global/layout.html" %} {% block title %}Jrandom's Announcement{% endblock %} {% block content %} -The following message was received in mid-November 2007. We have no further information -on jrandom's status. -

          +{% trans %}The following message was received in mid-November 2007. We have no further information +on jrandom's status.{% endtrans %} +

          {% trans -%} Subsequently, in an unrelated incident, the hosting company for all *.i2p.net servers (except forum.i2p.net) suffered a power outage on January 13, 2008, and the i2p.net servers did not fully return to service. @@ -11,10 +11,11 @@ As only jrandom has the credentials required to restore service, and he could not be contacted, we moved all public services to www.i2p2.de and related subdomains. -

          +{%- endtrans %}

          +

          {% trans -%} Approximately two months later, for unrelated reasons, forum.i2p.net was moved to forum.i2p2.de. -

          +{%- endtrans %}

           -----BEGIN PGP SIGNED MESSAGE-----
           Hash: SHA1
          diff --git a/i2p2www/pages/site/misc/manual-wrapper.html b/i2p2www/pages/site/misc/manual-wrapper.html
          index 3aba9b90..ddd83e52 100644
          --- a/i2p2www/pages/site/misc/manual-wrapper.html
          +++ b/i2p2www/pages/site/misc/manual-wrapper.html
          @@ -1,38 +1,39 @@
           {% extends "global/layout.html" %}
           {% block title %}Manually Installing the Java Wrapper{% endblock %}
           {% block content %}
          -

          Manually Installing the Java Wrapper

          +

          {% trans %}Manually Installing the Java Wrapper{% endtrans %}

          -

          The installation package for the I2P router comes +

          {% trans -%} +The installation package for the I2P router comes with a Java wrapper for the most common architectures. If your system is not supported by our installer—or if you want to update the wrapper to a newer version—the following steps describe installing the wrapper manually. -

          +{%- endtrans %}

            -
          • Check Tanuki Software's download page +
          • {% trans %}Check Tanuki Software's download page for your platform. Is your platform listed? If so, you're in luck! Download the most recent version of the Community Edition for your OS and - CPU and move to the next step
          • -
          • If your platform does not have an already compiled wrapper available, you + CPU and move to the next step{% endtrans %}
          • +
          • {% trans %}If your platform does not have an already compiled wrapper available, you may be able to compile it yourself. If you are willing to have a go at it, move - on to compiling the wrapper for your system.
          • + on to compiling the wrapper for your system.{% endtrans %}
          -

          Using existing binaries

          -In the steps below, $I2P means the location I2P was installed to. +

          {% trans %}Using existing binaries{% endtrans %}

          +{% trans %}In the steps below, $I2P means the location I2P was installed to.{% endtrans %}
          1. tar xzf wrapper-*.tar.gz
          2. cp wrapper*/bin/wrapper $I2P/i2psvc
          3. cp wrapper*/lib/wrapper.jar $I2P/lib
          4. cp wrapper*/lib/libwrapper.so $I2P/lib
          5. -
          6. Try to start I2P using $I2P/i2prouter start
          7. +
          8. {% trans %}Try to start I2P using {% endtrans %}$I2P/i2prouter start
          9. tail -f /tmp/wrapper.log and look for any problems.
          -If this did not work you'll need to use runplain.sh to start I2P. -

          Compiling from source

          -These steps worked to compile the wrapper for use on a mipsel system running Debian. The steps will need to be altered for your system. +{% trans %}If this did not work you'll need to use runplain.sh to start I2P.{% endtrans %} +

          {% trans %}Compiling from source{% endtrans %}

          +{% trans %}These steps worked to compile the wrapper for use on a mipsel system running Debian. The steps will need to be altered for your system.{% endtrans %}
            -
          1. Download the source archive for the community version of the wrapper from wrapper download page.
          2. -
          3. Extract the tarball
            +
          4. {% trans %}Download the source archive for the community version of the wrapper from wrapper download page.{% endtrans %}
          5. +
          6. {% trans %}Extract the tarball{% endtrans %}
                tar xzf wrapper_3.5.13_src.tar.gz
          7. Set environment variables ANT_HOME and JAVA_HOME. In Debian, one can
                export ANT_HOME=/usr/share/ant
            @@ -47,8 +48,8 @@ These steps worked to compile the wrapper for use on a mipsel system running Deb
          8. cp lib/wrapper.jar $I2P/lib
          9. cp lib/libwrapper.so $I2P/lib
      • -
      • Try to start I2P using $I2P/i2prouter start
      • +
      • {% trans %}Try to start I2P using $I2P/i2prouter start{% endtrans %}
      • tail -f /tmp/wrapper.log and look for any problems.
      • -If this did not work you'll need to use runplain.sh to start I2P. +{% trans %}If this did not work you'll need to use runplain.sh to start I2P.{% endtrans %} {% endblock %} diff --git a/i2p2www/pages/site/misc/minwww.html b/i2p2www/pages/site/misc/minwww.html index a4307741..658df060 100644 --- a/i2p2www/pages/site/misc/minwww.html +++ b/i2p2www/pages/site/misc/minwww.html @@ -1,13 +1,17 @@ {% extends "global/layout.html" %} {% block title %}minwww{% endblock %} -{% block content %}

        Here's an outline and rationale for a minimal WWW proxy app for use over -I2P.

        -

        HTTP operation over I2P using I2PTunnel. When the base SocketLibrary +{% block content %}

        {% trans -%} +Here's an outline and rationale for a minimal WWW proxy app for use over +I2P. +{%- endtrans %}

        +

        {% trans -%} +HTTP operation over I2P using I2PTunnel. When the base SocketLibrary is out, the only significant difference will be the 'wrapRequest' and 'unwrapRequest' will functionally be placed in the socketLibrary, not in the router (but later versions of the SocketLibrary will be able to use selective ACK and large window sizes, allowing more ACKs to be -skipped)

        +skipped) +{%- endtrans %}

         ---BROWSER--->-I2PTUNNEL--->-ROUTERA--->-ROUTERB--->-I2PTUNNEL--->-HTTPD----------
          1: openCon
        @@ -38,8 +42,10 @@ skipped)

        26: receiveACK receiveClose 27: sentSuccess
        -

        An optimized form, designed to handle only 128KB [1] files and pages, can -operate significantly faster:

        +

        {% trans -%} +An optimized form, designed to handle only 128KB [1] files and pages, can +operate significantly faster: +{%- endtrans %}

            BROWSER --> MinWWW   --> ROUTERA --> ROUTERB --> MinWWW    --> HTTPD
          1: openCon
        @@ -59,7 +65,8 @@ operate significantly faster:

        15: closeCon 16: closed
        -

        The difference in network load and latency is significant - this is +

        {% trans -%} +The difference in network load and latency is significant - this is essentially a UDP version of HTTP. On the normal web, we can't really do that, since most HTTP requests and responses are orders of magnitude larger than UDP packets functionally support, but in I2P, messages can be large. The savings @@ -67,20 +74,26 @@ for the network load comes from the fact that we don't need to send any ACK messages - rather than the earlier wrap/unwrap request (that bundles a DataMessage with a DeliveryStatusMessage to provide guaranteed delivery), the MinWWW proxy deals with resends (if necessary - in I2PTunnel today, there are no -resends).

        -

        The data that the MinWWW proxy and server need to wrap is trivial - when the +resends). +{%- endtrans %}

        +

        {% trans -%} +The data that the MinWWW proxy and server need to wrap is trivial - when the proxy wants to send "GET /", it prepends it with the I2P Destination sending the request, followed by a 4 byte request ID. The MinWWW server receives those requests, contacts the appropriate HTTPD, sends the request, waits for the response, and sends a reply to the MinWWW proxy containing the response, prefixed with the original request ID. That response is taken and passed back -to the browser and the connection is closed.

        -

        In addition, the MinWWW proxy can choose the MinWWW server to use from a +to the browser and the connection is closed. +{%- endtrans %}

        +

        {% trans -%} +In addition, the MinWWW proxy can choose the MinWWW server to use from a list, going through some round robin or other algorithm, so that there are multiple outproxies merged transparently. The bandwidth required for running one of these outproxies is also greatly reduced, since it will only handle 128KB -files (aka no one is going to be downloading porn, warez, etc).

        -

        The functionality /is/ limited, but 128KB of data is a lot for a single HTTP +files (aka no one is going to be downloading porn, warez, etc). +{%- endtrans %}

        +

        {% trans -%} +The functionality /is/ limited, but 128KB of data is a lot for a single HTTP request or response. The above diagrams are also unrealistic in their hops - ROUTERA will really never talk directly to ROUTERB. ROUTERA will send each of the messages through two additional outbound routers, then forwarded to @@ -88,16 +101,21 @@ two additional inbound routers to ROUTERB, so the lag there is significant - while the above only saves 11 steps, 8 of those steps need to traverse the entire tunnel path (4+ remote hops each time when tunnels are 2 remote hops in each stretch), leaving MinWWW with only two full traversals (one for the -request, one for the response), instead of 10.

        -

        Implementing the MinWWW proxy and server should be fairly easy - read an HTTP +request, one for the response), instead of 10. +{%- endtrans %}

        +

        {% trans -%} +Implementing the MinWWW proxy and server should be fairly easy - read an HTTP request from the client fully (perhaps only start out with HTTP GET, leaving HTTP POST for later), wrap the message, and wait for the response. The server in turn simply needs to parse the request to either open a socket or URL, send the request, wait for the response, and send it back through the network. -If someone were to implement this, it would be Good :)

        -

        [1] Why 128KB files? Currently I2CP allows functionally arbitrary message +If someone were to implement this, it would be Good :) +{%- endtrans %}

        +

        {% trans -%} +[1] Why 128KB files? Currently I2CP allows functionally arbitrary message size, but that's going to be going away since it involves either excessive memory overhead on intermediary routers, or additional implementation details to handle. I2PTunnel is currently limited to 128KB and hasn't been a burden, -so perhaps it could be increased to 256KB when the I2CP spec is updated)

        +so perhaps it could be increased to 256KB when the I2CP spec is updated) +{%- endtrans %}

        {% endblock %} diff --git a/i2p2www/pages/site/misc/myi2p.html b/i2p2www/pages/site/misc/myi2p.html index e78b1b93..a0b15440 100644 --- a/i2p2www/pages/site/misc/myi2p.html +++ b/i2p2www/pages/site/misc/myi2p.html @@ -1,12 +1,14 @@ {% extends "global/layout.html" %} {% block title %}MYI2P{% endblock %} -{% block content %}

        There has been discussion about a distributed blogging application for a few +{% block content %}

        {% trans -%} +There has been discussion about a distributed blogging application for a few months now called "MyI2P". While the original discussions were lost, we were able to retrieve a Google cache of it. It isn't pretty, but it includes the basic overview and some discussion -that ensued.

        +that ensued.{%- endtrans %}

        -

        The application itself is not yet implemented, and the ideas behind it have +

        {% trans -%} +The application itself is not yet implemented, and the ideas behind it have been made less ambitious over time, but they are still valid and the current plan is to have the core MyI2P functionality available along side the I2P 1.0 release. That will include a distributed address book @@ -19,12 +21,15 @@ system using a reduced and secured subset of bbcode to essentially provide an anonymous LiveJournal with a 'friends list' and transparent access control (authenticated by the I2P -datagrams with rules defined based on the address book).

        +datagrams with rules defined based on the address book). +{%- endtrans %}

        -

        Additional functionality, such as integration with a DHT backing store or +

        {% trans -%} +Additional functionality, such as integration with a DHT backing store or swarming file transfers for 'attachments' can be added later. Email may or may not get in the first pass either, though its implementation is essentially just a blog entry with private access, so perhaps some UI designer can come up with something. Exporting the data to RSS or access through ATOM will be an option -down the road as well.

        +down the road as well. +{%- endtrans %}

        {% endblock %} diff --git a/i2p2www/pages/site/misc/ratestats.html b/i2p2www/pages/site/misc/ratestats.html index 83cd79b7..7ad450c1 100644 --- a/i2p2www/pages/site/misc/ratestats.html +++ b/i2p2www/pages/site/misc/ratestats.html @@ -1,15 +1,15 @@ {% extends "global/layout.html" %} {% block title %}RateStat list{% endblock %} {% block content %} -

        RateStat list

        -

        I2P enables the collection of a wide range of rates, the list published here is accurate as of I2P version 0.8.7.

        -

        The list was gathered using the following command in the top directory of the branch i2p.i2p, +

        {% trans %}RateStat list{% endtrans %}

        +

        {% trans %}I2P enables the collection of a wide range of rates, the list published here is accurate as of I2P version 0.8.7.{% endtrans %}

        +

        {% trans %}The list was gathered using the following command in the top directory of the branch i2p.i2p,

         find . -name '*' -print | xargs --max-args=3 grep -n --color=auto addRateData | awk 'match($0, /addRateData\(\"(.*)\"/, a) {print a[1]}' | awk '!_[$0]++' | sort > rates.txt
         
        -All options aren't needed, but it works. +All options aren't needed, but it works.{% endtrans %}

        -

        RateStats

        +

        {% trans %}RateStats{% endtrans %}

         bwLimiter.inboundDelayedTime
         bwLimiter.outboundDelayedTime
        diff --git a/i2p2www/pages/site/misc/transition-guide.html b/i2p2www/pages/site/misc/transition-guide.html
        index 4480f02d..119eb5ea 100644
        --- a/i2p2www/pages/site/misc/transition-guide.html
        +++ b/i2p2www/pages/site/misc/transition-guide.html
        @@ -1,6 +1,7 @@
         {% extends "global/layout.html" %}
         {% block title %}Monotone{% endblock %}
        -{% block content %}

        The I2P sourcecode is kept in several distributed monotone repositories. +{% block content %}

        {% trans -%} +The I2P sourcecode is kept in several distributed monotone repositories. See the Monotone website for information on monotone. @@ -9,17 +10,17 @@ See for more information on how to get started and check out the source anonymously. There is also a quick-start guide on the new developer's page. -

        +{%- endtrans %}

        -

        +

        {% trans -%} If you want to get the source non-anonymously, pull from the public server mtn.welterde.de. The i2p source code branch is "i2p.i2p". -

        +{%- endtrans %}

        -

        Guide

        -

        +

        {% trans %} Guide {% endtrans %}

        +

        {%- trans %} The following is a detailed guide by Complication. -

        +{%- endtrans %}

           {% include "site/misc/transition-guide.txt" %}
         
        diff --git a/i2p2www/pages/site/misc/upgrade-0.6.1.30.html b/i2p2www/pages/site/misc/upgrade-0.6.1.30.html index 0d5b3e2c..91dd2d46 100644 --- a/i2p2www/pages/site/misc/upgrade-0.6.1.30.html +++ b/i2p2www/pages/site/misc/upgrade-0.6.1.30.html @@ -3,21 +3,24 @@ {% block content %}

        • -2008-02-05: Upgrading from 0.6.1.30 and Earlier Releases -

        +2008-02-05: {% trans %}Upgrading from 0.6.1.30 and Earlier Releases{% endtrans %} +

        +

        {% trans -%} Since i2p's lead developer has gone AWOL, we do not have his update signing key or access to www.i2p[.net] or dev.i2p[.net]. Complication and zzz have generated new signing keys, and they and Amiga are providing update file hosting. These changes must be configured in your router to take effect. -

        +{%- endtrans %}

        +

        {% trans -%} Make the following configuration changes and your router will automatically install the latest release. -

        +{%- endtrans %}

        +

        {% trans -%} We recommend the automated process as it will verify the key of the signed update file. If you do not make these changes, -you may manually download the i2pupdate.zip file from +you may manually download the i2pupdate.zip file from{% endtrans %} the download page.

        1. On @@ -25,7 +28,7 @@ On
          1. Change the News URL to: http://complication.i2p/news.xml
          2. -Select ONE of the following new Update URLs at random and enter it into the Update URL box: +{% trans %}Select ONE of the following new Update URLs at random and enter it into the Update URL box: {% endtrans %}
            http://amiga.i2p/i2p/i2pupdate.sud
            http://complication.i2p/i2p/i2pupdate.sud
            http://stats.i2p/i2p/i2pupdate.sud @@ -44,17 +47,18 @@ Add the following line:
          3. Click "Apply"
          -
        2. -You are now ready to automatically receive the release update file, +
        3. {% trans -%}You are now ready to automatically receive the release update file, either by setting your update policy to "download and install" or by clicking on the "update available" link when it appears. -
        -

        +{%- endtrans %} +

        +

        {% trans -%} If you would like to verify the trusted update keys, they are also posted and signed here. Thank you for your support during this transition. For help please contact us on #i2p. -

        +{%- endtrans %}

        +

        {% trans -%} Amiga, Complication, welterde, zzz -

        +{%- endtrans %}

        {% endblock %} From c78d3bbb5799b8bba3843444722d2ac50302b780 Mon Sep 17 00:00:00 2001 From: str4d Date: Fri, 1 Feb 2013 22:20:09 +0000 Subject: [PATCH 373/650] Tag tweaks and URL fixes for misc/* --- i2p2www/pages/site/misc/clt.html | 19 +- i2p2www/pages/site/misc/cvs.html | 5 +- .../pages/site/misc/i2ptunnel-migration.html | 34 ++- .../pages/site/misc/i2ptunnel-services.html | 268 +++++++++++------- i2p2www/pages/site/misc/invisiblenet.html | 6 +- i2p2www/pages/site/misc/jbigi.html | 40 +-- i2p2www/pages/site/misc/jrandom-awol.html | 16 +- i2p2www/pages/site/misc/manual-wrapper.html | 57 ++-- i2p2www/pages/site/misc/minwww.html | 14 +- i2p2www/pages/site/misc/myi2p.html | 12 +- i2p2www/pages/site/misc/ratestats.html | 12 +- i2p2www/pages/site/misc/transition-guide.html | 9 +- i2p2www/pages/site/misc/upgrade-0.6.1.30.html | 65 +++-- 13 files changed, 337 insertions(+), 220 deletions(-) diff --git a/i2p2www/pages/site/misc/clt.html b/i2p2www/pages/site/misc/clt.html index f6d99154..f3264513 100644 --- a/i2p2www/pages/site/misc/clt.html +++ b/i2p2www/pages/site/misc/clt.html @@ -1,11 +1,18 @@ {% extends "global/layout.html" %} -{% block title %}I2P at CLT and PetCon 2009.1{% endblock %} -{% block content %}{% trans -%}

        +{% block title %}{% trans %}I2P at CLT and PetCon 2009.1{% endtrans %}{% endblock %} +{% block content %} +

        {% trans -%} Members of I2P will held a talk at CLT and PetCon 2009.1 -Two members of the I2P team will be at two forthcoming Linux day and security convention.

        -On 14th march of 2009 there will be a short talk about general introduction to I2P at the Chemnitz Linux Tag 2009 hold by echelon. -Echelon and some other members of the I2P family will attend to the Linux meeting the whole two days (Saturday and Sunday) and will be recognizable as I2P family members. Meet them, ask them your questions, show them your props! Show your support!

        -Just 10 days later the Privacy and Data Security convention in Dresden will take place. +Two members of the I2P team will be at two forthcoming Linux day and security convention. +{%- endtrans %}

        + +

        {% trans chemnitzer='http://chemnitzer.linux-tage.de/2009/info/' -%} +On 14th march of 2009 there will be a short talk about general introduction to I2P at the Chemnitz Linux Tag 2009 hold by echelon. +Echelon and some other members of the I2P family will attend to the Linux meeting the whole two days (Saturday and Sunday) and will be recognizable as I2P family members. Meet them, ask them your questions, show them your props! Show your support! +{%- endtrans %}

        + +

        {% trans petcon='http://www.pet-con.org/index.php/PET_Convention_2009.1' -%} +Just 10 days later the Privacy and Data Security convention in Dresden will take place. Again, echelon will attend this event and hold a short talk about general introduction to I2P. Another talk about the profiling by the I2P clients will be held. {%- endtrans %}

        diff --git a/i2p2www/pages/site/misc/cvs.html b/i2p2www/pages/site/misc/cvs.html index 05ca9df6..554cd63c 100644 --- a/i2p2www/pages/site/misc/cvs.html +++ b/i2p2www/pages/site/misc/cvs.html @@ -1,7 +1,8 @@ {% extends "global/layout.html" %} {% block title %}CVS{% endblock %} -{% block content %}

        {% trans -%} -The I2P sourcecode was kept in a CVS repository. Nowadays it is kept in an Monotone repository. +{% block content %} +

        {% trans monotone=site_url('get-involved/guides/monotone') -%} +The I2P sourcecode was kept in a CVS repository. Nowadays it is kept in a Monotone repository. For those who aren't very familiar with CVS, there is a fantastic book on the subject (developers only need to deal with the first chapter - "An Overview of diff --git a/i2p2www/pages/site/misc/i2ptunnel-migration.html b/i2p2www/pages/site/misc/i2ptunnel-migration.html index b585bc3d..ab32d273 100644 --- a/i2p2www/pages/site/misc/i2ptunnel-migration.html +++ b/i2p2www/pages/site/misc/i2ptunnel-migration.html @@ -1,6 +1,7 @@ {% extends "global/layout.html" %} -{% block title %}i2ptunnel migration{% endblock %} -{% block content %}

        {% trans -%}I2PTunnel migration:{%- endtrans %}

        +{% block title %}{% trans %}I2PTunnel migration{% endtrans %}{% endblock %} +{% block content %} +

        {% trans %}I2PTunnel migration{% endtrans %}

        {% trans -%} After upgrading to the new architecture, you'll have to do a @@ -14,19 +15,21 @@ old clientApp configuration, you had:

        {% trans -%}To provide that same functionality on the new web architecture:{%- endtrans %}

          -
        • Jump to http://localhost:7657/i2ptunnel/
        • -
        • Click on Add new: [Server tunnel] "GO"
        • +
        • {% trans url='http://localhost:7657/i2ptunnel/' %}Jump to {{ url }}{% endtrans %}
        • +
        • {% trans %}Click on Add new: [Server tunnel] "GO"{% endtrans %}
          • -
          • For the name: "eepsite"
          • -
          • For the description: "My eepsite, isn't it pretty?"
          • -
          • For the target host: localhost
          • -
          • For the target port: 80
          • -
          • For the private key file: path to "myWebPriv.dat"
            - (it is recommended to copy that .dat to your new install dir)
          • -
          • Check the "Start automatically?" checkbox [X]
          • -
          • Click "Save"
          • +
          • {% trans %}For the name: "eepsite"{% endtrans %}
          • +
          • {% trans %}For the description: "My eepsite, isn't it pretty?"{% endtrans %}
          • + For the target host:{% endtrans %} localhost +
          • {% trans %}For the target port:{% endtrans %} 80
          • +
          • {% trans -%} +For the private key file: path to "myWebPriv.dat"
            +(it is recommended to copy that .dat to your new install dir) +{%- endtrans %}
          • +
          • {% trans %}Check the "Start automatically?" checkbox{% endtrans %} [X]
          • +
          • {% trans %}Click "Save"{% endtrans %}
        • -
        • It will come back saying:
          +
        • {% trans %}It will come back saying:{% endtrans %}
             * Not overwriting existing private keys in /usr/home/jrandom/routers/i2p/myWebPriv.dat
             * Ready!
          @@ -36,7 +39,7 @@ old clientApp configuration, you had:
           

          {% trans -%} That's it! Creating a new I2PTunnel server works the same way too, except you don't need to "copy the old file", obviously. Behind the scenes, it is all driven -by the i2ptunnel.config file, which you may modify externally (if you do, +by the i2ptunnel.config file, which you may modify externally (if you do, hit "Reload config" on the I2PTunnel web page, which will tear down all of your existing tunnels and rebuild new ones) {%- endtrans %}

          @@ -47,4 +50,5 @@ into the network before you are able to use the /i2ptunnel/ web interface. It will say "Please be patient" if you try to beforehand, which means that it is still trying to build the necessary I2PTunnel sessions it has been configured to create. -{%- endtrans %}

          {% endblock %} +{%- endtrans %}

          +{% endblock %} diff --git a/i2p2www/pages/site/misc/i2ptunnel-services.html b/i2p2www/pages/site/misc/i2ptunnel-services.html index 5fec5bc5..c9c6f6cf 100644 --- a/i2p2www/pages/site/misc/i2ptunnel-services.html +++ b/i2p2www/pages/site/misc/i2ptunnel-services.html @@ -1,112 +1,180 @@ {% extends "global/layout.html" %} -{% block title %}i2ptunnel services{% endblock %} -{% block content %}{% trans -%} +{% block title %}{% trans %}I2PTunnel services{% endtrans %}{% endblock %} +{% block content %} +

          {% trans -%} Below is quick copy of aum's eepsite deployment guide. -{%- endtrans %}
          +{%- endtrans %}

          -
          -{% trans -%} -1. - Deploy a local server -{%- endtrans %}
          • {% trans %}For simplicity's sake, we will walk through the setup of a web server; however, this procedure is the same regardless what protocol of servers and/or clients you are setting up. {% endtrans %} -
            +{% trans %}1. - Deploy a local server{%- endtrans %} +
              +
            • {% trans -%} +For simplicity's sake, we will walk through the setup of a web server; however, this procedure is the same regardless what protocol of servers and/or clients you are setting up. +{%- endtrans %}
            • +
            • {% trans -%} +I recommend the Tiny Httpd web server, thttpd, (windows version available on site) although you can use anything that you feel comfortable with. +{%- endtrans %}
            • +
            • {% trans -%} +Another more robust option would be to use EasyPHP, which is also open source. It comes with PHP, PHPmyadmin, mySQL, and Apache web server. For newbies who have no experience setting up and hosting content over servers, see the hosting page for help. +{%- endtrans %}
            • +
            • {% trans -%} +With the web server you've chosen, configure it to listen on a port of your choice, and serve its documents from a directory of your choice. For this example, we'll assume port 10880. +{%- endtrans %}
            • +
            • {% trans -%} +Make sure your firewall is set up so that you cannot receive incoming connections on this port (which would breach your anonymity). +{%- endtrans %}
            • +
            • {% trans -%} +Test the webserver, by pointing your normal browser (the one with the "direct connection") at http://localhost:10880 (changing the 10880 to the port number you have chosen). +{%- endtrans %}
            • +
            • {% trans -%} +Once your webserver is working, and you can access it locally with your browser, continue to the next step. +{%- endtrans %}
            • +
            -
          • {% trans %}I recommend the Tiny Httpd web server , thttpd, (windows version available on site) although you can use anything that you feel comfortable with.{% endtrans %} -
            -
          • {% trans %}Another more robust option would be to use EasyPHP, which is also open source. It comes with PHP, PHPmyadmin, mySQL, and Apache web server. For newbies who have no experience setting up and hosting content over servers, see the hosting page for help. {% endtrans %} -
            -
          • {% trans %}With the web server you've chosen, configure it to listen on a port of your choice, and serve its documents from a directory of your choice. For this example, we'll assume port 10880. {% endtrans %} -
            -
          • {% trans %}Make sure your firewall is set up so that you cannot receive incoming connections on this port (which would breach your anonymity). {% endtrans %} -
            -
          • {% trans %}Test the webserver, by pointing your normal browser (the one with the "direct connection") at http://localhost:10880 (changing the 10880 to the port number you have chosen). {% endtrans %} -
            -
          • {% trans %}Once your webserver is working, and you can access it locally with your browser, continue to the next step. {% endtrans %} -
            -
          {% trans %}2 - Generate an I2P Destination Keypair {% endtrans %}
          • {% trans %}I2P does not deal in IP addresses. To protect your anonymity, it deals in unique addresses called destination keys. {% endtrans %} +{% trans %}2 - Generate an I2P Destination Keypair{% endtrans %} +
              +
            • {% trans -%} +I2P does not deal in IP addresses. To protect your anonymity, it deals in unique addresses called destination keys. +{%- endtrans %}
            • +
            • {% trans -%} +A destination key works a lot like a regular IP address, except that it can't be traced to your IP address or physical location. When users place a request to speak with you, your gateways are the ones that answer for you. So the requesting user can only know the IP address of your gateways. However, gateways don't know your IP address, because gateways are the last nodes on your tunnels, and you anonymously create tunnels by way of garlic routing. (So gateways are like puppets that can't see their masters, and everyone communicates through these puppets) +{%- endtrans %}
            • +
            • {% trans -%} +To deploy a server on I2P, you create a destination keypair. You use the private key to authenticate your server when connecting it to I2P, and you make the public key (aka destination key) known publicly, so others can connect to your server. (indirectly, through your gateways) +{%- endtrans %}
            • +
            • {% trans -%} +Each service you run on I2P requires a different keypair. +{%- endtrans %}
            • +
            • {% trans -%} +To generate your keypair, type the command: java -jar lib/i2ptunnel.jar -nogui -e "genkeys myWebPrivKey.dat myWebPubKey.dat" (all on one line) +{%- endtrans %}
            • +
            • {% trans -%} +In windows, to generate your keypair, type the command: java -jar lib/i2ptunnel.jar -nogui -e "genkeys myWebPrivKey.dat myWebPubKey.dat" +{%- endtrans %}
            • +
            • {% trans -%} +The filenames myWebPrivKey.dat and myWebPubKey.dat are arbitrary - choose whatever you want here, as long as you understand your own choices. +{%- endtrans %}
            • +
            • {% trans -%} +We now need to export your public key into base64 format, which you will share with others. +{%- endtrans %}
            • +
            • {% trans -%} +To convert your myWebPubKey.dat file into shareable base64, type the command java -cp lib/i2p.jar net.i2p.data.Base64 encode myWebPubKey.dat > myWebPubKey.txt (all on one line). +{%- endtrans %}
            • +
            • {% trans -%} +This file you have just generated, myWebPubKey.txt, contains a long base64 string (516 chars at last count), which we call a destination key. All you need to know about this string for now is that it allows remote clients to uniquely pinpoint and connect to your server, just the same way as an IP address allows remote machines to pinpoint and connect to your machine. +{%- endtrans %}
            • +
            • {% trans -%} +However, in contrast to an IP address, there is no way to trace your machine's physical location - even though your server can be addressed via I2P, your IP address cannot be traced or associated with this destination key. +{%- endtrans %}
            • +
            -
            -
          • {% trans %}A destination key works a lot like a regular IP address, except that it can't be traced to your IP address or physical location. When users place a request to speak with you, your gateways are the ones that answer for you. So the requesting user can only know the IP address of your gateways. However, gateways don't know your IP address, because gateways are the last nodes on your tunnels, and you anonymously create tunnels by way of garlic routing. (So gateways are like puppets that can't see their masters, and everyone communicates through these puppets) {% endtrans %} -
            -
          • {% trans %}To deploy a server on I2P, you create a destination keypair. You use the private key to authenticate your server when connecting it to I2P, and you make the public key (aka destination key) known publicly, so others can connect to your server. (indirectly, through your gateways) {% endtrans %} -
            -
          • {% trans %}Each service you run on I2P requires a different keypair. {% endtrans %} -
            -
          • {% trans %}To generate your keypair, type the command: java -jar lib/i2ptunnel.jar -nogui -e "genkeys myWebPrivKey.dat myWebPubKey.dat" (all on one line) {% endtrans %} -
            -
          • {% trans %}In windows, to generate your keypair, type the command: java -jar lib/i2ptunnel.jar -nogui -e "genkeys myWebPrivKey.dat myWebPubKey.dat" {% endtrans %} -
            -
          • {% trans %}The filenames myWebPrivKey.dat and myWebPubKey.dat are arbitrary - choose whatever you want here, as long as you understand your own choices. {% endtrans %} -
            -
          • {% trans %} We now need to export your public key into base64 format, which you will share with others. {% endtrans %} -
            -
          • {% trans %}To convert your myWebPubKey.dat file into shareable base64, type the command java -cp lib/i2p.jar net.i2p.data.Base64 encode myWebPubKey.dat > myWebPubKey.txt (all on one line). {% endtrans %} +{% trans %}3 - Open a 'Tunnel' from I2P To Your Server{% endtrans %} +
              +
            • {% trans -%} +For clients elsewhere in I2P to be able to access your server, you must run a 'bridge' or 'tunnel', which takes connections from these clients and forwards them to your local server. +{%- endtrans %}
            • +
            • {% trans -%} +To activate such a tunnel, type the command java -jar lib/i2ptunnel.jar -nogui -e "server localhost 10880 myWebPrivKey.dat" (all one line). +{%- endtrans %}
            • +
            • {% trans -%} +If you used different filenames or port number earlier on, change these accordingly +{%- endtrans %}
            • +
            • {% trans -%} +Windows users, remember to replace apostrophes with double quotes. Thus: java -jar lib/i2ptunnel.jar -nogui -e "server localhost 10880 myWebPrivKey.dat" +{%- endtrans %}
            • +
            • {% trans -%} +Within a few seconds, the 'tunnel' should now be active, and remote clients should be able to reach your server anonymously. Remember to let your router "warm up" before opening clients to it. +{%- endtrans %}
            • +
            -
            -
          • {% trans %}This file you have just generated, myWebPubKey.txt, contains a long base64 string (516 chars at last count), which we call a destination key. All you need to know about this string for now is that it allows remote clients to uniquely pinpoint and connect to your server, just the same way as an IP address allows remote machines to pinpoint and connect to your machine. {% endtrans %} -
            -
          • {% trans %}However, in contrast to an IP address, there is no way to trace your machine's physical location - even though your server can be addressed via I2P, your IP address cannot be traced or associated with this destination key. {% endtrans %} -
            -
          {% trans %}3 - Open a 'Tunnel' from I2P To Your Server{% endtrans %}
          • {% trans %}For clients elsewhere in I2P to be able to access your server, you must run a 'bridge' or 'tunnel', which takes connections from these clients and forwards them to your local server {% endtrans %} -
            -
          • {% trans %}To activate such a tunnel, type the command java -jar lib/i2ptunnel.jar -nogui -e "server localhost 10880 myWebPrivKey.dat" (all one line) {% endtrans %} -
            -
          • {% trans %}If you used different filenames or port number earlier on, change these accordingly {% endtrans %} -
            -
          • {% trans %}Windows users, remember to replace apostrophes with double quotes. Thus: java -jar lib/i2ptunnel.jar -nogui -e "server localhost 10880 myWebPrivKey.dat" {% endtrans %} -
            -
          • {% trans %}Within a few seconds, the 'tunnel' should now be active, and remote clients should be able to reach your server anonymously. Remember to let your router "warm up" before opening clients to it. {% endtrans %} -
            -
          {% trans %}4 - Update Your hosts.txt File {% endtrans %}
          • {% trans %}To test your own server locally, you'll need to create an entry in your hosts.txt file, so I2P can translate the simple URL you place in the browser's address bar into the full public key text needed to find your server. {% endtrans %} +{% trans %}4 - Update Your hosts.txt File {% endtrans %} +
              +
            • {% trans -%} +To test your own server locally, you'll need to create an entry in your hosts.txt file, so I2P can translate the simple URL you place in the browser's address bar into the full public key text needed to find your server. +{%- endtrans %}
            • +
            • {% trans -%} +Edit your hosts.txt, and add the line myserver.i2p=blahblahblah, where myserver.i2p is an I2P 'domain' you want to associate with your site, and the blahblahblah is the text of the base64 public key you created earlier in the file myWebPubKey.txt +{%- endtrans %}
            • +
            • {% trans -%} +With this in place, you and others can reach your server with the simple domain name myserver.i2p in the browser's address bar. +{%- endtrans %}
            • +
            -
            -
          • {% trans %}Edit your hosts.txt, and add the line myserver.i2p=blahblahblah, where myserver.i2p is an I2P 'domain' you want to associate with your site, and the blahblahblah is the text of the base64 public key you created earlier in the file myWebPubKey.txt {% endtrans %} -
            -
          • {% trans %}With this in place, you and others can reach your server with the simple domain name myserver.i2p in the browser's address bar. {% endtrans %} -
            -
          {% trans %}5 - Surf Your Site Within I2P{% endtrans %}
          • {% trans %}Using your secondary browser - the one you earlier configured to use localhost:4444 as a proxy - point this browser to the address http://myserver.i2p{% endtrans %} -
            -
          • {% trans %}You should see the main page of your webserver come up. {% endtrans %} -
            -
          {% trans %}6 - Create a Local Client Tunnel Connection {% endtrans %}
          • {% trans %}We now have to think beyond just web servers. {% endtrans %} -
            -
          • {% trans %}As you grow into I2P and get more of a 'feel' for it, you will want to use all manner of servers and clients. {% endtrans %} -
            +{% trans %}5 - Surf Your Site Within I2P{% endtrans %} +
              +
            • {% trans -%} +Using your secondary browser - the one you earlier configured to use localhost:4444 as a proxy - point this browser to the address http://myserver.i2p +{%- endtrans %}
            • +
            • {% trans -%} +You should see the main page of your webserver come up. +{%- endtrans %}
            • +
            -
          • {% trans %}The beauty of I2P is that it allows standard Internet clients and servers for most protocols to be transparently 'tunneled' through the anonymous network. {% endtrans %} -
            -
          • {% trans %}You can run mailservers/clients, nameservers/clients, newsservers/clients - almost anything at all - perhaps even FTP in passive mode. {% endtrans %} -
            -
          • {% trans %}Now, we'll create a client tunnel. This is like the server tunnel we created earlier, but works in reverse. It listens to a port on your local machine; your local client connects to this port; the connection gets forwarded through I2P to the service on the other end. {% endtrans %} -
            -
          • {% trans %}To open your client tunnel for your server, type the command java -jar lib/i2ptunnel.jar -nogui -e "config localhost 7654" -e "client 10888 textofbase64key" (all one line). {% endtrans %} -
            -
          • {% trans %}The port 10888 is arbitrary - it just needs to be something other than the physical port your server is listening on. {% endtrans %} -
            -
          • {% trans %}textofbase64key is simply the contents of the public key text file myWebPubKey.txt, reproduced fully on one line (alternately, instead of textofbase64key, you can specify the name from your hosts.txt - e.g. myserver.i2p) {% endtrans %} -
            -
          • {% trans %}Within a minute or two of launching this command, the client tunnel from your local machine into I2P will be open and ready for use. {% endtrans %} -
            -
          • {% trans %}Point your regular web browser (ie, not the one you configured to use localhost:4444), and point it to http://localhost:10888 {% endtrans %} +{% trans %}6 - Create a Local Client Tunnel Connection {% endtrans %} +
              +
            • {% trans -%} +We now have to think beyond just web servers. +{%- endtrans %}
            • +
            • {% trans -%} +As you grow into I2P and get more of a 'feel' for it, you will want to use all manner of servers and clients. +{%- endtrans %}
            • +
            • {% trans -%} +The beauty of I2P is that it allows standard Internet clients and servers for most protocols to be transparently 'tunneled' through the anonymous network. +{%- endtrans %}
            • +
            • {% trans -%} +You can run mailservers/clients, nameservers/clients, newsservers/clients - almost anything at all - perhaps even FTP in passive mode. +{%- endtrans %}
            • +
            • {% trans -%} +Now, we'll create a client tunnel. This is like the server tunnel we created earlier, but works in reverse. It listens to a port on your local machine; your local client connects to this port; the connection gets forwarded through I2P to the service on the other end. +{%- endtrans %}
            • +
            • {% trans -%} +To open your client tunnel for your server, type the command java -jar lib/i2ptunnel.jar -nogui -e "config localhost 7654" -e "client 10888 textofbase64key" (all one line). +{%- endtrans %}
            • +
            • {% trans -%} +The port 10888 is arbitrary - it just needs to be something other than the physical port your server is listening on. +{%- endtrans %}
            • +
            • {% trans -%} +textofbase64key is simply the contents of the public key text file myWebPubKey.txt, reproduced fully on one line (alternately, instead of textofbase64key, you can specify the name from your hosts.txt - e.g. myserver.i2p) +{%- endtrans %}
            • +
            • {% trans -%} +Within a minute or two of launching this command, the client tunnel from your local machine into I2P will be open and ready for use. +{%- endtrans %}
            • +
            • {% trans -%} +Point your regular web browser (ie, not the one you configured to use localhost:4444), and point it to http://localhost:10888 +{%- endtrans %}
            • +
            • {% trans -%} +Verify that the main page of your server eventually comes up in your browser. +{%- endtrans %}
            • +
            • {% trans -%} +You use the same procedure for using any local client program to access a remote I2P server - just get the base64 public key (called destination key) of the remote server, choose a local port to connect to the remote server, open the tunnel, and just connect with your client to your heart's content. +{%- endtrans %}
            • +
            -
            -
          • {% trans %}Verify that the main page of your server eventually comes up in your browser. {% endtrans %} -
            -
          • {% trans %}You use the same procedure for using any local client program to access a remote I2P server - just get the base64 public key (called destination key) of the remote server, choose a local port to connect to the remote server, open the tunnel, and just connect with your client to your heart's content. {% endtrans %} -
            -
          {% trans %}7 - Share your server details with others{% endtrans %}
          • {% trans %}Using an anonymous medium (eg the one of the I2P IRC servers or ugha's wiki), post your domain name (eg www.mynick.i2p as well as your destination key. Others will then be able to reach your server remotely, without either of you jeopardizing your anonymity. {% endtrans %} -
            -
          • {% trans %}Remember, you can go to What's on I2P and find the latest public keys linked to their URL. You should also post your own public key and URL their. However, you will want to do this anonymously, of course. Drupal.i2p.net is currently, as of this writing, only accessible from the net. So, to access the outside WWW anonymously from inside of I2P, you will need to start up your script called startSquid. Do it the same way you have been doing these other scripts. Reconfigure your browser to proxy on localhost:5555, as defined in the script, and when the script has generated it's keys, you can access the squid proxy. Put any WWW URL (such as Google or this i2p site) into your browser's address bar and you will be surfing the World Wide Web anonymously. Now you can safely post your public key, and no one can detect your IP address. {% endtrans %} -
            -
          {% trans %}8 - Write Some Scripts To Handle All This Menial Nonsense{% endtrans %}
          • {% trans %}It would drive most people crazy, going through all these steps every time one sets up an I2P server, and/or deploys a client. {% endtrans %} -
            -
          • {% trans %}Aum's website http://www.freenet.org.nz/i2p/ has a script called setupServer.py which automates all this nonsense into one simple command line . But I respect that people's tastes in user interfaces differ, and trying to write something which satisfies everyone's needs usually results in something so complex that it turns into newbie-repellent. {% endtrans %} +{% trans %}7 - Share your server details with others{% endtrans %} +
              +
            • {% trans -%} +Using an anonymous medium (eg the one of the I2P IRC servers or ugha's wiki), post your domain name (eg www.mynick.i2p as well as your destination key. Others will then be able to reach your server remotely, without either of you jeopardizing your anonymity. +{%- endtrans %}
            • +
            • {% trans -%} +Remember, you can go to What's on I2P and find the latest public keys linked to their URL. You should also post your own public key and URL their. However, you will want to do this anonymously, of course. Drupal.i2p.net is currently, as of this writing, only accessible from the net. So, to access the outside WWW anonymously from inside of I2P, you will need to start up your script called startSquid. Do it the same way you have been doing these other scripts. Reconfigure your browser to proxy on localhost:5555, as defined in the script, and when the script has generated it's keys, you can access the squid proxy. Put any WWW URL (such as Google or this i2p site) into your browser's address bar and you will be surfing the World Wide Web anonymously. Now you can safely post your public key, and no one can detect your IP address. +{%- endtrans %}
            • +
            -
            -
          • {% trans %}So please feel free to use and/or customize setupServer.py to taste, or write your own in Python or another language. {% endtrans %} -
            -
          • {% trans %}Also, you may want to write a script which handles the startup of the I2P Router, the eepProxy, plus any and all tunnels you are using. I've got such a script called startEverything.sh, which gets launched at system startup. (Be sure to search this site for template scripts to automate your I2P commands. If I create a page for one, I'll try to remember to link it here. {% endtrans %} -
            -
          • {% trans %}Exercise for Windows users - port setupServer.py into a MS-DOS .BAT file. { %endtrans % } -
            +{% trans %}8 - Write Some Scripts To Handle All This Menial Nonsense{% endtrans %} +
              +
            • {% trans -%} +It would drive most people crazy, going through all these steps every time one sets up an I2P server, and/or deploys a client. +{%- endtrans %}
            • +
            • {% trans -%} +Aum's website http://www.freenet.org.nz/i2p/ has a script called setupServer.py which automates all this nonsense into one simple command line . But I respect that people's tastes in user interfaces differ, and trying to write something which satisfies everyone's needs usually results in something so complex that it turns into newbie-repellent. +{%- endtrans %}
            • +
            • {% trans -%} +So please feel free to use and/or customize setupServer.py to taste, or write your own in Python or another language. +{%- endtrans %}
            • +
            • {% trans -%} +Also, you may want to write a script which handles the startup of the I2P Router, the eepProxy, plus any and all tunnels you are using. I've got such a script called startEverything.sh, which gets launched at system startup. (Be sure to search this site for template scripts to automate your I2P commands. If I create a page for one, I'll try to remember to link it here. +{%- endtrans %}
            • +
            • {% trans -%} +Exercise for Windows users - port setupServer.py into a MS-DOS .BAT file. +{%- endtrans %}
            {% endblock %} diff --git a/i2p2www/pages/site/misc/invisiblenet.html b/i2p2www/pages/site/misc/invisiblenet.html index 1d941e18..7331d313 100644 --- a/i2p2www/pages/site/misc/invisiblenet.html +++ b/i2p2www/pages/site/misc/invisiblenet.html @@ -1,14 +1,14 @@ {% extends "global/layout.html" %} -{% block title %}Old Documents{% endblock %} +{% block title %}{% trans %}Old Documents{% endtrans %}{% endblock %} {% block content %} -{% trans -%} +

            {% trans -%} Following is a list of documents originally on www.invisiblenet.net/i2p/ and rescued via the Wayback Machine. They are quite dated and may or may not be accurate. However, the I2CP and I2NP documents in particular have some good information. -{%- endtrans %} +{%- endtrans %}

            Index of /i2p

            Name                    Last modified       Size
            diff --git a/i2p2www/pages/site/misc/jbigi.html b/i2p2www/pages/site/misc/jbigi.html
            index e531c722..caa4123f 100644
            --- a/i2p2www/pages/site/misc/jbigi.html
            +++ b/i2p2www/pages/site/misc/jbigi.html
            @@ -1,6 +1,6 @@
             {% extends "global/layout.html" %}
             {% block title %}jbigi{% endblock %}
            -{% block lastupdated %}August 2011{% endblock %}
            +{% block lastupdated %}{% trans %}August 2011{% endtrans %}{% endblock %}
             {% block accuratefor %}0.8.7{% endblock %}
             {% block content %}
             

            {% trans %}Overview{% endtrans %}

            @@ -10,24 +10,27 @@ manual work and a piece of chewing gum we have made several cryptography operations quite a bit faster. {%- endtrans %}

            -

            {% trans -%} +

            {% trans gmplib='http://gmplib.org/', +func='http://gmplib.org/manual-4.3.2/Integer-Exponentiation.html#Integer-Exponentiation', +bigint='http://download.oracle.com/javase/1.5.0/docs/api/java/math/BigInteger.html#modPow%28java.math.BigInteger,%20java.math.BigInteger%29' -%} The speedup comes from the super-fast -GNU MP Bignum library (libgmp). +GNU MP Bignum library (libgmp). We use a single function from libgmp - -mpz_powm() +mpz_powm() as a replacement for the -Java Math library's BigInteger modPow(). +Java Math library's BigInteger modPow(). As modPow() is a significant computational portion of many crypto operations, this is of significant benefit. {%- endtrans %}

            -

            {% trans -%} +

            {% trans nativebigint='http://docs.i2p-projekt.de/javadoc/net/i2p/util/NativeBigInteger.html', +bigint='http://download.oracle.com/javase/1.5.0/docs/api/java/math/BigInteger.html#modPow%28java.math.BigInteger,%20java.math.BigInteger%29' -%} The standard I2P installation includes about 20 versions of the library for different platforms, each about 50KB, inside the jbigi.jar file. The initialization of the JBigI library, including CPU identification, selection, and extraction of the correct loadable module, is handled by the -NativeBigInteger class. +NativeBigInteger class. If no module is available for the current platform, the standard -Java Math library's BigInteger modPow() +Java Math library's BigInteger modPow() is used. {%- endtrans %}

            @@ -81,12 +84,12 @@ The network average for encrypt time is about 20ms. If your encrypt time is less than 50ms for a relatively new processor, or less than 100ms for an older processor, and the native BigInteger library was loaded, you are probably fine. {%- endtrans %}
          • -
          • {% trans -%} +
          • {% trans downloads=get_url('downloads_list') -%} Get the latest released source code of I2P from -the download page, or get the cutting-edge source +the download page, or get the cutting-edge source out of the monotone database mtn.i2p2.de {%- endtrans %}
          • -
          • {$ trans %}Inside the source tree change directory to: core/c/jbigi{% endtrans %}
          • +
          • {% trans %}Inside the source tree change directory to: core/c/jbigi{% endtrans %}
          • {% trans -%} Read the README file. If you have a /usr/lib/libgmp.so file, you do not have to download GMP. @@ -102,7 +105,7 @@ Otherwise change the settings. Remember, you need the Java SDK installed. {%- endtrans %}
          • {% trans -%} Run build.sh (if you downloaded GMP) or - build.sh dynamic (if you have /usr/lib/libgmp.so).
            +build.sh dynamic (if you have /usr/lib/libgmp.so).
            Maybe the build spewed out some errors of missing jni.h and jni_md.h files. Either copy these files from your java install into the core/c/jbigi/jbigi/include/ directory, or fix $JAVA_HOME.
            @@ -122,16 +125,13 @@ native run time: 5842ms ( 57ms each) java run time: 41072ms (406ms each) native = 14.223802103622907% of pure java time
          -{% trans %}If the native is indeed 5-7x faster (or more) then it looks all good. If not, please -report.{% endtrans %}
        • +{% trans %}If the native is indeed 5-7x faster (or more) then it looks all good. If not, please report.{% endtrans %}
        • {% trans %}Copy libjbigi.so to your i2p directory{% endtrans %}
        • {% trans %}Restart your I2P programs.{% endtrans %}
        • -
        • {% trans %}On{% endtrans %} -{% trans %}http://localhost:7657/stats.jsp +
        • {% trans -%} +On http://localhost:7657/stats.jsp the crypto.elGamal.decrypt and crypto.elGamal.encrypt -should be a lot faster.
        • {% endtrans %} +should be a lot faster. +{%- endtrans %} - - - {% endblock %} diff --git a/i2p2www/pages/site/misc/jrandom-awol.html b/i2p2www/pages/site/misc/jrandom-awol.html index d2c816d3..afdbf49e 100644 --- a/i2p2www/pages/site/misc/jrandom-awol.html +++ b/i2p2www/pages/site/misc/jrandom-awol.html @@ -1,20 +1,24 @@ {% extends "global/layout.html" %} -{% block title %}Jrandom's Announcement{% endblock %} +{% block title %}{% trans %}Jrandom's Announcement{% endtrans %}{% endblock %} {% block content %} -{% trans %}The following message was received in mid-November 2007. We have no further information -on jrandom's status.{% endtrans %}

          {% trans -%} +The following message was received in mid-November 2007. We have no further information +on jrandom's status. +{%- endtrans %}

          + +

          {% trans site=site_url() -%} Subsequently, in an unrelated incident, the hosting company for all *.i2p.net servers (except forum.i2p.net) suffered a power outage on January 13, 2008, and the i2p.net servers did not fully return to service. As only jrandom has the credentials required to restore service, and he could not be contacted, -we moved all public services to www.i2p2.de +we moved all public services to www.i2p2.de and related subdomains. {%- endtrans %}

          -

          {% trans -%} + +

          {% trans forum=i2pconv('forum.i2p') -%} Approximately two months later, for unrelated reasons, -forum.i2p.net was moved to forum.i2p2.de. +forum.i2p.net was moved to {{ forum }}. {%- endtrans %}

           -----BEGIN PGP SIGNED MESSAGE-----
          diff --git a/i2p2www/pages/site/misc/manual-wrapper.html b/i2p2www/pages/site/misc/manual-wrapper.html
          index ddd83e52..9b08a600 100644
          --- a/i2p2www/pages/site/misc/manual-wrapper.html
          +++ b/i2p2www/pages/site/misc/manual-wrapper.html
          @@ -1,55 +1,68 @@
           {% extends "global/layout.html" %}
          -{% block title %}Manually Installing the Java Wrapper{% endblock %}
          +{% block title %}{% trans %}Manually Installing the Java Wrapper{% endtrans %}{% endblock %}
           {% block content %}
           

          {% trans %}Manually Installing the Java Wrapper{% endtrans %}

          -

          {% trans -%} -The installation package for the I2P router comes +

          {% trans downloads=get_url('downloads_list') -%} +The installation package for the I2P router comes with a Java wrapper for the most common architectures. If your system is not supported by our installer—or if you want to update the wrapper to a newer version—the following steps describe installing the wrapper manually. {%- endtrans %}

            -
          • {% trans %}Check Tanuki Software's download page - for your platform. Is your platform listed? If so, you're in - luck! Download the most recent version of the Community Edition for your OS and - CPU and move to the next step{% endtrans %}
          • -
          • {% trans %}If your platform does not have an already compiled wrapper available, you - may be able to compile it yourself. If you are willing to have a go at it, move - on to compiling the wrapper for your system.{% endtrans %}
          • +
          • {% trans -%} +Check Tanuki Software's download page +for your platform. Is your platform listed? If so, you're in +luck! Download the most recent version of the Community Edition for your OS and +CPU and move to the next step. +{%- endtrans %}
          • +
          • {% trans -%} +If your platform does not have an already compiled wrapper available, you +may be able to compile it yourself. If you are willing to have a go at it, move +on to compiling the wrapper for your system. +{%- endtrans %}
          +

          {% trans %}Using existing binaries{% endtrans %}

          -{% trans %}In the steps below, $I2P means the location I2P was installed to.{% endtrans %} +

          {% trans -%} +In the steps below, $I2P means the location I2P was installed to. +{%- endtrans %}

          1. tar xzf wrapper-*.tar.gz
          2. cp wrapper*/bin/wrapper $I2P/i2psvc
          3. cp wrapper*/lib/wrapper.jar $I2P/lib
          4. cp wrapper*/lib/libwrapper.so $I2P/lib
          5. -
          6. {% trans %}Try to start I2P using {% endtrans %}$I2P/i2prouter start
          7. -
          8. tail -f /tmp/wrapper.log and look for any problems.
          -{% trans %}If this did not work you'll need to use runplain.sh to start I2P.{% endtrans %} +
        • {% trans %}Try to start I2P using $I2P/i2prouter start{% endtrans %}
        • +
        • {% trans %}tail -f /tmp/wrapper.log and look for any problems.{% endtrans %}
        • + +

          {% trans -%} +If this did not work you'll need to use runplain.sh to start I2P. +{%- endtrans %}

          +

          {% trans %}Compiling from source{% endtrans %}

          -{% trans %}These steps worked to compile the wrapper for use on a mipsel system running Debian. The steps will need to be altered for your system.{% endtrans %} +

          {% trans -%} +These steps worked to compile the wrapper for use on a mipsel system running Debian. The steps will need to be altered for your system. +{%- endtrans %}

          1. {% trans %}Download the source archive for the community version of the wrapper from wrapper download page.{% endtrans %}
          2. {% trans %}Extract the tarball{% endtrans %}
                tar xzf wrapper_3.5.13_src.tar.gz
          3. -
          4. Set environment variables ANT_HOME and JAVA_HOME. In Debian, one can
            +
          5. {% trans %}Set environment variables ANT_HOME and JAVA_HOME. For example, in Debian:{% endtrans %}
                export ANT_HOME=/usr/share/ant
                export JAVA_HOME=/usr/lib/jvm/default-java
          6. -
          7. Since there isn't a Makefile for Mipsel, we'll make a copy of an already existing makefile
            +
          8. {% trans %}Since there isn't a Makefile for Mipsel, we'll make a copy of an already existing makefile:{% endtrans %}
                cp src/c/Makefile-linux-x86-32.make src/c/Makefile-linux-mipsel-32.make
          9. -
          10. Now we can attempt to compile the wrapper
            -    ./build32.sh (use ./build64.sh if you have a 64bit CPU and JVM)
          11. -
          12. Copy the wrapper into its proper place: +
          13. {% trans %}Now we can attempt to compile the wrapper:{% endtrans %}
            +    ./build32.sh ({% trans %}use ./build64.sh if you have a 64bit CPU and JVM{% endtrans %})
          14. +
          15. {% trans %}Copy the wrapper into its proper place:{% endtrans %}
            • cp bin/wrapper $I2P/i2psvc
            • cp lib/wrapper.jar $I2P/lib
            • cp lib/libwrapper.so $I2P/lib
          16. {% trans %}Try to start I2P using $I2P/i2prouter start{% endtrans %}
          17. -
          18. tail -f /tmp/wrapper.log and look for any problems.
          19. +
          20. {% trans %}tail -f /tmp/wrapper.log and look for any problems.{% endtrans %}
          -{% trans %}If this did not work you'll need to use runplain.sh to start I2P.{% endtrans %} +

          {% trans %}If this did not work you'll need to use runplain.sh to start I2P.{% endtrans %}

          {% endblock %} diff --git a/i2p2www/pages/site/misc/minwww.html b/i2p2www/pages/site/misc/minwww.html index 658df060..c6590361 100644 --- a/i2p2www/pages/site/misc/minwww.html +++ b/i2p2www/pages/site/misc/minwww.html @@ -1,9 +1,10 @@ {% extends "global/layout.html" %} {% block title %}minwww{% endblock %} -{% block content %}

          {% trans -%} -Here's an outline and rationale for a minimal WWW proxy app for use over -I2P. +{% block content %} +

          {% trans -%} +Here's an outline and rationale for a minimal WWW proxy app for use over I2P. {%- endtrans %}

          +

          {% trans -%} HTTP operation over I2P using I2PTunnel. When the base SocketLibrary is out, the only significant difference will be the 'wrapRequest' and @@ -42,6 +43,7 @@ skipped) 26: receiveACK receiveClose 27: sentSuccess

          +

          {% trans -%} An optimized form, designed to handle only 128KB [1] files and pages, can operate significantly faster: @@ -65,6 +67,7 @@ operate significantly faster: 15: closeCon 16: closed

        +

        {% trans -%} The difference in network load and latency is significant - this is essentially a UDP version of HTTP. On the normal web, we can't really do that, @@ -76,6 +79,7 @@ DataMessage with a DeliveryStatusMessage to provide guaranteed delivery), the MinWWW proxy deals with resends (if necessary - in I2PTunnel today, there are no resends). {%- endtrans %}

        +

        {% trans -%} The data that the MinWWW proxy and server need to wrap is trivial - when the proxy wants to send "GET /", it prepends it with the I2P Destination sending @@ -85,6 +89,7 @@ response, and sends a reply to the MinWWW proxy containing the response, prefixed with the original request ID. That response is taken and passed back to the browser and the connection is closed. {%- endtrans %}

        +

        {% trans -%} In addition, the MinWWW proxy can choose the MinWWW server to use from a list, going through some round robin or other algorithm, so that there are @@ -92,6 +97,7 @@ multiple outproxies merged transparently. The bandwidth required for running one of these outproxies is also greatly reduced, since it will only handle 128KB files (aka no one is going to be downloading porn, warez, etc). {%- endtrans %}

        +

        {% trans -%} The functionality /is/ limited, but 128KB of data is a lot for a single HTTP request or response. The above diagrams are also unrealistic in their hops - @@ -103,6 +109,7 @@ entire tunnel path (4+ remote hops each time when tunnels are 2 remote hops in each stretch), leaving MinWWW with only two full traversals (one for the request, one for the response), instead of 10. {%- endtrans %}

        +

        {% trans -%} Implementing the MinWWW proxy and server should be fairly easy - read an HTTP request from the client fully (perhaps only start out with HTTP GET, leaving @@ -111,6 +118,7 @@ in turn simply needs to parse the request to either open a socket or URL, send the request, wait for the response, and send it back through the network. If someone were to implement this, it would be Good :) {%- endtrans %}

        +

        {% trans -%} [1] Why 128KB files? Currently I2CP allows functionally arbitrary message size, but that's going to be going away since it involves either excessive memory diff --git a/i2p2www/pages/site/misc/myi2p.html b/i2p2www/pages/site/misc/myi2p.html index a0b15440..e7457b05 100644 --- a/i2p2www/pages/site/misc/myi2p.html +++ b/i2p2www/pages/site/misc/myi2p.html @@ -1,16 +1,18 @@ {% extends "global/layout.html" %} {% block title %}MYI2P{% endblock %} -{% block content %}

        {% trans -%} +{% block content %} +

        {% trans -%} There has been discussion about a distributed blogging application for a few months now called "MyI2P". While the original discussions were lost, we were able to retrieve a Google cache of it. It isn't pretty, but it includes the basic overview and some discussion -that ensued.{%- endtrans %}

        +that ensued. +{%- endtrans %}

        -

        {% trans -%} +

        {% trans roadmap=site_url('get-involved/roadmap'), datagrams=site_url('docs/spec/datagrams') -%} The application itself is not yet implemented, and the ideas behind it have been made less ambitious over time, but they are still valid and the current -plan is to have the core MyI2P functionality available +plan is to have the core MyI2P functionality available along side the I2P 1.0 release. That will include a distributed address book to enable secure, distributed, and human readable naming by sacrificing the need for global uniqueness - basically everyone has their own local address book @@ -21,7 +23,7 @@ system using a reduced and secured subset of bbcode to essentially provide an anonymous LiveJournal with a 'friends list' and transparent access control (authenticated by the I2P -datagrams with rules defined based on the address book). +datagrams with rules defined based on the address book). {%- endtrans %}

        {% trans -%} diff --git a/i2p2www/pages/site/misc/ratestats.html b/i2p2www/pages/site/misc/ratestats.html index 7ad450c1..6a1fb1ac 100644 --- a/i2p2www/pages/site/misc/ratestats.html +++ b/i2p2www/pages/site/misc/ratestats.html @@ -1,15 +1,15 @@ {% extends "global/layout.html" %} -{% block title %}RateStat list{% endblock %} +{% block title %}{% trans %}RateStat list{% endtrans %}{% endblock %} +{% block accuratefor %}0.8.7{% endblock %} {% block content %}

        {% trans %}RateStat list{% endtrans %}

        -

        {% trans %}I2P enables the collection of a wide range of rates, the list published here is accurate as of I2P version 0.8.7.{% endtrans %}

        -

        {% trans %}The list was gathered using the following command in the top directory of the branch i2p.i2p, +

        {% trans %}I2P enables the collection of a wide range of rates.{% endtrans %}

        +

        {% trans %}The list was gathered using the following command in the top directory of the branch i2p.i2p:{% endtrans %}

         find . -name '*' -print | xargs --max-args=3 grep -n --color=auto addRateData | awk 'match($0, /addRateData\(\"(.*)\"/, a) {print a[1]}' | awk '!_[$0]++' | sort > rates.txt
         
        -All options aren't needed, but it works.{% endtrans %} -

        +

        {% trans %}All options aren't needed, but it works.{% endtrans %}

        -

        {% trans %}RateStats{% endtrans %}

        +

        RateStats

         bwLimiter.inboundDelayedTime
         bwLimiter.outboundDelayedTime
        diff --git a/i2p2www/pages/site/misc/transition-guide.html b/i2p2www/pages/site/misc/transition-guide.html
        index 119eb5ea..7b6ce216 100644
        --- a/i2p2www/pages/site/misc/transition-guide.html
        +++ b/i2p2www/pages/site/misc/transition-guide.html
        @@ -1,15 +1,16 @@
         {% extends "global/layout.html" %}
         {% block title %}Monotone{% endblock %}
        -{% block content %}

        {% trans -%} +{% block content %} +

        {% trans forum=i2pconv('forum.i2p'), newdevs=site_url('get-involved/guides/new-developers') -%} The I2P sourcecode is kept in several distributed monotone repositories. See the Monotone website for information on monotone. See -this forum post on i2p monotone +this forum post on i2p monotone for more information on how to get started and check out the source anonymously. There is also a quick-start guide on the -new developer's page. +new developer's page. {%- endtrans %}

        {% trans -%} @@ -17,7 +18,7 @@ If you want to get the source non-anonymously, pull from the public server mtn.w The i2p source code branch is "i2p.i2p". {%- endtrans %}

        -

        {% trans %} Guide {% endtrans %}

        +

        {% trans %}Guide{% endtrans %}

        {%- trans %} The following is a detailed guide by Complication. {%- endtrans %}

        diff --git a/i2p2www/pages/site/misc/upgrade-0.6.1.30.html b/i2p2www/pages/site/misc/upgrade-0.6.1.30.html index 91dd2d46..c0d267fc 100644 --- a/i2p2www/pages/site/misc/upgrade-0.6.1.30.html +++ b/i2p2www/pages/site/misc/upgrade-0.6.1.30.html @@ -1,64 +1,73 @@ {% extends "global/layout.html" %} -{% block title %}How to Upgrade from 0.6.1.30 and Earlier{% endblock %} +{% block title %}{% trans %}How to Upgrade from 0.6.1.30 and Earlier{% endtrans %}{% endblock %} {% block content %}

        • 2008-02-05: {% trans %}Upgrading from 0.6.1.30 and Earlier Releases{% endtrans %}

        -

        {% trans -%} +

        {% trans jrandom=site_url('misc/jrandom-awol') -%} Since i2p's lead developer -has gone AWOL, +has gone AWOL, we do not have his update signing key or access to www.i2p[.net] or dev.i2p[.net]. Complication and zzz have generated new signing keys, and they and Amiga are providing update file hosting. These changes must be configured in your router to take effect. {%- endtrans %}

        +

        {% trans -%} Make the following configuration changes and your router will automatically install the latest release. {%- endtrans %}

        -

        {% trans -%} + +

        {% trans downloads=get_url('downloads_list') -%} We recommend the automated process as it will verify the key of the signed update file. If you do not make these changes, -you may manually download the i2pupdate.zip file from{% endtrans %} -the download page. -

        1. +you may manually download the i2pupdate.zip file from +the download page. +{%- endtrans %}

          + +
            +
          1. On configupdate.jsp: -
            1. -Change the News URL to: http://complication.i2p/news.xml -
            2. +
                +
              1. {% trans url='http://complication.i2p/news.xml' -%} +Change the News URL to: {{ url }} +{%- endtrans %}
              2. +
              3. {% trans %}Select ONE of the following new Update URLs at random and enter it into the Update URL box: {% endtrans %}
                http://amiga.i2p/i2p/i2pupdate.sud
                http://complication.i2p/i2p/i2pupdate.sud
                http://stats.i2p/i2p/i2pupdate.sud -
              4. -Check the box "Update through the eepProxy?" -
              5. -Click "Save" -
              +
            3. +
            4. {% trans %}Check the box "Update through the eepProxy?"{% endtrans %}
            5. +
            6. {% trans %}Click "Save"{% endtrans %}
            7. +
            +
          2. On configadvanced.jsp: -
            1. -Add the following line: +
                +
              1. {% trans %}Add the following line:{% endtrans %}
                -
              2. -Click "Apply" -
              -
            2. {% trans -%}You are now ready to automatically receive the release update file, +
            3. +
            4. {% trans %}Click "Apply"{% endtrans %}
            5. +
            +
          3. +
          4. {% trans -%} +You are now ready to automatically receive the release update file, either by setting your update policy to "download and install" or by clicking on the "update available" link when it appears. -{%- endtrans %}
          -

          -

          {% trans -%} +{%- endtrans %}

        2. +
        + +

        {% trans url='http://'+i2pconv('stats.i2p')+'/i2p/signingkeys.html' -%} If you would like to verify the trusted update keys, they are also -posted and signed here. +posted and signed here. Thank you for your support during this transition. For help please contact us on #i2p. {%- endtrans %}

        -

        {% trans -%} -Amiga, Complication, welterde, zzz -{%- endtrans %}

        + +

        Amiga, Complication, welterde, zzz

        {% endblock %} From dd2ac0f87670d2d8d7eb14d993f9c316c9b496c6 Mon Sep 17 00:00:00 2001 From: str4d Date: Fri, 1 Feb 2013 23:05:16 +0000 Subject: [PATCH 374/650] Added translation tags to docs/how/peer-selection --- .../pages/site/docs/how/peer-selection.html | 264 +++++++++++------- 1 file changed, 159 insertions(+), 105 deletions(-) diff --git a/i2p2www/pages/site/docs/how/peer-selection.html b/i2p2www/pages/site/docs/how/peer-selection.html index 032a25da..2537ef3e 100644 --- a/i2p2www/pages/site/docs/how/peer-selection.html +++ b/i2p2www/pages/site/docs/how/peer-selection.html @@ -1,35 +1,41 @@ {% extends "global/layout.html" %} -{% block title %}Peer Profiling and Selection{% endblock %} -{% block lastupdated %}July 2010{% endblock %} +{% block title %}{% trans %}Peer Profiling and Selection{% endtrans %}{% endblock %} +{% block lastupdated %}{% trans %}July 2010{% endtrans %}{% endblock %} {% block accuratefor %}0.8{% endblock %} {% block content %} -

        Overview

        +

        {% trans %}Overview{% endtrans %}

        -

        Peer Profiling

        +

        {% trans %}Peer Profiling{% endtrans %}

        -

        Peer profiling is the process of collecting data based on the observed performance +

        {% trans netdb=site_url('docs/how/network-database') -%} +Peer profiling is the process of collecting data based on the observed performance of other routers or peers, and classifying those peers into groups. Profiling does not use any claimed performance data published by the peer itself -in the network database. +in the network database. +{%- endtrans %}

        -

        -Profiles are used for two purposes: +

        {% trans %}Profiles are used for two purposes:{% endtrans %}

          -
        1. Selecting peers to relay our traffic through, which is discussed below -
        2. Choosing peers from the set of floodfill routers to use for network database storage and queries, - which is discussed on the network database page +
        3. {% trans %}Selecting peers to relay our traffic through, which is discussed below{% endtrans %}
        4. +
        5. {% trans netdb=site_url('docs/how/network-database') -%} +Choosing peers from the set of floodfill routers to use for network database storage and queries, +which is discussed on the network database page +{%- endtrans %}
        -

        Peer Selection

        -

        Peer selection is the process of choosing which routers +

        {% trans %}Peer Selection{% endtrans %}

        +

        {% trans -%} +Peer selection is the process of choosing which routers on the network we want to relay our messages to go through (which peers will we ask to join our tunnels). To accomplish this, we keep track of how each peer performs (the peer's "profile") and use that data to estimate how fast they are, how often they will be able to accept our requests, and whether they seem to be overloaded or otherwise unable to perform what -they agree to reliably.

        -

        +they agree to reliably. +{%- endtrans %}

        + +

        {% trans threatmodel=site_url('docs/how/threat-model') -%} Unlike some other anonymous networks, in I2P, claimed bandwidth is untrusted and is only used to avoid those peers advertising very low bandwidth insufficient for routing tunnels. @@ -37,61 +43,64 @@ All peer selection is done through profiling. This prevents simple attacks based on peers claiming high bandwidth in order to capture large numbers of tunnels. It also makes -timing attacks +timing attacks more difficult. -

        -

        +{%- endtrans %}

        + +

        {% trans -%} Peer selection is done quite frequently, as a router may maintain a large number of client and exploratory tunnels, and a tunnel lifetime is only 10 minutes. +{%- endtrans %}

        -

        Further Information

        -

        +

        {% trans %}Further Information{% endtrans %}

        +

        {% trans pdf=url_for('static', filename='pdf/I2P-PET-CON-2009.1.pdf'), +url='http://www.pet-con.org/index.php/PET_Convention_2009.1' -%} For more information see the paper -Peer Profiling and Selection in the I2P Anonymous Network -presented at -PET-CON 2009.1. +Peer Profiling and Selection in the I2P Anonymous Network +presented at PET-CON 2009.1. See below for notes on minor changes since the paper was published. -

        +{%- endtrans %}

        -

        Profiles

        - -

        Each peer has a set of data points collected about them, including statistics +

        {% trans %}Profiles{% endtrans %}

        +

        {% trans url='http://docs.i2p-projekt.de/javadoc/net/i2p/router/peermanager/PeerProfile.html' -%} +Each peer has a set of data points collected about them, including statistics about how long it takes for them to reply to a network database query, how often their tunnels fail, and how many new peers they are able to introduce us to, as well as simple data points such as when we last heard from them or when the last communication error occurred. The specific data points gathered -can be found in the code -

        +can be found in the code. +{%- endtrans %}

        -

        +

        {% trans -%} Profiles are fairly small, a few KB. To control memory usage, the profile expiration time lessens as the number of profiles grows. Profiles are kept in memory until router shutdown, when they are written to disk. At startup, the profiles are read so the router need not reinitialize all profiles, thus allowing a router to quickly re-integrate into the network after startup. -

        +{%- endtrans %}

        -

        Peer Summaries

        - -

        While the profiles themselves can be considered a summary of a peer's +

        {% trans %}Peer Summaries{% endtrans %}

        +

        {% trans -%} +While the profiles themselves can be considered a summary of a peer's performance, to allow for effective peer selection we break each summary down into four simple values, representing the peer's speed, its capacity, how well -integrated into the network it is, and whether it is failing.

        +integrated into the network it is, and whether it is failing. +{%- endtrans %}

        -

        Speed

        - -

        The speed calculation +

        {% trans %}Speed{% endtrans %}

        +

        {% trans -%} +The speed calculation simply goes through the profile and estimates how much data we can send or receive on a single tunnel through the peer in a minute. For this estimate it just looks at performance in the previous minute. -

        +{%- endtrans %}

        -

        Capacity

        - -

        The capacity calculation +

        {% trans %}Capacity{% endtrans %}

        +

        {% trans -%} +The capacity calculation simply goes through the profile and estimates how many tunnels the peer would agree to participate in over a given time period. For this estimate it looks at how many tunnel build requests @@ -99,7 +108,9 @@ the peer has accepted, rejected, and dropped, and how many of the agreed-to tunnels later failed. While the calculation is time-weighted so that recent activity counts more than later activity, statistics up to 48 hours old may be included. -

        +{%- endtrans %}

        + +

        {% trans -%} Recognizing and avoiding unreliable and unreachable peers is critically important. Unfortunately, as the tunnel building and testing require the participation of several peers, @@ -107,152 +118,195 @@ it is difficult to positively identify the cause of a dropped build request or t The router assigns a probability of failure to each of the peers, and uses that probability in the capacity calculation. Drops and test failures are weighted much higher than rejections. -

        +{%- endtrans %}

        -

        Peer organization

        - -

        As mentioned above, we drill through each peer's profile to come up with a +

        {% trans %}Peer organization{% endtrans %}

        +

        {% trans -%} +As mentioned above, we drill through each peer's profile to come up with a few key calculations, and based upon those, we organize each peer into three groups - fast, high capacity, and standard. +{%- endtrans %}

        -

        The groupings are not mutually exclusive, nor are they unrelated:

          -
        • A peer is considered "high capacity" if its capacity calculation meets or - exceeds the median of all peers.
        • -
        • A peer is considered "fast" if they are already "high capacity" and their - speed calculation meets or exceeds the median of all peers.
        • -
        • A peer is considered "standard" if it is not "high capacity"
        • +

          {% trans -%} +The groupings are not mutually exclusive, nor are they unrelated: +{%- endtrans %}

          +
            +
          • {% trans -%} +A peer is considered "high capacity" if its capacity calculation meets or +exceeds the median of all peers. +{%- endtrans %}
          • +
          • {% trans -%} +A peer is considered "fast" if they are already "high capacity" and their +speed calculation meets or exceeds the median of all peers. +{%- endtrans %}
          • +
          • {% trans %}A peer is considered "standard" if it is not "high capacity"{% endtrans %}
          -These groupings are implemented in the router's ProfileOrganizer. - -

          Group size limits

          +

          {% trans url='http://docs.i2p-projekt.de/javadoc/net/i2p/router/peermanager/ProfileOrganizer.html' -%} +These groupings are implemented in the router's +ProfileOrganizer. +{%- endtrans %}

          +

          {% trans %}Group size limits{% endtrans %}

          +

          {% trans -%} The size of the groups may be limited. +{%- endtrans %}

            -
          • The fast group is limited to 30 peers. - If there would be more, only the ones with the highest speed rating are placed in the group. -
          • The high capacity group is limited to 75 peers (including the fast group) - If there would be more, only the ones with the highest capacity rating are placed in the group. -
          • The standard group has no fixed limit, but is somewhat smaller than the number of RouterInfos - stored in the local network database. - On an active router in today's network, there may be about 1000 RouterInfos and 500 peer profiles - (including those in the fast and high capacity groups) +
          • {% trans -%} +The fast group is limited to 30 peers. +If there would be more, only the ones with the highest speed rating are placed in the group. +{%- endtrans %}
          • +
          • {% trans -%} +The high capacity group is limited to 75 peers (including the fast group) +If there would be more, only the ones with the highest capacity rating are placed in the group. +{%- endtrans %}
          • +
          • {% trans -%} +The standard group has no fixed limit, but is somewhat smaller than the number of RouterInfos +stored in the local network database. +On an active router in today's network, there may be about 1000 RouterInfos and 500 peer profiles +(including those in the fast and high capacity groups) +{%- endtrans %}
          -

          Recalculation and Stability

          +

          {% trans %}Recalculation and Stability{% endtrans %}

          +

          {% trans -%} Summaries are recalculated, and peers are resorted into groups, every 45 seconds. +{%- endtrans %}

          -

          +

          {% trans -%} The groups tend to be fairly stable, that is, there is not much "churn" in the rankings at each recalculation. Peers in the fast and high capacity groups get more tunnels build through them, which increases their speed and capacity ratings, which reinforces their presence in the group. +{%- endtrans %}

          -

          Peer Selection

          - +

          {% trans %}Peer Selection{% endtrans %}

          +

          {% trans -%} The router selects peers from the above groups to build tunnels through. +{%- endtrans %}

          -

          Peer Selection for Client Tunnels

          - +

          {% trans %}Peer Selection for Client Tunnels{% endtrans %}

          +

          {% trans -%} Client tunnels are used for application traffic, such as for HTTP proxies and web servers. -

          +{%- endtrans %}

          + +

          {% trans -%} To reduce the susceptibility to some attacks, and increase performance, peers for building client tunnels are chosen randomly from the smallest group, which is the "fast" group. There is no bias toward selecting peers that were previously participants in a tunnel for the same client. +{%- endtrans %}

          -

          Peer Selection for Exploratory Tunnels

          - +

          {% trans %}Peer Selection for Exploratory Tunnels{% endtrans %}

          +

          {% trans -%} Exploratory tunnels are used for router administrative purposes, such as network database traffic and testing client tunnels. Exploratory tunnels are also used to contact previously unconnected routers, which is why they are called "exploratory". These tunnels are usually low-bandwidth. -

          +{%- endtrans %}

          + +

          {% trans -%} Peers for building exploratory tunnels are generally chosen randomly from the standard group. If the success rate of these build attempts is low compared to the client tunnel build success rate, the router will select a weighted average of peers randomly from the high capacity group instead. This helps maintain a satisfactory build success rate even when network performance is poor. There is no bias toward selecting peers that were previously participants in an exploratory tunnel. -

          +{%- endtrans %}

          + +

          {% trans -%} As the standard group includes a very large subset of all peers the router knows about, exploratory tunnels are essentially built through a random selection of all peers, until the build success rate becomes too low. +{%- endtrans %}

          -

          Restrictions

          +

          {% trans %}Restrictions{% endtrans %}

          +

          {% trans -%} To prevent some simple attacks, and for performance, there are the following restrictions: +{%- endtrans %}

            -
          • +
          • {% trans -%} Two peers from the same /16 IP space may not be in the same tunnel. -
          • +{%- endtrans %}
          • +
          • {% trans -%} A peer may participate in a maximum of 33% of all tunnels created by the router. -
          • +{%- endtrans %}
          • +
          • {% trans -%} Peers with extremely low bandwidth are not used. -
          • +{%- endtrans %}
          • +
          • {% trans -%} Peers for which a recent connection attempt failed are not used. +{%- endtrans %}
          -

          Peer Ordering in Tunnels

          - +

          {% trans %}Peer Ordering in Tunnels{% endtrans %}

          +

          {% trans pdf='http://prisms.cs.umass.edu/brian/pubs/wright-tissec.pdf', +pdf2008='http://prisms.cs.umass.edu/brian/pubs/wright.tissec.2008.pdf', +tunnelimpl=site_url('docs/tunnels/implementation') -%} Peers are ordered within tunnels to -to deal with the predecessor -attack (2008 -update). -More information is on the tunnel page. +to deal with the predecessor attack +(2008 update). +More information is on the tunnel page. +{%- endtrans %}

          -

          Future Work

          +

          {% trans %}Future Work{% endtrans %}

            -
          • +
          • {% trans -%} Continue to analyze an tune speed and capacity calculations as necessary -
          • +{%- endtrans %}
          • +
          • {% trans -%} Implement a more aggressive ejection strategy if necessary to control memory usage as the network grows -
          • +{%- endtrans %}
          • +
          • {% trans -%} Evaluate group size limits -
          • +{%- endtrans %}
          • +
          • {% trans -%} Use GeoIP data to include or exclude certain peers, if configured +{%- endtrans %}
          -

          Notes

          +

          {% trans %}Notes{% endtrans %}

          +

          {% trans pdf=url_for('static', filename='pdf/I2P-PET-CON-2009.1.pdf') -%} For those reading the paper -Peer Profiling and Selection in the I2P Anonymous Network, +Peer Profiling and Selection in the I2P Anonymous Network, please keep in mind the following minor changes in I2P since the paper's publication: +{%- endtrans %}

            -
          • The Integration calculation is still not used -
          • In the paper, "groups" are called "tiers" -
          • The "Failing" tier is no longer used -
          • The "Not Failing" tier is now named "Standard" +
          • {% trans %}The Integration calculation is still not used{% endtrans %}
          • +
          • {% trans %}In the paper, "groups" are called "tiers"{% endtrans %}
          • +
          • {% trans %}The "Failing" tier is no longer used{% endtrans %}
          • +
          • {% trans %}The "Not Failing" tier is now named "Standard"{% endtrans %}
          -

          References

          +

          {% trans %}References{% endtrans %}

          {% endblock %} From a37f4f9a6165feae5534b2c13860f5d14db36ec0 Mon Sep 17 00:00:00 2001 From: str4d Date: Fri, 1 Feb 2013 23:26:00 +0000 Subject: [PATCH 375/650] Added translation tags to docs/how/elgamal-aes --- i2p2www/pages/site/docs/how/elgamal-aes.html | 255 ++++++++++++------- 1 file changed, 166 insertions(+), 89 deletions(-) diff --git a/i2p2www/pages/site/docs/how/elgamal-aes.html b/i2p2www/pages/site/docs/how/elgamal-aes.html index 70fcd456..0d9cbc07 100644 --- a/i2p2www/pages/site/docs/how/elgamal-aes.html +++ b/i2p2www/pages/site/docs/how/elgamal-aes.html @@ -1,18 +1,23 @@ {% extends "global/layout.html" %} -{% block title %}ElGamal/AES + SessionTag Encryption{% endblock %} -{% block lastupdated %}February 2011{% endblock %} +{% block title %}{% trans %}ElGamal/AES + SessionTag Encryption{% endtrans %}{% endblock %} +{% block lastupdated %}{% trans %}February 2011{% endtrans %}{% endblock %} {% block accuratefor %}0.8.3{% endblock %} {% block content %} -

          Overview

          -

          +

          {% trans %}Overview{% endtrans %}

          +

          {% trans -%} ElGamal/AES+SessionTags is used for end-to-end encryption. -

          -

          As an unreliable, unordered, message based system, I2P uses a simple combination +{%- endtrans %}

          + +

          {% trans -%} +As an unreliable, unordered, message based system, I2P uses a simple combination of asymmetric and symmetric encryption algorithms to provide data confidentiality and integrity to garlic messages. As a whole, the combination is referred to as ElGamal/AES+SessionTags, but that is an excessively verbose way to describe - the use of 2048bit ElGamal, AES256, SHA256, and 32 byte nonces.

          -

          The first time a router wants to encrypt a garlic message to another router, + the use of 2048bit ElGamal, AES256, SHA256, and 32 byte nonces. +{%- endtrans %}

          + +

          {% trans -%} +The first time a router wants to encrypt a garlic message to another router, they encrypt the keying material for an AES256 session key with ElGamal and append the AES256/CBC encrypted payload after that encrypted ElGamal block. In addition to the encrypted payload, the AES encrypted section contains the @@ -24,8 +29,11 @@ ElGamal/AES+SessionTags is used for end-to-end encryption. that session tag, prepended with the session tag itself. When a router receives a garlic encrypted message, they check the first 32 bytes to see if it matches an available session tag - if it does, they simply AES decrypt the message, - but if it does not, they ElGamal decrypt the first block.

          -

          Each session tag can be used only once so as to prevent internal adversaries + but if it does not, they ElGamal decrypt the first block. +{%- endtrans %}

          + +

          {% trans -%} +Each session tag can be used only once so as to prevent internal adversaries from unnecessarily correlating different messages as being between the same routers. The sender of an ElGamal/AES+SessionTag encrypted message chooses when and how many tags to deliver, prestocking the recipient with enough tags @@ -36,8 +44,11 @@ ElGamal/AES+SessionTags is used for end-to-end encryption. cloves exposed and has instructions for the recipient to send the clove back to the original sender (through an inbound tunnel, of course). When the original sender receives this delivery status message, they know that the session tags - bundled in the garlic message were successfully delivered.

          -

          Session tags themselves have a short lifetime, after which they are + bundled in the garlic message were successfully delivered. +{%- endtrans %}

          + +

          {% trans -%} +Session tags themselves have a short lifetime, after which they are discarded if not used. In addition, the quantity stored for each key is limited, as are the number of keys themselves - if too many arrive, either new or old messages may be dropped. The sender keeps track whether messages using session @@ -45,44 +56,54 @@ ElGamal/AES+SessionTags is used for end-to-end encryption. drop the ones previously assumed to be properly delivered, reverting back to the full expensive ElGamal encryption. A session will continue to exist until all its tags are exhausted or expire. -

          +{%- endtrans %}

          + +

          {% trans -%} Sessions are unidirectional. Tags are delivered from Alice to Bob, and Alice then uses the tags, one by one, in subsequent messages to Bob. -

          +{%- endtrans %}

          + +

          {% trans -%} Sessions may be established between Destinations, between Routers, or between a Router and a Destination. Each Router and Destination maintains its own Session Key Manager to keep track of Session Keys and Session Tags. Separate Session Key Managers prevents correlation of multiple Destinations to each other or a Router by adversaries. -

          +{%- endtrans %}

          -

          Message Reception

          -

          +

          {% trans %}Message Reception{% endtrans %}

          +

          {% trans -%} Each message received has one of two the two possible conditions:

          +{%- endtrans %}

          -
            -
          1. It is part of an existing session and contains a Session Tag and an AES encrypted block
          2. -
          3. It is for a new session and contains both ElGamal and AES encrypted blocks
          4. -
          +
            +
          1. {% trans %}It is part of an existing session and contains a Session Tag and an AES encrypted block{% endtrans %}
          2. +
          3. {% trans %}It is for a new session and contains both ElGamal and AES encrypted blocks{% endtrans %}
          4. +
          + +

          {% trans -%} When a router receives a message, it will first assume it is from an existing session and attempt to look up the Session Tag and decrypt the following data using AES. If that fails, it will assume it is for a new session and attempt to decrypt it using ElGamal. -

          +{%- endtrans %}

          -

          New Session Message Specification

          -

          +

          {% trans %}New Session Message Specification{% endtrans %}

          +

          {% trans -%} A New Session ElGamal Message contains two parts, an encrypted ElGamal block and an encrypted AES block. -

          +{%- endtrans %}

          + +

          {% trans -%} The encrypted message contains: -

          +{%- endtrans %}

          +
              +----+----+----+----+----+----+----+----+
              |                                       |
              +                                       +
          @@ -101,14 +122,17 @@ The encrypted message contains:
              |         +
              +----+----+
           
          -
          -

          -

          ElGamal Block

          -

          +

          + +

          {% trans %}ElGamal Block{% endtrans %}

          +

          {% trans -%} The encrypted ElGamal Block is always 514 bytes long. -

          +{%- endtrans %}

          + +

          {% trans -%} The unencrypted ElGamal data is 222 bytes long, containing: -

          +{%- endtrans %}

          +
              +----+----+----+----+----+----+----+----+
              |                                       |
              +                                       +
          @@ -135,21 +159,28 @@ The unencrypted ElGamal data is 222 bytes long, containing:
              +                             +----+----+
              |                             |
              +----+----+----+----+----+----+
          -
          +
          + +

          {% trans commonstructures=site_url('docs/spec/common-structures') -%} The 32-byte -Session Key +Session Key is the identifier for the session. The 32-byte Pre-IV will be used to generate the IV for the AES block that follows; the IV is the first 16 bytes of the SHA-256 Hash of the Pre-IV. -

          +{%- endtrans %}

          + +

          {% trans cryptography=site_url('docs/how/cryptography') -%} The 222 byte payload is encrypted -using ElGamal +using ElGamal and the encrypted block is 514 bytes long.

          +{%- endtrans %}

          -

          AES Block

          -

          The unencrypted data in the AES block contains the following: -

          +

          {% trans %}AES Block{% endtrans %}

          +

          {% trans -%} +The unencrypted data in the AES block contains the following: +{%- endtrans %}

          +
              +----+----+----+----+----+----+----+----+
              |tag count|                             |
              +----+----+                             +
          @@ -190,56 +221,73 @@ and the encrypted block is 514 bytes long.
              |          Padding to 16 bytes          |
              +----+----+----+----+----+----+----+----+
           
          -tag count: 2-byte Integer, 0-200
          +tag count: {% trans commonstructures=site_url('docs/spec/common-structures') -%}
          +2-byte Integer, 0-200
          +{%- endtrans %}
           
          -Session Tags: That many 32-byte Session Tags
          +Session Tags: {% trans commonstructures=site_url('docs/spec/common-structures') -%}
          +That many 32-byte Session Tags
          +{%- endtrans %}
           
          -payload size: 4-byte Integer
          +payload size: {% trans commonstructures=site_url('docs/spec/common-structures') -%}
          +4-byte Integer
          +{%- endtrans %}
           
          -Payload Hash: The 32-byte SHA256 Hash of the payload
          +Payload Hash: {% trans commonstructures=site_url('docs/spec/common-structures') -%}
          +The 32-byte SHA256 Hash of the payload
          +{%- endtrans %}
           
          -flag: A one-byte value. Normally == 0. If == 0x01, a Session Key follows
          +flag: {% trans -%}
          +A one-byte value. Normally == 0. If == 0x01, a Session Key follows
          +{%- endtrans %}
           
          -New Session Key: A 32-byte Session Key,
          +New Session Key: {% trans commonstructures=site_url('docs/spec/common-structures') -%}
          +A 32-byte Session Key,
                            to replace the old key, and is only present if preceding flag is 0x01
          +{%- endtrans %}
           
          -Payload: the data
          +Payload: {% trans %}the data{% endtrans %}
           
          -Padding: Random data to a multiple of 16 bytes for the total length.
          +Padding: {% trans -%}
          +Random data to a multiple of 16 bytes for the total length.
                    May contain more than the minimum required padding.
          +{%- endtrans %}
           
          -Minimum length: 48 bytes
          +{% trans %}Minimum length: 48 bytes{% endtrans %}
           
          -
          +
          -

          -The data is then AES Encrypted, +

          {% trans cryptography=site_url('docs/how/cryptography') -%} +The data is then AES Encrypted, using the session key and IV (calculated from the pre-IV) from the ElGamal section. The encrypted AES Block length is variable but is always a multiple of 16 bytes.

          -

          Notes

          +{%- endtrans %}

          + +

          {% trans %}Notes{% endtrans %}

            -
          • - Actual max payload length, and max block length, is less than 64 KB; see the I2NP Overview. -
          • -New Session Key is currently unused and is never present. -
          +
        • {% trans i2np=site_url('docs/protocol/i2np') -%} +Actual max payload length, and max block length, is less than 64 KB; see the I2NP Overview. +{%- endtrans %}
        • +
        • {% trans %}New Session Key is currently unused and is never present.{% endtrans %}
        • +
        -

        Existing Session Message Specification

        - -

        The session tags delivered successfully are remembered for a +

        {% trans %}Existing Session Message Specification{% endtrans %}

        +

        {% trans -%} +The session tags delivered successfully are remembered for a brief period (15 minutes currently) until they are used or discarded. A tag is used by packaging one in an Existing Session Message that -contains only an AES encrypted block, and - is not preceded by an +contains only an AES encrypted block, and is not preceded by an ElGamal block. -

        +{%- endtrans %}

        + +

        {% trans -%} The existing session message is as follows: - -

        +{%- endtrans %}

        +
            +----+----+----+----+----+----+----+----+
            |                                       |
            +                                       +
        @@ -258,72 +306,101 @@ as follows:
            |                                       |
            +----+----+----+----+----+----+----+----+
         
        -Session Tag: A 32-byte Session Tag
        +Session Tag: {% trans commonstructures=site_url('docs/spec/common-structures') -%}
        +A 32-byte Session Tag
                      previously delivered in an AES block
        +{%- endtrans %}
         
        -AES Encrypyted Block: As specified above.
        +AES Encrypyted Block: {% trans %}As specified above.{% endtrans %}
         
        -
        +
        + +

        {% trans -%} The session tag also serves as the pre-IV. The IV is the first 16 bytes of the SHA-256 Hash of the sessionTag. -

        +{%- endtrans %}

        + +

        {% trans -%} To decode a message from an existing session, a router looks up the Session Tag to find an associated Session Key. If the Session Tag is found, the AES block is decrypted using the associated Session Key. If the tag is not found, the message is assumed to be a New Session Message. -

        +{%- endtrans %}

        -

        Future Work

        -

        +

        {% trans %}Future Work{% endtrans %}

        +

        {% trans -%} There are many possible areas to tune the Session Key Manager's algorithms; some may interact with the streaming library behavior, or have significant impact on overall performance. -

        • +{%- endtrans %}

          +
            +
          • {% trans -%} Delivery of too many tags at one time may impose substantial overhead for brief streaming connections or datagrams, and increase the chance of message loss. We currently deliver 40 tags at a time (1280 bytes). 32 (1024 bytes) may be better for tunnel fragmentation. -
          • +{%- endtrans %}
          • + +
          • {% trans -%} A few tags could be delivered in each of several messages, or lots of tags all at once. -
          • +{%- endtrans %}
          • + +
          • {% trans -%} It is also important to study and tune the low-tag thresholds at which more tags are sent. -
          • +{%- endtrans %}
          • + +
          • {% trans -%} The number of tags delivered could depend on message size, keeping in mind the eventual padding to 1KB at the tunnel message layer. -
          • +{%- endtrans %}
          • + +
          • {% trans -%} Clients could send an estimate of session lifetime to the router, as an advisory on the number of tags required. -
          • +{%- endtrans %}
          • + +
          • {% trans -%} Delivery of too few tags causes the router to fall back to an expensive ElGamal encryption. -
          • +{%- endtrans %}
          • + +
          • {% trans -%} The router may assume delivery of Session Tags, or await acknowledgement before using them; there are tradeoffs for each strategy. -
          • +{%- endtrans %}
          • + +
          • {% trans -%} For very brief messages, almost the full 222 bytes of the pre-IV and padding fields in the ElGamal block could be used for the entire message, instead of establishing a session. -
          • +{%- endtrans %}
          • + +
          • {% trans -%} Evaluate padding strategy; currently we pad to a minimum of 128 bytes. Would be better to add a few tags to small messages than pad. -
          • +{%- endtrans %}
          • + +
          • {% trans -%} Perhaps things could be more efficient if the Session Tag system was bidirectional, so tags delivered in the 'forward' path could be used in the 'reverse' path, thus avoiding ElGamal in the initial response. The router currently plays some tricks like this when sending tunnel test messages to itself. -
          • +{%- endtrans %}
          • + +
          • {% trans futureperf=site_url('about/performance/future') -%} Change from Session Tags to -a synchronized PRNG. -
          • +a synchronized PRNG. +{%- endtrans %}
          • + +
          • {% trans tunnelmessage=site_url('docs/spec/tunnel-message') -%} Several of these ideas may require a new I2NP message type, or set a flag in the -Delivery Instructions, +Delivery Instructions, or set a magic number in the first few bytes of the Session Key field and accept a small risk of the random Session Key matching the magic number. -
          - -

          +{%- endtrans %}
        • +
        From 6d9a03af992d0883441e8aa3b780c13b0034f615 Mon Sep 17 00:00:00 2001 From: str4d Date: Fri, 1 Feb 2013 23:29:14 +0000 Subject: [PATCH 376/650] Removed some whitespace from tagged paragraphs --- i2p2www/pages/site/docs/how/elgamal-aes.html | 68 ++++++++++---------- 1 file changed, 34 insertions(+), 34 deletions(-) diff --git a/i2p2www/pages/site/docs/how/elgamal-aes.html b/i2p2www/pages/site/docs/how/elgamal-aes.html index 0d9cbc07..ec84bc47 100644 --- a/i2p2www/pages/site/docs/how/elgamal-aes.html +++ b/i2p2www/pages/site/docs/how/elgamal-aes.html @@ -10,52 +10,52 @@ ElGamal/AES+SessionTags is used for end-to-end encryption.

        {% trans -%} As an unreliable, unordered, message based system, I2P uses a simple combination - of asymmetric and symmetric encryption algorithms to provide data confidentiality - and integrity to garlic messages. As a whole, the combination is referred - to as ElGamal/AES+SessionTags, but that is an excessively verbose way to describe - the use of 2048bit ElGamal, AES256, SHA256, and 32 byte nonces. +of asymmetric and symmetric encryption algorithms to provide data confidentiality +and integrity to garlic messages. As a whole, the combination is referred +to as ElGamal/AES+SessionTags, but that is an excessively verbose way to describe +the use of 2048bit ElGamal, AES256, SHA256, and 32 byte nonces. {%- endtrans %}

        {% trans -%} The first time a router wants to encrypt a garlic message to another router, - they encrypt the keying material for an AES256 session key with ElGamal and - append the AES256/CBC encrypted payload after that encrypted ElGamal block. - In addition to the encrypted payload, the AES encrypted section contains the - payload length, the SHA256 hash of the unencrypted payload, as well as a number - of "session tags" - random 32 byte nonces. The next time the sender wants - to encrypt a garlic message to another router, rather than ElGamal encrypt - a new session key they simply pick one of the previously delivered session - tags and AES encrypt the payload like before, using the session key used with - that session tag, prepended with the session tag itself. When a router receives - a garlic encrypted message, they check the first 32 bytes to see if it matches - an available session tag - if it does, they simply AES decrypt the message, - but if it does not, they ElGamal decrypt the first block. +they encrypt the keying material for an AES256 session key with ElGamal and +append the AES256/CBC encrypted payload after that encrypted ElGamal block. +In addition to the encrypted payload, the AES encrypted section contains the +payload length, the SHA256 hash of the unencrypted payload, as well as a number +of "session tags" - random 32 byte nonces. The next time the sender wants +to encrypt a garlic message to another router, rather than ElGamal encrypt +a new session key they simply pick one of the previously delivered session +tags and AES encrypt the payload like before, using the session key used with +that session tag, prepended with the session tag itself. When a router receives +a garlic encrypted message, they check the first 32 bytes to see if it matches +an available session tag - if it does, they simply AES decrypt the message, +but if it does not, they ElGamal decrypt the first block. {%- endtrans %}

        {% trans -%} Each session tag can be used only once so as to prevent internal adversaries - from unnecessarily correlating different messages as being between the same - routers. The sender of an ElGamal/AES+SessionTag encrypted message chooses - when and how many tags to deliver, prestocking the recipient with enough tags - to cover a volley of messages. Garlic messages may detect the successful tag - delivery by bundling a small additional message as a clove (a "delivery status - message") - when the garlic message arrives at the intended recipient and - is decrypted successfully, this small delivery status message is one of the - cloves exposed and has instructions for the recipient to send the clove back - to the original sender (through an inbound tunnel, of course). When the original - sender receives this delivery status message, they know that the session tags - bundled in the garlic message were successfully delivered. +from unnecessarily correlating different messages as being between the same +routers. The sender of an ElGamal/AES+SessionTag encrypted message chooses +when and how many tags to deliver, prestocking the recipient with enough tags +to cover a volley of messages. Garlic messages may detect the successful tag +delivery by bundling a small additional message as a clove (a "delivery status +message") - when the garlic message arrives at the intended recipient and +is decrypted successfully, this small delivery status message is one of the +cloves exposed and has instructions for the recipient to send the clove back +to the original sender (through an inbound tunnel, of course). When the original +sender receives this delivery status message, they know that the session tags +bundled in the garlic message were successfully delivered. {%- endtrans %}

        {% trans -%} Session tags themselves have a short lifetime, after which they are - discarded if not used. In addition, the quantity stored for each key is limited, - as are the number of keys themselves - if too many arrive, either new or old - messages may be dropped. The sender keeps track whether messages using session - tags are getting through, and if there isn't sufficient communication it may - drop the ones previously assumed to be properly delivered, reverting back - to the full expensive ElGamal encryption. - A session will continue to exist until all its tags are exhausted or expire. +discarded if not used. In addition, the quantity stored for each key is limited, +as are the number of keys themselves - if too many arrive, either new or old +messages may be dropped. The sender keeps track whether messages using session +tags are getting through, and if there isn't sufficient communication it may +drop the ones previously assumed to be properly delivered, reverting back +to the full expensive ElGamal encryption. +A session will continue to exist until all its tags are exhausted or expire. {%- endtrans %}

        {% trans -%} From 0156918e7aef4c4bbd0c3fd0d6b85e16b8467b00 Mon Sep 17 00:00:00 2001 From: str4d Date: Sat, 2 Feb 2013 01:15:22 +0000 Subject: [PATCH 377/650] Added translation tags to docs/how/tunnel-routing --- .../pages/site/docs/how/tunnel-routing.html | 332 ++++++++++-------- 1 file changed, 189 insertions(+), 143 deletions(-) diff --git a/i2p2www/pages/site/docs/how/tunnel-routing.html b/i2p2www/pages/site/docs/how/tunnel-routing.html index a0820a46..31c0fd3b 100644 --- a/i2p2www/pages/site/docs/how/tunnel-routing.html +++ b/i2p2www/pages/site/docs/how/tunnel-routing.html @@ -1,14 +1,16 @@ {% extends "global/layout.html" %} -{% block title %}Tunnel Overview{% endblock %} -{% block lastupdated %}July 2011{% endblock %} +{% block title %}{% trans %}Tunnel Overview{% endtrans %}{% endblock %} +{% block lastupdated %}{% trans %}July 2011{% endtrans %}{% endblock %} {% block accuratefor %}0.8.7{% endblock %} {% block content %} -

        Tunnel Overview

        -

        +

        {% trans %}Tunnel Overview{% endtrans %}

        +

        {% trans -%} This page contains an overview of I2P tunnel terminology and operation, with links to more technical pages, details, and specifications. -

        -

        As briefly explained in the introduction, I2P builds virtual "tunnels" - +{%- endtrans %}

        + +

        {% trans intro=site_url('docs/how/intro') -%} +As briefly explained in the introduction, I2P builds virtual "tunnels" - temporary and unidirectional paths through a sequence of routers. These tunnels are classified as either inbound tunnels (where everything given to it goes towards the creator of the tunnel) or outbound tunnels @@ -16,119 +18,142 @@ given to it goes towards the creator of the tunnel) or outbound tunnels wants to send a message to Bob, she will (typically) send it out one of her existing outbound tunnels with instructions for that tunnel's endpoint to forward it to the gateway router for one of Bob's current inbound -tunnels, which in turn passes it to Bob.

        +tunnels, which in turn passes it to Bob. +{%- endtrans %}

        +

        -Tunnel +{{ _('Alice connecting through her outbound tunnel to Bob via his inbound tunnel') }}

        -A: Outbound Gateway (Alice)
        -B: Outbound Participant
        -C: Outbound Endpoint
        -D: Inbound Gateway
        -E: Inbound Participant
        -F: Inbound Endpoint (Bob)
        +A: {% trans %}Outbound Gateway{% endtrans %} (Alice)
        +B: {% trans %}Outbound Participant{% endtrans %}
        +C: {% trans %}Outbound Endpoint{% endtrans %}
        +D: {% trans %}Inbound Gateway{% endtrans %}
        +E: {% trans %}Inbound Participant{% endtrans %}
        +F: {% trans %}Inbound Endpoint{% endtrans %} (Bob)
         

        -

        Tunnel vocabulary

        +

        {% trans %}Tunnel vocabulary{% endtrans %}

          -
        • Tunnel gateway - the first router in a tunnel. For inbound tunnels, - this is the one mentioned in the LeaseSet published in the - network database. For outbound tunnels, the - gateway is the originating router. (e.g. both A and D above)
        • -
        • Tunnel endpoint - the last router in a tunnel. (e.g. both C and F above)
        • -
        • Tunnel participant - all routers in a tunnel except for the gateway or - endpoint (e.g. both B and E above)
        • -
        • n-Hop tunnel - a tunnel with a specific number of inter-router jumps, e.g.: -
            -
          • 0-hop tunnel - a tunnel where the gateway is also the endpoint
          • -
          • 1-hop tunnel - a tunnel where the gateway talks directly to the - endpoint
          • -
          • 2-(or more)-hop tunnel - a tunnel where there is at least one intermediate - tunnel participant. (the above diagram includes two 2-hop tunnels - one - outbound from Alice, one inbound to Bob)
          • -
          -
        • -
        • Tunnel ID - A 4 byte integer - different for each hop in a tunnel, and unique among all tunnels on a router. - Chosen randomly by the tunnel creator.
        • +
        • {% trans netdb=site_url('docs/how/network-database') -%} +Tunnel gateway - the first router in a tunnel. For inbound tunnels, +this is the one mentioned in the LeaseSet published in the +network database. For outbound tunnels, the +gateway is the originating router. (e.g. both A and D above) +{%- endtrans %}
        • +
        • {% trans %}Tunnel endpoint - the last router in a tunnel. (e.g. both C and F above){% endtrans %}
        • +
        • {% trans -%} +Tunnel participant - all routers in a tunnel except for the gateway or +endpoint (e.g. both B and E above) +{%- endtrans %}
        • +
        • {% trans %}n-Hop tunnel - a tunnel with a specific number of inter-router jumps, e.g.:{% endtrans %} +
            +
          • {% trans %}0-hop tunnel - a tunnel where the gateway is also the endpoint{% endtrans %}
          • +
          • {% trans %}1-hop tunnel - a tunnel where the gateway talks directly to the endpoint{% endtrans %}
          • +
          • {% trans -%} +2-(or more)-hop tunnel - a tunnel where there is at least one intermediate +tunnel participant. (the above diagram includes two 2-hop tunnels - one +outbound from Alice, one inbound to Bob) +{%- endtrans %}
          • +
          +
        • +
        • {% trans commonstructures=site_url('docs/spec/common-structures') -%} +Tunnel ID - A 4 byte integer +different for each hop in a tunnel, and unique among all tunnels on a router. +Chosen randomly by the tunnel creator. +{%- endtrans %}
        -

        Tunnel Build Information

        -

        Routers performing the three roles (gateway, participant, endpoint) are given +

        {% trans %}Tunnel Build Information{% endtrans %}

        +

        {% trans tunnelcreation=site_url('docs/spec/tunnel-creation') -%} +Routers performing the three roles (gateway, participant, endpoint) are given different pieces of data in the initial -Tunnel Build Message -to accomplish their tasks:

        - +Tunnel Build Message +to accomplish their tasks: +{%- endtrans %}

          -
        • The tunnel gateway gets: -
            -
          • tunnel encryption key - an AES private key for encrypting - messages and instructions to the next hop
          • -
          • tunnel IV key - an AES private key for double-encrypting - the IV to the next hop
          • -
          • reply key - an AES public key for encrypting - the reply to the tunnel build request
          • -
          • reply IV - the IV for encrypting - the reply to the tunnel build request
          • -
          • tunnel id - 4 byte integer (inbound gateways only) -
          • -
          • next hop - what router is the next one in the path (unless this is a 0-hop tunnel, and the gateway is also the endpoint)
          • -
          • next tunnel id - The tunnel ID on the next hop
          • -
          -
        • -
        • All intermediate tunnel participants get: -
            -
          • tunnel encryption key - an AES private key for encrypting - messages and instructions to the next hop
          • -
          • tunnel IV key - an AES private key for double-encrypting - the IV to the next hop
          • -
          • reply key - an AES public key for encrypting - the reply to the tunnel build request
          • -
          • reply IV - the IV for encrypting - the reply to the tunnel build request
          • -
          • tunnel id - 4 byte integer -
          • -
          • next hop - what router is the next one in the path
          • -
          • next tunnel id - The tunnel ID on the next hop
          • -
          -
        • -
        • The tunnel endpoint gets: -
            -
          • tunnel encryption key - an AES private key for encrypting - messages and instructions to the the endpoint (itself)
          • -
          • tunnel IV key - an AES private key for double-encrypting - the IV to the endpoint (itself)
          • -
          • reply key - an AES public key for encrypting - the reply to the tunnel build request (outbound endpoints only)
          • -
          • reply IV - the IV for encrypting - the reply to the tunnel build request (outbound endpoints only)
          • -
          • tunnel id - 4 byte integer (outbound endpoints only) -
          • -
          • reply router - the inbound gateway of the tunnel to send the reply through (outbound endpoints only)
          • -
          • reply tunnel id - The tunnel ID of the reply router (outbound endpoints only)
          • -
          -
        • +
        • {% trans %}The tunnel gateway gets:{% endtrans %} +
            +
          • {% trans commonstructures=site_url('docs/spec/common-structures') -%} +tunnel encryption key - an AES private key for encrypting +messages and instructions to the next hop +{%- endtrans %}
          • +
          • {% trans commonstructures=site_url('docs/spec/common-structures') -%} +tunnel IV key - an AES private key for double-encrypting +the IV to the next hop +{%- endtrans %}
          • +
          • {% trans commonstructures=site_url('docs/spec/common-structures') -%} +reply key - an AES public key for encrypting +the reply to the tunnel build request +{%- endtrans %}
          • +
          • {% trans %}reply IV - the IV for encrypting the reply to the tunnel build request{% endtrans %}
          • +
          • {% trans %}tunnel id - 4 byte integer (inbound gateways only){% endtrans %}
          • +
          • {% trans %}next hop - what router is the next one in the path (unless this is a 0-hop tunnel, and the gateway is also the endpoint){% endtrans %}
          • +
          • {% trans %}next tunnel id - The tunnel ID on the next hop{% endtrans %}
          • +
          +
        • +
        • {% trans %}All intermediate tunnel participants get:{% endtrans %} +
            +
          • {% trans commonstructures=site_url('docs/spec/common-structures') -%} +tunnel encryption key - an AES private key for encrypting +messages and instructions to the next hop +{%- endtrans %}
          • +
          • {% trans commonstructures=site_url('docs/spec/common-structures') -%} +tunnel IV key - an AES private key for double-encrypting +the IV to the next hop +{%- endtrans %}
          • +
          • {% trans commonstructures=site_url('docs/spec/common-structures') -%} +reply key - an AES public key for encrypting +the reply to the tunnel build request +{%- endtrans %}
          • +
          • {% trans %}reply IV - the IV for encrypting the reply to the tunnel build request{% endtrans %}
          • +
          • {% trans %}tunnel id - 4 byte integer{% endtrans %}
          • +
          • {% trans %}next hop - what router is the next one in the path{% endtrans %}
          • +
          • {% trans %}next tunnel id - The tunnel ID on the next hop{% endtrans %}
          • +
          +
        • +
        • {% trans %}The tunnel endpoint gets:{% endtrans %} +
            +
          • {% trans commonstructures=site_url('docs/spec/common-structures') -%} +tunnel encryption key - an AES private key for encrypting +messages and instructions to the the endpoint (itself) +{%- endtrans %}
          • +
          • {% trans commonstructures=site_url('docs/spec/common-structures') -%} +tunnel IV key - an AES private key for double-encrypting +the IV to the endpoint (itself) +{%- endtrans %}
          • +
          • {% trans commonstructures=site_url('docs/spec/common-structures') -%} +reply key - an AES public key for encrypting +the reply to the tunnel build request (outbound endpoints only) +{%- endtrans %}
          • +
          • {% trans %}reply IV - the IV for encrypting the reply to the tunnel build request (outbound endpoints only){% endtrans %}
          • +
          • {% trans %}tunnel id - 4 byte integer (outbound endpoints only){% endtrans %}
          • +
          • {% trans %}reply router - the inbound gateway of the tunnel to send the reply through (outbound endpoints only){% endtrans %}
          • +
          • {% trans %}reply tunnel id - The tunnel ID of the reply router (outbound endpoints only){% endtrans %}
          • +
          +
        -

        +

        {% trans tunnelcreation=site_url('docs/spec/tunnel-creation') -%} Details are in the -tunnel creation specification. -

        +tunnel creation specification. +{%- endtrans %}

        -

        Tunnel pooling

        -

        +

        {% trans %}Tunnel pooling{% endtrans %}

        +

        {% trans tunnelimpl=site_url('docs/tunnels/implementation') -%} Several tunnels for a particular purpose may be grouped into a "tunnel pool", as described in the -tunnel specification. +tunnel specification. This provides redundancy and additional bandwidth. The pools used by the router itself are called "exploratory tunnels". The pools used by applications are called "client tunnels". -

        +{%- endtrans %}

        -

        Tunnel length

        -

        As mentioned above, each client requests that their router provide tunnels to +

        {% trans %}Tunnel length{% endtrans %}

        +

        {% trans i2cp=site_url('docs/protocol/i2cp') -%} +As mentioned above, each client requests that their router provide tunnels to include at least a certain number of hops. The decision as to how many routers to have in one's outbound and inbound tunnels has an important effect upon the @@ -138,116 +163,137 @@ likely that one of those routers will fail prematurely. The less routers in a tunnel, the easier it is for an adversary to mount traffic analysis attacks and pierce someone's anonymity. Tunnel lengths are specified by clients via -I2CP options. +I2CP options. The maximum number of hops in a tunnel is 7. -

        +{%- endtrans %}

        -

        0-hop tunnels

        -

        With no remote routers in a tunnel, the user has very basic plausible +

        {% trans %}0-hop tunnels{% endtrans %}

        +

        {% trans -%} +With no remote routers in a tunnel, the user has very basic plausible deniability (since no one knows for sure that the peer that sent them the message wasn't simply just forwarding it on as part of the tunnel). However, it would be fairly easy to mount a statistical analysis attack and notice that messages targeting a specific destination are always sent through a single gateway. Statistical analysis against outbound 0-hop tunnels are more complex, -but could show similar information (though would be slightly harder to mount)

        +but could show similar information (though would be slightly harder to mount). +{%- endtrans %}

        -

        1-hop tunnels

        -

        With only one remote router in a tunnel, the user has both plausible +

        {% trans %}1-hop tunnels{% endtrans %}

        +

        {% trans threatmodel=site_url('docs/how/threat-model') -%} +With only one remote router in a tunnel, the user has both plausible deniability and basic anonymity, as long as they are not up against an internal -adversary (as described on threat model). However, +adversary (as described on threat model). However, if the adversary ran a sufficient number of routers such that the single remote router in the tunnel is often one of those compromised ones, they would be able -to mount the above statistical traffic analysis attack.

        +to mount the above statistical traffic analysis attack. +{%- endtrans %}

        -

        2-hop tunnels

        -

        With two or more remote routers in a tunnel, the costs of mounting the traffic +

        {% trans %}2-hop tunnels{% endtrans %}

        +

        {% trans -%} +With two or more remote routers in a tunnel, the costs of mounting the traffic analysis attack increases, since many remote routers would have to be compromised -to mount it.

        +to mount it. +{%- endtrans %}

        -

        3-hop (or more) tunnels

        -To reduce the susceptibility to some attacks, +

        {% trans %}3-hop (or more) tunnels{% endtrans %}

        +

        {% trans url='http://blog.torproject.org/blog/one-cell-enough' -%} +To reduce the susceptibility to some attacks, 3 or more hops are recommended for the highest level of protection. -recent studies +Recent studies also conclude that more than 3 hops does not provide additional protection. +{%- endtrans %}

        -

        Tunnel default lengths

        -

        The router uses 2-hop tunnels by default for its exploratory tunnels. +

        {% trans %}Tunnel default lengths{% endtrans %}

        +

        {% trans i2cp=site_url('docs/protocol/i2cp') -%} +The router uses 2-hop tunnels by default for its exploratory tunnels. Client tunnel defaults are set by the application, using -I2CP options. +I2CP options. Most applications use 2 or 3 hops as their default. -

        +{%- endtrans %}

        -

        Tunnel testing

        -

        All tunnels are periodically tested by their creator by sending a +

        {% trans %}Tunnel testing{% endtrans %}

        +

        {% trans peerselection=site_url('docs/how/peer-selection') -%} +All tunnels are periodically tested by their creator by sending a DeliveryStatusMessage out an outbound tunnel and bound for another inbound tunnel (testing both tunnels at once). If either fails a number of consecutive tests, it is marked as no longer functional. If it was used for a client's inbound tunnel, a new leaseSet is created. Tunnel test failures are also reflected in the -capacity rating in the peer profile. -

        +capacity rating in the peer profile. +{%- endtrans %}

        -

        Tunnel creation

        -

        Tunnel creation is handled by garlic routing +

        {% trans %}Tunnel creation{% endtrans %}

        +

        {% trans garlicrouting=site_url('docs/how/garlic-routing'), +tunnelcreation=site_url('docs/spec/tunnel-creation') -%} +Tunnel creation is handled by garlic routing a Tunnel Build Message to a router, requesting that they participate in the tunnel (providing them with all of the appropriate information, as above, along with a certificate, which right now is a 'null' cert, but will support hashcash or other non-free certificates when necessary). That router forwards the message to the next hop in the tunnel. Details are in the -tunnel creation specification. -

        +tunnel creation specification. +{%- endtrans %}

        Tunnel encryption

        -

        Multi-layer encryption is handled by garlic encryption +

        {% trans garlicrouting=site_url('docs/how/garlic-routing'), +tunnelimpl=site_url('docs/tunnels/implementation') -%} +Multi-layer encryption is handled by garlic encryption of tunnel messages. Details are in the -tunnel specification. +tunnel specification. The IV of each hop is encrypted with a separate key as explained there. -

        +{%- endtrans %}

        -

        Future Work

        -
        • +

          {% trans %}Future Work{% endtrans %}

          +
            +
          • {% trans -%} Other tunnel test techniques could be used, such as garlic wrapping a number of tests into cloves, testing individual tunnel -participants separately, -etc. -
          • +participants separately, etc. +{%- endtrans %}
          • + +
          • {% trans -%} Move to 3-hop exploratory tunnels defaults. -
          • +{%- endtrans %}
          • + +
          • {% trans -%} In a distant future release, options specifying the pooling, mixing, and chaff generation settings may be implemented. -
          • +{%- endtrans %}
          • + +
          • {% trans -%} In a distant future release, limits on the quantity and size of messages allowed during the tunnel's lifetime may be implemented (e.g. no more than 300 messages or 1MB per minute). -
          +{%- endtrans %}
        • +
        -

        See Also

        +

        {% trans %}See Also{% endtrans %}

        {% endblock %} From db4a3c796847500b26f58086c36cd29942fa81fc Mon Sep 17 00:00:00 2001 From: str4d Date: Sat, 2 Feb 2013 23:17:39 +0000 Subject: [PATCH 378/650] Added translation tags to docs/how/network-database --- .../pages/site/docs/how/network-database.html | 1295 +++++++++-------- 1 file changed, 667 insertions(+), 628 deletions(-) diff --git a/i2p2www/pages/site/docs/how/network-database.html b/i2p2www/pages/site/docs/how/network-database.html index 8c003bf0..4c677a7b 100644 --- a/i2p2www/pages/site/docs/how/network-database.html +++ b/i2p2www/pages/site/docs/how/network-database.html @@ -1,761 +1,800 @@ {% extends "global/layout.html" %} -{% block title %}The Network Database{% endblock %} -{% block lastupdated %}June 2012{% endblock %} +{% block title %}{% trans %}The Network Database{% endtrans %}{% endblock %} +{% block lastupdated %}{% trans %}June 2012{% endtrans %}{% endblock %} {% block accuratefor %}0.9{% endblock %} {% block content %} -

        Overview

        +

        {% trans %}Overview{% endtrans %}

        -

        - I2P's netDb is a specialized distributed database, containing - just two types of data - router contact information (RouterInfos) and destination contact - information (LeaseSets). Each piece of data is signed by the appropriate party and verified - by anyone who uses or stores it. In addition, the data has liveliness information - within it, allowing irrelevant entries to be dropped, newer entries to replace - older ones, and protection against certain classes of attack. -

        +

        {% trans -%} +I2P's netDb is a specialized distributed database, containing +just two types of data - router contact information (RouterInfos) and destination contact +information (LeaseSets). Each piece of data is signed by the appropriate party and verified +by anyone who uses or stores it. In addition, the data has liveliness information +within it, allowing irrelevant entries to be dropped, newer entries to replace +older ones, and protection against certain classes of attack. +{%- endtrans %}

        -

        - The netDb is distributed with a simple technique called "floodfill", - where a subset of all routers, called "floodfill routers", maintains the distributed database. -

        +

        {% trans -%} +The netDb is distributed with a simple technique called "floodfill", +where a subset of all routers, called "floodfill routers", maintains the distributed database. +{%- endtrans %}

        RouterInfo

        -

        - When an I2P router wants to contact another router, they need to know some - key pieces of data - all of which are bundled up and signed by the router into - a structure called the "RouterInfo", which is distributed with the SHA256 of the router's identity - as the key. The structure itself contains: -

        +

        {% trans -%} +When an I2P router wants to contact another router, they need to know some +key pieces of data - all of which are bundled up and signed by the router into +a structure called the "RouterInfo", which is distributed with the SHA256 of the router's identity +as the key. The structure itself contains: +{%- endtrans %}

          -
        • The router's identity (a 2048bit ElGamal encryption key, a 1024bit DSA signing key, and a certificate)
        • -
        • The contact addresses at which it can be reached (e.g. TCP: example.org port 4108)
        • -
        • When this was published
        • -
        • A set of arbitrary text options
        • -
        • The signature of the above, generated by the identity's DSA signing key
        • +
        • {% trans %}The router's identity (a 2048bit ElGamal encryption key, a 1024bit DSA signing key, and a certificate){% endtrans %}
        • +
        • {% trans %}The contact addresses at which it can be reached (e.g. TCP: example.org port 4108){% endtrans %}
        • +
        • {% trans %}When this was published{% endtrans %}
        • +
        • {% trans %}A set of arbitrary text options{% endtrans %}
        • +
        • {% trans %}The signature of the above, generated by the identity's DSA signing key{% endtrans %}
        -

        - The following text options, while not strictly required, are expected - to be present: -

        +

        {% trans -%} +The following text options, while not strictly required, are expected +to be present: +{%- endtrans %}

        • caps - (Capabilities flags - used to indicate floodfill participation, approximate bandwidth, and perceived reachability) +({% trans %}Capabilities flags - used to indicate floodfill participation, approximate bandwidth, and perceived reachability{% endtrans %}) +
        • coreVersion - (The core library version, always the same as the router version) +({% trans %}The core library version, always the same as the router version{% endtrans %}) +
        • netId = 2 - (Basic network compatibility - A router will refuse to communicate with a peer having a different netId) +({% trans %}Basic network compatibility - A router will refuse to communicate with a peer having a different netId{% endtrans %}) +
        • router.version - (Used to determine compatibility with newer features and messages) +({% trans %}Used to determine compatibility with newer features and messages{% endtrans %}) +
        • stat_uptime = 90m - (Always sent as 90m, for compatibility with an older scheme where routers published their actual uptime, - and only sent tunnel requests to peers whose was more than 60m) +({% trans %}Always sent as 90m, for compatibility with an older scheme where routers published their actual uptime, +and only sent tunnel requests to peers whose was more than 60m{% endtrans %}) +
        -

        - These values are used by other routers for basic decisions. - Should we connect to this router? Should we attempt to route a tunnel through this router? - The bandwidth capability flag, in particular, is used only to determine whether - the router meets a minimum threshold for routing tunnels. - Above the minimum threshold, the advertised bandwidth is not used or trusted anywhere - in the router, except for display in the user interface and for debugging and network analysis. -

        +

        {% trans -%} +These values are used by other routers for basic decisions. +Should we connect to this router? Should we attempt to route a tunnel through this router? +The bandwidth capability flag, in particular, is used only to determine whether +the router meets a minimum threshold for routing tunnels. +Above the minimum threshold, the advertised bandwidth is not used or trusted anywhere +in the router, except for display in the user interface and for debugging and network analysis. +{%- endtrans %}

        -

        - Additional text options include - a small number of statistics about the router's health, which are aggregated by - sites such as stats.i2p - for network performance analysis and debugging. - These statistics were chosen to provide data crucial to the developers, - such as tunnel build success rates, while balancing the need for such data - with the side-effects that could result from revealing this data. - Current statistics are limited to: -

        +

        {% trans stats=i2pconv('stats.i2p') -%} +Additional text options include +a small number of statistics about the router's health, which are aggregated by +sites such as {{ stats }} +for network performance analysis and debugging. +These statistics were chosen to provide data crucial to the developers, +such as tunnel build success rates, while balancing the need for such data +with the side-effects that could result from revealing this data. +Current statistics are limited to: +{%- endtrans %}

          -
        • Client and exploratory tunnel build success, reject, and timeout rates -
        • 1 hour average number of participating tunnels +
        • {% trans %}Client and exploratory tunnel build success, reject, and timeout rates{% endtrans %} +
        • {% trans %}1 hour average number of participating tunnels{% endtrans %}
        -

        - The data - published can be seen in the router's user interface, - but is not used or trusted within the router. - As the network has matured, we have gradually removed most of the published - statistics to improve anonymity, and we plan to remove more in future releases. -

        +

        {% trans -%} +The data published can be seen in the router's user interface, +but is not used or trusted within the router. +As the network has matured, we have gradually removed most of the published +statistics to improve anonymity, and we plan to remove more in future releases. +{%- endtrans %}

        - RouterInfo specification + {% trans %}RouterInfo specification{% endtrans %}

        - RouterInfo Javadoc + {% trans %}RouterInfo Javadoc{% endtrans %}

        -

        RouterInfo Expiration

        -

        - RouterInfos have no set expiration time. - Each router is free to maintain its own local policy to trade off the frequency of RouterInfo lookups - with memory or disk usage. - In the current implementation, there are the following general policies: -

        +

        {% trans %}RouterInfo Expiration{% endtrans %}

        +

        {% trans -%} +RouterInfos have no set expiration time. +Each router is free to maintain its own local policy to trade off the frequency of RouterInfo lookups +with memory or disk usage. +In the current implementation, there are the following general policies: +{%- endtrans %}

          -
        • There is no expiration during the first hour of uptime, as the persistent stored data may be old.
        • -
        • There is no expiration if there are 25 or less RouterInfos.
        • -
        • As the number of local RouterInfos grows, the expiration time shrinks, in an attempt to maintain - a reasonable number RouterInfos. The expiration time with less than 120 routers is 72 hours, - while expiration time with 300 routers is around 30 hours.
        • -
        • RouterInfos containing SSU introducers expire in about an hour, as - the introducer list expires in about that time.
        • -
        • Floodfills use a short expiration time (1 hour) for all local RouterInfos, as valid RouterInfos will - be frequently republished to them.
        • +
        • {% trans -%} +There is no expiration during the first hour of uptime, as the persistent stored data may be old. +{%- endtrans %}
        • +
        • {% trans -%} +There is no expiration if there are 25 or less RouterInfos. +{%- endtrans %}
        • +
        • {% trans -%} +As the number of local RouterInfos grows, the expiration time shrinks, in an attempt to maintain +a reasonable number RouterInfos. The expiration time with less than 120 routers is 72 hours, +while expiration time with 300 routers is around 30 hours. +{%- endtrans %}
        • +
        • {% trans ssu=site_url('docs/transport/ssu') -%} +RouterInfos containing SSU introducers expire in about an hour, as +the introducer list expires in about that time. +{%- endtrans %}
        • +
        • {% trans -%} +Floodfills use a short expiration time (1 hour) for all local RouterInfos, as valid RouterInfos will +be frequently republished to them. +{%- endtrans %}
        -

        RouterInfo Persistent Storage

        +

        {% trans %}RouterInfo Persistent Storage{% endtrans %}

        -

        - RouterInfos are periodically written to disk so that they are available after a restart. -

        +

        {% trans -%} +RouterInfos are periodically written to disk so that they are available after a restart. +{%- endtrans %}

        LeaseSet

        -

        - The second piece of data distributed in the netDb is a "LeaseSet" - documenting - a group of tunnel entry points (leases) for a particular client destination. - Each of these leases specify the following information: +

        {% trans -%} +The second piece of data distributed in the netDb is a "LeaseSet" - documenting +a group of tunnel entry points (leases) for a particular client destination. +Each of these leases specify the following information: +{%- endtrans %}

          -
        • The tunnel gateway router (by specifying its identity)
        • -
        • The tunnel ID on that router to send messages with (a 4 byte number)
        • -
        • When that tunnel will expire.
        • +
        • {% trans %}The tunnel gateway router (by specifying its identity){% endtrans %}
        • +
        • {% trans %}The tunnel ID on that router to send messages with (a 4 byte number){% endtrans %}
        • +
        • {% trans %}When that tunnel will expire.{% endtrans %}
        - The LeaseSet itself is stored in the netDb under - the key derived from the SHA256 of the destination. -

        +

        {% trans -%} +The LeaseSet itself is stored in the netDb under +the key derived from the SHA256 of the destination. +{%- endtrans %}

        -

        - In addition to these leases, the LeaseSet includes: +

        {% trans -%} +In addition to these leases, the LeaseSet includes: +{%- endtrans %}

          -
        • The destination itself (a 2048bit ElGamal encryption key, 1024bit DSA signing key and a certificate)
        • -
        • Additional encryption public key: used for end-to-end encryption of garlic messages
        • -
        • Additional signing public key: intended for LeaseSet revocation, but is currently unused.
        • -
        • Signature of all the LeaseSet data, to make sure the Destination published the LeaseSet.
        • +
        • {% trans %}The destination itself (a 2048bit ElGamal encryption key, 1024bit DSA signing key and a certificate){% endtrans %}
        • +
        • {% trans %}Additional encryption public key: used for end-to-end encryption of garlic messages{% endtrans %}
        • +
        • {% trans %}Additional signing public key: intended for LeaseSet revocation, but is currently unused.{% endtrans %}
        • +
        • {% trans %}Signature of all the LeaseSet data, to make sure the Destination published the LeaseSet.{% endtrans %}
        -

        - Lease specification + {% trans %}Lease specification{% endtrans %}
        - LeaseSet specification + {% trans %}LeaseSet specification{% endtrans %}

        - Lease Javadoc + {% trans %}Lease Javadoc{% endtrans %}
        - LeaseSet Javadoc + {% trans %}LeaseSet Javadoc{% endtrans %}

        -

        Unpublished LeaseSets

        -

        - A LeaseSet for a destination used only for outgoing connections is unpublished. - It is never sent for publication to a floodfill router. - "Client" tunnels, such as those for web browsing and IRC clients, are unpublished. - Servers will still be able to send messages back to those unpublished destinations, - because of I2NP storage messages. -

        +

        {% trans %}Unpublished LeaseSets{% endtrans %}

        +

        {% trans -%} +A LeaseSet for a destination used only for outgoing connections is unpublished. +It is never sent for publication to a floodfill router. +"Client" tunnels, such as those for web browsing and IRC clients, are unpublished. +Servers will still be able to send messages back to those unpublished destinations, +because of I2NP storage messages. +{%- endtrans %}

        -

        Revoked LeaseSets

        -

        - A LeaseSet may be revoked by publishing a new LeaseSet with zero leases. - Revocations must be signed by the additional signing key in the LeaseSet. - Revocations are not fully implemented, and it is unclear if they have any practical use. - This is the only planned use for that signing key, so it is currently unused. -

        +

        {% trans %}Revoked LeaseSets{% endtrans %}

        +

        {% trans -%} +A LeaseSet may be revoked by publishing a new LeaseSet with zero leases. +Revocations must be signed by the additional signing key in the LeaseSet. +Revocations are not fully implemented, and it is unclear if they have any practical use. +This is the only planned use for that signing key, so it is currently unused. +{%- endtrans %}

        -

        Encrypted LeaseSets

        -

        - In an encrypted LeaseSet, all Leases are encrypted with a separate DSA key. - The leases may only be decoded, and thus the destination may only be contacted, - by those with the key. - There is no flag or other direct indication that the LeaseSet is encrypted. - Encrypted LeaseSets are not widely used, and it is a topic for future work to - research whether the user interface and implementation of encrypted LeaseSets could be improved. -

        +

        {% trans %}Encrypted LeaseSets{% endtrans %}

        +

        {% trans -%} +In an encrypted LeaseSet, all Leases are encrypted with a separate DSA key. +The leases may only be decoded, and thus the destination may only be contacted, +by those with the key. +There is no flag or other direct indication that the LeaseSet is encrypted. +Encrypted LeaseSets are not widely used, and it is a topic for future work to +research whether the user interface and implementation of encrypted LeaseSets could be improved. +{%- endtrans %}

        -

        LeaseSet Expiration

        -

        - All Leases (tunnels) are valid for 10 minutes; therefore, a LeaseSet expires - 10 minutes after the earliest creation time of all its Leases. -

        +

        {% trans %}LeaseSet Expiration{% endtrans %}

        +

        {% trans -%} +All Leases (tunnels) are valid for 10 minutes; therefore, a LeaseSet expires +10 minutes after the earliest creation time of all its Leases. +{%- endtrans %}

        -

        LeaseSet Persistent Storage

        -

        - There is no persistent storage of LeaseSet data since they expire so quickly. -

        +

        {% trans %}LeaseSet Persistent Storage{% endtrans %}

        +

        {% trans -%} +There is no persistent storage of LeaseSet data since they expire so quickly. +{%- endtrans %}

        -

        Bootstrapping

        -

        - The netDb is decentralized, however you do need at - least one reference to a peer so that the integration process - ties you in. This is accomplished by "reseeding" your router with the RouterInfo - of an active peer - specifically, by retrieving their routerInfo-$hash.dat - file and storing it in your netDb/ directory. Anyone can provide - you with those files - you can even provide them to others by exposing your own - netDb directory. To simplify the process, - volunteers publish their netDb directories (or a subset) on the regular (non-i2p) network, - and the URLs of these directories are hardcoded in I2P. - When the router starts up for the first time, it automatically fetches from - one of these URLs, selected at random. -

        +

        {% trans %}Bootstrapping{% endtrans %}

        +

        {% trans -%} +The netDb is decentralized, however you do need at +least one reference to a peer so that the integration process +ties you in. This is accomplished by "reseeding" your router with the RouterInfo +of an active peer - specifically, by retrieving their routerInfo-$hash.dat +file and storing it in your netDb/ directory. Anyone can provide +you with those files - you can even provide them to others by exposing your own +netDb directory. To simplify the process, +volunteers publish their netDb directories (or a subset) on the regular (non-i2p) network, +and the URLs of these directories are hardcoded in I2P. +When the router starts up for the first time, it automatically fetches from +one of these URLs, selected at random. +{%- endtrans %}

        -

        Floodfill

        -

        - The floodfill netDb is a simple distributed storage mechanism. - The storage algorithm is simple: send the data to the closest peer that has advertised itself - as a floodfill router. Then wait 10 seconds, pick another floodfill router and ask them - for the entry to be sent, verifying its proper insertion / distribution. If the - verification peer doesn't reply, or they don't have the entry, the sender - repeats the process. When the peer in the floodfill netDb receives a netDb - store from a peer not in the floodfill netDb, they send it to a subset of the floodfill netDb-peers. - The peers selected are the ones closest (according to the XOR-metric) to a specific key. -

        -

        - Determining who is part of the floodfill netDb is trivial - it is exposed in each - router's published routerInfo as a capability. -

        -

        - Floodfills have no central authority and do not form a "consensus" - - they only implement a simple DHT overlay. -

        +

        {% trans %}Floodfill{% endtrans %}

        +

        {% trans -%} +The floodfill netDb is a simple distributed storage mechanism. +The storage algorithm is simple: send the data to the closest peer that has advertised itself +as a floodfill router. Then wait 10 seconds, pick another floodfill router and ask them +for the entry to be sent, verifying its proper insertion / distribution. If the +verification peer doesn't reply, or they don't have the entry, the sender +repeats the process. When the peer in the floodfill netDb receives a netDb +store from a peer not in the floodfill netDb, they send it to a subset of the floodfill netDb-peers. +The peers selected are the ones closest (according to the XOR-metric) to a specific key. +{%- endtrans %}

        + +

        {% trans -%} +Determining who is part of the floodfill netDb is trivial - it is exposed in each +router's published routerInfo as a capability. +{%- endtrans %}

        + +

        {% trans -%} +Floodfills have no central authority and do not form a "consensus" - +they only implement a simple DHT overlay. +{%- endtrans %}

        -

        Floodfill Router Opt-in

        +

        {% trans %}Floodfill Router Opt-in{% endtrans %}

        -

        - Unlike Tor, where the directory servers are hardcoded and trusted, - and operated by known entities, - the members of the I2P floodfill peer set need not be trusted, and - change over time. -

        -

        - To increase reliability of the netDb, and minimize the impact - of netDb traffic on a router, floodfill is automatically enabled - only on routers that are configured with high bandwidth limits. - Routers with high bandwidth limits (which must be manually configured, - as the default is much lower) are presumed to be on lower-latency - connections, and are more likely to be available 24/7. - The current minimum share bandwidth for a floodfill router is 128 KBytes/sec. -

        -

        - In addition, a router must pass several additional tests for health - (outbound message queue time, job lag, etc.) before floodfill operation is - automatically enabled. -

        -

        - With the current rules for automatic opt-in, approximately 6% of - the routers in the network are floodfill routers. -

        +

        {% trans -%} +Unlike Tor, where the directory servers are hardcoded and trusted, +and operated by known entities, +the members of the I2P floodfill peer set need not be trusted, and +change over time. +{%- endtrans %}

        -

        - While some peers are manually configured to be floodfill, - others are simply high-bandwidth routers who automatically volunteer - when the number of floodfill peers drops below a threshold. - This prevents any long-term network damage from losing most or all - floodfills to an attack. - In turn, these peers will un-floodfill themselves when there are - too many floodfills outstanding. -

        +

        {% trans -%} +To increase reliability of the netDb, and minimize the impact +of netDb traffic on a router, floodfill is automatically enabled +only on routers that are configured with high bandwidth limits. +Routers with high bandwidth limits (which must be manually configured, +as the default is much lower) are presumed to be on lower-latency +connections, and are more likely to be available 24/7. +The current minimum share bandwidth for a floodfill router is 128 KBytes/sec. +{%- endtrans %}

        -

        Floodfill Router Roles

        -

        - A floodfill router's only services that are in addition to those of non-floodfill routers - are in accepting netDb stores and responding to netDb queries. - Since they are generally high-bandwidth, they are more likely to participate in a high number of tunnels - (i.e. be a "relay" for others), but this is not directly related to their distributed database services. -

        +

        {% trans -%} +In addition, a router must pass several additional tests for health +(outbound message queue time, job lag, etc.) before floodfill operation is +automatically enabled. +{%- endtrans %}

        + +

        {% trans -%} +With the current rules for automatic opt-in, approximately 6% of +the routers in the network are floodfill routers. +{%- endtrans %}

        + +

        {% trans -%} +While some peers are manually configured to be floodfill, +others are simply high-bandwidth routers who automatically volunteer +when the number of floodfill peers drops below a threshold. +This prevents any long-term network damage from losing most or all +floodfills to an attack. +In turn, these peers will un-floodfill themselves when there are +too many floodfills outstanding. +{%- endtrans %}

        + +

        {% trans %}Floodfill Router Roles{% endtrans %}

        +

        {% trans -%} +A floodfill router's only services that are in addition to those of non-floodfill routers +are in accepting netDb stores and responding to netDb queries. +Since they are generally high-bandwidth, they are more likely to participate in a high number of tunnels +(i.e. be a "relay" for others), but this is not directly related to their distributed database services. +{%- endtrans %}

        -

        Kademlia Closeness Metric

        -

        - The netDb uses a simple Kademlia-style XOR metric to determine closeness. - The SHA256 hash of the key being looked up or stored is XOR-ed with - the hash of the router in question to determine closeness. - A modification to this algorithm is done to increase the costs of Sybil attacks. - Instead of the SHA256 hash of the key being looked up of stored, the SHA256 hash is taken - of the key appended with the date: yyyyMMdd (SHA256(key + yyyyMMdd). -

        +

        {% trans %}Kademlia Closeness Metric{% endtrans %}

        +

        {% trans -%} +The netDb uses a simple Kademlia-style XOR metric to determine closeness. +The SHA256 hash of the key being looked up or stored is XOR-ed with +the hash of the router in question to determine closeness. +A modification to this algorithm is done to increase the costs of Sybil attacks. +Instead of the SHA256 hash of the key being looked up of stored, the SHA256 hash is taken +of the key appended with the date: yyyyMMdd (SHA256(key + yyyyMMdd). +{%- endtrans %}

        -

        Storage, Verification, and Lookup Mechanics

        +

        {% trans %}Storage, Verification, and Lookup Mechanics{% endtrans %}

        -

        RouterInfo Storage to Peers

        -

        - I2NP DatabaseStoreMessages containing the local RouterInfo are exchanged with peers - as a part of the initialization of a - NTCP - or - SSU - transport connection. -

        +

        {% trans %}RouterInfo Storage to Peers{% endtrans %}

        +

        {% trans i2np=site_url('docs/protocol/i2np'), ntcp=site_url('docs/transport/ntcp'), ssu=site_url('docs/transport/ssu') -%} +I2NP DatabaseStoreMessages containing the local RouterInfo are exchanged with peers +as a part of the initialization of a NTCP +or SSU transport connection. +{%- endtrans %}

        -

        LeaseSet Storage to Peers

        -

        - I2NP DatabaseStoreMessages containing the local LeaseSet are periodically exchanged with peers - by bundling them in a garlic message along with normal traffic from the related Destination. - This allows an initial response, and later responses, to be sent to an appropriate Lease, - without requiring any LeaseSet lookups, or requiring the communicating Destinations to have published LeaseSets at all. -

        +

        {% trans %}LeaseSet Storage to Peers{% endtrans %}

        +

        {% trans i2np=site_url('docs/protocol/i2np') -%} +I2NP DatabaseStoreMessages containing the local LeaseSet are periodically exchanged with peers +by bundling them in a garlic message along with normal traffic from the related Destination. +This allows an initial response, and later responses, to be sent to an appropriate Lease, +without requiring any LeaseSet lookups, or requiring the communicating Destinations to have published LeaseSets at all. +{%- endtrans %}

        -

        RouterInfo Storage to Floodfills

        -

        - A router publishes its own RouterInfo by directly connecting to a floodfill router - and sending it a I2NP DatabaseStoreMessage - with a nonzero Reply Token. The message is not end-to-end garlic encrypted, - as this is a direct connection, so there are no intervening routers - (and no need to hide this data anyway). - The floodfill router replies with a - I2NP DeliveryStatusMessage, - with the Message ID set to the value of the Reply Token. -

        +

        {% trans %}RouterInfo Storage to Floodfills{% endtrans %}

        +

        {% trans i2np=site_url('docs/protocol/i2np') -%} +A router publishes its own RouterInfo by directly connecting to a floodfill router +and sending it a I2NP DatabaseStoreMessage +with a nonzero Reply Token. The message is not end-to-end garlic encrypted, +as this is a direct connection, so there are no intervening routers +(and no need to hide this data anyway). +The floodfill router replies with a +I2NP DeliveryStatusMessage, +with the Message ID set to the value of the Reply Token. +{%- endtrans %}

        -

        LeaseSet Storage to Floodfills

        -

        - Storage of LeaseSets is much more sensitive than for RouterInfos, as a router - must take care that the LeaseSet cannot be associated with the router. -

        +

        {% trans %}LeaseSet Storage to Floodfills{% endtrans %}

        +

        {% trans -%} +Storage of LeaseSets is much more sensitive than for RouterInfos, as a router +must take care that the LeaseSet cannot be associated with the router. +{%- endtrans %}

        -

        - A router publishes a local LeaseSet by - sending a I2NP DatabaseStoreMessage - with a nonzero Reply Token over an outbound client tunnel for that Destination. - The message is end-to-end garlic encrypted using the Destination's Session Key Manager, - to hide the message from the tunnel's outbound endpoint. - The floodfill router replies with a - I2NP DeliveryStatusMessage, - with the Message ID set to the value of the Reply Token. - This message is sent back to one of the client's inbound tunnels. -

        +

        {% trans i2np=site_url('docs/protocol/i2np') -%} +A router publishes a local LeaseSet by +sending a I2NP DatabaseStoreMessage +with a nonzero Reply Token over an outbound client tunnel for that Destination. +The message is end-to-end garlic encrypted using the Destination's Session Key Manager, +to hide the message from the tunnel's outbound endpoint. +The floodfill router replies with a +I2NP DeliveryStatusMessage, +with the Message ID set to the value of the Reply Token. +This message is sent back to one of the client's inbound tunnels. +{%- endtrans %}

        + + +

        {% trans %}Flooding{% endtrans %}

        +

        {% trans -%} +After a floodfill router receives a DatabaseStoreMessage containing a +valid RouterInfo or LeaseSet which is newer than that previously stored in its +local NetDb, it "floods" it. +To flood a NetDb entry, it looks up the 7 floodfill routers closest to the key +of the NetDb entry. (The key is the SHA256 Hash of the RouterIdentity or Destination with the date (yyyyMMdd) appended.) +{%- endtrans %}

        + +

        {% trans i2np=site_url('docs/protocol/i2np') -%} +It then directly connects to each of the 7 peers +and sends it a I2NP DatabaseStoreMessage +with a zero Reply Token. The message is not end-to-end garlic encrypted, +as this is a direct connection, so there are no intervening routers +(and no need to hide this data anyway). +The other routers do not reply or re-flood, as the Reply Token is zero. +{%- endtrans %}

        + + +

        {% trans %}RouterInfo and LeaseSet Lookup{% endtrans %}

        +

        {% trans i2np=site_url('docs/protocol/i2np') -%} +The I2NP DatabaseLookupMessage is used to request a netdb entry from a floodfill router. +Lookups are sent out one of the router's outbound exploratory tunnels. +The replies are specified to return via one of the router's inbound exploratory tunnels. +{%- endtrans %}

        + +

        {% trans -%} +Lookups are generally sent to the two "good" (the connection doesn't fail) floodfill routers closest to the requested key, in parallel. +{%- endtrans %}

        + +

        {% trans i2np=site_url('docs/protocol/i2np') -%} +If the key is found locally by the floodfill router, it responds with a +I2NP DatabaseStoreMessage. +If the key is not found locally by the floodfill router, it responds with a +I2NP DatabaseSearchReplyMessage +containing a list of other floodfill routers close to the key. +{%- endtrans %}

        + +

        {% trans -%} +Lookups are not encrypted and thus are vulnerable to snooping by the outbound endpoint +(OBEP) of the client tunnel. +{%- endtrans %}

        + +

        {% trans -%} +As the requesting router does not reveal itself, there is no recipient public key for the floodfill router to +encrypt the reply with. Therefore, the reply is exposed to the inbound gateway (IBGW) +of the inbound exploratory tunnel. +An appropriate method of encrypting the reply is a topic for future work. +{%- endtrans %}

        + +

        {% trans pdf='http://www-users.cs.umn.edu/~hopper/hashing_it_out.pdf' -%} +(Reference: Hashing it out in Public Sections 2.2-2.3 for terms below in italics) +{%- endtrans %}

        + +

        {% trans -%} +Due to the relatively small size of the network and the flooding redundancy of 8x, +lookups are usually O(1) rather than O(log n) -- +a router is highly likely to know a floodfill router close enough to the key to get the answer on the first try. +In releases prior to 0.8.9, routers used a lookup redundancy of two +(that is, two lookups were performed in parallel to different peers), and +neither recursive nor iterative routing for lookups was implemented. +Queries were sent through multiple routes simultaneously +to reduce the chance of query failure. +{%- endtrans %}

        + +

        {% trans -%} +As of release 0.8.9, iterative lookups are implemented with no lookup redundancy. +This is a more efficient and reliable lookup that will work much better +when not all floodfill peers are known, and it removes a serious +limitation to network growth. As the network grows and each router knows only a small +subset of the floodfill peers, lookups will become O(log n). +Even if the peer does not return references closer to the key, the lookup continues with +the next-closest peer, for added robustness, and to prevent a malicious floodfill from +black-holing a part of the key space. Lookups continue until a total lookup timeout is reached, +or the maximum number of peers is queried. +{%- endtrans %}

        + +

        {% trans -%} +Node IDs are verifiable in that we use the router hash directly as both the node ID and the Kademlia key. +Incorrect responses that are not closer to the search key are generally ignored. +Given the current size of the network, a router has +detailed knowledge of the neighborhood of the destination ID space. +{%- endtrans %}

        +

        {% trans %}RouterInfo Storage Verification{% endtrans %}

        +

        {% trans -%} +To verify a storage was successful, a router simply waits about 10 seconds, +then sends a lookup to another floodfill router close to the key +(but not the one the store was sent to). +Lookups sent out one of the router's outbound exploratory tunnels. +Lookups are end-to-end garlic encrypted to prevent snooping by the outbound endpoint(OBEP). +{%- endtrans %}

        + +

        {% trans %}LeaseSet Storage Verification{% endtrans %}

        +

        {% trans -%} +To verify a storage was successful, a router simply waits about 10 seconds, +then sends a lookup to another floodfill router close to the key +(but not the one the store was sent to). +Lookups sent out one of the outbound client tunnels for the destination of the LeaseSet being verified. +To prevent snooping by the OBEP of the outbound tunnel, +lookups are end-to-end garlic encrypted. +The replies are specified to return via one of the client's inbound tunnels. +{%- endtrans %}

        + +

        {% trans -%} +As for regular lookups, the reply is unencrypted, +thus exposing the reply to the inbound gateway (IBGW) of the reply tunnel, and +an appropriate method of encrypting the reply is a topic for future work. +As the IBGW for the reply is one of the gateways published in the LeaseSet, +the exposure is minimal. +{%- endtrans %}

        - -

        Flooding

        -

        - After a floodfill router receives a DatabaseStoreMessage containing a - valid RouterInfo or LeaseSet which is newer than that previously stored in its - local NetDb, it "floods" it. - To flood a NetDb entry, it looks up the 7 floodfill routers closest to the key - of the NetDb entry. (The key is the SHA256 Hash of the RouterIdentity or Destination with the date (yyyyMMdd) appended.) -

        -

        - It then directly connects to each of the 7 peers - and sends it a I2NP DatabaseStoreMessage - with a zero Reply Token. The message is not end-to-end garlic encrypted, - as this is a direct connection, so there are no intervening routers - (and no need to hide this data anyway). - The other routers do not reply or re-flood, as the Reply Token is zero. -

        +

        {% trans %}Exploration{% endtrans %}

        +

        {% trans i2np=site_url('docs/protocol/i2np') -%} +Exploration is a special form of netdb lookup, where a router attempts to learn about +new routers. +It does this by sending a floodfill router a I2NP DatabaseLookupMessage, looking for a random key. +As this lookup will fail, the floodfill would normally respond with a +I2NP DatabaseSearchReplyMessage containing hashes of floodfill routers close to the key. +This would not be helpful, as the requesting router probably already knows those floodfills, +and it would be impractical to add ALL floodfill routers to the "don't include" field of the lookup. +For an exploration query, the requesting router adds a router hash of all zeros to the +"don't include" field of the DatabaseLookupMessage. +The floodfill will then respond only with non-floodfill routers close to the requested key. +{%- endtrans %}

        -

        RouterInfo and LeaseSet Lookup

        -

        - The I2NP DatabaseLookupMessage is used to request a netdb entry from a floodfill router. - Lookups are sent out one of the router's outbound exploratory tunnels. - The replies are specified to return via one of the router's inbound exploratory tunnels. -

        -

        - Lookups are generally sent to the two "good" (the connection doesn't fail) floodfill routers closest to the requested key, in parallel. -

        -

        - If the key is found locally by the floodfill router, it responds with a - I2NP DatabaseStoreMessage. - If the key is not found locally by the floodfill router, it responds with a - I2NP DatabaseSearchReplyMessage - containing a list of other floodfill routers close to the key. -

        - -

        - Lookups are not encrypted and thus are vulnerable to snooping by the outbound endpoint - (OBEP) of the client tunnel. -

        -

        - As the requesting router does not reveal itself, there is no recipient public key for the floodfill router to - encrypt the reply with. Therefore, the reply is exposed to the inbound gateway (IBGW) - of the inbound exploratory tunnel. - An appropriate method of encrypting the reply is a topic for future work. -

        - -

        - (Reference: - Hashing it out in Public Sections 2.2-2.3 for terms below in italics) -

        -

        - Due to the relatively small size of the network and the flooding redundancy of 8x, - lookups are usually O(1) rather than O(log n) -- - a router is highly likely to know a floodfill router close enough to the key to get the answer on the first try. - In releases prior to 0.8.9, routers used a lookup redundancy of two - (that is, two lookups were performed in parallel to different peers), and - neither recursive nor iterative routing for lookups was implemented. - Queries were sent through multiple routes simultaneously - to reduce the chance of query failure. -

        -

        - As of release 0.8.9, iterative lookups are implemented with no lookup redundancy. - This is a more efficient and reliable lookup that will work much better - when not all floodfill peers are known, and it removes a serious - limitation to network growth. As the network grows and each router knows only a small - subset of the floodfill peers, lookups will become O(log n). - Even if the peer does not return references closer to the key, the lookup continues with - the next-closest peer, for added robustness, and to prevent a malicious floodfill from - black-holing a part of the key space. Lookups continue until a total lookup timeout is reached, - or the maximum number of peers is queried. -

        -

        - Node IDs are verifiable in that we use the router hash directly as both the node ID and the Kademlia key. - Incorrect responses that are not closer to the search key are generally ignored. - Given the current size of the network, a router has - detailed knowledge of the neighborhood of the destination ID space. -

        +

        {% trans %}Notes on Lookup Responses{% endtrans %}

        +

        {% trans -%} +The response to a lookup request is either a Database Store Message (on success) or a +Database Search Reply Message (on failure). The DSRM contains a 'from' router hash field +to indicate the source of the reply; the DSM does not. +The DSRM 'from' field is unauthenticated and may be spoofed or invalid. +There are no other response tags. Therefore, when making multiple requests in parallel, it is +difficult to monitor the performance of the various floodfill routers. +{%- endtrans %}

        +

        {% trans %}MultiHoming{% endtrans %}

        -

        RouterInfo Storage Verification

        -

        - To verify a storage was successful, a router simply waits about 10 seconds, - then sends a lookup to another floodfill router close to the key - (but not the one the store was sent to). - Lookups sent out one of the router's outbound exploratory tunnels. - Lookups are end-to-end garlic encrypted to prevent snooping by the outbound endpoint(OBEP). -

        +

        {% trans -%} +Destinations may be hosted on multiple routers simultaneously, by using the same +private and public keys (traditionally stored in eepPriv.dat files). +As both instances will periodically publish their signed LeaseSets to the floodfill peers, +the most recently published LeaseSet will be returned to a peer requesting a database lookup. +As LeaseSets have (at most) a 10 minute lifetime, should a particular instance go down, +the outage will be 10 minutes at most, and generally much less than that. +The multihoming function has been verified and is in use by several services on the network. +{%- endtrans %}

        -

        LeaseSet Storage Verification

        -

        - To verify a storage was successful, a router simply waits about 10 seconds, - then sends a lookup to another floodfill router close to the key - (but not the one the store was sent to). - Lookups sent out one of the outbound client tunnels for the destination of the LeaseSet being verified. - To prevent snooping by the OBEP of the outbound tunnel, - lookups are end-to-end garlic encrypted. - The replies are specified to return via one of the client's inbound tunnels. -

        -

        - As for regular lookups, the reply is unencrypted, - thus exposing the reply to the inbound gateway (IBGW) of the reply tunnel, and - an appropriate method of encrypting the reply is a topic for future work. - As the IBGW for the reply is one of the gateways published in the LeaseSet, - the exposure is minimal. -

        +

        {% trans %}Threat Analysis{% endtrans %}

        +

        {% trans threatmodel=site_url('docs/how/threat-model') -%} +Also discussed on the threat model page. +{%- endtrans %}

        + +

        {% trans -%} +A hostile user may attempt to harm the network by +creating one or more floodfill routers and crafting them to offer +bad, slow, or no responses. +Some scenarios are discussed below. +{%- endtrans %}

        + +

        {% trans %}General Mitigation Through Growth{% endtrans %}

        +

        {% trans -%} +There are currently hundreds of floodfill routers in the network. +Most of the following attacks will become more difficult, or have less impact, +as the network size and number of floodfill routers increase. +{%- endtrans %}

        - -

        Exploration

        -

        - Exploration is a special form of netdb lookup, where a router attempts to learn about - new routers. - It does this by sending a floodfill router a I2NP DatabaseLookupMessage, looking for a random key. - As this lookup will fail, the floodfill would normally respond with a - I2NP DatabaseSearchReplyMessage containing hashes of floodfill routers close to the key. - This would not be helpful, as the requesting router probably already knows those floodfills, - and it would be impractical to add ALL floodfill routers to the "don't include" field of the lookup. - For an exploration query, the requesting router adds a router hash of all zeros to the - "don't include" field of the DatabaseLookupMessage. - The floodfill will then respond only with non-floodfill routers close to the requested key. -

        +

        {% trans %}General Mitigation Through Redundancy{% endtrans %}

        +

        {% trans -%} +Via flooding, all netdb entries are stored on the 8 floodfill routers closest to the key. +{%- endtrans %}

        -

        Notes on Lookup Responses

        -

        - The response to a lookup request is either a Database Store Message (on success) or a - Database Search Reply Message (on failure). The DSRM contains a 'from' router hash field - to indicate the source of the reply; the DSM does not. - The DSRM 'from' field is unauthenticated and may be spoofed or invalid. - There are no other response tags. Therefore, when making multiple requests in parallel, it is - difficult to monitor the performance of the various floodfill routers. -

        +

        {% trans %}Forgeries{% endtrans %}

        +

        {% trans -%} +All netdb entries are signed by their creators, so no router may forge a +RouterInfo or LeaseSet. +{%- endtrans %}

        - -

        MultiHoming

        - -

        - Destinations may be hosted on multiple routers simultaneously, by using the same - private and public keys (traditionally stored in eepPriv.dat files). - As both instances will periodically publish their signed LeaseSets to the floodfill peers, - the most recently published LeaseSet will be returned to a peer requesting a database lookup. - As LeaseSets have (at most) a 10 minute lifetime, should a particular instance go down, - the outage will be 10 minutes at most, and generally much less than that. - The multihoming function has been verified and is in use by several services on the network. -

        - -

        Threat Analysis

        -

        - Also discussed on the threat model page. -

        -

        - A hostile user may attempt to harm the network by - creating one or more floodfill routers and crafting them to offer - bad, slow, or no responses. - Some scenarios are discussed below. -

        - -

        General Mitigation Through Growth

        -

        - There are currently almost 100 floodfill routers in the network. - Most of the following attacks will become more difficult, or have less impact, - as the network size and number of floodfill routers increase. -

        - - -

        General Mitigation Through Redundancy

        -

        - Via flooding, all netdb entries are stored on the 8 floodfill routers closest to the key. -

        - - -

        Forgeries

        -

        - All netdb entries are signed by their creators, so no router may forge a - RouterInfo or LeaseSet. -

        - -

        Slow or Unresponsive

        -

        - Each router maintains an expanded set of statistics in the - peer profile for each floodfill router, - covering various quality metrics for that peer. - The set includes: -

        +

        {% trans %}Slow or Unresponsive{% endtrans %}

        +

        {% trans peerselection=site_url('docs/how/peer-selection') -%} +Each router maintains an expanded set of statistics in the +peer profile for each floodfill router, +covering various quality metrics for that peer. +The set includes: +{%- endtrans %}

          -
        • Average response time -
        • Percentage of queries answered with the data requested -
        • Percentage of stores that were successfully verified -
        • Last successful store -
        • Last successful lookup -
        • Last response +
        • {% trans %}Average response time{% endtrans %}
        • +
        • {% trans %}Percentage of queries answered with the data requested{% endtrans %}
        • +
        • {% trans %}Percentage of stores that were successfully verified{% endtrans %}
        • +
        • {% trans %}Last successful store{% endtrans %}
        • +
        • {% trans %}Last successful lookup{% endtrans %}
        • +
        • {% trans %}Last response{% endtrans %}
        -

        - Each time a router needs to make a determination on which floodfill router is closest to a key, - it uses these metrics to determine which floodfill routers are "good". - The methods, and thresholds, used to determine "goodness" are relatively new, and - are subject to further analysis and improvement. - While a completely unresponsive router will quickly be identified and avoided, - routers that are only sometimes malicious may be much harder to deal with. -

        +

        {% trans -%} +Each time a router needs to make a determination on which floodfill router is closest to a key, +it uses these metrics to determine which floodfill routers are "good". +The methods, and thresholds, used to determine "goodness" are relatively new, and +are subject to further analysis and improvement. +While a completely unresponsive router will quickly be identified and avoided, +routers that are only sometimes malicious may be much harder to deal with. +{%- endtrans %}

        -

        Sybil Attack (Full Keyspace)

        -

        - An attacker may mount a - Sybil attack - by creating a large number of floodfill routers spread throughout the keyspace. -

        +

        {% trans %}Sybil Attack (Full Keyspace){% endtrans %}

        +

        {% trans url='http://citeseer.ist.psu.edu/douceur02sybil.html' -%} +An attacker may mount a Sybil attack +by creating a large number of floodfill routers spread throughout the keyspace. +{%- endtrans %}

        -

        - (In a related example, a researcher recently created a - large number of Tor relays.) +

        {% trans url='http://blog.torproject.org/blog/june-2010-progress-report' -%} +(In a related example, a researcher recently created a +large number of Tor relays.) +If successful, this could be an effective DOS attack on the entire network. +{%- endtrans %}

        - If successful, this could be an effective DOS attack on the entire network. -

        - -

        - If the floodfills are not sufficiently misbehaving to be marked as "bad" using the peer profile - metrics described above, this is a difficult scenario to handle. - Tor's response can be much more nimble in the relay case, as the suspicious relays - can be manually removed from the consensus. - Some possible responses for the I2P network are listed below, however none of them is completely satisfactory: -

        +

        {% trans -%} +If the floodfills are not sufficiently misbehaving to be marked as "bad" using the peer profile +metrics described above, this is a difficult scenario to handle. +Tor's response can be much more nimble in the relay case, as the suspicious relays +can be manually removed from the consensus. +Some possible responses for the I2P network are listed below, however none of them is completely satisfactory: +{%- endtrans %}

          -
        • Compile a list of bad router hashes or IPs, and announce the list through various means - (console news, website, forum, etc.); users would have to manually download the list and - add it to their local "blacklist" -
        • Ask everyone in the network to enable floodfill manually (fight Sybil with more Sybil) -
        • Release a new software version that includes the hardcoded "bad" list -
        • Release a new software version that improves the peer profile metrics and thresholds, - in an attempt to automatically identify the "bad" peers -
        • Add software that disqualifies floodfills if too many of them are in a single IP block -
        • Implement an automatic subscription-based blacklist controlled by a single individual or group. - This would essentially implement a portion of the Tor "consensus" model. - Unfortunately it would also give a single individual or group the power to - block participation of any particular router or IP in the network, - or even to completely shutdown or destroy the entire network. +
        • {% trans -%} +Compile a list of bad router hashes or IPs, and announce the list through various means +(console news, website, forum, etc.); users would have to manually download the list and +add it to their local "blacklist". +{%- endtrans %}
        • +
        • {% trans %}Ask everyone in the network to enable floodfill manually (fight Sybil with more Sybil){% endtrans %}
        • +
        • {% trans %}Release a new software version that includes the hardcoded "bad" list{% endtrans %}
        • +
        • {% trans -%} +Release a new software version that improves the peer profile metrics and thresholds, +in an attempt to automatically identify the "bad" peers. +{%- endtrans %}
        • +
        • {% trans %}Add software that disqualifies floodfills if too many of them are in a single IP block{% endtrans %}
        • +
        • {% trans -%} +Implement an automatic subscription-based blacklist controlled by a single individual or group. +This would essentially implement a portion of the Tor "consensus" model. +Unfortunately it would also give a single individual or group the power to +block participation of any particular router or IP in the network, +or even to completely shutdown or destroy the entire network. +{%- endtrans %}
        -

        +

        {% trans -%} This attack becomes more difficult as the network size grows. -

        +{%- endtrans %}

        -

        Sybil Attack (Partial Keyspace)

        -

        - An attacker may mount a - Sybil attack - by creating a small number (8-15) of floodfill routers clustered closely in the keyspace, - and distribute the RouterInfos for these routers widely. - Then, all lookups and stores for a key in that keyspace would be directed - to one of the attacker's routers. - If successful, this could be an effective DOS attack on a particular eepsite, for example. -

        -

        - As the keyspace is indexed by the cryptographic (SHA256) Hash of the key, - an attacker must use a brute-force method to repeatedly generate router hashes - until he has enough that are sufficiently close to the key. - The amount of computational power required for this, which is dependent on network - size, is unknown. -

        +

        {% trans %}Sybil Attack (Partial Keyspace){% endtrans %}

        +

        {% trans url='http://citeseer.ist.psu.edu/douceur02sybil.html' -%} +An attacker may mount a Sybil attack +by creating a small number (8-15) of floodfill routers clustered closely in the keyspace, +and distribute the RouterInfos for these routers widely. +Then, all lookups and stores for a key in that keyspace would be directed +to one of the attacker's routers. +If successful, this could be an effective DOS attack on a particular eepsite, for example. +{%- endtrans %}

        -

        - As a partial defense against this attack, - the algorithm used to determine Kademlia "closeness" varies over time. - Rather than using the Hash of the key (i.e. H(k)) to determine closeness, - we use the Hash of the key appended with the current date string, i.e. H(k + YYYYMMDD). - A function called the "routing key generator" does this, which transforms the original key into a "routing key". - In other words, the entire netdb keyspace "rotates" every day at UTC midnight. - Any partial-keyspace attack would have to be regenerated every day, for - after the rotation, the attacking routers would no longer be close - to the target key, or to each other. -

        -

        +

        {% trans -%} +As the keyspace is indexed by the cryptographic (SHA256) Hash of the key, +an attacker must use a brute-force method to repeatedly generate router hashes +until he has enough that are sufficiently close to the key. +The amount of computational power required for this, which is dependent on network +size, is unknown. +{%- endtrans %}

        + +

        {% trans -%} +As a partial defense against this attack, +the algorithm used to determine Kademlia "closeness" varies over time. +Rather than using the Hash of the key (i.e. H(k)) to determine closeness, +we use the Hash of the key appended with the current date string, i.e. H(k + YYYYMMDD). +A function called the "routing key generator" does this, which transforms the original key into a "routing key". +In other words, the entire netdb keyspace "rotates" every day at UTC midnight. +Any partial-keyspace attack would have to be regenerated every day, for +after the rotation, the attacking routers would no longer be close +to the target key, or to each other. +{%- endtrans %}

        + +

        {% trans -%} This attack becomes more difficult as the network size grows. -

        +{%- endtrans %}

        -

        - One consequence of daily keyspace rotation is that the distributed network database - may become unreliable for a few minutes after the rotation -- - lookups will fail because the new "closest" router has not received a store yet. - The extent of the issue, and methods for mitigation - (for example netdb "handoffs" at midnight) - are a topic for further study. -

        +

        {% trans -%} +One consequence of daily keyspace rotation is that the distributed network database +may become unreliable for a few minutes after the rotation -- +lookups will fail because the new "closest" router has not received a store yet. +The extent of the issue, and methods for mitigation +(for example netdb "handoffs" at midnight) +are a topic for further study. +{%- endtrans %}

        -

        Bootstrap Attacks

        -

        - An attacker could attempt to boot new routers into an isolated - or majority-controlled network by taking over a reseed website, - or tricking the developers into adding his reseed website - to the hardcoded list in the router. -

        -

        - Several defenses are possible, and most of these are planned: -

        +

        {% trans %}Bootstrap Attacks{% endtrans %}

        +

        {% trans -%} +An attacker could attempt to boot new routers into an isolated +or majority-controlled network by taking over a reseed website, +or tricking the developers into adding his reseed website +to the hardcoded list in the router. +{%- endtrans %}

        + +

        {% trans -%} +Several defenses are possible, and most of these are planned: +{%- endtrans %}

          -
        • Disallow fallback from HTTPS to HTTP for reseeding. - A MITM attacker could simply block HTTPS, then respond to the HTTP. -
        • Changing the reseed task to fetch a subset of RouterInfos from - each of several reseed sites rather than using only a single site -
        • Creating an out-of-network reseed monitoring service that - periodically polls reseed websites and verifies that the - data are not stale or inconsistent with other views of the network -
        • Bundling reseed data in the installer +
        • {% trans -%} +Disallow fallback from HTTPS to HTTP for reseeding. +A MITM attacker could simply block HTTPS, then respond to the HTTP. +{%- endtrans %}
        • +
        • {% trans -%} +Changing the reseed task to fetch a subset of RouterInfos from +each of several reseed sites rather than using only a single site +{%- endtrans %}
        • +
        • {% trans -%} +Creating an out-of-network reseed monitoring service that +periodically polls reseed websites and verifies that the +data are not stale or inconsistent with other views of the network +{%- endtrans %}
        • +
        • {% trans %}Bundling reseed data in the installer{% endtrans %}
        -

        Query Capture

        -

        - See also lookup - (Reference: - Hashing it out in Public Sections 2.2-2.3 for terms below in italics) -

        -

        - Similar to a bootstrap attack, an attacker using a floodfill router could attempt to "steer" - peers to a subset of routers controlled by him by returning their references. -

        -

        - This is unlikely to work via exploration, because exploration is a low-frequency task. - Routers acquire a majority of their peer references through normal tunnel building activity. - Exploration results are generally limited to a few router hashes, - and each exploration query is directed to a random floodfill router. -

        -

        - As of release 0.8.9, iterative lookups are implemented. - For floodfill router references returned in a - I2NP DatabaseSearchReplyMessage - response to a lookup, - these references are followed if they are closer (or the next closest) to the lookup key. - The requesting router does not trust that the references are - closer to the key (i.e. they are verifiably correct. - The lookup also does not stop when no closer key is found, but continues by querying the - next-closet node, until the timeout or maximum number of queries is reached. - This prevents a malicious floodfill from black-holing a part of the key space. - Also, the daily keyspace rotation requires an attacker to regenerate a router info - within the desired key space region. - This design ensures that the query capture attack described in - Hashing it out in Public - is much more difficult. -

        +

        {% trans %}Query Capture{% endtrans %}

        +

        {% trans pdf='http://www-users.cs.umn.edu/~hopper/hashing_it_out.pdf' -%} +See also lookup +(Reference: Hashing it out in Public Sections 2.2-2.3 for terms below in italics) +{%- endtrans %}

        -

        DHT-Based Relay Selection

        -

        - (Reference: - Hashing it out in Public Section 3) -

        -

        - This doesn't have much to do with floodfill, but see - the peer selection page - for a discussion of the vulnerabilities of peer selection for tunnels. -

        +

        {% trans -%} +Similar to a bootstrap attack, an attacker using a floodfill router could attempt to "steer" +peers to a subset of routers controlled by him by returning their references. +{%- endtrans %}

        -

        Information Leaks

        -

        - (Reference: - In Search of an Anonymous and Secure Lookup Section 3) -

        -

        - This paper addresses weaknesses in the "Finger Table" DHT lookups used by Torsk and NISAN. - At first glance, these do not appear to apply to I2P. First, the use of DHT by Torsk and NISAN - is significantly different from that in I2P. Second, I2P's network database lookups are only - loosely correlated to the peer selection and - tunnel building processes; only previously-known peers - are used for tunnels. - Also, peer selection is unrelated to any notion of DHT key-closeness. -

        -

        - Some of this may actually be more interesting when the I2P network gets much larger. - Right now, each router knows a large proportion of the network, so looking up a particular - Router Info in the network database is not strongly indicative of a future intent to use - that router in a tunnel. Perhaps when the network is 100 times larger, the lookup may be - more correlative. Of course, a larger network makes a Sybil attack that much harder. -

        -

        - However, the general issue of DHT information leakage in I2P needs further investigation. - The floodfill routers are in a position to observe queries and gather information. - Certainly, at a level of f = 0.2 (20% malicious nodes, as specifed in the paper) - we expect that many of the Sybil threats we describe - (here, - here and - here) - become problematic for several reasons. -

        +

        {% trans -%} +This is unlikely to work via exploration, because exploration is a low-frequency task. +Routers acquire a majority of their peer references through normal tunnel building activity. +Exploration results are generally limited to a few router hashes, +and each exploration query is directed to a random floodfill router. +{%- endtrans %}

        + +

        {% trans i2np=site_url('docs/protocol/i2np'), +pdf='http://www-users.cs.umn.edu/~hopper/hashing_it_out.pdf' -%} +As of release 0.8.9, iterative lookups are implemented. +For floodfill router references returned in a +I2NP DatabaseSearchReplyMessage +response to a lookup, +these references are followed if they are closer (or the next closest) to the lookup key. +The requesting router does not trust that the references are +closer to the key (i.e. they are verifiably correct. +The lookup also does not stop when no closer key is found, but continues by querying the +next-closet node, until the timeout or maximum number of queries is reached. +This prevents a malicious floodfill from black-holing a part of the key space. +Also, the daily keyspace rotation requires an attacker to regenerate a router info +within the desired key space region. +This design ensures that the query capture attack described in +Hashing it out in Public +is much more difficult. +{%- endtrans %}

        + +

        {% trans %}DHT-Based Relay Selection{% endtrans %}

        +

        {% trans pdf='http://www-users.cs.umn.edu/~hopper/hashing_it_out.pdf' -%} +(Reference: Hashing it out in Public Section 3) +{%- endtrans %}

        + +

        {% trans peerselection=site_url('docs/how/peer-selection') -%} +This doesn't have much to do with floodfill, but see +the peer selection page +for a discussion of the vulnerabilities of peer selection for tunnels. +{%- endtrans %}

        + +

        {% trans %}Information Leaks{% endtrans %}

        +

        {% trans pdf='https://netfiles.uiuc.edu/mittal2/www/nisan-torsk-ccs10.pdf' -%} +(Reference: In Search of an Anonymous and Secure Lookup Section 3) +{%- endtrans %}

        + +

        {% trans peerselection=site_url('docs/how/peer-selection'), +tunnelrouting=site_url('docs/how/tunnel-routing') -%} +This paper addresses weaknesses in the "Finger Table" DHT lookups used by Torsk and NISAN. +At first glance, these do not appear to apply to I2P. First, the use of DHT by Torsk and NISAN +is significantly different from that in I2P. Second, I2P's network database lookups are only +loosely correlated to the peer selection and +tunnel building processes; only previously-known peers +are used for tunnels. +Also, peer selection is unrelated to any notion of DHT key-closeness. +{%- endtrans %}

        + +

        {% trans -%} +Some of this may actually be more interesting when the I2P network gets much larger. +Right now, each router knows a large proportion of the network, so looking up a particular +Router Info in the network database is not strongly indicative of a future intent to use +that router in a tunnel. Perhaps when the network is 100 times larger, the lookup may be +more correlative. Of course, a larger network makes a Sybil attack that much harder. +{%- endtrans %}

        + +

        {% trans threatmodel=site_url('docs/how/threat-model') -%} +However, the general issue of DHT information leakage in I2P needs further investigation. +The floodfill routers are in a position to observe queries and gather information. +Certainly, at a level of f = 0.2 (20% malicious nodes, as specifed in the paper) +we expect that many of the Sybil threats we describe +(here, +here and +here) +become problematic for several reasons. +{%- endtrans %}

        -

        History

        +

        {% trans %}History{% endtrans %}

        - Moved to the netdb discussion page. + {% trans %}Moved to the netdb discussion page{% endtrans %}.

        -

        Future Work

        -

        - End-to-end encryption of additional netDb lookups and responses. -

        -

        - Better methods for tracking lookup responses. -

        +

        {% trans %}Future Work{% endtrans %}

        +

        {% trans -%} +End-to-end encryption of additional netDb lookups and responses. +{%- endtrans %}

        +

        {% trans -%} +Better methods for tracking lookup responses. +{%- endtrans %}

        {% endblock %} From b3281bbd56e3661f053f0b47445051c160403f1a Mon Sep 17 00:00:00 2001 From: str4d Date: Sat, 2 Feb 2013 23:18:39 +0000 Subject: [PATCH 379/650] Fixed bug on docs/discussions/netdb --- i2p2www/pages/site/docs/discussions/netdb.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/i2p2www/pages/site/docs/discussions/netdb.html b/i2p2www/pages/site/docs/discussions/netdb.html index 6dd537ea..ab3769b4 100644 --- a/i2p2www/pages/site/docs/discussions/netdb.html +++ b/i2p2www/pages/site/docs/discussions/netdb.html @@ -241,7 +241,7 @@ This just accounts for the stores - what about the queries?

        The Return of the Kademlia Algorithm?

        -(this is adapted from the I2P meeting Jan. 2, 2007) +(this is adapted from the I2P meeting Jan. 2, 2007)
        The Kademlia netDb just wasn't working properly. Is it dead forever or will it be coming back? From e76ea72aeaa00186681d2a892ff5d29edb3f1081 Mon Sep 17 00:00:00 2001 From: kytv Date: Sat, 2 Feb 2013 23:25:25 +0000 Subject: [PATCH 380/650] eliminate some redundancy in the POT file --- i2p2www/blog/2012/10/27/0.9.3-Release.rst | 11 ++++------- i2p2www/blog/2012/12/17/0.9.4-Release.rst | 7 ++----- i2p2www/pages/global/layout.html | 2 +- i2p2www/pages/site/about/intro.html | 2 +- i2p2www/pages/site/docs/naming.html | 4 ++-- i2p2www/pages/site/impressum.html | 2 +- 6 files changed, 11 insertions(+), 17 deletions(-) diff --git a/i2p2www/blog/2012/10/27/0.9.3-Release.rst b/i2p2www/blog/2012/10/27/0.9.3-Release.rst index 4b8e655c..24eb013d 100644 --- a/i2p2www/blog/2012/10/27/0.9.3-Release.rst +++ b/i2p2www/blog/2012/10/27/0.9.3-Release.rst @@ -4,15 +4,12 @@ .. meta:: :date: 2012-10-27 :category: release - :excerpt: {% trans %}0.9.3 includes extensive low-level changes to the queueing of messages in the router. We implement the CoDel Active Queue Management (AQM) algorithm. We also unify the queueing and priority mechanisms in the transports to aid diagnosis and reduce network latency. Work continues on fixing UDP transport bugs and making UDP more resistant to attacks. There are more changes to improve the performance of the router and reduce its memory usage. Also, we enable i2psnark's DHT support, introduced last release, by default.{% endtrans %} + :excerpt: {% trans %}0.9.3 includes extensive low-level changes to the queueing of messages in the router. We implement the CoDel Active Queue Management (AQM) algorithm. We also unify the queueing and priority mechanisms in the transports to aid diagnosis and reduce network latency. Work continues on fixing UDP transport bugs and making UDP more resistant to attacks. There are more changes to improve the performance of the router and reduce its memory usage. Also, we enable i2psnark's DHT support, introduced last release, by default.{% endtrans %} {% trans -%} -0.9.3 includes extensive low-level changes to the queueing of messages in the router. -We implement the CoDel Active Queue Management (AQM) algorithm. -We also unify the queueing and priority mechanisms in the transports to aid diagnosis and reduce network latency. -Work continues on fixing UDP transport bugs and making UDP more resistant to attacks. -There are more changes to improve the performance of the router and reduce its memory usage. -Also, we enable i2psnark's DHT support, introduced last release, by default. +0.9.3 includes extensive low-level changes to the queueing of messages in the router. We implement the CoDel Active Queue Management (AQM) algorithm. We also unify the queueing and priority mechanisms in the transports to aid diagnosis and reduce network latency. Work continues on fixing UDP transport bugs and making UDP more resistant to attacks. There are more changes to improve the performance of the router and reduce its memory usage. Also, we enable i2psnark's DHT support, introduced last release, by default. +{%- endtrans %} +{% trans -%} As usual, there's also lots of bug fixes in this release, so updating is recommended. {%- endtrans %} diff --git a/i2p2www/blog/2012/12/17/0.9.4-Release.rst b/i2p2www/blog/2012/12/17/0.9.4-Release.rst index 13d45281..cb457111 100644 --- a/i2p2www/blog/2012/12/17/0.9.4-Release.rst +++ b/i2p2www/blog/2012/12/17/0.9.4-Release.rst @@ -4,13 +4,10 @@ .. meta:: :date: 2012-12-17 :category: release - :excerpt: {% trans %}0.9.4 includes a fix for a network capacity bug, introduced in 0.9.2, that was reducing network performance and reliability. It also includes major changes in the in-network update system, and adds the capability to update via in-network torrents.{% endtrans %} + :excerpt: {% trans %}0.9.4 includes a fix for a network capacity bug, introduced in 0.9.2, that was reducing network performance and reliability. It also includes major changes in the in-network update system, and adds the capability to update via in-network torrents.{% endtrans %} {% trans -%} -0.9.4 includes a fix for a network capacity bug, introduced in 0.9.2, -that was reducing network performance and reliability. It also includes -major changes in the in-network update system, and adds the capability -to update via in-network torrents. +0.9.4 includes a fix for a network capacity bug, introduced in 0.9.2, that was reducing network performance and reliability. It also includes major changes in the in-network update system, and adds the capability to update via in-network torrents. {%- endtrans %} {% trans -%} diff --git a/i2p2www/pages/global/layout.html b/i2p2www/pages/global/layout.html index 8917da0f..c63e3f75 100644 --- a/i2p2www/pages/global/layout.html +++ b/i2p2www/pages/global/layout.html @@ -28,7 +28,7 @@

        - +

        {{ self.title() }}

        diff --git a/i2p2www/pages/site/about/intro.html b/i2p2www/pages/site/about/intro.html index e63517a1..5c979f5b 100644 --- a/i2p2www/pages/site/about/intro.html +++ b/i2p2www/pages/site/about/intro.html @@ -1,7 +1,7 @@ {% extends "global/layout.html" %} {% block title %}{{ _('Intro') }}{% endblock %} {% block content %} -

        {{ _('The Invisible Internet Project (I2P)') }}

        +

        {{ _('The Invisible Internet Project') }} (I2P)

        {% trans -%} I2P is an anonymous network, exposing a simple layer that applications can use to anonymously and securely send messages to each other. The network itself is diff --git a/i2p2www/pages/site/docs/naming.html b/i2p2www/pages/site/docs/naming.html index c8341834..405320df 100644 --- a/i2p2www/pages/site/docs/naming.html +++ b/i2p2www/pages/site/docs/naming.html @@ -180,8 +180,8 @@ to other routers. {%- endtrans %}

        {% trans -%} -Naming rules: -{%- endtrans %}

        +Naming Rules +{%- endtrans %}:

        • {% trans -%} Names are converted to lower case on import. diff --git a/i2p2www/pages/site/impressum.html b/i2p2www/pages/site/impressum.html index 50597ea0..325a9d11 100644 --- a/i2p2www/pages/site/impressum.html +++ b/i2p2www/pages/site/impressum.html @@ -1,7 +1,7 @@ {% extends "global/layout.html" %} {% block title %}Impressum{% endblock %} {% block content %} -

          [{{ _('German laws...') }}]

          +

          [{{ _('German laws') }}]...

          Tassilo Schweyer
          Weitfelderweg 8b
          89275 Elchingen

          From c20fd0d9086cc6ecb6852ee9200cd98c31993d31 Mon Sep 17 00:00:00 2001 From: kytv Date: Sat, 2 Feb 2013 23:30:13 +0000 Subject: [PATCH 381/650] eliminate dups (it's not very nice to have line lines, but that's why we have word-wrap in our editors) --- i2p2www/blog/2012/12/17/0.9.4-Release.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/i2p2www/blog/2012/12/17/0.9.4-Release.rst b/i2p2www/blog/2012/12/17/0.9.4-Release.rst index cb457111..8ab7476d 100644 --- a/i2p2www/blog/2012/12/17/0.9.4-Release.rst +++ b/i2p2www/blog/2012/12/17/0.9.4-Release.rst @@ -4,7 +4,7 @@ .. meta:: :date: 2012-12-17 :category: release - :excerpt: {% trans %}0.9.4 includes a fix for a network capacity bug, introduced in 0.9.2, that was reducing network performance and reliability. It also includes major changes in the in-network update system, and adds the capability to update via in-network torrents.{% endtrans %} + :excerpt: {% trans %}0.9.4 includes a fix for a network capacity bug, introduced in 0.9.2, that was reducing network performance and reliability. It also includes major changes in the in-network update system, and adds the capability to update via in-network torrents.{% endtrans %} {% trans -%} 0.9.4 includes a fix for a network capacity bug, introduced in 0.9.2, that was reducing network performance and reliability. It also includes major changes in the in-network update system, and adds the capability to update via in-network torrents. From c334777f74e840e13d9e96d9127f55130683abee Mon Sep 17 00:00:00 2001 From: kytv Date: Sun, 3 Feb 2013 00:19:36 +0000 Subject: [PATCH 382/650] - make script bourne compatible - check for virtualenv --- setup_venv.sh | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/setup_venv.sh b/setup_venv.sh index 3db2d33c..af98f169 100755 --- a/setup_venv.sh +++ b/setup_venv.sh @@ -1,11 +1,14 @@ -#!/usr/bin/env bash +#!/bin/sh set -e -source ./project.vars +. ./project.vars -if [ ! -d $venv_dir ] ; then - $venv --distribute $venv_dir +if [ ! $venv ]; then + echo "ERROR: virtualenv not found!" >&2 +else + if [ ! -d $venv_dir ] ; then + $venv --distribute $venv_dir + fi + + . $venv_dir/bin/activate + pip install -r reqs.txt fi - -source $venv_dir/bin/activate - -pip install -r reqs.txt From 9e1e5352c2d9f7d05ef1c4da461a259f3e14cdfa Mon Sep 17 00:00:00 2001 From: kytv Date: Sun, 3 Feb 2013 00:19:59 +0000 Subject: [PATCH 383/650] add transifex configs --- .tx/config | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 .tx/config diff --git a/.tx/config b/.tx/config new file mode 100644 index 00000000..86698fe1 --- /dev/null +++ b/.tx/config @@ -0,0 +1,11 @@ +[I2P.website] +source_file = ./messages.pot +source_lang = en +trans.de = i2p2www/translations/de/LC_MESSAGES/messages.po +trans.es = i2p2www/translations/es/LC_MESSAGES/messages.po +trans.fr = i2p2www/translations/fr/LC_MESSAGES/messages.po +type = PO + +[main] +host = http://www.transifex.net + From 1fee91daab273aa97fbda25dcabc0d17176ef583 Mon Sep 17 00:00:00 2001 From: str4d Date: Sun, 3 Feb 2013 00:48:42 +0000 Subject: [PATCH 384/650] Added translation tags to docs/tunnels/* docs/tunnels/old-implementation has only been tagged at the top, as it covers old details and so is not urgently required. --- .../site/docs/tunnels/implementation.html | 398 +++++++++++------- .../site/docs/tunnels/old-implementation.html | 6 +- .../site/docs/tunnels/unidirectional.html | 77 ++-- 3 files changed, 292 insertions(+), 189 deletions(-) diff --git a/i2p2www/pages/site/docs/tunnels/implementation.html b/i2p2www/pages/site/docs/tunnels/implementation.html index ad515cac..b10288ee 100644 --- a/i2p2www/pages/site/docs/tunnels/implementation.html +++ b/i2p2www/pages/site/docs/tunnels/implementation.html @@ -1,14 +1,15 @@ {% extends "global/layout.html" %} -{% block title %}Tunnel Implementation{% endblock %} -{% block lastupdated %}October 2010{% endblock %} +{% block title %}{% trans %}Tunnel Implementation{% endtrans %}{% endblock %} +{% block lastupdated %}{% trans %}October 2010{% endtrans %}{% endblock %} {% block accuratefor %}0.8{% endblock %} {% block content %} -This page documents the current tunnel implementation. +{% trans %}This page documents the current tunnel implementation.{% endtrans %} -

          Tunnel overview

          +

          {% trans %}Tunnel overview{% endtrans %}

          -

          Within I2P, messages are passed in one direction through a virtual +

          {% trans -%} +Within I2P, messages are passed in one direction through a virtual tunnel of peers, using whatever means are available to pass the message on to the next hop. Messages arrive at the tunnel's gateway, get bundled up and/or fragmented into fixed-size tunnel messages, @@ -16,175 +17,215 @@ and are forwarded on to the next hop in the tunnel, which processes and verifies the validity of the message and sends it on to the next hop, and so on, until it reaches the tunnel endpoint. That endpoint takes the messages bundled up by the gateway and forwards them as instructed - either -to another router, to another tunnel on another router, or locally.

          +to another router, to another tunnel on another router, or locally. +{%- endtrans %}

          -

          Tunnels all work the same, but can be segmented into two different +

          {% trans -%} +Tunnels all work the same, but can be segmented into two different groups - inbound tunnels and outbound tunnels. The inbound tunnels have an untrusted gateway which passes messages down towards the tunnel creator, which serves as the tunnel endpoint. For outbound tunnels, the tunnel creator serves as the gateway, passing messages -out to the remote endpoint.

          +out to the remote endpoint. +{%- endtrans %}

          -

          The tunnel's creator selects exactly which peers will participate +

          {% trans -%} +The tunnel's creator selects exactly which peers will participate in the tunnel, and provides each with the necessary configuration data. They may have any number of hops. It is the intent to make it hard for either participants or third parties to determine the length of a tunnel, or even for colluding participants to determine whether they are a part of the same tunnel at all (barring the situation where colluding peers are -next to each other in the tunnel).

          +next to each other in the tunnel). +{%- endtrans %}

          -

          In practice, a series of tunnel pools are used for different +

          {% trans -%} +In practice, a series of tunnel pools are used for different purposes - each local client destination has its own set of inbound tunnels and outbound tunnels, configured to meet its anonymity and performance needs. In addition, the router itself maintains a series of pools for participating in the network database and for managing -the tunnels themselves.

          +the tunnels themselves. +{%- endtrans %}

          -

          I2P is an inherently packet switched network, even with these +

          {% trans -%} +I2P is an inherently packet switched network, even with these tunnels, allowing it to take advantage of multiple tunnels running in parallel, increasing resilience and balancing load. Outside of the core I2P layer, there is an optional end to end streaming library available for client applications, exposing TCP-esque operation, -including message reordering, retransmission, congestion control, etc.

          +including message reordering, retransmission, congestion control, etc. +{%- endtrans %}

          -

          +

          {% trans tunnelrouting=site_url('docs/how/tunnel-routing') -%} An overview of I2P tunnel terminology is -on the tunnel overview page. -

          +on the tunnel overview page. +{%- endtrans %}

          -

          Tunnel Operation (Message Processing)

          -

          Overview

          +

          {% trans %}Tunnel Operation (Message Processing){% endtrans %}

          +

          {% trans %}Overview{% endtrans %}

          -

          After a tunnel is built, I2NP messages are processed and passed through it. +

          {% trans i2np=site_url('docs/spec/i2np') -%} +After a tunnel is built, I2NP messages are processed and passed through it. Tunnel operation has four distinct processes, taken on by various -peers in the tunnel.

          1. First, the tunnel gateway accumulates a number +peers in the tunnel. +{%- endtrans %}

            +
              +
            1. {% trans -%} +First, the tunnel gateway accumulates a number of I2NP messages and preprocesses them into tunnel messages for -delivery.
            2. Next, that gateway encrypts that preprocessed data, then -forwards it to the first hop.
            3. That peer, and subsequent tunnel +delivery. +{%- endtrans %}
            4. +
            5. {% trans -%} +Next, that gateway encrypts that preprocessed data, then +forwards it to the first hop. +{%- endtrans %}
            6. +
            7. {% trans -%} +That peer, and subsequent tunnel participants, unwrap a layer of the encryption, verifying that it isn't -a duplicate, then forward it on to the next peer. -
            8. Eventually, the tunnel messages arrive at the endpoint where the I2NP messages +a duplicate, then forward it on to the next peer. +{%- endtrans %}
            9. +
            10. {% trans -%} +Eventually, the tunnel messages arrive at the endpoint where the I2NP messages originally bundled by the gateway are reassembled and forwarded on as -requested.

            +requested. +{%- endtrans %}
          2. +
          -

          +

          {% trans -%} Intermediate tunnel participants do not know whether they are in an inbound or an outbound tunnel; they always "encrypt" for the next hop. Therefore, we take advantage of symmetric AES encryption to "decrypt" at the outbound tunnel gateway, so that the plaintext is revealed at the outbound endpoint. -

          +{%- endtrans %}

          - Inbound and outbound tunnel schematic + {{ _('Inbound and outbound tunnel schematic') }}

          - - - - + + + + - - - - + + + + + - + + - - + + - + + - - + + - - - - + + + + + - + + - - + + - + + - - + +
          RolePreprocessingEncryption OperationPostprocessing{% trans %}Role{% endtrans %}{% trans %}Preprocessing{% endtrans %}{% trans %}Encryption Operation{% endtrans %}{% trans %}Postprocessing{% endtrans %}
          Outbound Gateway (Creator)Fragment, Batch, and PadIteratively encrypt (using decryption operations)Forward to next hop
          {% trans %}Outbound Gateway (Creator){% endtrans %}{% trans %}Fragment, Batch, and Pad{% endtrans %}{% trans %}Iteratively encrypt (using decryption operations){% endtrans %}{% trans %}Forward to next hop{% endtrans %}
          Participant
          {% trans %}Participant{% endtrans %}  Decrypt (using an encryption operation)Forward to next hop{% trans %}Decrypt (using an encryption operation){% endtrans %}{% trans %}Forward to next hop{% endtrans %}
          Outbound Endpoint
          {% trans %}Outbound Endpoint{% endtrans %}  Decrypt (using an encryption operation) to reveal plaintext tunnel messageReassemble Fragments, Forward as instructed to Inbound Gateway or Router{% trans %}Decrypt (using an encryption operation) to reveal plaintext tunnel message{% endtrans %}{% trans %}Reassemble Fragments, Forward as instructed to Inbound Gateway or Router{% endtrans %}

          Inbound GatewayFragment, Batch, and PadEncryptForward to next hop
          {% trans %}Inbound Gateway{% endtrans %}{% trans %}Fragment, Batch, and Pad{% endtrans %}{% trans %}Encrypt{% endtrans %}{% trans %}Forward to next hop{% endtrans %}
          Participant
          {% trans %}Participant{% endtrans %}  EncryptForward to next hop{% trans %}Encrypt{% endtrans %}{% trans %}Forward to next hop{% endtrans %}
          Inbound Endpoint (Creator)
          {% trans %}Inbound Endpoint (Creator){% endtrans %}  Iteratively decrypt to reveal plaintext tunnel messageReassemble Fragments, Receive data{% trans %}Iteratively decrypt to reveal plaintext tunnel message{% endtrans %}{% trans %}Reassemble Fragments, Receive data{% endtrans %}
          -

          Gateway Processing

          -

          Message Preprocessing

          +

          {% trans %}Gateway Processing{% endtrans %}

          +

          {% trans %}Message Preprocessing{% endtrans %}

          -

          A tunnel gateway's function is to fragment and pack -I2NP messages into fixed-size -tunnel messages +

          {% trans i2np=site_url('docs/spec/i2np'), tunnelmessage=site_url('docs/spec/tunnel-message') -%} +A tunnel gateway's function is to fragment and pack +I2NP messages into fixed-size +tunnel messages and encrypt the tunnel messages. Tunnel messages contain the following: - +{%- endtrans %}

            -
          • A 4 byte Tunnel ID
          • -
          • A 16 byte IV (initialization vector)
          • -
          • A checksum -
          • Padding, if necessary
          • -
          • One or more { delivery instruction, I2NP message fragment } pairs
          • +
          • {% trans %}A 4 byte Tunnel ID{% endtrans %}
          • +
          • {% trans %}A 16 byte IV (initialization vector){% endtrans %}
          • +
          • {% trans %}A checksum{% endtrans %}
          • +
          • {% trans %}Padding, if necessary{% endtrans %}
          • +
          • {% trans %}One or more { delivery instruction, I2NP message fragment } pairs{% endtrans %}
          -

          Tunnel IDs are 4 byte numbers used at each hop - participants know what +

          {% trans -%} +Tunnel IDs are 4 byte numbers used at each hop - participants know what tunnel ID to listen for messages with and what tunnel ID they should be forwarded on as to the next hop, and each hop chooses the tunnel ID which they receive messages on. Tunnels themselves are short-lived (10 minutes). Even if subsequent tunnels are built using the same sequence of -peers, each hop's tunnel ID will change.

          +peers, each hop's tunnel ID will change. +{%- endtrans %}

          -

          To prevent adversaries from tagging the messages along the path by adjusting +

          {% trans -%} +To prevent adversaries from tagging the messages along the path by adjusting the message size, all tunnel messages are a fixed 1024 bytes in size. To accommodate larger I2NP messages as well as to support smaller ones more efficiently, the gateway splits up the larger I2NP messages into fragments contained within each tunnel message. The endpoint will attempt to rebuild the I2NP message from the -fragments for a short period of time, but will discard them as necessary.

          - -

          +fragments for a short period of time, but will discard them as necessary. +{%- endtrans %}

          +

          {% trans tunnelmessage=site_url('docs/spec/tunnel-message') -%} Details are in the -tunnel message specification. +tunnel message specification. +{%- endtrans %}

          +

          {% trans %}Gateway Encryption{% endtrans %}

          -

          Gateway Encryption

          - -

          After the preprocessing of messages into a padded payload, the gateway builds +

          {% trans -%} +After the preprocessing of messages into a padded payload, the gateway builds a random 16 byte IV value, iteratively encrypting it and the tunnel message as -necessary, and forwards the tuple {tunnelID, IV, encrypted tunnel message} to the next hop.

          +necessary, and forwards the tuple {tunnelID, IV, encrypted tunnel message} to the next hop. +{%- endtrans %}

          -

          How encryption at the gateway is done depends on whether the tunnel is an +

          {% trans -%} +How encryption at the gateway is done depends on whether the tunnel is an inbound or an outbound tunnel. For inbound tunnels, they simply select a random IV, postprocessing and updating it to generate the IV for the gateway and using that IV along side their own layer key to encrypt the preprocessed data. For outbound tunnels they must iteratively decrypt the (unencrypted) IV and preprocessed data with the IV and layer keys for all hops in the tunnel. The result of the outbound tunnel encryption is that when each peer encrypts it, the endpoint will recover -the initial preprocessed data.

          +the initial preprocessed data. +{%- endtrans %}

          -

          Participant Processing

          -

          When a peer receives a tunnel message, it checks that the message came from +

          {% trans %}Participant Processing{% endtrans %}

          + +

          {% trans -%} +When a peer receives a tunnel message, it checks that the message came from the same previous hop as before (initialized when the first message comes through the tunnel). If the previous peer is a different router, or if the message has already been seen, the message is dropped. The participant then encrypts the @@ -193,9 +234,11 @@ that IV with the participant's layer key to encrypt the data, encrypts the current IV with AES256/ECB using their IV key again, then forwards the tuple {nextTunnelId, nextIV, encryptedData} to the next hop. This double encryption of the IV (both before and after use) help address a certain class of -confirmation attacks.

          +confirmation attacks. +{%- endtrans %}

          -

          Duplicate message detection is handled by a decaying Bloom filter on message +

          {% trans -%} +Duplicate message detection is handled by a decaying Bloom filter on message IVs. Each router maintains a single Bloom filter to contain the XOR of the IV and the first block of the message received for all of the tunnels it is participating in, modified to drop seen entries after 10-20 minutes (when the tunnels will have @@ -203,155 +246,195 @@ expired). The size of the bloom filter and the parameters used are sufficient t more than saturate the router's network connection with a negligible chance of false positive. The unique value fed into the Bloom filter is the XOR of the IV and the first block so as to prevent nonsequential colluding peers in the tunnel -from tagging a message by resending it with the IV and first block switched.

          +from tagging a message by resending it with the IV and first block switched. +{%- endtrans %}

          -

          Endpoint Processing

          -

          After receiving and validating a tunnel message at the last hop in the tunnel, +

          {% trans %}Endpoint Processing{% endtrans %}

          + +

          {% trans -%} +After receiving and validating a tunnel message at the last hop in the tunnel, how the endpoint recovers the data encoded by the gateway depends upon whether the tunnel is an inbound or an outbound tunnel. For outbound tunnels, the endpoint encrypts the message with its layer key just like any other participant, exposing the preprocessed data. For inbound tunnels, the endpoint is also the tunnel creator so they can merely iteratively decrypt the IV and message, using the -layer and IV keys of each step in reverse order.

          +layer and IV keys of each step in reverse order. +{%- endtrans %}

          -

          At this point, the tunnel endpoint has the preprocessed data sent by the gateway, +

          {% trans -%} +At this point, the tunnel endpoint has the preprocessed data sent by the gateway, which it may then parse out into the included I2NP messages and forwards them as -requested in their delivery instructions.

          +requested in their delivery instructions. +{%- endtrans %}

          -

          Tunnel Building

          +

          {% trans %}Tunnel Building{% endtrans %}

          -

          When building a tunnel, the creator must send a request with the necessary +

          {% trans -%} +When building a tunnel, the creator must send a request with the necessary configuration data to each of the hops and wait for all of them to agree before enabling the tunnel. The requests are encrypted so that only the peers who need to know a piece of information (such as the tunnel layer or IV key) has that data. In addition, only the tunnel creator will have access to the peer's reply. There are three important dimensions to keep in mind when producing the tunnels: what peers are used (and where), how the requests are sent (and -replies received), and how they are maintained.

          +replies received), and how they are maintained. +{%- endtrans %}

          -

          Peer Selection

          -

          Beyond the two types of tunnels - inbound and outbound - there are two styles +

          {% trans %}Peer Selection{% endtrans %}

          + +

          {% trans -%} +Beyond the two types of tunnels - inbound and outbound - there are two styles of peer selection used for different tunnels - exploratory and client. Exploratory tunnels are used for both network database maintenance and tunnel -maintenance, while client tunnels are used for end to end client messages.

          +maintenance, while client tunnels are used for end to end client messages. +{%- endtrans %}

          -

          Exploratory tunnel peer selection

          -

          Exploratory tunnels are built out of a random selection of peers from a subset +

          {% trans %}Exploratory tunnel peer selection{% endtrans %}

          + +

          {% trans -%} +Exploratory tunnels are built out of a random selection of peers from a subset of the network. The particular subset varies on the local router and on what their tunnel routing needs are. In general, the exploratory tunnels are built out of randomly selected peers who are in the peer's "not failing but active" profile category. The secondary purpose of the tunnels, beyond merely tunnel routing, is to find underutilized high capacity peers so that they can be promoted for -use in client tunnels.

          +use in client tunnels. +{%- endtrans %}

          -

          +

          {% trans peerselection=site_url('docs/how/peer-selection') -%} Exploratory peer selection is discussed further on the -Peer Profiling and Selection page. +Peer Profiling and Selection page. +{%- endtrans %}

          -

          Client tunnel peer selection

          +

          {% trans %}Client tunnel peer selection{% endtrans %}

          -

          Client tunnels are built with a more stringent set of requirements - the local +

          {% trans -%} +Client tunnels are built with a more stringent set of requirements - the local router will select peers out of its "fast and high capacity" profile category so that performance and reliability will meet the needs of the client application. However, there are several important details beyond that basic selection that -should be adhered to, depending upon the client's anonymity needs.

          - -

          +should be adhered to, depending upon the client's anonymity needs. +{%- endtrans %}

          + +

          {% trans peerselection=site_url('docs/how/peer-selection') -%} Client peer selection is discussed further on the -Peer Profiling and Selection page. +Peer Profiling and Selection page. +{%- endtrans %}

          -

          Peer Ordering within Tunnels

          +

          {% trans %}Peer Ordering within Tunnels{% endtrans %}

          -Peers are ordered within tunnels to -to deal with the predecessor -attack (2008 -update). -

          To frustrate the predecessor +

          {% trans pdf='http://prisms.cs.umass.edu/brian/pubs/wright-tissec.pdf', +pdf2008='http://prisms.cs.umass.edu/brian/pubs/wright.tissec.2008.pdf' -%} +Peers are ordered within tunnels to deal with the +predecessor attack +(2008 update). +{%- endtrans %}

          + +

          {% trans -%} +To frustrate the predecessor attack, the tunnel selection keeps the peers selected in a strict order - if A, B, and C are in a tunnel for a particular tunnel pool, the hop after A is always B, and the hop after B is always C. +{%- endtrans %}

          -

          Ordering is implemented by generating a random 32-byte key for each +

          {% trans -%} +Ordering is implemented by generating a random 32-byte key for each tunnel pool at startup. Peers should not be able to guess the ordering, or an attacker could craft two router hashes far apart to maximize the chance of being at both ends of a tunnel. Peers are sorted by XOR distance of the SHA256 Hash of (the peer's hash concatenated with the random key) from the random key +{%- endtrans %}

                 p = peer hash
                 k = random key
                 d = XOR(H(p+k), k)
           
          -

          Because each tunnel pool uses a different random key, ordering is consistent +

          {% trans -%} +Because each tunnel pool uses a different random key, ordering is consistent within a single pool but not between different pools. New keys are generated at each router restart. +{%- endtrans %}

          -

          Request delivery

          +

          {% trans %}Request delivery{% endtrans %}

          -

          +

          {% trans pdf='http://www-users.cs.umn.edu/~hopper/hashing_it_out.pdf' -%} A multi-hop tunnel is built using a single build message which is repeatedly -decrypted and forwarded. -In the terminology of -Hashing it out in Public, +decrypted and forwarded. In the terminology of +Hashing it out in Public, this is "non-interactive" telescopic tunnel building. +{%- endtrans %}

          - -

          This tunnel request preparation, delivery, and response method is -designed to reduce the number of +

          {% trans tunnelcreation=site_url('docs/spec/tunnel-creation') -%} +This tunnel request preparation, delivery, and response method is +designed to reduce the number of predecessors exposed, cuts the number of messages transmitted, verifies proper connectivity, and avoids the message counting attack of traditional telescopic tunnel creation. (This method, which sends messages to extend a tunnel through the already-established part of the tunnel, is termed "interactive" telescopic tunnel building in the "Hashing it out" paper.) +{%- endtrans %}

          -

          The details of tunnel request and response messages, and their encryption, -are specified here. +

          {% trans tunnelcreation=site_url('docs/spec/tunnel-creation') -%} +The details of tunnel request and response messages, and their encryption, +are specified here. +{%- endtrans %}

          -

          Peers may reject tunnel creation requests for a variety of reasons, though +

          {% trans -%} +Peers may reject tunnel creation requests for a variety of reasons, though a series of four increasingly severe rejections are known: probabilistic rejection (due to approaching the router's capacity, or in response to a flood of requests), transient overload, bandwidth overload, and critical failure. When received, those four are interpreted by the tunnel creator to help adjust their profile of the router in question. -

          +{%- endtrans %}

          + +

          {% trans peerselection=site_url('docs/how/peer-selection') -%} For more information on peer profiling, see the -Peer Profiling and Selection page. +Peer Profiling and Selection page. +{%- endtrans %}

          -

          Tunnel Pools

          -

          To allow efficient operation, the router maintains a series of tunnel pools, +

          {% trans %}Tunnel Pools{% endtrans %}

          + +

          {% trans i2cp=site_url('docs/spec/i2cp') -%} +To allow efficient operation, the router maintains a series of tunnel pools, each managing a group of tunnels used for a specific purpose with their own configuration. When a tunnel is needed for that purpose, the router selects one out of the appropriate pool at random. Overall, there are two exploratory tunnel pools - one inbound and one outbound - each using the router's default configuration. In addition, there is a pair of pools for each local destination - one inbound and one outbound tunnel pool. Those pools use the configuration specified -when the local destination connects to the router via I2CP, or the router's defaults if -not specified.

          +when the local destination connects to the router via I2CP, or the router's defaults if +not specified. +{%- endtrans %}

          -

          Each pool has within its configuration a few key settings, defining how many +

          {% trans i2cp=site_url('docs/spec/i2cp') -%} +Each pool has within its configuration a few key settings, defining how many tunnels to keep active, how many backup tunnels to maintain in case of failure, how long the tunnels should be, whether those lengths should be randomized, as well as any of the other settings allowed when configuring individual tunnels. -Configuration options are specified on the I2CP page. +Configuration options are specified on the I2CP page. +{%- endtrans %}

          -

          Tunnel Lengths and Defaults

          -On the tunnel overview page. +

          {% trans %}Tunnel Lengths and Defaults{% endtrans %}

          -

          Anticipatory Build Strategy and Priority

          +{% trans %}On the tunnel overview page{% endtrans %}. -

          +

          {% trans %}Anticipatory Build Strategy and Priority{% endtrans %}

          + +

          {% trans -%} Tunnel building is expensive, and tunnels expire a fixed time after they are built. However, when a pool that runs out of tunnels, the Destination is essentially dead. In addition, tunnel build success rate may vary greatly with both local and global @@ -360,8 +443,9 @@ Therefore, it is important to maintain an anticipatory, adaptive build strategy to ensure that new tunnels are successfully built before they are needed, without building an excess of tunnels, building them too soon, or consuming too much CPU or bandwidth creating and sending the encrypted build messages. -

          -

          +{%- endtrans %}

          + +

          {% trans -%} For each tuple {exploratory/client, in/out, length, length variance} the router maintains statistics on the time required for a successful tunnel build. @@ -370,19 +454,21 @@ it should start attempting to build a replacement. As the expiration time approaches without a successful replacement, it starts multiple build attempts in parallel, and then will increase the number of parallel attempts if necessary. -

          -

          +{%- endtrans %}

          + +

          {% trans -%} To cap bandwidth and CPU usage, the router also limits the maximum number of build attempts outstanding across all pools. Critical builds (those for exploratory tunnels, and for pools that have run out of tunnels) are prioritized. -

          +{%- endtrans %}

          -

          Tunnel Message Throttling

          +

          {% trans %}Tunnel Message Throttling{% endtrans %}

          -

          Even though the tunnels within I2P bear a resemblance to a circuit switched +

          {% trans -%} +Even though the tunnels within I2P bear a resemblance to a circuit switched network, everything within I2P is strictly message based - tunnels are merely accounting tricks to help organize the delivery of messages. No assumptions are made regarding reliability or ordering of messages, and retransmissions are left @@ -394,9 +480,10 @@ the averages used by other tunnels the router is participating in, and be able to accept or reject additional tunnel participation requests based on its capacity and utilization. On the other hand, each router can simply drop messages that are beyond its capacity, exploiting the research used on the -normal Internet.

          +normal Internet. +{%- endtrans %}

          -

          +

          {% trans -%} In the current implementation, routers implement a weighted random early discard (WRED) strategy. For all participating routers (internal participant, inbound gateway, and outbound endpoint), @@ -410,31 +497,36 @@ Larger messages are more likely to be dropped. Also, messages are more likely to be dropped at the outbound endpoint than the inbound gateway, as those messages are not as "far along" in their journey and thus the network cost of dropping those messages is lower. -

          +{%- endtrans %}

          -

          Future Work

          -

          Mixing/batching

          +

          {% trans %}Future Work{% endtrans %}

          +

          {% trans %}Mixing/batching{% endtrans %}

          -

          What strategies could be used at the gateway and at each hop for delaying, +

          {% trans -%} +What strategies could be used at the gateway and at each hop for delaying, reordering, rerouting, or padding messages? To what extent should this be done automatically, how much should be configured as a per tunnel or per hop setting, and how should the tunnel's creator (and in turn, user) control this operation? All of this is left as unknown, to be worked out for a distant future release. +{%- endtrans %}

          -

          Padding

          -

          The padding strategies can be used on a variety of levels, addressing the +

          {% trans %}Padding{% endtrans %}

          +

          {% trans -%} +The padding strategies can be used on a variety of levels, addressing the exposure of message size information to different adversaries. The current fixed tunnel message size is 1024 bytes. Within this however, the fragmented messages themselves are not padded by the tunnel at all, though for end to end -messages, they may be padded as part of the garlic wrapping.

          +messages, they may be padded as part of the garlic wrapping. +{%- endtrans %}

          +

          WRED

          -

          +

          {% trans -%} WRED strategies have a significant impact on end-to-end performance, and prevention of network congestion collapse. The current WRED strategy should be carefully evaluated and improved. -

          +{%- endtrans %}

          {% endblock %} diff --git a/i2p2www/pages/site/docs/tunnels/old-implementation.html b/i2p2www/pages/site/docs/tunnels/old-implementation.html index d5f33d5d..f4ad6217 100644 --- a/i2p2www/pages/site/docs/tunnels/old-implementation.html +++ b/i2p2www/pages/site/docs/tunnels/old-implementation.html @@ -1,8 +1,10 @@ {% extends "global/layout.html" %} -{% block title %}Old Tunnel Implementation{% endblock %} +{% block title %}{% trans %}Old Tunnel Implementation{% endtrans %}{% endblock %} {% block content %} -Note: Obsolete - NOT used! Replaced in 0.6.1.10 - see tunnel-alt.html for the current implementation +{% trans tunnelimpl=site_url('docs/tunnels/implementation') -%} +Note: Obsolete - NOT used! Replaced in 0.6.1.10 - see here for the current implementation +{%- endtrans %}
           1) Tunnel overview
          diff --git a/i2p2www/pages/site/docs/tunnels/unidirectional.html b/i2p2www/pages/site/docs/tunnels/unidirectional.html
          index f4f5004b..e913e321 100644
          --- a/i2p2www/pages/site/docs/tunnels/unidirectional.html
          +++ b/i2p2www/pages/site/docs/tunnels/unidirectional.html
          @@ -1,32 +1,33 @@
           {% extends "global/layout.html" %}
          -{% block title %}Unidirectional Tunnels{% endblock %}
          -{% block lastupdated %}July 2011{% endblock %}
          +{% block title %}{% trans %}Unidirectional Tunnels{% endtrans %}{% endblock %}
          +{% block lastupdated %}{% trans %}July 2011{% endtrans %}{% endblock %}
           {% block accuratefor %}0.8.7{% endblock %}
           {% block content %}
          -

          Overview

          -

          +

          {% trans %}Overview{% endtrans %}

          +

          {% trans -%} This page describes the origins and design of I2P's unidirectional tunnels. For further infomrmation see: +{%- endtrans %}

          -

          Review

          +

          {% trans %}Review{% endtrans %}

          -

          +

          {% trans -%} While we aren't aware of any published research on the advantages of unidirecdtional tunnels, they appear to make it harder to detect a @@ -39,17 +40,19 @@ attacker who has only timing and traffic volume data to infer the path a tunnel is taking. Having the response come back along a different path arguably makes it harder. +{%- endtrans %}

          -

          - When dealing with - an internal adversary or most external adversaries, I2P's undirectional tunnels - expose half as much traffic data than would be exposed with bidirectional circuits - by simply looking at the flows themselves - an HTTP request and response would - follow the same path in Tor, while in I2P the packets making up the request - would go out through one or more outbound tunnels and the packets making up - the response would come back through one or more different inbound tunnels. +

          {% trans -%} +When dealing with +an internal adversary or most external adversaries, I2P's undirectional tunnels +expose half as much traffic data than would be exposed with bidirectional circuits +by simply looking at the flows themselves - an HTTP request and response would +follow the same path in Tor, while in I2P the packets making up the request +would go out through one or more outbound tunnels and the packets making up +the response would come back through one or more different inbound tunnels. +{%- endtrans %}

          -

          +

          {% trans -%} The strategy of using two separate tunnels for inbound and outbound communication is not the only technique available, and it does have anonymity implications. On the positive side, by using separate tunnels it lessens the @@ -64,51 +67,57 @@ additional care must be taken to address the increased speed of predecessor attacks. The tunnel pooling and building process (peer selection and ordering strategies) should minimize the worries of the predecessor attack. - -

          +{%- endtrans %}

          -

          Anonymity

          +

          {% trans %}Anonymity{% endtrans %}

          -

          -A recent -paper by Hermann and Grothoff +

          {% trans pdf='http://grothoff.org/christian/i2p.pdf' -%} +A recent paper by Hermann and Grothoff declared that I2P's unidirectional tunnels "seems to be a bad design decision". +{%- endtrans %}

          +

          {% trans -%} The paper's main point is that deanonymizations on unidirectional tunnels take a longer time, which is an advantage, but that an attacker can be more certain in the unidirectional case. Therefore, the paper claims it isn't an advantage at all, but a disadvantage, at least with long-living eepsites. +{%- endtrans %}

          -

          +

          {% trans -%} This conclusion is not fully supported by the paper. Unidirectional tunnels clearly mitigate other attacks and it's not clear how to trade off the risk of the attack in the paper with attacks on a bidirectional tunnel architecture. +{%- endtrans %}

          -

          +

          {% trans -%} This conclusion is based on an arbitrary certainty vs. time weighting (tradeoff) that may not be applicable in all cases. For example, somebody could make a list of possible IPs then issue subpoenas to each. Or the attacker could DDoS each in turn and via a simple intersection attack see if the eepsite goes down or is slowed down. So close may be good enough, or time may be more important. +{%- endtrans %}

          +

          {% trans -%} The conclusion is based on a specific weighting of the importance of certainty vs. time, and that weighting may be wrong, and it's definitely debatable, especially in a real world with subpoenas, search warrants, and other methods available for final confirmation. +{%- endtrans %}

          -

          +

          {% trans -%} A full analysis of the tradeoffs of unidirectional vs. bidirectional tunnels is clearly outside the scope of the paper, and has not been done elsewhere. For example, how does this attack compare to the numerous possible timing attacks published about onion-routed networks? Clearly the authors have not done that analysis, if it's even possible to do it effectively. +{%- endtrans %}

          -

          +

          {% trans -%} Tor uses bidirectional tunnels and has had a lot of academic review. I2P uses unidirectional tunnels and has had very little review. Does the lack of a research paper defending unidirectional tunnels mean that it is a poor design @@ -123,14 +132,14 @@ clearly needs further investigation and analysis? There are several other reason to consider I2P currently inferior to Tor and other projects (small network size, lack of funding, lack of review) but is unidirectional tunnels really a reason? +{%- endtrans %}

          -

          +

          {% trans -%} In summary, "bad design decision" is apparently (since the paper does not label bidirectional tunnels "bad") shorthand for "unidirectional tunnels are unequivocally inferior to bidirectional tunnels", yet this conclusion is not supported by the paper. - -

          +{%- endtrans %}

          {% endblock %} From ca0f74e9babcd28a117d460981367a0d23a19d54 Mon Sep 17 00:00:00 2001 From: str4d Date: Sun, 3 Feb 2013 01:20:52 +0000 Subject: [PATCH 385/650] Removed stray } --- i2p2www/pages/blog/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/i2p2www/pages/blog/index.html b/i2p2www/pages/blog/index.html index a95e4c1c..c417a067 100644 --- a/i2p2www/pages/blog/index.html +++ b/i2p2www/pages/blog/index.html @@ -1,5 +1,5 @@ {% extends "global/layout.html" %} -{% block title %}{{ _('Blog Index') }}}{% endblock %} +{% block title %}{{ _('Blog Index') }}{% endblock %} {% block headextra %} {%- endblock %} From 508c6f1e8074527f01047ea6f40c3115d7191e1f Mon Sep 17 00:00:00 2001 From: str4d Date: Sun, 3 Feb 2013 01:40:47 +0000 Subject: [PATCH 386/650] Render categories properly --- i2p2www/pages/blog/post.html | 3 ++- i2p2www/pages/global/macros | 7 +++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/i2p2www/pages/blog/post.html b/i2p2www/pages/blog/post.html index 22ed3c3d..07b7de72 100644 --- a/i2p2www/pages/blog/post.html +++ b/i2p2www/pages/blog/post.html @@ -1,10 +1,11 @@ {% extends "global/layout.html" %} +{%- from "global/macros" import render_categories with context -%} {% block title %}{{ title }} - {{ _('Blog') }}{% endblock %} {% block content %}
          • {{ meta.date }}
          • {{ meta.author }}
          • -
          • {{ meta.category }}
          • +
          • {{ render_categories(meta.category)|safe }}
          {% autoescape false %} {{ body }} diff --git a/i2p2www/pages/global/macros b/i2p2www/pages/global/macros index 756ddf75..2bd426c9 100644 --- a/i2p2www/pages/global/macros +++ b/i2p2www/pages/global/macros @@ -31,3 +31,10 @@ {%- endif %}
        {%- endmacro -%} + +{%- macro render_categories(categories) -%} +{%- if categories and categories|length %} +{%- for category in categories %}{{ category }}{% if not loop.last %}, {% endif %}{% endfor %} +{%- else %}{{ _('None') }} +{%- endif %} +{%- endmacro %} From 535e2f41b0a2b0c0ead2fea884a54b4f14d0ae62 Mon Sep 17 00:00:00 2001 From: str4d Date: Sun, 3 Feb 2013 02:17:41 +0000 Subject: [PATCH 387/650] Added category view for blog posts --- i2p2www/blog/views.py | 10 ++++++++++ i2p2www/pages/blog/category.html | 4 ++++ i2p2www/pages/global/macros | 3 ++- i2p2www/urls.py | 2 ++ 4 files changed, 18 insertions(+), 1 deletion(-) create mode 100644 i2p2www/pages/blog/category.html diff --git a/i2p2www/blog/views.py b/i2p2www/blog/views.py index b15b48b2..b5ce5a7e 100644 --- a/i2p2www/blog/views.py +++ b/i2p2www/blog/views.py @@ -18,6 +18,16 @@ def blog_index(page): pagination = Pagination(page, BLOG_POSTS_PER_PAGE, len(all_posts)) return render_template('blog/index.html', pagination=pagination, posts=posts) +@cache.memoize(600) +def blog_category(category, page): + posts = get_blog_posts() + category_posts = [(slug, post) for (slug, post) in posts if post['category'] and category in post['category']] + posts = get_for_page(category_posts, page, BLOG_POSTS_PER_PAGE) + if not posts and page != 1: + abort(404) + pagination = Pagination(page, BLOG_POSTS_PER_PAGE, len(category_posts)) + return render_template('blog/category.html', pagination=pagination, posts=posts, category=category) + @cache.memoize(600) def blog_post(slug): # try to render that blog post.. throws 404 if it does not exist diff --git a/i2p2www/pages/blog/category.html b/i2p2www/pages/blog/category.html new file mode 100644 index 00000000..e81a7b8d --- /dev/null +++ b/i2p2www/pages/blog/category.html @@ -0,0 +1,4 @@ +{% extends "blog/index.html" %} +{% block title %}{{ _('Blog Category') }}: {{ category }}{% endblock %} +{% block headextra %} +{%- endblock %} diff --git a/i2p2www/pages/global/macros b/i2p2www/pages/global/macros index 2bd426c9..aea4273b 100644 --- a/i2p2www/pages/global/macros +++ b/i2p2www/pages/global/macros @@ -1,5 +1,6 @@ {%- macro change_lang(lang) -%} {%- if request.endpoint == 'site_show' -%}{{ url_for('site_show', lang=lang, page=page) }} +{%- elif request.endpoint == 'blog_category' -%}{{ url_for('blog_category', lang=lang, category=category) }} {%- elif request.endpoint == 'blog_post' -%}{{ url_for('blog_post', lang=lang, slug=slug) }} {%- elif request.endpoint == 'meetings_show' -%}{{ url_for('meetings_show', lang=lang, id=id) }} {%- elif request.endpoint == 'downloads_select' -%}{{ url_for('downloads_select', lang=lang, file=file) }} @@ -34,7 +35,7 @@ {%- macro render_categories(categories) -%} {%- if categories and categories|length %} -{%- for category in categories %}{{ category }}{% if not loop.last %}, {% endif %}{% endfor %} +{%- for category in categories %}{{ category }}{% if not loop.last %}, {% endif %}{% endfor %} {%- else %}{{ _('None') }} {%- endif %} {%- endmacro %} diff --git a/i2p2www/urls.py b/i2p2www/urls.py index 7e0921d5..a27833fb 100644 --- a/i2p2www/urls.py +++ b/i2p2www/urls.py @@ -40,6 +40,8 @@ url('//', 'views.site_show') url('//blog/', 'blog.views.blog_index', defaults={'page': 1}) url('//blog/page/', 'blog.views.blog_index') +url('//blog/category/', 'blog.views.blog_category', defaults={'page': 1}) +url('//blog/category//page/', 'blog.views.blog_category') url('//blog/post/', 'blog.views.blog_post') url('//feed/blog/rss', 'blog.views.blog_rss') url('//feed/blog/atom', 'blog.views.blog_atom') From f32b6e3c14292c5a280882bd3d1c5a40796e335c Mon Sep 17 00:00:00 2001 From: str4d Date: Sun, 3 Feb 2013 02:24:05 +0000 Subject: [PATCH 388/650] Refactor blog category post selection --- i2p2www/blog/helpers.py | 11 ++++++----- i2p2www/blog/views.py | 3 +-- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/i2p2www/blog/helpers.py b/i2p2www/blog/helpers.py index d5a72d41..0122385f 100644 --- a/i2p2www/blog/helpers.py +++ b/i2p2www/blog/helpers.py @@ -37,7 +37,7 @@ def get_blog_feed_items(num=0): items.append(a) return items -def get_blog_posts(num=0, return_parts=False): +def get_blog_posts(num=0, return_parts=False, category=None): """ Returns the latest #num valid posts sorted by date, or all slugs if num=0. """ @@ -49,10 +49,11 @@ def get_blog_posts(num=0, return_parts=False): meta = get_metadata_from_meta(parts['meta']) meta['date'] = meta['date'] if meta['date'] else get_date_from_slug(slug) meta['title'] = parts['title'] - if return_parts: - posts.append((slug, meta, parts)) - else: - posts.append((slug, meta)) + if not category or (meta['category'] and category in meta['category']): + if return_parts: + posts.append((slug, meta, parts)) + else: + posts.append((slug, meta)) return posts def get_blog_slugs(num=0): diff --git a/i2p2www/blog/views.py b/i2p2www/blog/views.py index b5ce5a7e..8e6e36d0 100644 --- a/i2p2www/blog/views.py +++ b/i2p2www/blog/views.py @@ -20,8 +20,7 @@ def blog_index(page): @cache.memoize(600) def blog_category(category, page): - posts = get_blog_posts() - category_posts = [(slug, post) for (slug, post) in posts if post['category'] and category in post['category']] + category_posts = get_blog_posts(category=category) posts = get_for_page(category_posts, page, BLOG_POSTS_PER_PAGE) if not posts and page != 1: abort(404) From 55af9d11b39a16f408392b963fc0c7ba5f0dd700 Mon Sep 17 00:00:00 2001 From: str4d Date: Sun, 3 Feb 2013 02:53:58 +0000 Subject: [PATCH 389/650] Add category support to the Atom feed --- i2p2www/blog/helpers.py | 4 ++-- i2p2www/blog/views.py | 10 ++++++---- i2p2www/pages/blog/category.html | 1 + i2p2www/urls.py | 1 + 4 files changed, 10 insertions(+), 6 deletions(-) diff --git a/i2p2www/blog/helpers.py b/i2p2www/blog/helpers.py index 0122385f..f5989720 100644 --- a/i2p2www/blog/helpers.py +++ b/i2p2www/blog/helpers.py @@ -23,8 +23,8 @@ LIST_METATAGS = [ ##################### # Blog helper methods -def get_blog_feed_items(num=0): - posts = get_blog_posts(num, True) +def get_blog_feed_items(num=0, category=None): + posts = get_blog_posts(num, True, category=category) items = [] for post in posts: meta = post[1] diff --git a/i2p2www/blog/views.py b/i2p2www/blog/views.py index 8e6e36d0..cdef7765 100644 --- a/i2p2www/blog/views.py +++ b/i2p2www/blog/views.py @@ -45,10 +45,12 @@ def blog_rss(): pass @cache.cached(600) -def blog_atom(): - # TODO: Only output beginning of each blog post - feed = AtomFeed('I2P Blog', feed_url=request.url, url=request.url_root) - items = get_blog_feed_items(10) +def blog_atom(category=None): + feed_title = 'I2P Blog' + if category: + feed_title = 'I2P Blog Category: %s' % category + feed = AtomFeed(feed_title, feed_url=request.url, url=request.url_root) + items = get_blog_feed_items(10, category=category) for item in items: feed.add(item['title'], item['content'], diff --git a/i2p2www/pages/blog/category.html b/i2p2www/pages/blog/category.html index e81a7b8d..9cd89583 100644 --- a/i2p2www/pages/blog/category.html +++ b/i2p2www/pages/blog/category.html @@ -1,4 +1,5 @@ {% extends "blog/index.html" %} {% block title %}{{ _('Blog Category') }}: {{ category }}{% endblock %} {% block headextra %} + {%- endblock %} diff --git a/i2p2www/urls.py b/i2p2www/urls.py index a27833fb..9008d09b 100644 --- a/i2p2www/urls.py +++ b/i2p2www/urls.py @@ -45,6 +45,7 @@ url('//blog/category//page/', 'blog.views. url('//blog/post/', 'blog.views.blog_post') url('//feed/blog/rss', 'blog.views.blog_rss') url('//feed/blog/atom', 'blog.views.blog_atom') +url('//feed/blog/category//atom', 'blog.views.blog_atom') url('//meetings/', 'meetings.views.meetings_index', defaults={'page': 1}) url('//meetings/page/', 'meetings.views.meetings_index') From 1be4ea4943677e0380740d5f79a78603618596e9 Mon Sep 17 00:00:00 2001 From: str4d Date: Sun, 3 Feb 2013 02:58:55 +0000 Subject: [PATCH 390/650] Merge blog_index and blog_category views --- i2p2www/blog/views.py | 18 ++++++------------ i2p2www/pages/global/macros | 7 +++++-- i2p2www/urls.py | 4 ++-- 3 files changed, 13 insertions(+), 16 deletions(-) diff --git a/i2p2www/blog/views.py b/i2p2www/blog/views.py index cdef7765..c7a890d8 100644 --- a/i2p2www/blog/views.py +++ b/i2p2www/blog/views.py @@ -10,22 +10,16 @@ from i2p2www.helpers import Pagination, get_for_page # Blog views @cache.memoize(600) -def blog_index(page): - all_posts = get_blog_posts() +def blog_index(page, category=None): + all_posts = get_blog_posts(category=category) posts = get_for_page(all_posts, page, BLOG_POSTS_PER_PAGE) if not posts and page != 1: abort(404) pagination = Pagination(page, BLOG_POSTS_PER_PAGE, len(all_posts)) - return render_template('blog/index.html', pagination=pagination, posts=posts) - -@cache.memoize(600) -def blog_category(category, page): - category_posts = get_blog_posts(category=category) - posts = get_for_page(category_posts, page, BLOG_POSTS_PER_PAGE) - if not posts and page != 1: - abort(404) - pagination = Pagination(page, BLOG_POSTS_PER_PAGE, len(category_posts)) - return render_template('blog/category.html', pagination=pagination, posts=posts, category=category) + if category: + return render_template('blog/category.html', pagination=pagination, posts=posts, category=category) + else: + return render_template('blog/index.html', pagination=pagination, posts=posts) @cache.memoize(600) def blog_post(slug): diff --git a/i2p2www/pages/global/macros b/i2p2www/pages/global/macros index aea4273b..49642f19 100644 --- a/i2p2www/pages/global/macros +++ b/i2p2www/pages/global/macros @@ -1,6 +1,9 @@ {%- macro change_lang(lang) -%} {%- if request.endpoint == 'site_show' -%}{{ url_for('site_show', lang=lang, page=page) }} -{%- elif request.endpoint == 'blog_category' -%}{{ url_for('blog_category', lang=lang, category=category) }} +{%- elif request.endpoint == 'blog_index' -%} + {%- if category -%}{{ url_for('blog_index', lang=lang, category=category) }} + {%- else -%}{{ url_for('blog_index', lang=lang) }} + {%- endif -%} {%- elif request.endpoint == 'blog_post' -%}{{ url_for('blog_post', lang=lang, slug=slug) }} {%- elif request.endpoint == 'meetings_show' -%}{{ url_for('meetings_show', lang=lang, id=id) }} {%- elif request.endpoint == 'downloads_select' -%}{{ url_for('downloads_select', lang=lang, file=file) }} @@ -35,7 +38,7 @@ {%- macro render_categories(categories) -%} {%- if categories and categories|length %} -{%- for category in categories %}{{ category }}{% if not loop.last %}, {% endif %}{% endfor %} +{%- for category in categories %}{{ category }}{% if not loop.last %}, {% endif %}{% endfor %} {%- else %}{{ _('None') }} {%- endif %} {%- endmacro %} diff --git a/i2p2www/urls.py b/i2p2www/urls.py index 9008d09b..e9127f33 100644 --- a/i2p2www/urls.py +++ b/i2p2www/urls.py @@ -40,8 +40,8 @@ url('//', 'views.site_show') url('//blog/', 'blog.views.blog_index', defaults={'page': 1}) url('//blog/page/', 'blog.views.blog_index') -url('//blog/category/', 'blog.views.blog_category', defaults={'page': 1}) -url('//blog/category//page/', 'blog.views.blog_category') +url('//blog/category/', 'blog.views.blog_index', defaults={'page': 1}) +url('//blog/category//page/', 'blog.views.blog_index') url('//blog/post/', 'blog.views.blog_post') url('//feed/blog/rss', 'blog.views.blog_rss') url('//feed/blog/atom', 'blog.views.blog_atom') From de4e51e0b67a763fa8c7ebfd652716854cea0a01 Mon Sep 17 00:00:00 2001 From: str4d Date: Sun, 3 Feb 2013 03:12:31 +0000 Subject: [PATCH 391/650] Factor out blog posts per feed as a constant, halve number of blog posts per page --- i2p2www/__init__.py | 3 ++- i2p2www/blog/views.py | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/i2p2www/__init__.py b/i2p2www/__init__.py index ac3a4739..d7f9ec1b 100644 --- a/i2p2www/__init__.py +++ b/i2p2www/__init__.py @@ -13,7 +13,8 @@ CURRENT_I2P_VERSION = '0.9.4' CANONICAL_DOMAIN = 'www.i2p2.de' -BLOG_POSTS_PER_PAGE = 20 +BLOG_POSTS_PER_FEED = 10 +BLOG_POSTS_PER_PAGE = 10 MEETINGS_PER_PAGE = 20 SUPPORTED_LANGS = [ diff --git a/i2p2www/blog/views.py b/i2p2www/blog/views.py index c7a890d8..9a1c8b61 100644 --- a/i2p2www/blog/views.py +++ b/i2p2www/blog/views.py @@ -1,7 +1,7 @@ from flask import abort, render_template, request from werkzeug.contrib.atom import AtomFeed -from i2p2www import BLOG_POSTS_PER_PAGE, cache +from i2p2www import BLOG_POSTS_PER_FEED, BLOG_POSTS_PER_PAGE, cache from i2p2www.blog.helpers import get_blog_posts, get_blog_feed_items, get_date_from_slug, get_metadata_from_meta, render_blog_post from i2p2www.helpers import Pagination, get_for_page @@ -44,7 +44,7 @@ def blog_atom(category=None): if category: feed_title = 'I2P Blog Category: %s' % category feed = AtomFeed(feed_title, feed_url=request.url, url=request.url_root) - items = get_blog_feed_items(10, category=category) + items = get_blog_feed_items(BLOG_POSTS_PER_FEED, category=category) for item in items: feed.add(item['title'], item['content'], From ad0f759014da8dcc717aec2765de00fa000b089b Mon Sep 17 00:00:00 2001 From: str4d Date: Tue, 5 Feb 2013 02:09:57 +0000 Subject: [PATCH 392/650] Added translation tags to docs/protocol/* --- i2p2www/pages/site/docs/protocol/i2cp.html | 738 +++++++++++++++----- i2p2www/pages/site/docs/protocol/i2np.html | 156 +++-- i2p2www/pages/site/docs/protocol/index.html | 99 +-- 3 files changed, 745 insertions(+), 248 deletions(-) diff --git a/i2p2www/pages/site/docs/protocol/i2cp.html b/i2p2www/pages/site/docs/protocol/i2cp.html index 26eeca40..00f4eb96 100644 --- a/i2p2www/pages/site/docs/protocol/i2cp.html +++ b/i2p2www/pages/site/docs/protocol/i2cp.html @@ -1,9 +1,10 @@ {% extends "global/layout.html" %} {% block title %}I2CP{% endblock %} -{% block lastupdated %}November 2012{% endblock %} +{% block lastupdated %}{% trans %}November 2012{% endtrans %}{% endblock %} {% block accuratefor %}0.9.3{% endblock %} {% block content %} -

        The I2P Client Protocol (I2CP) exposes a strong separation of concerns between +

        {% trans -%} +The I2P Client Protocol (I2CP) exposes a strong separation of concerns between the router and any client that wishes to communicate over the network. It enables secure and asynchronous messaging by sending and receiving messages over a single TCP socket, yet never exposing any private keys and authenticating itself @@ -12,194 +13,580 @@ router who they are (their "destination"), what anonymity, reliability, and latency tradeoffs to make, and where to send messages. In turn the router uses I2CP to tell the client when any messages have arrived, and to request authorization for some tunnels to be used. -

        +{%- endtrans %}

        -

        +

        {% trans url='http://docs.i2p-projekt.de/javadoc/net/i2p/client/package-summary.html' -%} The protocol itself has only been implemented in Java, to provide the -Client SDK. +Client SDK. This SDK is exposed in the i2p.jar package, which implements the client-side of I2CP. Clients should never need to access the router.jar package, which contains the router itself and the router-side of I2CP. -

        +{%- endtrans %}

        -

        +

        {% trans streaming=site_url('docs/api/streaming') -%} While implementing the client side of I2CP in a non-Java language is certainly feasible, a non-Java client would also have to implement the -streaming library for TCP-style connections. +streaming library for TCP-style connections. Together, implementing I2CP and the streaming library would be a sizable task. -

        +{%- endtrans %}

        -

        +

        {% trans streaming=site_url('docs/api/streaming'), datagrams=site_url('docs/spec/datagrams'), +sam=site_url('docs/api/sam'), bob=site_url('docs/api/bob') -%} Applications can take advantage of the base I2CP plus the -streaming and datagram libraries -by using the Simple Anonymous Messaging or BOB protocols, +streaming and datagram libraries +by using the Simple Anonymous Messaging or BOB protocols, which do not require clients to deal with any sort of cryptography. Also, clients may access the network by one of several proxies - HTTP, CONNECT, and SOCKS 4/4a/5. Alternatively, Java clients may access those libraries in ministreaming.jar and streaming.jar. So there are several options for both Java and non-Java applications. -

        +{%- endtrans %}

        -

        Client-side end-to-end encryption (encrypting the data over the I2CP connection) +

        {% trans elgamalaes=site_url('docs/how/elgamal-aes'), +cryptography=site_url('docs/how/cryptography'), +i2cp=site_url('docs/spec/i2cp') -%} +Client-side end-to-end encryption (encrypting the data over the I2CP connection) was disabled in I2P release 0.6, -leaving in place the ElGamal/AES end-to-end encryption +leaving in place the ElGamal/AES end-to-end encryption which is implemented in the router. The only cryptography that client libraries must still implement is -DSA public/private key signing -for LeaseSets and -Session Configurations, and management of those keys. -

        +DSA public/private key signing +for LeaseSets and +Session Configurations, and management of those keys. +{%- endtrans %}

        -

        In a standard I2P installation, port 7654 is used by external java clients to communicate +

        {% trans -%} +In a standard I2P installation, port 7654 is used by external java clients to communicate with the local router via I2CP. By default, the router binds to address 127.0.0.1. To bind to 0.0.0.0, set the router advanced configuration option i2cp.tcp.bindAllInterfaces=true and restart. Clients in the same JVM as the router pass messages directly to the router through an internal JVM interface. -

        +{%- endtrans %}

        -

        I2CP Protocol Specification

        -

        -Now on the -I2CP Specification page. -

        +

        {% trans %}I2CP Protocol Specification{% endtrans %}

        +

        {% trans i2cp=site_url('docs/spec/i2cp') -%} +Now on the I2CP Specification page. +{%- endtrans %}

        -

        I2CP Initialization

        -

        +

        {% trans %}I2CP Initialization{% endtrans %}

        +

        {% trans i2cp=site_url('docs/spec/i2cp') -%} When a client connects to the router, it first sends a single protocol version byte (0x2A). -Then it sends a GetDate Message and waits for the SetDate Message response. -Next, it sends a CreateSession Message containing the session configuration. -It next awaits a RequestLeaseSet Message from the router, indicating that inbound tunnels +Then it sends a GetDate Message and waits for the SetDate Message response. +Next, it sends a CreateSession Message containing the session configuration. +It next awaits a RequestLeaseSet Message from the router, indicating that inbound tunnels have been built, and responds with a CreateLeaseSetMessage containing the signed LeaseSet. The client may now initiate or receive connections from other I2P destinations. +{%- endtrans %}

        -

        I2CP Options

        -

        +

        {% trans %}I2CP Options{% endtrans %}

        +

        {% trans i2cp=site_url('docs/spec/i2cp') -%} The following options are traditionally passed to the router via -a SessionConfig contained in a CreateSession Message or a ReconfigureSession Message. -

        +a SessionConfig contained in a CreateSession Message or a ReconfigureSession Message. +{%- endtrans %}

        - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        Router-side Options
        Option Recommended Arguments Allowable RangeDefaultDescription -
        inbound.quantity number from 1 to 3 1 to 162Number of tunnels in. - Limit was increased from 6 to 16 in release 0.9; however, numbers higher than 6 are not - currently recommended, as this is untested and is incompatible with older releases. -
        outbound.quantity number from 1 to 3 No limit2Number of tunnels out -
        inbound.length number from 0 to 3 0 to 72Length of tunnels in -
        outbound.length number from 0 to 3 0 to 72Length of tunnels out -
        inbound.lengthVariance number from -1 to 2 -7 to 70Random amount to add or subtract to the length of tunnels in. - A positive number x means add a random amount from 0 to x inclusive. - A negative number -x means add a random amount from -x to x inclusive. - The router will limit the total length of the tunnel to 0 to 7 inclusive. - The default variance was 1 prior to release 0.7.6. -
        outbound.lengthVariance number from -1 to 2 -7 to 70Random amount to add or subtract to the length of tunnels out. - A positive number x means add a random amount from 0 to x inclusive. - A negative number -x means add a random amount from -x to x inclusive. - The router will limit the total length of the tunnel to 0 to 7 inclusive. - The default variance was 1 prior to release 0.7.6. -
        inbound.backupQuantity number from 0 to 3 No limit0Number of redundant fail-over for tunnels in -
        outbound.backupQuantity number from 0 to 3 No limit0Number of redundant fail-over for tunnels out -
        inbound.nickname string  Name of tunnel - generally used in routerconsole, which will - use the first few characters of the Base64 hash of the destination by default. -
        outbound.nickname string  Name of tunnel - generally ignored unless inbound.nickname is unset. -
        inbound.allowZeroHop true, false trueIf incoming zero hop tunnel is allowed -
        outbound.allowZeroHop true, false trueIf outgoing zero hop tunnel is allowed -
        inbound.IPRestriction number from 0 to 4 0 to 42Number of IP bytes to match to determine if - two routers should not be in the same tunnel. 0 to disable. -
        outbound.IPRestriction number from 0 to 4 0 to 42Number of IP bytes to match to determine if - two routers should not be in the same tunnel. 0 to disable. -
        outbound.prioritynumber from -25 to 25 -25 to 250Priority adjustment for outbound messages. - Higher is higher priority. As of 0.9.4. -
        i2cp.dontPublishLeaseSet true, false falseShould generally be set to true for clients - and false for servers -
        i2cp.messageReliability  BestEffort, NoneBestEffortGuaranteed is disabled; - None implemented in 0.8.1; the streaming lib default is None as of 0.8.1, the client side default is None as of 0.9.4 -
        i2cp.fastReceive true, falsefalseIf true, the router just sends the MessagePayload instead - of sending a MessageStatus and awaiting a ReceiveMessageBegin. - As of 0.9.4 -
        explicitPeers  nullComma-separated list of Base 64 Hashes of peers to build tunnels through; for debugging only -
        i2cp.usernamestring  For authorization, if required by the router (since 0.8.2). - If the client is running in the same JVM as a router, this option is not required. -
        i2cp.passwordstring  For authorization, if required by the router (since 0.8.2). - If the client is running in the same JVM as a router, this option is not required. -
        crypto.tagsToSend 1-12840Number of ElGamal/AES Session Tags to send at a time (since 0.9.2). - For clients with relatively low bandwidth per-client-pair (IRC, some UDP apps), this may be set lower. -
        crypto.lowTagThreshold 1-12830Minimum number of ElGamal/AES Session Tags before we send more (since 0.9.2). - Recommended: approximately tagsToSend * 2/3 -
        shouldBundleReplyInfotrue, false trueSet to false to disable ever bundling a reply LeaseSet (since 0.9.2). - For clients that do not publish their LeaseSet, this option must be true - for any reply to be possible. "true" is also recommended for multihomed servers - with long connection times. +
        {% trans %}Router-side Options{% endtrans %}
        {% trans %}Option{% endtrans %}{% trans %}As Of Release{% endtrans %}{% trans %}Recommended Arguments{% endtrans %}{% trans %}Allowable Range{% endtrans %}{% trans %}Default{% endtrans %}{% trans %}Description{% endtrans %}
        inbound.quantity {% trans from=1, to=3 %}number from {{ from }} to {{ to }}{% endtrans %}{% trans from=1, to=16 %}{{ from }} to {{ to }}{% endtrans %}2{% trans -%} +Number of tunnels in. +Limit was increased from 6 to 16 in release 0.9; however, numbers higher than 6 are not +currently recommended, as this is untested and is incompatible with older releases. +{%- endtrans %}
        outbound.quantity + {% trans from=1, to=3 %}number from {{ from }} to {{ to }}{% endtrans %}{% trans %}No limit{% endtrans %}2 +{% trans %}Number of tunnels out{% endtrans %}
        inbound.length + {% trans from=0, to=3 %}number from {{ from }} to {{ to }}{% endtrans %}{% trans from=0, to=7 %}{{ from }} to {{ to }}{% endtrans %}2 +{% trans %}Length of tunnels in{% endtrans %}
        outbound.length + {% trans from=0, to=3 %}number from {{ from }} to {{ to }}{% endtrans %}{% trans from=0, to=7 %}{{ from }} to {{ to }}{% endtrans %}2 +{% trans %}Length of tunnels out{% endtrans %}
        inbound.lengthVariance + {% trans from=-1, to=2 %}number from {{ from }} to {{ to }}{% endtrans %}{% trans from=-7, to=7 %}{{ from }} to {{ to }}{% endtrans %}0 +{% trans -%} +Random amount to add or subtract to the length of tunnels in. +A positive number x means add a random amount from 0 to x inclusive. +A negative number -x means add a random amount from -x to x inclusive. +The router will limit the total length of the tunnel to 0 to 7 inclusive. +The default variance was 1 prior to release 0.7.6. +{%- endtrans %}
        outbound.lengthVariance + {% trans from=-1, to=2 %}number from {{ from }} to {{ to }}{% endtrans %}{% trans from=-7, to=7 %}{{ from }} to {{ to }}{% endtrans %}0 +{% trans -%} +Random amount to add or subtract to the length of tunnels out. +A positive number x means add a random amount from 0 to x inclusive. +A negative number -x means add a random amount from -x to x inclusive. +The router will limit the total length of the tunnel to 0 to 7 inclusive. +The default variance was 1 prior to release 0.7.6. +{%- endtrans %}
        inbound.backupQuantity + {% trans from=0, to=3 %}number from {{ from }} to {{ to }}{% endtrans %}{% trans %}No limit{% endtrans %}0 +{% trans %}Number of redundant fail-over for tunnels in{% endtrans %}
        outbound.backupQuantity + {% trans from=0, to=3 %}number from {{ from }} to {{ to }}{% endtrans %}{% trans %}No limit{% endtrans %}0 +{% trans %}Number of redundant fail-over for tunnels out{% endtrans %}
        inbound.nickname + string +  +  +{% trans -%} +Name of tunnel - generally used in routerconsole, which will +use the first few characters of the Base64 hash of the destination by default. +{%- endtrans %}
        outbound.nickname + string +  +  +{% trans %}Name of tunnel - generally ignored unless inbound.nickname is unset.{% endtrans %}
        inbound.allowZeroHop + true, false +  +true +{% trans %}If incoming zero hop tunnel is allowed{% endtrans %}
        outbound.allowZeroHop + true, false +  +true +{% trans %}If outgoing zero hop tunnel is allowed{% endtrans %}
        inbound.IPRestriction + {% trans from=0, to=4 %}number from {{ from }} to {{ to }}{% endtrans %}{% trans from=0, to=4 %}{{ from }} to {{ to }}{% endtrans %}2 +{% trans -%} +Number of IP bytes to match to determine if +two routers should not be in the same tunnel. 0 to disable. +{%- endtrans %}
        outbound.IPRestriction + {% trans from=0, to=4 %}number from {{ from }} to {{ to }}{% endtrans %}{% trans from=0, to=4 %}{{ from }} to {{ to }}{% endtrans %}2 +{% trans -%} +Number of IP bytes to match to determine if +two routers should not be in the same tunnel. 0 to disable. +{%- endtrans %}
        outbound.priority +0.9.4{% trans from=-25, to=25 %}number from {{ from }} to {{ to }}{% endtrans %}{% trans from=-25, to=25 %}{{ from }} to {{ to }}{% endtrans %}0 +{% trans -%} +Priority adjustment for outbound messages. +Higher is higher priority. +{%- endtrans %}
        i2cp.dontPublishLeaseSet + true, false +  +false +{% trans %}Should generally be set to true for clients and false for servers{% endtrans %}
        i2cp.messageReliability +   +BestEffort, None +BestEffort +{% trans -%} +Guaranteed is disabled; +None implemented in 0.8.1; the streaming lib default is None as of 0.8.1, the client side default is None as of 0.9.4 +{%- endtrans %}
        i2cp.fastReceive +0.9.4  +true, false +false +{% trans -%} +If true, the router just sends the MessagePayload instead +of sending a MessageStatus and awaiting a ReceiveMessageBegin. +{%- endtrans %}
        explicitPeers +   +  +null +{% trans %}Comma-separated list of Base 64 Hashes of peers to build tunnels through; for debugging only{% endtrans %}
        i2cp.username +0.8.2string +  +  +{% trans -%} +For authorization, if required by the router. +If the client is running in the same JVM as a router, this option is not required. +{%- endtrans %}
        i2cp.password +0.8.2string +  +  +{% trans -%} +For authorization, if required by the router. +If the client is running in the same JVM as a router, this option is not required. +{%- endtrans %}
        crypto.tagsToSend +0.9.2  +1-128 +40 +{% trans -%} +Number of ElGamal/AES Session Tags to send at a time. +For clients with relatively low bandwidth per-client-pair (IRC, some UDP apps), this may be set lower. +{%- endtrans %}
        crypto.lowTagThreshold +0.9.2  +1-128 +30 +{% trans -%} +Minimum number of ElGamal/AES Session Tags before we send more. +Recommended: approximately tagsToSend * 2/3 +{%- endtrans %}
        shouldBundleReplyInfo +0.9.2true, false +  +true +{% trans -%} +Set to false to disable ever bundling a reply LeaseSet. +For clients that do not publish their LeaseSet, this option must be true +for any reply to be possible. "true" is also recommended for multihomed servers +with long connection times. +{%- endtrans %} -

        Setting to "false" may save significant outbound bandwidth, especially if - the client is configured with a large number of inbound tunnels (Leases). - If replies are still required, this may shift the bandwidth burden to - the far-end client and the floodfill. - There are several cases where "false" may be appropriate: -

        • - Unidirectional communication, no reply required -
        • - LeaseSet is published and higher reply latency is acceptable -
        • - LeaseSet is published, client is a "server", all connections are inbound - so the connecting far-end destination obviously has the leaseset already. - Connections are either short, or it is acceptable for latency on a long-lived - connection to temporarily increase while the other end re-fetches the LeaseSet - after expiration. - HTTP servers may fit these requirements. -
        -
        inbound.*   Any other options prefixed with "inbound." are stored - in the "unknown options" properties of the inbound tunnel pool's settings. -
        outbound.*   Any other options prefixed with "outbound." are stored - in the "unknown options" properties of the outbound tunnel pool's settings. +

        {% trans -%} +Setting to "false" may save significant outbound bandwidth, especially if +the client is configured with a large number of inbound tunnels (Leases). +If replies are still required, this may shift the bandwidth burden to +the far-end client and the floodfill. +There are several cases where "false" may be appropriate: +{%- endtrans %}

        +
          +
        • {% trans %}Unidirectional communication, no reply required{% endtrans %}
        • +
        • {% trans %}LeaseSet is published and higher reply latency is acceptable{% endtrans %}
        • +
        • {% trans -%} +LeaseSet is published, client is a "server", all connections are inbound +so the connecting far-end destination obviously has the leaseset already. +Connections are either short, or it is acceptable for latency on a long-lived +connection to temporarily increase while the other end re-fetches the LeaseSet +after expiration. +HTTP servers may fit these requirements. +{%- endtrans %}
        • +
        +
        inbound.* +   +  +  +{% trans -%} +Any other options prefixed with "inbound." are stored +in the "unknown options" properties of the inbound tunnel pool's settings. +{%- endtrans %}
        outbound.* +   +  +  +{% trans -%} +Any other options prefixed with "outbound." are stored +in the "unknown options" properties of the outbound tunnel pool's settings. +{%- endtrans %}
        -

        + +

        {% trans -%} Note: Large quantity, length, or variance settings may cause significant performance or reliability problems. -

        +{%- endtrans %}

        + +

        {% trans -%} Note: As of release 0.7.7, option names and values must use UTF-8 encoding. This is primarily useful for nicknames. Prior to that release, options with multi-byte characters were corrupted. +{%- endtrans %}

        -

        +

        {% trans -%} The following options are interpreted on the client side, and will be interpreted if passed to the I2PSession via the I2PClient.createSession() call. The streaming lib should also pass these options through to I2CP. Other implementations may have different defaults. -

        +{%- endtrans %}

        - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        Client-side Options
        Option As Of ReleaseRecommended Arguments Allowable RangeDefaultDescription -
        i2cp.tcp.host    127.0.0.1Router hostname. - If the client is running in the same JVM as a router, this option is ignored, and the client connects to that router internally. -
        i2cp.tcp.port   1-655357654Router I2CP port. - If the client is running in the same JVM as a router, this option is ignored, and the client connects to that router internally. -
        i2cp.SSL0.8.3true, false falseConnect to the router using SSL. - If the client is running in the same JVM as a router, this option is ignored, and the client connects to that router internally. -
        i2cp.gzip0.6.5true, false  trueGzip outbound data -
        i2cp.reduceOnIdle0.7.1true, false  falseReduce tunnel quantity when idle -
        i2cp.closeOnIdle0.7.1true, false  falseClose I2P session when idle -
        i2cp.reduceIdleTime0.7.11200000300000 minimum (ms) Idle time required (default 20 minutes, minimum 5 minutes) -
        i2cp.closeIdleTime0.7.11800000300000 minimum (ms) Idle time required (default 30 minutes) -
        i2cp.reduceQuantity0.7.111 to 51Tunnel quantity when reduced (applies to both inbound and outbound) -
        i2cp.encryptLeaseSet0.7.1true, false  falseEncrypt the lease -
        i2cp.leaseSetKey0.7.1   Base64 SessionKey (44 characters) -
        i2cp.messageReliability  BestEffort, NoneNoneGuaranteed is disabled; - None implemented in 0.8.1; None is the default as of 0.9.4 -
        i2cp.fastReceive0.9.4 true, falsetrueIf true, the router just sends the MessagePayload instead - of sending a MessageStatus and awaiting a ReceiveMessageBegin. +
        {% trans %}Client-side Options{% endtrans %}
        {% trans %}Option{% endtrans %}{% trans %}As Of Release{% endtrans %}{% trans %}Recommended Arguments{% endtrans %}{% trans %}Allowable Range{% endtrans %}{% trans %}Default{% endtrans %}{% trans %}Description{% endtrans %}
        i2cp.tcp.host +  +  +  +127.0.0.1 +{% trans -%} +Router hostname. +If the client is running in the same JVM as a router, this option is ignored, and the client connects to that router internally. +{%- endtrans %}
        i2cp.tcp.port +  +  +1-65535 +7654 +{% trans -%} +Router I2CP port. +If the client is running in the same JVM as a router, this option is ignored, and the client connects to that router internally. +{%- endtrans %}
        i2cp.SSL +0.8.3 +true, false +  +false +{% trans -%} +Connect to the router using SSL. +If the client is running in the same JVM as a router, this option is ignored, and the client connects to that router internally. +{%- endtrans %}
        i2cp.gzip +0.6.5 +true, false +  +true +{% trans %}Gzip outbound data{% endtrans %}
        i2cp.reduceOnIdle +0.7.1 +true, false +  +false +{% trans %}Reduce tunnel quantity when idle{% endtrans %}
        i2cp.closeOnIdle +0.7.1 +true, false +  +false +{% trans %}Close I2P session when idle{% endtrans %}
        i2cp.reduceIdleTime +0.7.1 +1200000 +{% trans num=300000 %}{{ num }} minimum{% endtrans %} +  +{% trans %}(ms) Idle time required (default 20 minutes, minimum 5 minutes){% endtrans %}
        i2cp.closeIdleTime +0.7.1 +1800000 +{% trans num=300000 %}{{ num }} minimum{% endtrans %} +  +{% trans %}(ms) Idle time required (default 30 minutes){% endtrans %}
        i2cp.reduceQuantity +0.7.1 +1 +{% trans from=1, to=5 %}{{ from }} to {{ to }}{% endtrans %}1 +{% trans %}Tunnel quantity when reduced (applies to both inbound and outbound){% endtrans %}
        i2cp.encryptLeaseSet +0.7.1 +true, false +  +false +{% trans %}Encrypt the lease{% endtrans %}
        i2cp.leaseSetKey +0.7.1 +  +  +  +{% trans %}Base64 SessionKey (44 characters){% endtrans %}
        i2cp.messageReliability +  +  +BestEffort, None +None +{% trans -%} +Guaranteed is disabled; +None implemented in 0.8.1; None is the default as of 0.9.4 +{%- endtrans %}
        i2cp.fastReceive +0.9.4 +  +true, false +true +{% trans -%} +If true, the router just sends the MessagePayload instead +of sending a MessageStatus and awaiting a ReceiveMessageBegin. +{%- endtrans %}
        -

        + +

        {% trans -%} Note: All arguments, including numbers, are strings. True/false values are case-insensitive strings. Anything other than case-insensitive "true" is interpreted as false. All option names are case-sensitive. +{%- endtrans %}

        -

        I2CP Payload Data Format and Multiplexing

        -

        +

        {% trans %}I2CP Payload Data Format and Multiplexing{% endtrans %}

        +

        {% trans i2cp=site_url('docs/spec/i2cp') -%} The end-to-end messages handled by I2CP (i.e. the data sent by the client in a -SendMessageMessage +SendMessageMessage and received by the client in a -MessagePayloadMessage) +MessagePayloadMessage) are gzipped with a standard 10-byte gzip header beginning with 0x1F 0x8B 0x08 as specified by RFC 1952. @@ -207,44 +594,83 @@ As of release 0.7.1, I2P uses ignored portions of the gzip header to include protocol, from-port, and to-port information, thus supporting streaming and datagrams on the same destination, and allowing query/response using datagrams to work reliably in the presence of multiple channels. -

        +{%- endtrans %}

        + +

        {% trans -%} The gzip function cannot be completely turned off, however setting i2cp.gzip=false turns the gzip effort setting to 0, which may save a little CPU. -

        +{%- endtrans %}

        - + + + + + + + + + + + + + + + + + + + + + + + + + +
        BytesContent -
        0-2Gzip header 0x1F 0x8B 0x08 -
        3Gzip flags -
        4-5I2P Source port (Gzip mtime) -
        6-7I2P Destination port (Gzip mtime) -
        8Gzip xflags -
        9I2P Protocol (6 = Streaming, 17 = Datagram, 18 = Raw Datagrams) (Gzip OS) +
        {% trans %}Bytes{% endtrans %}{% trans %}Content{% endtrans %}
        0-2 +{% trans %}Gzip header{% endtrans %} 0x1F 0x8B 0x08 +
        3 +{% trans %}Gzip flags{% endtrans %}
        4-5 +{% trans %}I2P Source port (Gzip mtime){% endtrans %}
        6-7 +{% trans %}I2P Destination port (Gzip mtime){% endtrans %}
        8 +{% trans %}Gzip xflags{% endtrans %}
        9 +{% trans %}I2P Protocol (6 = Streaming, 17 = Datagram, 18 = Raw Datagrams) (Gzip OS){% endtrans %}
        -

        +

        {% trans -%} Data integrity is verified with the standard gzip CRC-32 as specified by RFC 1952. -

        +{%- endtrans %}

        -

        Future Work

        -
        • +

          {% trans %}Future Work{% endtrans %}

          +
            +
          • {% trans -%} Implement I2CP and the streaming library in another programming language. -
          • +{%- endtrans %}
          • + +
          • {% trans -%} Is the initial Get Date / Set Date handshake required? -
          • +{%- endtrans %}
          • + +
          • {% trans -%} The current authorization mechanism could be modified to use hashed passwords. -
          • +{%- endtrans %}
          • + +
          • {% trans -%} Private Keys are included in the Create Lease Set message, are they really required? Revocation is unimplemented. -
          • +{%- endtrans %}
          • + +
          • {% trans pdf1=url_for('static', filename='pdf/I2CP_spec.pdf'), pdf2=url_for('static', filename='pdf/datastructures.pdf') -%} Some improvements may be able to use messages previously defined but not implemented. For reference, here is the -I2CP Protocol Specification Version 0.9 +I2CP Protocol Specification Version 0.9 (PDF) dated August 28, 2003. That document also references the -Common Data Structures Specification Version 0.9. -
          +Common Data Structures Specification Version 0.9. +{%- endtrans %}
        • +
        diff --git a/i2p2www/pages/site/docs/protocol/i2np.html b/i2p2www/pages/site/docs/protocol/i2np.html index 8cb24255..3ee58d06 100644 --- a/i2p2www/pages/site/docs/protocol/i2np.html +++ b/i2p2www/pages/site/docs/protocol/i2np.html @@ -1,24 +1,26 @@ {% extends "global/layout.html" %} {% block title %}I2NP{% endblock %} -{% block lastupdated %}August 2010{% endblock %} +{% block lastupdated %}{% trans %}August 2010{% endtrans %}{% endblock %} {% block accuratefor %}0.8{% endblock %} {% block content %} -

        I2P Network Protocol (I2NP)

        -

        +

        {% trans %}I2P Network Protocol{% endtrans %} (I2NP)

        +

        {% trans -%} The I2P Network Protocol (I2NP), which is sandwiched between I2CP and the various I2P transport protocols, manages the routing and mixing of messages between routers, as well as the selection of what transports to use when communicating with a peer for which there are multiple common transports supported. -

        +{%- endtrans %}

        -

        I2NP Definition

        -

        +

        {% trans %}I2NP Definition{% endtrans %}

        +

        {% trans -%} I2NP (I2P Network Protocol) messages can be used for one-hop, router-to-router, point-to-point messages. By encrypting and wrapping messages in other messages, they can be sent in a secure way through multiple hops to the ultimate destination. Priority is only used locally at the origin, i.e. when queuing for outbound delivery. -

        +{%- endtrans %}

        + +

        {% trans -%} Both the NTCP and UDP transports implement priority transmission, but in quite different manners. UDP has complex code with queues for each priority, however it treats @@ -28,42 +30,49 @@ These are global queues for all peers. NTCP has a trivial linear search for the highest priority within each buffer for a particular peer. This is much less effective. +{%- endtrans %}

        -

        Message Format

        -

        +

        {% trans %}Message Format{% endtrans %}

        - + + + + +
        FieldBytes -
        Unique ID4 -
        Expiration8 -
        Payload Length2 -
        Checksum1 -
        Payload0 - 61.2KB +
        {% trans %}Field{% endtrans %}{% trans %}Bytes{% endtrans %}
        {% trans %}Unique ID{% endtrans %}4
        {% trans %}Expiration{% endtrans %}8
        {% trans %}Payload Length{% endtrans %}2
        {% trans %}Checksum{% endtrans %}1
        {% trans %}Payload{% endtrans %}0 - 61.2KB
        -

        +

        {% trans tunnelimpl=site_url('docs/tunnels/implementation') -%} While the maximum payload size is nominally 64KB, the size is further constrained by the -method of fragmenting I2NP messages into multiple 1KB tunnel messages as described in -tunnel-alt.html. +method of fragmenting I2NP messages into multiple 1KB tunnel messages as described on +the tunnel implementation page. The maximum number of fragments is 64, and the message may not be perfectly aligned, So the message must nominally fit in 63 fragments. -

        +{%- endtrans %}

        + +

        {% trans -%} The maximum size of an initial fragment is 956 bytes (assuming TUNNEL delivery mode); the maximum size of a follow-on fragment is 996 bytes. Therefore the maximum size is approximately 956 + (62 * 996) = 62708 bytes, or 61.2 KB. -

        -

        +{%- endtrans %}

        + +

        {% trans -%} In addition, the transports may have additional restrictions. NTCP currently limits to 16KB - 6 = 16378 bytes but this will be increased in a future release. The SSU limit is approximately 32 KB. -

        +{%- endtrans %}

        + +

        {% trans -%} Note that these are not the limits for datagrams that the client sees, as the router may bundle a reply leaseset and/or session tags together with the client message in a garlic message. The leaseset and tags together may add about 5.5KB. Therefore the current datagram limit is about 10KB. This limit will be increased in a future release. +{%- endtrans %}

        -

        Message Types

        +

        {% trans %}Message Types{% endtrans %}

        +

        {% trans -%} Higher-numbered priority is higher priority. The majority of traffic is TunnelDataMessages (priority 400), so anything above 400 is essentially high priority, and @@ -72,115 +81,162 @@ Note also that many of the messages are generally routed through exploratory tunnels, not client tunnels, and therefore may not be in the same queue unless the first hops happen to be on the same peer. -

        +{%- endtrans %}

        + +

        {% trans -%} Also, not all message types are sent unencrypted. For example, when testing a tunnel, the router wraps a DeliveryStatusMessage, which is wrapped in a GarlicMessage, which is wrapped in a DataMessage. -

        +{%- endtrans %}

        - + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        MessageTypePayload LengthPriorityComments +
        {% trans %}Message{% endtrans %}{% trans %}Type{% endtrans %}{% trans %}Payload Length{% endtrans %}{% trans %}Priority{% endtrans %}{% trans %}Comments{% endtrans %}
        DatabaseLookupMessage 2   100/400 -400 normally; 100 if from HarvesterJob and sent directly; +{% trans -%} +400 normally; 100 if from HarvesterJob and sent directly; 400 for a router lookup +{%- endtrans %}
        DatabaseSearchReplyMessage 3 Typ. 161 300 -Size is 65 + 32*(number of hashes) where typically, the hashes for +{% trans -%} +Size is 65 + 32*(number of hashes) where typically, the hashes for three floodfill routers are returned. +{%- endtrans %}
        DatabaseStoreMessage 1 -Varies +{% trans %}Varies{% endtrans %} 100/400 -Usually 100 (why?) +{% trans -%} +Usually 100 (why?) Size is 898 bytes for a typical 2-lease leaseSet. RouterInfo structures are compressed, and size varies; however there is a continuing effort to reduce the amount of data published in a RouterInfo as we approach release 1.0. +{%- endtrans %}
        DataMessage 20 4 - 62080 400 +
        DeliveryStatusMessage 10 12   -Used for message replies, and for testing tunnels - generally wrapped in a GarlicMessage +{% trans %}Used for message replies, and for testing tunnels - generally wrapped in a GarlicMessage{% endtrans %}
        -GarlicMessage +GarlicMessage 11     -Generally wrapped in a DataMessage - +{% trans -%} +Generally wrapped in a DataMessage - but when unwrapped, given a priority of 100 by the forwarding router +{%- endtrans %}
        -TunnelBuildMessage +TunnelBuildMessage 21 4224 300/500 -Usually 500 (why?) +{% trans %}Usually 500 (why?){% endtrans %}
        -TunnelBuildReplyMessage +TunnelBuildReplyMessage 22 4224 300 +
        TunnelDataMessage 18 1028 400 -The most common message. Priority for tunnel participants, outbound endpoints, and inbound gateways was - reduced to 200 as of release 0.6.1.33. - Outbound gateway messages (i.e. those originated locally) remains at 400. +{% trans -%} +The most common message. Priority for tunnel participants, outbound endpoints, and inbound gateways was +reduced to 200 as of release 0.6.1.33. +Outbound gateway messages (i.e. those originated locally) remains at 400. +{%- endtrans %}
        TunnelGatewayMessage 19   300/400 +
        VariableTunnelBuildMessage 23 1057 - 4225 300/500 -Shorter TunnelBuildMessage as of 0.7.12 +{% trans %}Shorter TunnelBuildMessage as of 0.7.12{% endtrans %}
        VariableTunnelBuildReplyMessage 24 1057 - 4225 300 -Shorter TunnelBuildReplyMessage as of 0.7.12 -
        -Others listed in -2003 Spec +{% trans %}Shorter TunnelBuildReplyMessage as of 0.7.12{% endtrans %}
        {% trans pdf=url_for('static', filename='pdf/I2NP_spec.pdf') -%} +Others listed in 2003 Spec +{%- endtrans %} 0,4-9,12     -Obsolete, Unused +{% trans %}Obsolete, Unused{% endtrans %} +
        -

        Full Protocol Specification

        -On the I2NP Specification page. +

        {% trans %}Full Protocol Specification{% endtrans %}

        +

        {% trans i2npspec=site_url('docs/specs/i2np'), commonstructures=site_url('docs/specs/common-structures') -%} +On the I2NP Specification page. See also the -Common Data Structure Specification page. +Common Data Structure Specification page. +{%- endtrans %}

        -

        Future Work

        -

        +

        {% trans %}Future Work{% endtrans %}

        +

        {% trans -%} It isn't clear whether the current priority scheme is generally effective, and whether the priorities for various messages should be adjusted further. This is a topic for further research, analysis and testing. +{%- endtrans %}

        {% endblock %} diff --git a/i2p2www/pages/site/docs/protocol/index.html b/i2p2www/pages/site/docs/protocol/index.html index 117d7f55..d2869502 100644 --- a/i2p2www/pages/site/docs/protocol/index.html +++ b/i2p2www/pages/site/docs/protocol/index.html @@ -1,73 +1,88 @@ {% extends "global/layout.html" %} -{% block title %}Protocol Stack{% endblock %} -{% block lastupdated %}August 2010{% endblock %} +{% block title %}{% trans %}Protocol Stack{% endtrans %}{% endblock %} +{% block lastupdated %}{% trans %}August 2010{% endtrans %}{% endblock %} {% block accuratefor %}0.8{% endblock %} {% block content %} -

        +

        {% trans docs=site_url('docs') -%} Here is the protocol stack for I2P. -See also the Index to Technical Documentation. -

        +See also the Index to Technical Documentation. +{%- endtrans %}

        -

        +

        {% trans -%} Each of the layers in the stack provides extra capabilities. The capabilities are listed below, starting at the bottom of the protocol stack. +{%- endtrans %}

        • - Internet Layer: + {% trans %}Internet Layer:{% endtrans %}
          - IP: Internet Protocol, allow addressing hosts on the regular internet and routing packets across the internet using best-effort delivery. + {% trans %}IP: Internet Protocol, allow addressing hosts on the regular internet and routing packets across the internet using best-effort delivery.{% endtrans %}
        • - Transport Layer: + {% trans %}Transport Layer:{% endtrans %}
          - TCP: Transmission Control Protocol, allow reliable, in-order delivery of packets across the internet. + {% trans %}TCP: Transmission Control Protocol, allow reliable, in-order delivery of packets across the internet.{% endtrans %}
          - UDP: User Datagram Protocol, allow unreliable, out-of-order delivery of packets across the internet. + {% trans %}UDP: User Datagram Protocol, allow unreliable, out-of-order delivery of packets across the internet.{% endtrans %}
        • - I2P Transport Layer: provide encrypted connections between 2 I2P routers. These are not anonymous yet, this is strictly a hop-to-hop connection. - Two protocols are implemented to provide these capabilities. NTCP builds on top of TCP, while SSU uses UDP. +{% trans -%} +I2P Transport Layer: provide encrypted connections between 2 I2P routers. These are not anonymous yet, this is strictly a hop-to-hop connection. +Two protocols are implemented to provide these capabilities. NTCP builds on top of TCP, while SSU uses UDP. +{%- endtrans %}
          - NTCP: NIO-based TCP + NTCP: {% trans %}NIO-based TCP{% endtrans %}
          - SSU: Secure Semi-reliable UDP + SSU: {% trans %}Secure Semi-reliable UDP{% endtrans %}
        • - I2P Tunnel Layer: provide full encrypted tunnel connections. + {% trans %}I2P Tunnel Layer: provide full encrypted tunnel connections.{% endtrans %}
          - Tunnel messages: tunnel messages are large messages containing encrypted I2NP (see below) messages and encrypted instructions for their delivery. - The encryption is layered. The first hop will decrypt the tunnel message and read a part. Another part can still be encrypted (with another key), - so it will be forwarded. +{% trans tunnelmessage=site_url('docs/spec/tunnel-message') -%} +Tunnel messages: tunnel messages are large messages containing encrypted I2NP (see below) messages and encrypted instructions for their delivery. +The encryption is layered. The first hop will decrypt the tunnel message and read a part. Another part can still be encrypted (with another key), +so it will be forwarded. +{%- endtrans %}
          - I2NP messages: I2P Network Protocol messages are used to pass messages through multiple routers. These I2NP messages are combined in tunnel messages. +{% trans i2np=site_url('docs/protocol/i2np') -%} +I2NP messages: I2P Network Protocol messages are used to pass messages through multiple routers. These I2NP messages are combined in tunnel messages. +{%- endtrans %}
        • - I2P Garlic Layer: provide encrypted and anonymous end-to-end I2P message delivery. + {% trans %}I2P Garlic Layer: provide encrypted and anonymous end-to-end I2P message delivery.{% endtrans %}
          - I2NP messages: I2P Network Protocol messages are wrapped in each other and used to ensure encryption between two tunnels and are passed along from source to destination, keeping both anonymous. +{% trans i2np=site_url('docs/protocol/i2np') -%} +I2NP messages: I2P Network Protocol messages are wrapped in each other and used to ensure encryption between two tunnels and are passed along from source to destination, keeping both anonymous. +{%- endtrans %}
        -

        -

        +

        {% trans -%} The following layers are strictly speaking no longer part of the I2P Protocol stack, they are not part of the core 'I2P router' functionality. However, each of these layers adds additional functionality, to allow applications simple and convenient I2P usage. +{%- endtrans %}

        • - I2P Client Layer: allow any client to use I2P functionality, without requiring the direct use of the router API. + {% trans %}I2P Client Layer: allow any client to use I2P functionality, without requiring the direct use of the router API.{% endtrans %}
          - I2CP: I2P Client Protocol, allows secure and asynchronous messaging over I2P by communicating messages over the I2CP TCP socket. +{% trans i2cp=site_url('docs/protocol/i2cp') -%} +I2CP: I2P Client Protocol, allows secure and asynchronous messaging over I2P by communicating messages over the I2CP TCP socket. +{%- endtrans %}
        • - I2P End-to-end Transport Layer: allow TCP- or UDP-like functionality on top of I2P. + {% trans %}I2P End-to-end Transport Layer: allow TCP- or UDP-like functionality on top of I2P.{% endtrans %}
          - Streaming Library: an implementation of TCP-like streams over I2P. This allows easier porting of existing applications to I2P. +{% trans streaming=site_url('docs/api/streaming') -%} +Streaming Library: an implementation of TCP-like streams over I2P. This allows easier porting of existing applications to I2P. +{%- endtrans %}
          - Datagram Library: an implementation of UDP-like messages over I2P. This allows easier porting of existing applications to I2P. +{% trans datagrams=site_url('docs/spec/datagrams') -%} +Datagram Library: an implementation of UDP-like messages over I2P. This allows easier porting of existing applications to I2P. +{%- endtrans %}
        • - I2P Application Interface Layer: additional (optional) libraries allowing easier implementations on top of I2P. + {% trans %}I2P Application Interface Layer: additional (optional) libraries allowing easier implementations on top of I2P.{% endtrans %}
          I2PTunnel
          @@ -75,32 +90,32 @@ However, each of these layers adds additional functionality, to allow applicatio BOB
        • - I2P Application Proxy Layer: proxy systems. + {% trans %}I2P Application Proxy Layer: proxy systems.{% endtrans %}
          - HTTP Client/Server, IRC Client, SOCKS, Streamr + {% trans socks=site_url('docs/api/socks') %}HTTP Client/Server, IRC Client, SOCKS, Streamr{% endtrans %}
        -

        -

        + +

        {% trans -%} Finally, what could be considered the 'I2P application layer', is a large number of applications on top of I2P. We can order this based on the I2P stack layer they use. +{%- endtrans %}

          -
        • Streaming/datagram applications: i2psnark, Syndie, i2phex...
        • -
        • SAM/BOB applications: IMule, i2p-bt, i2prufus, Robert...
        • -
        • Other I2P applications: Syndie, EepGet, plugins...
        • -
        • Regular applications: Jetty, Apache, Monotone, CVS, browsers, e-mail...
        • +
        • {% trans %}Streaming/datagram applications: i2psnark, Syndie, i2phex...{% endtrans %}
        • +
        • {% trans %}SAM/BOB applications: IMule, i2p-bt, i2prufus, Robert...{% endtrans %}
        • +
        • {% trans plugins=site_url('docs/plugins') %}Other I2P applications: Syndie, EepGet, plugins...{% endtrans %}
        • +
        • {% trans %}Regular applications: Jetty, Apache, Monotone, CVS, browsers, e-mail...{% endtrans %}
        -

        - I2P Network stack + {{ _('I2P Network stack') }}

        - Figure 1: The layers in the I2P Network stack. + {% trans %}Figure 1: The layers in the I2P Network stack.{% endtrans %}

        -* Note: SAM/SAMv2 can use both the streaming lib and datagrams. +* {% trans %}Note: SAM/SAMv2 can use both the streaming lib and datagrams.{% endtrans %}

        {% endblock %} From 98b90ec20af1533034adf59e712c5aa0366b8de3 Mon Sep 17 00:00:00 2001 From: str4d Date: Tue, 5 Feb 2013 04:39:24 +0000 Subject: [PATCH 393/650] Added translation tags to docs/transport/* --- i2p2www/pages/site/docs/transport/index.html | 148 +++++--- i2p2www/pages/site/docs/transport/ntcp.html | 312 ++++++++------- i2p2www/pages/site/docs/transport/ssu.html | 376 ++++++++++++------- 3 files changed, 505 insertions(+), 331 deletions(-) diff --git a/i2p2www/pages/site/docs/transport/index.html b/i2p2www/pages/site/docs/transport/index.html index 10f0e78c..7ab5ad92 100644 --- a/i2p2www/pages/site/docs/transport/index.html +++ b/i2p2www/pages/site/docs/transport/index.html @@ -1,126 +1,158 @@ {% extends "global/layout.html" %} -{% block title %}Transport Overview{% endblock %} -{% block lastupdated %}July 2010{% endblock %} +{% block title %}{% trans %}Transport Overview{% endtrans %}{% endblock %} +{% block lastupdated %}{% trans %}July 2010{% endtrans %}{% endblock %} {% block accuratefor %}0.8{% endblock %} {% block content %} -

        Transports in I2P

        +

        {% trans %}Transports in I2P{% endtrans %}

        +

        {% trans -%} A "transport" in I2P is a method for direct, point-to-point communication between two routers. Transports must provide confidentiality and integrity against external adversaries while authenticating that the router contacted is the one who should receive a given message. +{%- endtrans %}

        -

        I2P supports multiple transports simultaneously. +

        {% trans -%} +I2P supports multiple transports simultaneously. There are two transports currently implemented: +{%- endtrans %}

          -
        1. NTCP, a Java New I/O (NIO) TCP transport -
        2. SSU, or Secure Semireliable UDP +
        3. {% trans ntcp=site_url('docs/transport/ntcp') %}NTCP, a Java New I/O (NIO) TCP transport{% endtrans %}
        4. +
        5. {% trans ssu=site_url('docs/transport/ssu') %} SSU, or Secure Semireliable UDP{% endtrans %}
        +

        {% trans -%} Each provides a "connection" paradigm, with authentication, flow control, acknowledgments and retransmission. +{%- endtrans %}

        -

        Transport Services

        +

        {% trans %}Transport Services{% endtrans %}

        +

        {% trans -%} The transport subsystem in I2P provides the following services: +{%- endtrans %}

          -
        • Maintain a set of router addresses, one or more for each transport, - that the router publishes as its global contact information (the RouterInfo) -
        • Selection of the best transport for each outgoing message -
        • Queueing of outbound messages by priority -
        • Bandwidth limiting, both outbound and inbound, according to router configuration -
        • Setup and teardown of transport connections -
        • Encryption of point-to-point communications -
        • Maintenance of connection limits for each transport, implementation of various thresholds for these limits, - and communication of threshold status to the router so it may make operational changes based on the status -
        • Firewall port opening using UPnP (Universal Plug and Play) -
        • Cooperative NAT/Firewall traversal -
        • Local IP detection by various methods, including UPnP, inspection of incoming connections, and enumeration of network devices -
        • Coordination of firewall status and local IP, and changes to either, among the transports -
        • Communication of firewall status and local IP, and changes to either, to the router and the user interface -
        • Determination of a consensus clock, which is used to periodically update the router's clock, as a backup for NTP -
        • Maintenance of status for each peer, including whether it is connected, whether it was recently connected, - and whether it was reachable in the last attempt -
        • Qualification of valid IP addresses according to a local rule set -
        • Honoring the automated and manual lists of banned peers maintained by the router, - and refusing outbound and inbound connections to those peers +
        • {% trans -%} +Maintain a set of router addresses, one or more for each transport, +that the router publishes as its global contact information (the RouterInfo) +{%- endtrans %}
        • +
        • {% trans %}Selection of the best transport for each outgoing message{% endtrans %}
        • +
        • {% trans %}Queueing of outbound messages by priority{% endtrans %}
        • +
        • {% trans %}Bandwidth limiting, both outbound and inbound, according to router configuration{% endtrans %}
        • +
        • {% trans %}Setup and teardown of transport connections{% endtrans %}
        • +
        • {% trans %}Encryption of point-to-point communications{% endtrans %}
        • +
        • {% trans -%} +Maintenance of connection limits for each transport, implementation of various thresholds for these limits, +and communication of threshold status to the router so it may make operational changes based on the status +{%- endtrans %}
        • +
        • {% trans %}Firewall port opening using UPnP (Universal Plug and Play){% endtrans %}
        • +
        • {% trans %}Cooperative NAT/Firewall traversal{% endtrans %}
        • +
        • {% trans %}Local IP detection by various methods, including UPnP, inspection of incoming connections, and enumeration of network devices{% endtrans %}
        • +
        • {% trans %}Coordination of firewall status and local IP, and changes to either, among the transports{% endtrans %}
        • +
        • {% trans %}Communication of firewall status and local IP, and changes to either, to the router and the user interface{% endtrans %}
        • +
        • {% trans %}Determination of a consensus clock, which is used to periodically update the router's clock, as a backup for NTP{% endtrans %}
        • +
        • {% trans -%} +Maintenance of status for each peer, including whether it is connected, whether it was recently connected, +and whether it was reachable in the last attempt +{%- endtrans %}
        • +
        • {% trans %}Qualification of valid IP addresses according to a local rule set{% endtrans %}
        • +
        • {% trans -%} +Honoring the automated and manual lists of banned peers maintained by the router, +and refusing outbound and inbound connections to those peers +{%- endtrans %}
        -

        Transport Addresses

        +

        {% trans %}Transport Addresses{% endtrans %}

        +

        {% trans -%} The transport subsystem maintains a set of router addresses, each of which lists a transport method, IP, and port. These addresses constitute the advertised contact points, and are published by the router to the network database. -

        -Typical scenarios are: +{%- endtrans %}

        + +

        {% trans %}Typical scenarios are:{% endtrans %}

          -
        • A router has no published addresses, so it is considered "hidden" and cannot receive incoming connections -
        • A router is firewalled, and therefore publishes an SSU address which contains a list of cooperating - peers or "introducers" who will assist in NAT traversal (see the SSU spec for details) -
        • A router is not firewalled or its NAT ports are open; it publishes both NTCP and SSU addresses containing - directly-accessible IP and ports. +
        • {% trans %}A router has no published addresses, so it is considered "hidden" and cannot receive incoming connections{% endtrans %}
        • +
        • {% trans ssu=site_url('docs/transport/ssu') -%} +A router is firewalled, and therefore publishes an SSU address which contains a list of cooperating +peers or "introducers" who will assist in NAT traversal (see the SSU spec for details) +{%- endtrans %}
        • +
        • {% trans -%} +A router is not firewalled or its NAT ports are open; it publishes both NTCP and SSU addresses containing +directly-accessible IP and ports. +{%- endtrans %}
        -

        Transport Selection

        +

        {% trans %}Transport Selection{% endtrans %}

        -The transport system delivers I2NP messages. The transport selected for any message is +

        {% trans i2np=site_url('docs/protocol/i2np') -%} +The transport system delivers I2NP messages. The transport selected for any message is independent of the application-layer protocol (TCP or UDP). -

        +{%- endtrans %}

        +

        {% trans -%} For each outgoing message, the transport system solicits "bids" from each transport. The transport bidding the lowest (best) value wins the bid and receives the message for delivery. A transport may refuse to bid. -

        +{%- endtrans %}

        + +

        {% trans -%} Whether a transport bids, and with what value, depend on numerous factors: +{%- endtrans %}

          -
        • Configuration of transport preferences -
        • Whether the transport is already connected to the peer -
        • The number of current connections compared to various connection limit thresholds -
        • Whether recent connection attempts to the peer have failed -
        • The size of the message, as different transports have different size limits -
        • Whether the peer can accept incoming connections for that transport, as advertised in its RouterInfo -
        • Whether the connection would be indirect (requiring introducers) or direct -
        • The peer's transport preference, as advertised in its RouterInfo +
        • {% trans %}Configuration of transport preferences{% endtrans %}
        • +
        • {% trans %}Whether the transport is already connected to the peer{% endtrans %}
        • +
        • {% trans %}The number of current connections compared to various connection limit thresholds{% endtrans %}
        • +
        • {% trans %}Whether recent connection attempts to the peer have failed{% endtrans %}
        • +
        • {% trans %}The size of the message, as different transports have different size limits{% endtrans %}
        • +
        • {% trans %}Whether the peer can accept incoming connections for that transport, as advertised in its RouterInfo{% endtrans %}
        • +
        • {% trans %}Whether the connection would be indirect (requiring introducers) or direct{% endtrans %}
        • +
        • {% trans %}The peer's transport preference, as advertised in its RouterInfo{% endtrans %}
        -

        +

        {% trans -%} In general, the bid values are selected so that two routers are only connected by a single transport at any one time. However, this is not a requirement. +{%- endtrans %}

        -

        New Transports and Future Work

        +

        {% trans %}New Transports and Future Work{% endtrans %}

        +

        {% trans -%} Additional transports may be developed, including: +{%- endtrans %}

          -
        • A TLS/SSH look-alike transport -
        • An "indirect" transport for routers that are not reachable by all other routers (one form of "restricted routes") +
        • {% trans %}A TLS/SSH look-alike transport{% endtrans %}
        • +
        • {% trans %}An "indirect" transport for routers that are not reachable by all other routers (one form of "restricted routes"){% endtrans %}
        -

        +

        {% trans -%} Also, the existing transports will be enhanced to support multiple addresses within a single transport, including IPV6 addresses. Currently, a transport may only advertise a single IPV4 address. +{%- endtrans %}

        -

        +

        {% trans -%} Work continues on adjusting default connection limits for each transport. I2P is designed as a "mesh network", where it is assumed that any router can connect to any other router. This assumption may be broken by routers that have exceeded their connection limits, and by routers that are behind restrictive state firewalls (restricted routes). +{%- endtrans %}

        -

        +

        {% trans -%} The current connection limits are higher for SSU than for NTCP, based on the assumption that the memory requirements for an NTCP connection are higher than that for SSU. However, as NTCP buffers are partially in the kernel and SSU buffers are on the Java heap, that assumption is difficult to verify. +{%- endtrans %}

        -

        -Analyze -Breaking and Improving Protocol Obfuscation +

        {% trans pdf='http://www.cse.chalmers.se/%7Ejohnwolf/publications/hjelmvik_breaking.pdf' -%} +Analyze Breaking and Improving Protocol Obfuscation and see how transport-layer padding may improve things. -

        +{%- endtrans %}

        {% endblock %} diff --git a/i2p2www/pages/site/docs/transport/ntcp.html b/i2p2www/pages/site/docs/transport/ntcp.html index 509551a3..bb7053e0 100644 --- a/i2p2www/pages/site/docs/transport/ntcp.html +++ b/i2p2www/pages/site/docs/transport/ntcp.html @@ -1,64 +1,65 @@ {% extends "global/layout.html" %} {% block title %}NTCP{% endblock %} -{% block lastupdated %}August 2010{% endblock %} +{% block lastupdated %}{% trans %}August 2010{% endtrans %}{% endblock %} {% block accuratefor %}0.8{% endblock %} {% block content %} -

        NTCP (NIO-based TCP)

        +

        {% trans %}NTCP (NIO-based TCP){% endtrans %}

        -

        -NTCP -is one of two transports currently implemented in I2P. -The other is SSU. -NTCP -is a Java NIO-based transport -introduced in I2P release 0.6.1.22. +

        {% trans transports=site_url('docs/transport'), ssu=site_url('docs/transport/ssu') -%} +NTCP is one of two transports currently implemented in I2P. +The other is SSU. +NTCP is a Java NIO-based transport introduced in I2P release 0.6.1.22. Java NIO (new I/O) does not suffer from the 1 thread per connection issues of the old TCP transport. -

        +{%- endtrans %}

        -By default, -NTCP uses the IP/Port +

        {% trans -%} +By default, NTCP uses the IP/Port auto-detected by SSU. When enabled on config.jsp, SSU will notify/restart NTCP when the external address changes or when the firewall status changes. Now you can enable inbound TCP without a static IP or dyndns service. -

        +{%- endtrans %}

        +

        {% trans -%} The NTCP code within I2P is relatively lightweight (1/4 the size of the SSU code) because it uses the underlying Java TCP transport for reliable delivery. -

        +{%- endtrans %}

        -

        NTCP Protocol Specification

        +

        {% trans %}NTCP Protocol Specification{% endtrans %}

        -

        Standard Message Format

        -

        - After establishment, - the NTCP transport sends individual I2NP messages, with a simple checksum. - The unencrypted message is encoded as follows: +

        {% trans %}Standard Message Format{% endtrans %}

        +

        {% trans -%} +After establishment, +the NTCP transport sends individual I2NP messages, with a simple checksum. +The unencrypted message is encoded as follows: +{%- endtrans %}

          *  +-------+-------+--//--+---//----+-------+-------+-------+-------+
          *  | sizeof(data)  | data | padding | Adler checksum of sz+data+pad |
          *  +-------+-------+--//--+---//----+-------+-------+-------+-------+
         
        - The data is then AES/256/CBC encrypted. The session key for the encryption - is negotiated during establishment (using Diffie-Hellman 2048 bit). - The establishment between two routers is implemented in the EstablishState class - and detailed below. - The IV for AES/256/CBC encryption is the last 16 bytes of the previous encrypted message. -

        +

        {% trans -%} +The data is then AES/256/CBC encrypted. The session key for the encryption +is negotiated during establishment (using Diffie-Hellman 2048 bit). +The establishment between two routers is implemented in the EstablishState class +and detailed below. +The IV for AES/256/CBC encryption is the last 16 bytes of the previous encrypted message. +{%- endtrans %}

        -

        +

        {% trans -%} 0-15 bytes of padding are required to bring the total message length (including the six size and checksum bytes) to a multiple of 16. The maximum message size is currently 16 KB. Therefore the maximum data size is currently 16 KB - 6, or 16378 bytes. The minimum data size is 1. -

        +{%- endtrans %}

        -

        Time Sync Message Format

        -

        - One special case is a metadata message where the sizeof(data) is 0. In - that case, the unencrypted message is encoded as: +

        {% trans %}Time Sync Message Format{% endtrans %}

        +

        {% trans -%} +One special case is a metadata message where the sizeof(data) is 0. In +that case, the unencrypted message is encoded as: +{%- endtrans %}

          *  +-------+-------+-------+-------+-------+-------+-------+-------+
          *  |       0       |      timestamp in seconds     | uninterpreted             
        @@ -66,19 +67,25 @@ The minimum data size is 1.
          *          uninterpreted           | Adler checksum of bytes 0-11  |
          *  +-------+-------+-------+-------+-------+-------+-------+-------+
         
        +

        {% trans -%} Total length: 16 bytes. The time sync message is sent at approximately 15 minute intervals. The message is encrypted just as standard messages are. +{%- endtrans %}

        -

        Checksums

        +

        {% trans %}Checksums{% endtrans %}

        +

        {% trans rfc1950='http://tools.ietf.org/html/rfc1950' -%} The standard and time sync messages use the Adler-32 checksum -as defined in the ZLIB Specification. +as defined in the ZLIB Specification. +{%- endtrans %}

        -

        Establishment Sequence

        +

        {% trans %}Establishment Sequence{% endtrans %}

        +

        {% trans -%} In the establish state, there is a 4-phase message sequence to exchange DH keys and signatures. In the first two messages there is a 2048-bit Diffie Hellman exchange. Then, DSA signatures of the critical data are exchanged to confirm the connection. +{%- endtrans %}

          * Alice                   contacts                      Bob
          * =========================================================
        @@ -90,57 +97,58 @@ Then, DSA signatures of the critical data are exchanged to confirm the connectio
         
        -  Legend:
        -    X, Y: 256 byte DH public keys
        +  {% trans %}Legend:{% endtrans %}
        +    X, Y: {% trans %}256 byte DH public keys{% endtrans %}
             H(): 32 byte SHA256 Hash
             E(data, session key, IV): AES256 Encrypt
             S(): 40 byte DSA Signature
        -    tsA, tsB: timestamps (4 bytes, seconds since epoch)
        -    sk: 32 byte Session key
        -    sz: 2 byte size of Alice identity to follow
        +    tsA, tsB: {% trans %}timestamps (4 bytes, seconds since epoch){% endtrans %}
        +    sk: {% trans %}32 byte Session key{% endtrans %}
        +    sz: {% trans %}2 byte size of Alice identity to follow{% endtrans %}
         
        -

        DH Key Exchange

        -

        +

        {% trans %}DH Key Exchange{% endtrans %}

        +

        {% trans cryptography=site_url('docs/how/cryptography') -%} The initial 2048-bit DH key exchange uses the same shared prime (p) and generator (g) as that used for I2P's -ElGamal encryption. -

        +ElGamal encryption. +{%- endtrans %}

        -

        +

        {% trans -%} The DH key exchange consists of a number of steps, displayed below. The mapping between these steps and the messages sent between I2P routers, is marked in bold. +{%- endtrans %}

          -
        1. Alice generates a secret 226-bit integer x. - She then calculates X = g^x mod p. -
        2. -
        3. Alice sends X to Bob (Message 1).
        4. -
        5. Bob generates a secret 226-bit integer y. - He then calculates Y = g^y mod p.
        6. -
        7. Bob sends Y to Alice.(Message 2)
        8. -
        9. Alice can now compute sessionKey = Y^x mod p.
        10. -
        11. Bob can now compute sessionKey = X^y mod p.
        12. -
        13. Both Alice and Bob now have a shared key sessionKey = g^(x*y) mod p.
        14. +
        15. {% trans %}Alice generates a secret 226-bit integer x. She then calculates X = g^x mod p.{% endtrans %}
        16. +
        17. {% trans %}Alice sends X to Bob (Message 1).{% endtrans %}
        18. +
        19. {% trans %}Bob generates a secret 226-bit integer y. He then calculates Y = g^y mod p.{% endtrans %}
        20. +
        21. {% trans %}Bob sends Y to Alice.(Message 2){% endtrans %}
        22. +
        23. {% trans %}Alice can now compute sessionKey = Y^x mod p.{% endtrans %}
        24. +
        25. {% trans %}Bob can now compute sessionKey = X^y mod p.{% endtrans %}
        26. +
        27. {% trans %}Both Alice and Bob now have a shared key sessionKey = g^(x*y) mod p.{% endtrans %}
        +

        {% trans -%} The sessionKey is then used to exchange identities in Message 3 and Message 4. -

        +{%- endtrans %}

        -

        Message 1 (Session Request)

        -This is the DH request. -Alice already has Bob's -Router Identity, +

        {% trans %}Message 1 (Session Request){% endtrans %}

        +

        {% trans commonstructures=site_url('docs/spec/common-structures'), +netdb=site_url('docs/how/network-database') -%} +This is the DH request. Alice already has Bob's +Router Identity, IP address, and port, as contained in his -Router Info, +Router Info, which was published to the -network database. +network database. Alice sends Bob: +{%- endtrans %}

          *  X+(H(X) xor Bob.identHash)----------------------------->
         
        -    Size: 288 bytes
        +    {% trans %}Size:{% endtrans %} 288 bytes
         
        -Contents: +

        {% trans %}Contents:{% endtrans %}

          +----+----+----+----+----+----+----+----+
          |         X, as calculated from DH      |
        @@ -158,28 +166,32 @@ Contents:
          |                                       |
          +----+----+----+----+----+----+----+----+
         
        -  X: 256 byte X from Diffie Hellman
        +  X: {% trans %}256 byte X from Diffie Hellman{% endtrans %}
         
        -  HXxorHI:  SHA256 Hash(X) xored with SHA256 Hash(Bob's Router Identity)
        +  HXxorHI:  {% trans commonstructures=site_url('docs/spec/common-structures') -%}
        +SHA256 Hash(X) xored with SHA256 Hash(Bob's Router Identity)
        +{%- endtrans %}
                     (32 bytes)
         
         
        -

        Notes: -

        • +

          {% trans %}Notes:{% endtrans %} +

          • {% trans -%} Bob verifies HXxorHI using his own router hash. If it does not verify, Alice has contacted the wrong router, and Bob drops the connection. -
          +{%- endtrans %}
        -

        Message 2 (Session Created)

        +

        {% trans %}Message 2 (Session Created){% endtrans %}

        +

        {% trans -%} This is the DH reply. Bob sends Alice: +{%- endtrans %}

          *  <----------------------------------------Y+E(H(X+Y)+tsB+padding, sk, Y[239:255])
         
        -    Size: 304 bytes
        +    {% trans %}Size:{% endtrans %} 304 bytes
         
        -Unencrypted Contents: +

        {% trans %}Unencrypted Contents:{% endtrans %}

          +----+----+----+----+----+----+----+----+
          |         Y as calculated from DH       |
        @@ -201,19 +213,19 @@ Unencrypted Contents:
          |                                       |
          +----+----+----+----+----+----+----+----+
         
        -  Y: 256 byte Y from Diffie Hellman
        +  Y: {% trans %}256 byte Y from Diffie Hellman{% endtrans %}
         
        -  HXY:  SHA256 Hash(X concatenated with Y)
        +  HXY:  {% trans %}SHA256 Hash(X concatenated with Y){% endtrans %}
                 (32 bytes)
         
        -  tsB: 4 byte timestamp (seconds since the epoch)
        +  tsB: {% trans %}4 byte timestamp (seconds since the epoch){% endtrans %}
         
        -  padding: 12 bytes random data
        +  padding: {% trans %}12 bytes random data{% endtrans %}
         
         
        -Encrypted Contents: +

        {% trans %}Encrypted Contents:{% endtrans %}

          +----+----+----+----+----+----+----+----+
          |         Y as calculated from DH       |
        @@ -235,29 +247,31 @@ Encrypted Contents:
          |                                       |
          +----+----+----+----+----+----+----+----+
         
        -  Y: 256 byte Y from Diffie Hellman
        +  Y: {% trans %}256 byte Y from Diffie Hellman{% endtrans %}
         
        -  encrypted data: 48 bytes AES encrypted using the DH session key and
        -                  the last 16 bytes of Y as the IV
        +  encrypted data: {% trans cryptography=site_url('docs/how/cryptography') -%}
        +48 bytes AES encrypted using the DH session key and
        +                  the last 16 bytes of Y as the IV{% endtrans %}
         
         
        -

        Notes: -

        • +

          {% trans %}Notes:{% endtrans %}

          +
          • {% trans -%} Alice may drop the connection if the clock skew with Bob is too high as calculated using tsB. -
          -

          +{%- endtrans %}
        -

        Message 3 (Session Confirm A)

        +

        {% trans %}Message 3 (Session Confirm A){% endtrans %}

        +

        {% trans -%} This contains Alice's router identity, and a DSA signature of the critical data. Alice sends Bob: +{%- endtrans %}

          *  E(sz+Alice.identity+tsA+padding+S(X+Y+Bob.identHash+tsA+tsB), sk, hX_xor_Bob.identHash[16:31])--->
         
        -    Size: 448 bytes (typ. for 387 byte identity)
        +    {% trans %}Size:{% endtrans %} 448 bytes (typ. for 387 byte identity)
         
        -Unencrypted Contents: +

        {% trans %}Unencrypted Contents:{% endtrans %}

          +----+----+----+----+----+----+----+----+
          |   sz    | Alice's Router Identity     |
        @@ -283,21 +297,25 @@ Unencrypted Contents:
          |                                       |
          +----+----+----+----+----+----+----+----+
         
        -  sz: 2 byte size of Alice's router identity to follow (should always be 387)
        +  sz: {% trans %}2 byte size of Alice's router identity to follow (should always be 387){% endtrans %}
         
        -  ident: Alice's 387 byte Router Identity
        +  ident: {% trans commonstructures=site_url('docs/spec/common-structures') -%}
        +Alice's 387 byte Router Identity
        +{%- endtrans %}
         
        -  tsA: 4 byte timestamp (seconds since the epoch)
        +  tsA: {% trans %}4 byte timestamp (seconds since the epoch){% endtrans %}
         
        -  padding: 15 bytes random data
        +  padding: {% trans %}15 bytes random data{% endtrans %}
         
        -  signature: the 40 byte DSA signature of the following concatenated data:
        -             X, Y, Bob's Router Identity, tsA, tsB.
        -             Alice signs it with the private signing key associated with the public signing key in her Router Identity
        +  signature: {% trans commonstructures=site_url('docs/spec/common-structures') -%}
        +the 40 byte DSA signature of the following concatenated data:
        +             X, Y, Bob's Router Identity, tsA, tsB.
        +             Alice signs it with the private signing key associated with the public signing key in her Router Identity
        +{%- endtrans %}
         
         
        -Encrypted Contents: +

        {% trans %}Encrypted Contents:{% endtrans %}

          +----+----+----+----+----+----+----+----+
          |                                       |
        @@ -307,30 +325,36 @@ Encrypted Contents:
          |                                       |
          +----+----+----+----+----+----+----+----+
         
        -  encrypted data: 448 bytes AES encrypted using the DH session key and
        +  encrypted data: {% trans cryptography=site_url('docs/how/cryptography') -%}
        +448 bytes AES encrypted using the DH session key and
                           the last 16 bytes of HXxorHI (i.e., the last 16 bytes of message #1) as the IV
        +{%- endtrans %}
         
         
        -

        Notes: -

        • +

          {% trans %}Notes:{% endtrans %}

          +
            +
          • {% trans -%} Bob verifies the signature, and on failure, drops the connection. -
          • +{%- endtrans %}
          • +
          • {% trans -%} Bob may drop the connection if the clock skew with Alice is too high as calculated using tsA. -
          -

          +{%- endtrans %}
        • +
        -

        Message 4 (Session Confirm B)

        +

        {% trans %}Message 4 (Session Confirm B){% endtrans %}

        +

        {% trans -%} This is a DSA signature of the critical data. Bob sends Alice: +{%- endtrans %}

          *  <----------------------E(S(X+Y+Alice.identHash+tsA+tsB)+padding, sk, prev)
         
        -    Size: 48 bytes
        +    {% trans %}Size:{% endtrans %} 48 bytes
         
        -Unencrypted Contents: +

        {% trans %}Unencrypted Contents:{% endtrans %}

          +----+----+----+----+----+----+----+----+
          |                                       |
        @@ -347,16 +371,18 @@ Unencrypted Contents:
          +----+----+----+----+----+----+----+----+
         
         
        -  signature: the 40 byte DSA signature of the following concatenated data:
        -             X, Y, Alice's Router Identity, tsA, tsB.
        -             Bob signs it with the private signing key associated with the public signing key in his Router Identity
        +  signature: {% trans commonstructures=site_url('docs/spec/common-structures') -%}
        +the 40 byte DSA signature of the following concatenated data:
        +             X, Y, Alice's Router Identity, tsA, tsB.
        +             Bob signs it with the private signing key associated with the public signing key in his Router Identity
        +{%- endtrans %}
         
        -  padding: 8 bytes random data
        +  padding: {% trans %}8 bytes random data{% endtrans %}
         
         
        -Encrypted Contents: +

        {% trans %}Encrypted Contents:{% endtrans %}

          +----+----+----+----+----+----+----+----+
          |                                       |
        @@ -366,68 +392,82 @@ Encrypted Contents:
          |                                       |
          +----+----+----+----+----+----+----+----+
         
        -  encrypted data: 48 bytes AES encrypted using the DH session key and
        +  encrypted data: {% trans cryptography=site_url('docs/how/cryptography') -%}
        +48 bytes AES encrypted using the DH session key and
                           the last 16 bytes of the encrypted contents of message #2 as the IV
        +{%- endtrans %}
         
         
        -

        Notes: -

        • +

          Notes:

          +
          • {% trans -%} Alice verifies the signature, and on failure, drops the connection. -
          -

          +{%- endtrans %}
        -

        After Establishment

        -

        +

        {% trans %}After Establishment{% endtrans %}

        +

        {% trans -%} The connection is established, and standard or time sync messages may be exchanged. All subsequent messages are AES encrypted using the negotiated DH session key. Alice will use the last 16 bytes of the encrypted contents of message #3 as the next IV. Bob will use the last 16 bytes of the encrypted contents of message #4 as the next IV. -

        +{%- endtrans %}

        -

        Check Connection Message

        +

        {% trans %}Check Connection Message{% endtrans %}

        +

        {% trans -%} Alternately, when Bob receives a connection, it could be a check connection (perhaps prompted by Bob asking for someone to verify his listener). Check Connection is not currently used. However, for the record, check connections are formatted as follows. - A check info connection will receive 256 bytes containing: +A check info connection will receive 256 bytes containing: +{%- endtrans %}

          -
        • 32 bytes of uninterpreted, ignored data -
        • 1 byte size -
        • that many bytes making up the local router's IP address (as reached by the remote side) -
        • 2 byte port number that the local router was reached on -
        • 4 byte i2p network time as known by the remote side (seconds since the epoch) -
        • uninterpreted padding data, up to byte 223 -
        • xor of the local router's identity hash and the SHA256 of bytes 32 through bytes 223 +
        • {% trans %}32 bytes of uninterpreted, ignored data{% endtrans %}
        • +
        • {% trans %}1 byte size{% endtrans %}
        • +
        • {% trans %}that many bytes making up the local router's IP address (as reached by the remote side){% endtrans %}
        • +
        • {% trans %}2 byte port number that the local router was reached on{% endtrans %}
        • +
        • {% trans %}4 byte i2p network time as known by the remote side (seconds since the epoch){% endtrans %}
        • +
        • {% trans %}uninterpreted padding data, up to byte 223{% endtrans %}
        • +
        • {% trans %}xor of the local router's identity hash and the SHA256 of bytes 32 through bytes 223{% endtrans %}
        -

        Discussion

        -Now on the NTCP Discussion Page. +

        {% trans %}Discussion{% endtrans %}

        +

        {% trans ntcpdisc=site_url('docs/discussions/ntcp') -%} +Now on the NTCP Discussion Page. +{%- endtrans %}

        -

        Future Work

        -
        • +

          {% trans %}Future Work{% endtrans %}

          +
            +
          • {% trans -%} The maximum message size should be increased to approximately 32 KB. -
          • +{%- endtrans %}
          • + +
          • {% trans -%} A set of fixed packet sizes may be appropriate to further hide the data fragmentation to external adversaries, but the tunnel, garlic, and end to end padding should be sufficient for most needs until then. However, there is currently no provision for padding beyond the next 16-byte boundary, to create a limited number of message sizes. -
          • +{%- endtrans %}
          • + +
          • {% trans -%} Memory utilization (including that of the kernel) for NTCP should be compared to that for SSU. -
          • +{%- endtrans %}
          • + +
          • {% trans -%} Can the establishment messages be randomly padded somehow, to frustrate identification of I2P traffic based on initial packet sizes? -
          • +{%- endtrans %}
          • + +
          • {% trans -%} Review and possibly disable 'check connection' -
          -

          +{%- endtrans %}
        • +
        {% endblock %} diff --git a/i2p2www/pages/site/docs/transport/ssu.html b/i2p2www/pages/site/docs/transport/ssu.html index 1992bb64..a7ae3caa 100644 --- a/i2p2www/pages/site/docs/transport/ssu.html +++ b/i2p2www/pages/site/docs/transport/ssu.html @@ -1,50 +1,60 @@ {% extends "global/layout.html" %} -{% block title %}SSU Transport{% endblock %} -{% block lastupdated %}October 2012{% endblock %} +{% block title %}{% trans %}SSU Transport{% endtrans %}{% endblock %} +{% block lastupdated %}{% trans %}October 2012{% endtrans %}{% endblock %} {% block accuratefor %}0.9.2{% endblock %} {% block content %} -

        Secure Semireliable UDP (SSU)

        -

        +

        {% trans %}Secure Semireliable UDP{% endtrans %} (SSU)

        +

        {% trans transports=site_url('docs/transport'), ntcp=site_url('docs/transport/ntcp') -%} SSU (also called "UDP" in much of the I2P documentation and user interfaces) -is one of two transports currently implemented in I2P. -The other is NTCP. -

        +is one of two transports currently implemented in I2P. +The other is NTCP. +{%- endtrans %}

        + +

        {% trans -%} SSU is the newer of the two transports, introduced in I2P release 0.6. In a standard I2P installation, the router uses both NTCP and SSU for outbound connections. +{%- endtrans %}

        -

        SSU Services

        +

        {% trans %}SSU Services{% endtrans %}

        +

        {% trans -%} Like the NTCP transport, SSU provides reliable, encrypted, connection-oriented, point-to-point data transport. Unique to SSU, it also provides IP detection and NAT traversal services, including: +{%- endtrans %}

          -
        • Cooperative NAT/Firewall traversal using introducers -
        • Local IP detection by inspection of incoming packets and peer testing -
        • Communication of firewall status and local IP, and changes to either to NTCP -
        • Communication of firewall status and local IP, and changes to either, to the router and the user interface +
        • {% trans %}Cooperative NAT/Firewall traversal using introducers{% endtrans %}
        • +
        • {% trans %}Local IP detection by inspection of incoming packets and peer testing{% endtrans %}
        • +
        • {% trans %}Communication of firewall status and local IP, and changes to either to NTCP{% endtrans %}
        • +
        • {% trans %}Communication of firewall status and local IP, and changes to either, to the router and the user interface{% endtrans %}
        -

        Protocol Details

        +

        {% trans %}Protocol Details{% endtrans %}

        -

        Congestion control

        +

        {% trans %}Congestion control{% endtrans %}

        -

        SSU's need for only semireliable delivery, TCP-friendly operation, +

        {% trans -%} +SSU's need for only semireliable delivery, TCP-friendly operation, and the capacity for high throughput allows a great deal of latitude in congestion control. The congestion control algorithm outlined below is -meant to be both efficient in bandwidth as well as simple to implement.

        +meant to be both efficient in bandwidth as well as simple to implement. +{%- endtrans %}

        -

        Packets are scheduled according to the router's policy, taking care +

        {% trans -%} +Packets are scheduled according to the router's policy, taking care not to exceed the router's outbound capacity or to exceed the measured capacity of the remote peer. The measured capacity operates along the lines of TCP's slow start and congestion avoidance, with additive increases to the sending capacity and multiplicative decreases in face of congestion. Unlike for TCP, routers may give up on some messages after a given period or number of retransmissions while continuing to transmit -other messages.

        +other messages. +{%- endtrans %}

        -

        The congestion detection techniques vary from TCP as well, since each +

        {% trans -%} +The congestion detection techniques vary from TCP as well, since each message has its own unique and nonsequential identifier, and each message has a limited size - at most, 32KB. To efficiently transmit this feedback to the sender, the receiver periodically includes a list of fully ACKed @@ -52,48 +62,62 @@ message identifiers and may also include bitfields for partially received messages, where each bit represents the reception of a fragment. If duplicate fragments arrive, the message should be ACKed again, or if the message has still not been fully received, the bitfield should be -retransmitted with any new updates.

        +retransmitted with any new updates. +{%- endtrans %}

        -

        The current implementation does not pad the packets to +

        {% trans -%} +The current implementation does not pad the packets to any particular size, but instead just places a single message fragment into a packet and sends it off (careful not to exceed the MTU). -

        +{%- endtrans %}

        MTU

        -

        +

        {% trans -%} As of router version 0.8.12, two MTU values are used: 620 and 1484. The MTU value is adjusted based on the percentage of packets that are retransmitted. -

        +{%- endtrans %}

        + +

        {% trans -%} For both MTU values, it is desirable that (MTU % 16) == 12, so that the payload portion after the 28-byte IP/UDP header is a multiple of 16 bytes, for encryption purposes. This calculation is for IPv4 only. While the protocol as specified supports IPv6 addresses, IPv6 is not yet implemented. -

        +{%- endtrans %}

        + +

        {% trans -%} For the small MTU value, it is desirable to pack a 2646-byte Variable Tunnel Build Message efficiently into multiple packets; with a 620-byte MTU, it fits into 5 packets with nicely. -

        +{%- endtrans %}

        + +

        {% trans -%} Based on measurements, 1492 fits nearly all reasonably small I2NP messages (larger I2NP messages may be up to 1900 to 4500 bytes, which isn't going to fit into a live network MTU anyway). -

        +{%- endtrans %}

        + +

        {% trans -%} The MTU values were 608 and 1492 for releases 0.8.9 - 0.8.11. The large MTU was 1350 prior to release 0.8.9. -

        +{%- endtrans %}

        + +

        {% trans -%} The maximum receive packet size is 1571 bytes as of release 0.8.12. For releases 0.8.9 - 0.8.11 it was 1535 bytes. Prior to release 0.8.9 it was 2048 bytes. -

        +{%- endtrans %}

        + +

        {% trans -%} As of release 0.9.2, if a router's network interface MTU is less than 1484, it will publish that in the network database, and other routers should honor that when a connection is established. -

        +{%- endtrans %}

        -

        Message Size Limits

        -

        +

        {% trans %}Message Size Limits{% endtrans %}

        +

        {% trans -%} While the maximum message size is nominally 32KB, the practical limit differs. The protocol limits the number of fragments to 7 bits, or 128. The current implementation, however, limits each message to a maximum of 64 fragments, @@ -102,97 +126,115 @@ Due to overhead for bundled LeaseSets and session keys, the practical limit at the application level is about 6KB lower, or about 26KB. Further work is necessary to raise the UDP transport limit above 32KB. For connections using the larger MTU, larger messages are possible. -

        +{%- endtrans %}

        -

        Keys

        +

        {% trans %}Keys{% endtrans %}

        -

        All encryption used is AES256/CBC with 32 byte keys and 16 byte IVs. +

        {% trans -%} +All encryption used is AES256/CBC with 32 byte keys and 16 byte IVs. The MAC and session keys are negotiated as part of the DH exchange, used for the HMAC and encryption, respectively. Prior to the DH exchange, -the publicly knowable introKey is used for the MAC and encryption.

        +the publicly knowable introKey is used for the MAC and encryption. +{%- endtrans %}

        -

        When using the introKey, both the initial message and any subsequent +

        {% trans -%} +When using the introKey, both the initial message and any subsequent reply use the introKey of the responder (Bob) - the responder does not need to know the introKey of the requester (Alice). The DSA signing key used by Bob should already be known to Alice when she contacts him, though Alice's DSA key may not already be known by -Bob.

        +Bob. +{%- endtrans %}

        -

        Upon receiving a message, the receiver checks the "from" IP address and port +

        {% trans -%} +Upon receiving a message, the receiver checks the "from" IP address and port with all established sessions - if there are matches, that session's MAC keys are tested in the HMAC. If none of those verify or if there are no matching IP addresses, the receiver tries their introKey in the MAC. If that does not verify, the packet is dropped. If it does verify, it is interpreted according to the message type, though if the receiver is overloaded, -it may be dropped anyway.

        +it may be dropped anyway. +{%- endtrans %}

        -

        If Alice and Bob have an established session, but Alice loses the +

        {% trans -%} +If Alice and Bob have an established session, but Alice loses the keys for some reason and she wants to contact Bob, she may at any time simply establish a new session through the SessionRequest and related messages. If Bob has lost the key but Alice does not know that, she will first attempt to prod him to reply, by sending a DataMessage with the wantReply flag set, and if Bob continually fails to reply, she will assume the key is lost and reestablish a -new one.

        +new one. +{%- endtrans %}

        -

        For the DH key agreement, -RFC3526 2048bit -MODP group (#14) is used:

        +

        {% trans rfc3526='http://www.faqs.org/rfcs/rfc3526.html' -%} +For the DH key agreement, +RFC3526 2048bit +MODP group (#14) is used: +{%- endtrans %}

           p = 2^2048 - 2^1984 - 1 + 2^64 * { [2^1918 pi] + 124476 }
           g = 2
         
        -

        +

        {% trans cryptography=site_url('docs/how/cryptography') -%} These are the same p and g used for I2P's -ElGamal encryption. -

        +ElGamal encryption. +{%- endtrans %}

        -

        Replay prevention

        +

        {% trans %}Replay prevention{% endtrans %}

        -

        Replay prevention at the SSU layer occurs by rejecting packets +

        {% trans -%} +Replay prevention at the SSU layer occurs by rejecting packets with exceedingly old timestamps or those which reuse an IV. To detect duplicate IVs, a sequence of Bloom filters are employed to -"decay" periodically so that only recently added IVs are detected.

        +"decay" periodically so that only recently added IVs are detected. +{%- endtrans %}

        -

        The messageIds used in DataMessages are defined at layers above +

        {% trans -%} +The messageIds used in DataMessages are defined at layers above the SSU transport and are passed through transparently. These IDs are not in any particular order - in fact, they are likely to be entirely random. The SSU layer makes no attempt at messageId -replay prevention - higher layers should take that into account.

        +replay prevention - higher layers should take that into account. +{%- endtrans %}

        -

        Addressing

        +

        {% trans %}Addressing{% endtrans %}

        -

        To contact an SSU peer, one of two sets of information is necessary: -a direct address, for when the peer is publicly reachable, or an -indirect address, for using a third party to introduce the peer. -There is no restriction on the number of addresses a peer may have.

        +

        {% trans -%} +To contact an SSU peer, one of two sets of information is necessary: +a direct address, for when the peer is publicly reachable, or an +indirect address, for using a third party to introduce the peer. +There is no restriction on the number of addresses a peer may have. +{%- endtrans %}

             Direct: host, port, introKey, options
           Indirect: tag, relayhost, port, relayIntroKey, targetIntroKey, options
         
        -

        Each of the addresses may also expose a series of options - special +

        {% trans -%} +Each of the addresses may also expose a series of options - special capabilities of that particular peer. For a list of available -capabilities, see below.

        +capabilities, see below. +{%- endtrans %}

        -

        -The addresses, options, and capabilities are published in the network database. -

        +

        {% trans netdb=site_url('docs/how/network-database') -%} +The addresses, options, and capabilities are published in the network database. +{%- endtrans %}

        -

        Direct Session Establishment

        -

        +

        {% trans %}Direct Session Establishment{% endtrans %}

        +

        {% trans -%} Direct session establishment is used when no third party is required for NAT traversal. The message sequence is as follows: -

        +{%- endtrans %}

        -

        Connection establishment (direct)

        -

        +

        {% trans %}Connection establishment (direct){% endtrans %}

        +

        {% trans -%} Alice connects directly to Bob. -

        +{%- endtrans %}

                 Alice                         Bob
             SessionRequest --------------------->
        @@ -203,28 +245,35 @@ Alice connects directly to Bob.
             DatabaseStoreMessage --------------->
             Data <---------------------------> Data
         
        -

        + +

        {% trans i2npspec=site_url('docs/spec/i2np') -%} After the SessionConfirmed message is received, Bob sends a small -DeliveryStatus message +DeliveryStatus message as a confirmation. In this message, the 4-byte message ID is set to a random number, and the 8-byte "arrival time" is set to the current network-wide ID, which is 2 (i.e. 0x0000000000000002). -

        +{%- endtrans %}

        + +

        {% trans i2npspec=site_url('docs/spec/i2np'), +commonstructures=site_url('docs/spec/common-structures') -%} After the status message is sent, the peers exchange -DatabaseStore messages +DatabaseStore messages containing their -RouterInfos. -

        +RouterInfos. +{%- endtrans %}

        + +

        {% trans -%} It does not appear that the type of the status message or its contents matters. It was originally added becasue the DatabaseStore message was delayed several seconds; since the store is now sent immediately, perhaps the status message can be eliminated. -

        +{%- endtrans %}

        -

        Introduction

        +

        {% trans %}Introduction{% endtrans %}

        -

        Introduction keys are delivered through an external channel +

        {% trans -%} +Introduction keys are delivered through an external channel (the network database, where they are identical to the router Hash for now) and must be used when establishing a session key. For the indirect address, the peer must first contact the relayhost and ask them for @@ -234,9 +283,11 @@ peer telling them to contact the requesting peer, and also gives the requesting peer the IP and port on which the addressed peer is located. In addition, the peer establishing the connection must already know the public keys of the peer they are connecting to (but -not necessary to any intermediary relay peer).

        +not necessary to any intermediary relay peer). +{%- endtrans %}

        -

        Indirect session establishment by means of a third party introduction +

        {% trans -%} +Indirect session establishment by means of a third party introduction is necessary for efficient NAT traversal. Charlie, a router behind a NAT or firewall which does not allow unsolicited inbound UDP packets, first contacts a few peers, choosing some to serve as introducers. Each @@ -251,7 +302,8 @@ Alice back a RelayResponse packet containing Charlie's public IP and port number. When Charlie receives the RelayIntro packet, he sends off a small random packet to Alice's IP and port (poking a hole in his NAT/firewall), and when Alice receives Bob's RelayResponse packet, she begins a new -full direction session establishment with the specified IP and port.

        +full direction session establishment with the specified IP and port. +{%- endtrans %}

        -

        Connection establishment (indirect using an introducer)

        +

        {% trans %}Connection establishment (indirect using an introducer){% endtrans %}

        +

        {% trans -%} Alice first connects to introducer Bob, who relays the request to Charlie. +{%- endtrans %}

                 Alice                         Bob                  Charlie
        @@ -279,18 +333,20 @@ Alice first connects to introducer Bob, who relays the request to Charlie.
             Data <--------------------------------------------------> Data
         
        -

        +

        {% trans -%} After the hole punch, the session is established between Alice and Charlie as in a direct establishment. -

        +{%- endtrans %}

        -

        Peer testing

        +

        {% trans %}Peer testing{% endtrans %}

        -

        The automation of collaborative reachability testing for peers is +

        {% trans -%} +The automation of collaborative reachability testing for peers is enabled by a sequence of PeerTest messages. With its proper execution, a peer will be able to determine their own reachability and may update its behavior accordingly. The testing process is -quite simple:

        +quite simple: +{%- endtrans %}

                 Alice                  Bob                  Charlie
        @@ -303,147 +359,193 @@ quite simple:

        <------------------------------------------PeerTest
        -

        Each of the PeerTest messages carry a nonce identifying the +

        {% trans -%} +Each of the PeerTest messages carry a nonce identifying the test series itself, as initialized by Alice. If Alice doesn't get a particular message that she expects, she will retransmit accordingly, and based upon the data received or the messages missing, she will know her reachability. The various end states -that may be reached are as follows:

        +that may be reached are as follows: +{%- endtrans %}

          -
        • If she doesn't receive a response from Bob, she will retransmit +
        • {% trans -%} +If she doesn't receive a response from Bob, she will retransmit up to a certain number of times, but if no response ever arrives, she will know that her firewall or NAT is somehow misconfigured, rejecting all inbound UDP packets even in direct response to an outbound packet. Alternately, Bob may be down or unable to get -Charlie to reply.
        • +Charlie to reply. +{%- endtrans %} -
        • If Alice doesn't receive a PeerTest message with the +
        • {% trans -%} +If Alice doesn't receive a PeerTest message with the expected nonce from a third party (Charlie), she will retransmit her initial request to Bob up to a certain number of times, even if she has received Bob's reply already. If Charlie's first message still doesn't get through but Bob's does, she knows that she is behind a NAT or firewall that is rejecting unsolicited connection attempts and that port forwarding is not operating properly (the -IP and port that Bob offered up should be forwarded).
        • +IP and port that Bob offered up should be forwarded). +{%- endtrans %} -
        • If Alice receives Bob's PeerTest message and both of Charlie's +
        • {% trans -%} +If Alice receives Bob's PeerTest message and both of Charlie's PeerTest messages but the enclosed IP and port numbers in Bob's and Charlie's second messages don't match, she knows that she is behind a symmetric NAT, rewriting all of her outbound packets with different 'from' ports for each peer contacted. She will need to explicitly forward a port and always have that port exposed for -remote connectivity, ignoring further port discovery.
        • +remote connectivity, ignoring further port discovery. +{%- endtrans %} -
        • If Alice receives Charlie's first message but not his second, +
        • {% trans -%} +If Alice receives Charlie's first message but not his second, she will retransmit her PeerTest message to Charlie up to a certain number of times, but if no response is received she knows -that Charlie is either confused or no longer online.
        • +that Charlie is either confused or no longer online. +{%- endtrans %}
        -

        Alice should choose Bob arbitrarily from known peers who seem +

        {% trans -%} +Alice should choose Bob arbitrarily from known peers who seem to be capable of participating in peer tests. Bob in turn should choose Charlie arbitrarily from peers that he knows who seem to be capable of participating in peer tests and who are on a different IP from both Bob and Alice. If the first error condition occurs (Alice doesn't get PeerTest messages from Bob), Alice may decide -to designate a new peer as Bob and try again with a different nonce.

        +to designate a new peer as Bob and try again with a different nonce. +{%- endtrans %}

        -

        Alice's introduction key is included in all of the PeerTest +

        {% trans -%} +Alice's introduction key is included in all of the PeerTest messages so that she doesn't need to already have an established session with Bob and so that Charlie can contact her without knowing any additional information. Alice may go on to establish a session -with either Bob or Charlie, but it is not required.

        +with either Bob or Charlie, but it is not required. +{%- endtrans %}

        -

        Transmission window, ACKs and Retransmissions

        -

        +

        {% trans %}Transmission window, ACKs and Retransmissions{% endtrans %}

        +

        {% trans ssuspec=site_url('docs/spec/ssu') -%} The DATA message may contain ACKs of full messages and partial ACKs of individual fragments of a message. See the data message section of -the protocol specification page +the protocol specification page for details. -

        +{%- endtrans %}

        + +

        {% trans streaming=site_url('docs/api/streaming') -%} The details of windowing, ACK, and retransmission strategies are not specified here. See the Java code for the current implementation. During the establishment phase, and for peer testing, routers should implement exponential backoff for retransmission. For an established connection, routers should implement an adjustable transmission window, RTT estimate and timeout, similar to TCP -or streaming. +or streaming. See the code for initial, min and max parameters. -

        +{%- endtrans %}

        -

        Security

        -

        +

        {% trans %}Security{% endtrans %}

        +

        {% trans -%} UDP source addresses may, of course, be spoofed. Additionally, the IPs and ports contained inside specific SSU messages (RelayRequest, RelayResponse, RelayIntro, PeerTest) may not be legitimate. Also, certain actions and responses may need to be rate-limited. -

        +{%- endtrans %}

        + +

        {% trans -%} The details of validation are not specified here. Implementers should add defenses where appropriate. -

        +{%- endtrans %}

        -

        Peer capabilities

        +

        {% trans %}Peer capabilities{% endtrans %}

        B
        -
        If the peer address contains the 'B' capability, that means - they are willing and able to participate in peer tests as - a 'Bob' or 'Charlie'.
        +
        {% trans -%} +If the peer address contains the 'B' capability, that means +they are willing and able to participate in peer tests as +a 'Bob' or 'Charlie'. +{%- endtrans %}
        C
        -
        If the peer address contains the 'C' capability, that means - they are willing and able to serve as an introducer - serving - as a Bob for an otherwise unreachable Alice.
        +
        {% trans -%} +If the peer address contains the 'C' capability, that means +they are willing and able to serve as an introducer - serving +as a Bob for an otherwise unreachable Alice. +{%- endtrans %}
        -

        Future Work

        -
        • +

          {% trans %}Future Work{% endtrans %}

          +
            +
          • {% trans -%} Analysis of current SSU performance, including assessment of window size adjustment and other parameters, and adjustment of the protocol implementation to improve performance, is a topic for future work. -
          • +{%- endtrans %}
          • + +
          • {% trans -%} The current implementation repeatedly sends acknowledgments for the same packets, which unnecessarily increases overhead. -
          • +{%- endtrans %}
          • + +
          • {% trans -%} The default small MTU value of 620 should be analyzed and possibly increased. The current MTU adjustment strategy should be evaluated. Does a streaming lib 1730-byte packet fit in 3 small SSU packets? Probably not. -
          • +{%- endtrans %}
          • + +
          • {% trans -%} The protocol should be extended to exchange MTUs during the setup. -
          • +{%- endtrans %}
          • + +
          • {% trans -%} Rekeying is currently unimplemented and may never be. -
          • +{%- endtrans %}
          • + +
          • {% trans -%} The potential use of the 'challenge' fields in RelayIntro and RelayResponse, and use of the padding field in SessionRequest and SessionCreated, is undocumented. -
          • +{%- endtrans %}
          • + +
          • {% trans -%} Instead of a single fragment per packet, a more efficient strategy may be to bundle multiple message fragments into the same packet, so long as it doesn't exceed the MTU. -
          • +{%- endtrans %}
          • + +
          • {% trans -%} A set of fixed packet sizes may be appropriate to further hide the data fragmentation to external adversaries, but the tunnel, garlic, and end to end padding should be sufficient for most needs until then. -
          • -Why are introduction keys the same as the router hash, should it be changed, would there be any benefit? -
          • -Capacities appear to be unused. -
          • -Signed-on times in SessionCreated and SessionConfirmed appear to be unused or unverified. -
          +{%- endtrans %}
        • -

          Implementation Diagram

          +
        • {% trans -%} +Why are introduction keys the same as the router hash, should it be changed, would there be any benefit? +{%- endtrans %}
        • + +
        • {% trans -%} +Capacities appear to be unused. +{%- endtrans %}
        • + +
        • {% trans -%} +Signed-on times in SessionCreated and SessionConfirmed appear to be unused or unverified. +{%- endtrans %}
        • +
        + +

        {% trans %}Implementation Diagram{% endtrans %}

        +

        {% trans -%} This diagram should accurately reflect the current implementation, however there may be small differences. +{%- endtrans %}

        -

        Specification

        -Now on the SSU specification page. +

        {% trans %}Specification{% endtrans %}

        +{% trans %}Now on the SSU specification page{% endtrans %}. {% endblock %} From 9b9145e185e21b29287ad2c59fc53a299b09cfbb Mon Sep 17 00:00:00 2001 From: str4d Date: Tue, 5 Feb 2013 23:23:58 +0000 Subject: [PATCH 394/650] Started adding translation tags to docs/spec/* --- i2p2www/pages/site/docs/spec/blockfile.html | 117 +++-- .../site/docs/spec/common-structures.html | 494 ++++++++++-------- .../pages/site/docs/spec/configuration.html | 119 +++-- i2p2www/pages/site/docs/spec/datagrams.html | 133 +++-- i2p2www/pages/site/docs/spec/updates.html | 113 ++-- 5 files changed, 540 insertions(+), 436 deletions(-) diff --git a/i2p2www/pages/site/docs/spec/blockfile.html b/i2p2www/pages/site/docs/spec/blockfile.html index b3709af3..5077195a 100644 --- a/i2p2www/pages/site/docs/spec/blockfile.html +++ b/i2p2www/pages/site/docs/spec/blockfile.html @@ -1,17 +1,17 @@ {% extends "global/layout.html" %} -{% block title %}I2P Blockfile Specification{% endblock %} -{% block lastupdated %}January 2012{% endblock %} +{% block title %}{% trans %}I2P Blockfile Specification{% endtrans %}{% endblock %} +{% block lastupdated %}{% trans %}January 2012{% endtrans %}{% endblock %} {% block accuratefor %}0.8.12{% endblock %} {% block content %} -

        -Blockfile and Hosts Database Specification -

        -

        Overview

        -

        +

        {% trans %}Blockfile and Hosts Database Specification{% endtrans %}

        +

        {% trans %}Overview{% endtrans %}

        +

        {% trans naming=site_url('docs/naming') -%} This document specifies the I2P blockfile file format -and the tables in the hostsdb.blockfile used by the Blockfile Naming Service. -

        +and the tables in the hostsdb.blockfile used by the Blockfile Naming Service. +{%- endtrans %}

        + +

        {% trans -%} The blockfile provides fast Destination lookup in a compact format. While the blockfile page overhead is substantial, the destinations are stored in binary rather than in Base 64 as in the hosts.txt format. In addition, the blockfile provides the capability of arbitrary metadata storage @@ -19,30 +19,37 @@ In addition, the blockfile provides the capability of arbitrary metadata storage The metadata may be used in the future to provide advanced addressbook features. The blockfile storage requirement is a modest increase over the hosts.txt format, and the blockfile provides approximately 10x reduction in lookup times. -

        +{%- endtrans %}

        + +

        {% trans url='http://www.metanotion.net/software/sandbox/block.html' -%} A blockfile is simply on-disk storage of multiple sorted maps (key-value pairs), implemented as skiplists. The blockfile format is adopted from the -Metanotion Blockfile Database. +Metanotion Blockfile Database. First we will define the file format, then the use of that format by the BlockfileNamingService. +{%- endtrans %}

        -

        Blockfile Format

        -

        +

        {% trans %}Blockfile Format{% endtrans %}

        +

        {% trans -%} The original blockfile spec was modified to add magic numbers to each page. The file is structured in 1024-byte pages. Pages are numbered starting from 1. The "superblock" is always at page 1, i.e. starting at byte 0 in the file. The metaindex skiplist is always at page 2, i.e. starting at byte 1024 in the file. -

        +{%- endtrans %}

        + +

        {% trans -%} All 2-byte integer values are unsigned. All 4-byte integer values (page numbers) are signed and negative values are illegal. -

        +{%- endtrans %}

        + +

        {% trans -%} The database is designed to be opened and accessed by a single thread. The BlockfileNamingService provides synchronization. -

        +{%- endtrans %}

        -

        +

        {% trans -%} Superblock format: -

        +{%- endtrans %}

         Byte	Contents
         0-5	Magic number	0x3141de493250 ("1A" 0xde "I2P")
        @@ -55,9 +62,9 @@ Byte	Contents
         24-1023	unused
         
        -

        +

        {% trans -%} Skip list block page format: -

        +{%- endtrans %}

         Byte	Contents
         0-7	Magic number	0x536b69704c697374 "SkipList"
        @@ -70,10 +77,10 @@ Byte	Contents
         
        -

        +

        {% trans -%} Skip level block page format is as follows. All levels have a span. Not all spans have levels. -

        +{%- endtrans %}

         Byte	Contents
         0-7	Magic number	0x42534c6576656c73 "BSLevels"
        @@ -85,12 +92,12 @@ remaining bytes unused
         
        -

        +

        {% trans -%} Skip span block page format is as follows. Key/value structures are sorted by key within each span and across all spans. Key/value structures are sorted by key within each span. Spans other than the first span may not be empty. -

        +{%- endtrans %}

         Byte	Contents
         0-3	Magic number	0x5370616e "Span"
        @@ -102,9 +109,9 @@ Byte	Contents
         20-1023	key/value structures
         
        -

        +

        {% trans -%} Span Continuation block page format: -

        +{%- endtrans %}

         Byte	Contents
         0-3	Magic number	0x434f4e54 "CONT"
        @@ -113,14 +120,14 @@ Byte	Contents
         
        -

        +

        {% trans -%} Key/value structure format is as follows. Key and value lengths must not be split across pages, i.e. all 4 bytes must be on the same page. If there is not enough room the last 1-3 bytes of a page are unused and the lengths will be at offset 8 in the continuation page. Key and value data may be split across pages. Max key and value lengths are 65535 bytes. -

        +{%- endtrans %}

         Byte	Contents
         0-1	key length in bytes
        @@ -129,9 +136,9 @@ Byte	Contents
         	value data
         
        -

        +

        {% trans -%} Free list block page format: -

        +{%- endtrans %}

         Byte	Contents
         0-7	Magic number	0x2366724c69737423 "#frList#"
        @@ -141,32 +148,32 @@ Byte	Contents
         
        -

        +

        {% trans -%} Free page block format: -

        +{%- endtrans %}

         Byte	Contents
         0-7	Magic number	0x7e2146524545217e "~!FREE!~"
         8-1023	unused
         
        -

        +

        {% trans -%} The metaindex (located at page 2) is a mapping of US-ASCII strings to 4-byte integers. The key is the name of the skiplist and the value is the page index of the skiplist. -

        +{%- endtrans %}

        -

        Blockfile Naming Service Tables

        -

        +

        {% trans %}Blockfile Naming Service Tables{% endtrans %}

        +

        {% trans -%} The tables created and used by the BlockfileNamingService are as follows. The maximum number of entries per span is 16. -

        +{%- endtrans %}

        -

        Properties Skiplist

        -

        -"%%__INFO__%%" is the master database skiplist with String/Properties key/value entries containing only one entry: -

        +

        {% trans %}Properties Skiplist{% endtrans %}

        +

        {% trans -%} +"%%__INFO__%%" is the master database skiplist with String/Properties key/value entries containing only one entry: +{%- endtrans %}

        -    "info": a Properties (UTF-8 String/String Map), serialized as a Mapping:
        +    "info": a Properties (UTF-8 String/String Map), serialized as a Mapping:
                     "version":   "2"
                     "created":   Java long time (ms)
                     "upgraded":  Java long time (ms) (as of database version 2)
        @@ -174,14 +181,14 @@ The maximum number of entries per span is 16.
                                  searched in-order for lookups. Almost always "privatehosts.txt,userhosts.txt,hosts.txt".
         
        -

        Reverse Lookup Skiplist

        -

        +

        {% trans %}Reverse Lookup Skiplist{% endtrans %}

        +

        {% trans -%} "%%__REVERSE__%%" is the reverse lookup skiplist with Integer/Properties key/value entries (as of database version 2): -

        +{%- endtrans %}

             The skiplist keys are 4-byte Integers, the first 4 bytes of the hash of the Destination.
        -    The skiplist values are each a Properties (a UTF-8 String/String Map) serialized as a Mapping
        +    The skiplist values are each a Properties (a UTF-8 String/String Map) serialized as a Mapping
                 There may be multiple entries in the properties, each one is a reverse mapping,
                    as there may be more than one hostname for a given destination,
                    or there could be collisions with the same first 4 bytes of the hash.
        @@ -189,28 +196,30 @@ The maximum number of entries per span is 16.
                 Each property value is the empty string.
         
        -

        hosts.txt, userhosts.txt, and privatehosts.txt Skiplists

        -

        +

        {% trans %}hosts.txt, userhosts.txt, and privatehosts.txt Skiplists{% endtrans %}

        +

        {% trans -%} For each host database, there is a skiplist containing the hosts for that database. The keys/values in these skiplists are as follows: -

        +{%- endtrans %}

              key:    a UTF-8 String (the hostname)
        -     value:  a DestEntry, which is a Properties (a UTF-8 String/String Map) serialized as a Mapping
        -             followed by a binary Destination (serialized as usual).
        +     value:  a DestEntry, which is a Properties (a UTF-8 String/String Map) serialized as a Mapping
        +             followed by a binary Destination (serialized as usual).
         
        -

        +

        {% trans -%} The DestEntry Properties typically contains: -

        +{%- endtrans %}

                     "a":     The time added (Java long time in ms)
                     "s":     The original source of the entry (typically a file name or subscription URL)
                     others:  TBD
         
        -

        + +

        {% trans -%} Hostname keys are stored in lower-case and always end in ".i2p". +{%- endtrans %}

        {% endblock %} diff --git a/i2p2www/pages/site/docs/spec/common-structures.html b/i2p2www/pages/site/docs/spec/common-structures.html index ed8c102e..7dacf0e6 100644 --- a/i2p2www/pages/site/docs/spec/common-structures.html +++ b/i2p2www/pages/site/docs/spec/common-structures.html @@ -1,182 +1,184 @@ {% extends "global/layout.html" %} -{% block title %}Common structure Specification{% endblock %} -{% block lastupdated %}March 2012{% endblock %} +{% block title %}{% trans %}Common structure Specification{% endtrans %}{% endblock %} +{% block lastupdated %}{% trans %}March 2012{% endtrans %}{% endblock %} {% block accuratefor %}0.8.13{% endblock %} {% block content %} -

        Data types Specification

        -

        - This document describes some data types common to all I2P protocols, like - I2NP, - I2CP, - SSU, - etc. -

        +

        {% trans %}Data types Specification{% endtrans %}

        +

        {% trans i2np=site_url('docs/protocol/i2np'), +i2cp=site_url('docs/protocol/i2cp'), +ssu=site_url('docs/transport/ssu') -%} +This document describes some data types common to all I2P protocols, like +I2NP, I2CP, +SSU, etc. +{%- endtrans %}

        Integer

        -

        Description

        -

        - Represents a non-negative integer. -

        -

        Contents

        -

        - 1 to 8 bytes in network byte order representing an unsigned integer -

        +

        {% trans %}Description{% endtrans %}

        +

        {% trans -%} +Represents a non-negative integer. +{% endtrans %}

        +

        {% trans %}Contents{% endtrans %}

        +

        {% trans -%} +1 to 8 bytes in network byte order representing an unsigned integer +{% endtrans %}

        Date

        -

        Description

        -

        - The number of milliseconds since midnight on January 1, 1970 in the GMT timezone. - If the number is 0, the date is undefined or null. -

        -

        Contents

        -

        - 8 byte Integer -

        +

        {% trans %}Description{% endtrans %}

        +

        {% trans -%} +The number of milliseconds since midnight on January 1, 1970 in the GMT timezone. +If the number is 0, the date is undefined or null. +{% endtrans %}

        +

        {% trans %}Contents{% endtrans %}

        +

        {% trans -%} +8 byte Integer +{% endtrans %}

        String

        -

        Description

        -

        - Represents a UTF-8 encoded string. -

        -

        Contents

        -

        - 1 or more bytes where the first byte is the number of bytes (not characters!) - in the string and the remaining 0-255 bytes are the non-null terminated UTF-8 encoded character array. - Length limit is 255 bytes (not characters). Length may be 0. -

        +

        {% trans %}Description{% endtrans %}

        +

        {% trans -%} +Represents a UTF-8 encoded string. +{% endtrans %}

        +

        {% trans %}Contents{% endtrans %}

        +

        {% trans -%} +1 or more bytes where the first byte is the number of bytes (not characters!) +in the string and the remaining 0-255 bytes are the non-null terminated UTF-8 encoded character array. +Length limit is 255 bytes (not characters). Length may be 0. +{% endtrans %}

        Boolean

        -

        Description

        -

        - A boolean value, supporting null/unknown representation - 0=false, 1=true, 2=unknown/null -

        -

        Contents

        -

        - 1 byte Integer -

        -

        Notes

        +

        {% trans %}Description{% endtrans %}

        +

        {% trans -%} +A boolean value, supporting null/unknown representation +0=false, 1=true, 2=unknown/null +{% endtrans %}

        +

        {% trans %}Contents{% endtrans %}

        +

        {% trans -%} +1 byte Integer +{% endtrans %}

        +

        {% trans %}Notes{% endtrans %}

        +

        {% trans -%} Deprecated - unused +{% endtrans %}

        PublicKey

        -

        Description

        -

        - This structure is used in ElGamal encryption, representing only the exponent, not the primes, which are constant and defined in - the cryptography specification. -

        -

        Contents

        -

        - 256 bytes -

        +

        {% trans %}Description{% endtrans %}

        +

        {% trans cryptography=site_url('docs/how/cryptography') -%} +This structure is used in ElGamal encryption, representing only the exponent, not the primes, which are constant and defined in +the cryptography specification. +{% endtrans %}

        +

        {% trans %}Contents{% endtrans %}

        +

        {% trans -%} +256 bytes +{% endtrans %}

        Javadoc

        PrivateKey

        -

        Description

        -

        - This structure is used in ElGamal decryption, representing only the exponent, not the primes which are constant and defined in - the cryptography specification. -

        -

        Contents

        -

        - 256 bytes -

        +

        {% trans %}Description{% endtrans %}

        +

        {% trans cryptography=site_url('docs/how/cryptography') -%} +This structure is used in ElGamal decryption, representing only the exponent, not the primes which are constant and defined in +the cryptography specification. +{% endtrans %}

        +

        {% trans %}Contents{% endtrans %}

        +

        {% trans -%} +256 bytes +{% endtrans %}

        Javadoc

        SessionKey

        -

        Description

        -

        - This structure is used for AES256 encryption and decryption. -

        -

        Contents

        -

        - 32 bytes -

        +

        {% trans %}Description{% endtrans %}

        +

        {% trans -%} +This structure is used for AES256 encryption and decryption. +{% endtrans %}

        +

        {% trans %}Contents{% endtrans %}

        +

        {% trans -%} +32 bytes +{% endtrans %}

        Javadoc

        SigningPublicKey

        -

        Description

        -

        - This structure is used for verifying DSA signatures. -

        -

        Contents

        -

        - 128 bytes -

        +

        {% trans %}Description{% endtrans %}

        +

        {% trans cryptography=site_url('docs/how/cryptography') -%} +This structure is used for verifying DSA signatures. +{% endtrans %}

        +

        {% trans %}Contents{% endtrans %}

        +

        {% trans -%} +128 bytes +{% endtrans %}

        Javadoc

        SigningPrivateKey

        -

        Description

        -

        - This structure is used for creating DSA signatures. -

        -

        Contents

        -

        - 20 bytes -

        +

        {% trans %}Description{% endtrans %}

        +

        {% trans cryptography=site_url('docs/how/cryptography') -%} +This structure is used for creating DSA signatures. +{% endtrans %}

        +

        {% trans %}Contents{% endtrans %}

        +

        {% trans -%} +20 bytes +{% endtrans %}

        Javadoc

        Signature

        -

        Description

        -

        - This structure represents the DSA signature of some data. -

        -

        Contents

        -

        - 40 bytes -

        +

        {% trans %}Description{% endtrans %}

        +

        {% trans cryptography=site_url('docs/how/cryptography') -%} +This structure represents the DSA signature of some data. +{% endtrans %}

        +

        {% trans %}Contents{% endtrans %}

        +

        {% trans -%} +40 bytes +{% endtrans %}

        Javadoc

        Hash

        -

        Description

        -

        - Represents the SHA256 of some data. -

        -

        Contents

        -

        - 32 bytes -

        +

        {% trans %}Description{% endtrans %}

        +

        {% trans -%} +Represents the SHA256 of some data. +{% endtrans %}

        +

        {% trans %}Contents{% endtrans %}

        +

        {% trans -%} +32 bytes +{% endtrans %}

        Javadoc

        Session Tag

        -

        Description

        -

        - A random number -

        -

        Contents

        -

        - 32 bytes -

        +

        {% trans %}Description{% endtrans %}

        +

        {% trans -%} +A random number +{% endtrans %}

        +

        {% trans %}Contents{% endtrans %}

        +

        {% trans -%} +32 bytes +{% endtrans %}

        Javadoc

        TunnelId

        -

        Description

        -

        - Defines an identifier that is unique to each router in a tunnel. -

        -

        Contents

        -

        - 4 byte Integer -

        +

        {% trans %}Description{% endtrans %}

        +

        {% trans -%} +Defines an identifier that is unique to each router in a tunnel. +{% endtrans %}

        +

        {% trans %}Contents{% endtrans %}

        +

        {% trans -%} +4 byte Integer +{% endtrans %}

        Javadoc

        Certificate

        -

        Description

        -

        - A certificate is a container for various receipts or proof of works used throughout the I2P network. -

        -

        Contents

        -

        - 1 byte Integer specifying certificate type, followed by a 2 Integer specifying the size of the certificate payload, then that many bytes. -

        +

        {% trans %}Description{% endtrans %}

        +

        {% trans -%} +A certificate is a container for various receipts or proof of works used throughout the I2P network. +{% endtrans %}

        +

        {% trans %}Contents{% endtrans %}

        +

        {% trans -%} +1 byte Integer specifying certificate type, followed by a 2 Integer specifying the size of the certificate payload, then that many bytes. +{% endtrans %}

         {% filter escape %}
         +----+----+----+----+----+--//
        @@ -200,31 +202,38 @@ payload :: data
         {% endfilter %}
         
        -

        Notes

        +

        {% trans %}Notes{% endtrans %}

          -
        • +
        • {% trans -%} For Router Identities, the Certificate is always NULL, no others are currently implemented. -
        • -For Garlic Cloves, the Certificate is always NULL, no others are currently implemented. -
        • -For Garlic Messages, the Certificate is always NULL, no others are currently implemented. -
        • +{%- endtrans %}
        • + +
        • {% trans i2np=site_url('docs/spec/i2np') -%} +For Garlic Cloves, the Certificate is always NULL, no others are currently implemented. +{%- endtrans %}
        • + +
        • {% trans i2np=site_url('docs/spec/i2np') -%} +For Garlic Messages, the Certificate is always NULL, no others are currently implemented. +{%- endtrans %}
        • + +
        • {% trans -%} For Destinations, the Certificate may be non-NULL, however non-NULL certs are not widely used, and any checking is left to the application-level. -
        +{%- endtrans %} +

      Javadoc

      Mapping

      -

      Description

      -

      - A set of key/value mappings or properties -

      -

      Contents

      -

      - A 2-byte size Integer followed by a series of String=String; pairs -

      +

      {% trans %}Description{% endtrans %}

      +

      {% trans -%} +A set of key/value mappings or properties +{% endtrans %}

      +

      {% trans %}Contents{% endtrans %}

      +

      {% trans -%} +A 2-byte size Integer followed by a series of String=String; pairs +{% endtrans %}

       {% filter escape %}
       +----+----+----+----+----+----+----+----+
      @@ -249,40 +258,51 @@ val string :: String
       {% endfilter %}
       
      -

      Notes

      +

      {% trans %}Notes{% endtrans %}

        -
      • +
      • {% trans -%} The encoding isn't optimal - we either need the '=' and ';' characters, or the string lengths, but not both -
      • +{%- endtrans %}
      • + +
      • {% trans -%} Some documentation says that the strings may not include '=' or ';' but this encoding supports them -
      • +{%- endtrans %}
      • + +
      • {% trans -%} Strings are defined to be UTF-8 but in the current implementation, I2CP uses UTF-8 but I2NP does not. For example, UTF-8 strings in a RouterInfo options mapping in a I2NP Database Store Message will be corrupted. -
      • +{%- endtrans %}
      • + +
      • {% trans -%} Mappings contained in I2NP messages (i.e. in a RouterAddress or RouterInfo) must be sorted by key so that the signature will be invariant. -
      • +{%- endtrans %}
      • + +
      • {% trans -%} Key and value string length limits are 255 bytes (not characters) each, plus the length byte. Length byte may be 0. -
      • +{%- endtrans %}
      • + +
      • {% trans -%} Total length limit is 65535 bytes, plus the 2 byte size field, or 65537 total. +{%- endtrans %}

      Javadoc

      -

      Common structure specification

      +

      {% trans %}Common structure specification{% endtrans %}

      RouterIdentity

      -

      Description

      -

      - Defines the way to uniquely identify a particular router -

      -

      Contents

      -

      - PublicKey followed by SigningPublicKey and then a Certificate -

      +

      {% trans %}Description{% endtrans %}

      +

      {% trans -%} +Defines the way to uniquely identify a particular router +{% endtrans %}

      +

      {% trans %}Contents{% endtrans %}

      +

      {% trans -%} +PublicKey followed by SigningPublicKey and then a Certificate +{% endtrans %}

       {% filter escape %}
       +----+----+----+----+----+----+----+----+
      @@ -318,20 +338,22 @@ Total length: 387+ bytes
       {% endfilter %}
       
      -

      Notes

      +

      {% trans %}Notes{% endtrans %}

      +

      {% trans -%} The certificate for a RouterIdentity is currently unused and is always NULL. +{%- endtrans %}

      Javadoc

      Destination

      -

      Description

      -

      - A Destination defines a particular endpoint to which messages can be directed for secure delivery. -

      -

      Contents

      -

      - PublicKey followed by a SigningPublicKey and then a Certificate -

      +

      {% trans %}Description{% endtrans %}

      +

      {% trans -%} +A Destination defines a particular endpoint to which messages can be directed for secure delivery. +{% endtrans %}

      +

      {% trans %}Contents{% endtrans %}

      +

      {% trans -%} +PublicKey followed by a SigningPublicKey and then a Certificate +{% endtrans %}

       {% filter escape %}
       +----+----+----+----+----+----+----+----+
      @@ -370,15 +392,15 @@ Total length: 387+ bytes
       

      Javadoc

      Lease

      -

      Description

      -

      - Defines the authorization for a particular tunnel to receive messages targeting a Destination. -

      -

      Contents

      -

      - SHA256 Hash of the - RouterIdentity of the gateway router, then the TunnelId, and finally an end Date -

      +

      {% trans %}Description{% endtrans %}

      +

      {% trans -%} +Defines the authorization for a particular tunnel to receive messages targeting a Destination. +{% endtrans %}

      +

      {% trans %}Contents{% endtrans %}

      +

      {% trans -%} +SHA256 Hash of the +RouterIdentity of the gateway router, then the TunnelId, and finally an end Date +{% endtrans %}

       {% filter escape %}
       +----+----+----+----+----+----+----+----+
      @@ -406,27 +428,29 @@ end_date :: Date
       {% endfilter %}
       
      -

      Notes

      +

      {% trans %}Notes{% endtrans %}

        -
      • +
      • {% trans -%} Total size: 44 bytes -
      +{%- endtrans %} +

    Javadoc

    LeaseSet

    -

    Description

    -

    - Contains all of the currently authorized Leases for a particular Destination, the PublicKey to which garlic messages can be encrypted, - and then the public key that can be used to revoke this particular version of the structure. The LeaseSet is one of the two structures stored in the network database( - the other being RouterInfo), and is keyed under the SHA256 of the contained Destination. -

    -

    Contents

    -

    - Destination, followed by a PublicKey for encryption, then a SigningPublicKey which can be used to revoke this version of the LeaseSet, - then a 1 byte Integer specifying how many Lease structures are in the set, followed by the actual Lease structures and finally a Signature of the previous - bytes signed by the Destination's SigningPrivateKey +

    {% trans %}Description{% endtrans %}

    +

    {% trans -%} +Contains all of the currently authorized Leases for a particular Destination, the PublicKey to which garlic messages can be encrypted, +and then the public key that can be used to revoke this particular version of the structure. The LeaseSet is one of the two structures stored in the network database( +the other being RouterInfo), and is keyed under the SHA256 of the contained Destination. +{% endtrans %}

    +

    {% trans %}Contents{% endtrans %}

    +

    {% trans -%} +Destination, followed by a PublicKey for encryption, then a SigningPublicKey which can be used to revoke this version of the LeaseSet, +then a 1 byte Integer specifying how many Lease structures are in the set, followed by the actual Lease structures and finally a Signature of the previous +bytes signed by the Destination's SigningPrivateKey +{%- endtrans %}

     {% filter escape %}
     +----+----+----+----+----+----+----+----+
    @@ -514,35 +538,43 @@ signature :: Signature
     {% endfilter %}
     
    -

    Notes

    -
    • +

      {% trans %}Notes{% endtrans %}

      +
        +
      • {% trans -%} The public key of the destination was used for the old i2cp-to-i2cp encryption which was disabled in version 0.6, it is currently unused? -
      • -The encryption key is used for end-to-end ElGamal/AES+SessionTag encryption. +{%- endtrans %}
      • + +
      • {% trans elgamalaes=site_url('docs/how/elgamal-aes') -%} +The encryption key is used for end-to-end ElGamal/AES+SessionTag encryption. It is currently generated anew at every router startup, it is not persistent. -
      • +{%- endtrans %}
      • + +
      • {% trans -%} The signature may be verified using the signing public key of the destination. -
      • +{%- endtrans %}
      • + +
      • {% trans -%} The signing_key is currently unused. It was intended for LeaseSet revocation, which is unimplemented. It is currently generated anew at every router startup, it is not persistent. -
      +{%- endtrans %}
    • +

    Javadoc

    RouterAddress

    -

    Description

    -

    - This structure defines the means to contact a router through a transport protocol. -

    -

    Contents

    -

    - 1 byte Integer defining the relative cost of using the address, where 0 is free and 255 is expensive, followed by the expiration Date after which the address should not be used, or if null, the address never expires. - After that comes a String defining the transport protocol this router address uses. Finally there is a Mapping containing all of the transport specific options necessary to establish the connection, such as - IP address, port number, email address, URL, etc. -

    +

    {% trans %}Description{% endtrans %}

    +

    {% trans -%} +This structure defines the means to contact a router through a transport protocol. +{% endtrans %}

    +

    {% trans %}Contents{% endtrans %}

    +

    {% trans -%} +1 byte Integer defining the relative cost of using the address, where 0 is free and 255 is expensive, followed by the expiration Date after which the address should not be used, or if null, the address never expires. +After that comes a String defining the transport protocol this router address uses. Finally there is a Mapping containing all of the transport specific options necessary to establish the connection, such as +IP address, port number, email address, URL, etc. +{% endtrans %}

     {% filter escape %}
     +----+
    @@ -573,27 +605,30 @@ options :: Mapping
     {% endfilter %}
     
    -

    Notes

    +

    {% trans %}Notes{% endtrans %}

      -
    • +
    • {% trans -%} Cost is typically 5 or 6 for SSU, and 10 or 11 for NTCP. -
    • +{%- endtrans %}
    • + +
    • {% trans -%} Expiration is currently unused, always null (all zeroes)) -
    +{%- endtrans %} +

    Javadoc

    RouterInfo

    -

    Description

    -

    - Defines all of the data that a router wants to publish for the network to see. The RouterInfo is one of two structures stored in the network database(the other being LeaseSet, and is keyed under the SHA256 of - the contained RouterIdentity. -

    -

    Contents

    -

    - RouterIdentity followed by the Date, when the entry was published -

    +

    {% trans %}Description{% endtrans %}

    +

    {% trans -%} +Defines all of the data that a router wants to publish for the network to see. The RouterInfo is one of two structures stored in the network database(the other being LeaseSet, and is keyed under the SHA256 of +the contained RouterIdentity. +{% endtrans %}

    +

    {% trans %}Contents{% endtrans %}

    +

    {% trans -%} +RouterIdentity followed by the Date, when the entry was published +{% endtrans %}

     {% filter escape %}
     +----+----+----+----+----+----+----+----+
    @@ -671,16 +706,21 @@ signature :: Signature
     {% endfilter %}
     
    -

    Notes

    +

    {% trans %}Notes{% endtrans %}

    +

    {% trans -%} The peer_size Integer may be followed by a list of that many router hashes. This is currently unused. It was intended for a form of restricted routes, which is unimplemented. -

    +{% endtrans %}

    + +

    {% trans -%} The signature may be verified using the signing public key of the router_ident. +{% endtrans %}

    Javadoc

    Delivery Instructions

    -Defined in the Tunnel Message Specification. - +

    {% trans tunnelmessage=site_url('docs/spec/tunnel-message') -%} +Defined in the Tunnel Message Specification. +{% endtrans %}

    {% endblock %} diff --git a/i2p2www/pages/site/docs/spec/configuration.html b/i2p2www/pages/site/docs/spec/configuration.html index 4cd384ae..1080f830 100644 --- a/i2p2www/pages/site/docs/spec/configuration.html +++ b/i2p2www/pages/site/docs/spec/configuration.html @@ -1,104 +1,107 @@ {% extends "global/layout.html" %} -{% block title %}Configuration File Specification{% endblock %} -{% block lastupdated %}September 2012{% endblock %} +{% block title %}{% trans %}Configuration File Specification{% endtrans %}{% endblock %} +{% block lastupdated %}{% trans %}September 2012{% endtrans %}{% endblock %} {% block accuratefor %}0.9.2{% endblock %} {% block content %} -

    Overview

    -

    +

    {% trans %}Overview{% endtrans %}

    +

    {% trans -%} This page provides a general specification of I2P configuration files, used by the router and various applications. It also gives an overview of the information contained in the various files, and links to detailed documentation where available. -

    +{%- endtrans %}

    -

    General Format

    -

    +

    {% trans %}General Format{% endtrans %}

    +

    {% trans url='http://docs.oracle.com/javase/1.5.0/docs/api/java/util/Properties.html#load%28java.io.InputStream%29' -%} An I2P configuration file is formatted as specified in -Java Properties +Java Properties with the following exceptions: +{%- endtrans %}

      -
    • Encoding must be UTF-8 -
    • Does not use or recognize any escapes, including '\', so lines may not be continued -
    • '#' or ';' starts a comment, but '!' does not -
    • '#' starts a comment in any position but ';' must be in column 1 to start a comment -
    • Leading and trailing whitespace is not trimmed on keys -
    • Leading and trailing whitespace is trimmed on values -
    • '=' is the only key-termination character (not ':' or whitespace) -
    • Lines without '=' are ignored. It does not store the key with a value of "" -
    • As there are no escapes, - keys may not contain '#', '=', or '\n', or start with ';' -
    • As there are no escapes, - values may not contain '#' or '\n', or start or end with '\r' or whitespace +
    • {% trans %}Encoding must be UTF-8{% endtrans %}
    • +
    • {% trans %}Does not use or recognize any escapes, including '\', so lines may not be continued{% endtrans %}
    • +
    • {% trans %}'#' or ';' starts a comment, but '!' does not{% endtrans %}
    • +
    • {% trans %}'#' starts a comment in any position but ';' must be in column 1 to start a comment{% endtrans %}
    • +
    • {% trans %}Leading and trailing whitespace is not trimmed on keys{% endtrans %}
    • +
    • {% trans %}Leading and trailing whitespace is trimmed on values{% endtrans %}
    • +
    • {% trans %}'=' is the only key-termination character (not ':' or whitespace){% endtrans %}
    • +
    • {% trans %}Lines without '=' are ignored. It does not store the key with a value of ""{% endtrans %}
    • +
    • {% trans %}As there are no escapes, keys may not contain '#', '=', or '\n', or start with ';'{% endtrans %}
    • +
    • {% trans %}As there are no escapes, values may not contain '#' or '\n', or start or end with '\r' or whitespace{% endtrans %}
    -

    + +

    {% trans -%} The file need not be sorted, but most applications do sort by key when writing to the file, for ease of reading and manual editing. -

    +{%- endtrans %}

    + +

    {% trans url='http://docs.i2p-projekt.de/javadoc/net/i2p/data/DataHelper.html', +commonstructures=site_url('docs/spec/common-structures') -%} Reads and writes are implemented in -DataHelper loadProps() and storeProps(). +DataHelper loadProps() and storeProps(). Note that the file format is significantly different than the serialized format for I2P protocols specified in -Mapping. -

    +Mapping. +{%- endtrans %}

    -

    Core library and router

    +

    {% trans %}Core library and router{% endtrans %}

    -

    Clients (clients.config)

    -

    +

    {% trans %}Clients{% endtrans %} (clients.config)

    +

    {% trans -%} Configured via /configclients in the router console. -

    +{%- endtrans %}

    -

    Logger (logger.config)

    -

    +

    {% trans %}Logger{% endtrans %} (logger.config)

    +

    {% trans -%} Configured via /configlogging in the router console. -

    +{%- endtrans %}

    -

    Individual Plugin (xxx/plugin.config)

    -

    -See the plugin specification. -

    +

    {% trans %}Individual Plugin{% endtrans %} (xxx/plugin.config)

    +

    {% trans pluginspec=site_url('docs/spec/plugin') -%} +See the plugin specification. +{%- endtrans %}

    -

    Plugins (plugins.config)

    -

    -Enable/disable for each installed plugin.. -

    +

    {% trans %}Plugins{% endtrans %} (plugins.config)

    +

    {% trans -%} +Enable/disable for each installed plugin. +{%- endtrans %}

    -

    Router (router.config)

    -

    +

    {% trans %}Router{% endtrans %} (router.config)

    +

    {% trans -%} Configured via /configadvanced in the router console. -

    +{%- endtrans %}

    -

    Applications

    +

    {% trans %}Applications{% endtrans %}

    -

    Addressbook (addressbook/config.txt)

    -

    +

    {% trans %}Addressbook{% endtrans %} (addressbook/config.txt)

    +

    {% trans -%} See documentation in SusiDNS. -

    +{%- endtrans %}

    I2PSnark (i2psnark.config)

    -

    +

    {% trans -%} Configured via the application gui. -

    +{%- endtrans %}

    I2PTunnel (i2ptunnel.config)

    -

    +

    {% trans -%} Configured via the /i2ptunnel application in the router console. -

    +{%- endtrans %}

    -

    Router Console

    -

    +

    {% trans %}Router Console{% endtrans %}

    +

    {% trans -%} The router console uses the router.config file. -

    +{%- endtrans %}

    SusiMail (susimail.config)

    -

    +

    {% trans -%} See post on zzz.i2p. -

    - +{%- endtrans %}

    + {% endblock %} diff --git a/i2p2www/pages/site/docs/spec/datagrams.html b/i2p2www/pages/site/docs/spec/datagrams.html index 0ea4ce19..cc55da37 100644 --- a/i2p2www/pages/site/docs/spec/datagrams.html +++ b/i2p2www/pages/site/docs/spec/datagrams.html @@ -1,100 +1,120 @@ {% extends "global/layout.html" %} -{% block title %}Datagram Specification{% endblock %} -{% block lastupdated %}August 2010{% endblock %} +{% block title %}{% trans %}Datagram Specification{% endtrans %}{% endblock %} +{% block lastupdated %}{% trans %}August 2010{% endtrans %}{% endblock %} {% block accuratefor %}0.8{% endblock %} {% block content %} -

    Datagram Overview

    -

    Datagrams build upon the base I2CP to provide authenticated +

    {% trans %}Datagram Overview{% endtrans %}

    +

    {% trans i2cp=site_url('docs/protocol/i2cp') -%} +Datagrams build upon the base I2CP to provide authenticated and repliable messages in a standard format. This lets applications reliably read the "from" address out of a datagram and know that the address really sent the message. This is necessary for some applications since the base I2P message is completely raw - it has no "from" address (unlike IP packets). In addition, the -message and sender are authenticated by signing the payload.

    -

    -Datagrams, like streaming library packets, +message and sender are authenticated by signing the payload. +{%- endtrans %}

    + +

    {% trans streaming=site_url('docs/api/streaming'), +transports=site_url('docs/transport') -%} +Datagrams, like streaming library packets, are an application-level construct. -These protocols are independent of the low-level transports; +These protocols are independent of the low-level transports; the protocols are converted to I2NP messages by the router, and either protocol may be carried by either transport. -

    +{%- endtrans %}

    -

    Application Guide

    -

    Applications written in Java may use the -datagram API, +

    {% trans %}Application Guide{% endtrans %}

    +

    {% trans url='http://docs.i2p-projekt.de/javadoc/net/i2p/client/datagram/package-summary.html', +sam= site_url('docs/api/sam'), +socks=site_url('docs/api/socks') -%} +Applications written in Java may use the +datagram API, while applications in other languages -can use SAM's datagram support. -There is also limited support in i2ptunnel in the SOCKS proxy, +can use SAM's datagram support. +There is also limited support in i2ptunnel in the SOCKS proxy, the 'streamr' tunnel types, and udpTunnel classes. -

    +{%- endtrans %}

    -

    Datagram Length

    -

    +

    {% trans %}Datagram Length{% endtrans %}

    +

    {% trans -%} The application designer should carefully consider the tradeoff of repliable vs. non-repliable datagrams. Also, the datagram size will affect reliability, due to tunnel fragmentation into 1KB tunnel messages. The more message fragments, the more likely that one of them will be dropped by an intermediate hop. Messages larger than a few KB are not recommended. -

    -

    +{%- endtrans %}

    + +

    {% trans elgamalaes=site_url('docs/how/elgamal-aes') -%} Also note that the various overheads added by lower layers, in particular asymmetric -ElGamal/AES, place a large burden on intermittent messages +ElGamal/AES, place a large burden on intermittent messages such as used by a Kademlia-over-UDP application. The implementations are currently tuned for frequent traffic using the streaming library. There are a high number of session tags delivered, and a short session tag lifetime, for example. There are currently no configuration parameters available within I2CP to tune the ElGamal Session Tag parameters. -

    +{%- endtrans %}

    -

    I2CP Protocol Number and Ports

    -

    +

    {% trans %}I2CP Protocol Number and Ports{% endtrans %}

    +

    {% trans -%} The standard I2CP protocol number for datagrams is 17. Applications may or may not choose to set the protocol in the I2CP header. It is not set by default. It must be set to demultiplex datagram and streaming traffic received on the same Destination. -

    -

    +{%- endtrans %}

    + +

    {% trans i2cp=site_url('docs/protocol/i2cp') -%} As datagrams are not connection-oriented, the application may require port numbers to correlate datagrams with particular peers or communications sessions, as is traditional with UDP over IP. Applications may add 'from' and 'to' ports to the I2CP (gzip) header as described in -the I2CP page. -

    -

    +the I2CP page. +{%- endtrans %}

    + +

    {% trans -%} There is no method within the datagram API to specify whether it is non-repliable (raw) or repliable. The application should be designed to expect the appropriate type. The I2CP protocol number or port could also be used by the application to indicate datagram type. -

    -

    +{%- endtrans %}

    + +

    {% trans i2psession='http://docs.i2p-projekt.de/javadoc/net/i2p/client/I2PSession.html', +i2psessionmuxed='http://docs.i2p-projekt.de/javadoc/net/i2p/client/I2PSessionMuxedImpl.html' -%} The protocols and ports may be set in I2CP's -I2PSession API, +I2PSession API, as implemented in -I2PSessionMuxedImpl. -

    +I2PSessionMuxedImpl. +{%- endtrans %}

    -

    Data Integrity

    +

    {% trans %}Data Integrity{% endtrans %}

    +

    {% trans i2cp=site_url('docs/protocol/i2cp') -%} Data integrity is assured by the gzip CRC-32 checksum implemented in -the I2CP layer. +the I2CP layer. There is no checksum field in the datagram protocol. +{%- endtrans %}

    -

    Packet Encapsulation

    +

    {% trans %}Packet Encapsulation{% endtrans %}

    +

    {% trans garlicrouting=site_url('docs/how/garlic-routing'), +i2cp=site_url('docs/protocol/i2cp'), +i2np=site_url('docs/protocol/i2np'), +tunnelmessage=site_url('docs/spec/tunnel-message') -%} Each datagram is sent through I2P as a single message (or as an individual clove in a -Garlic Message). +Garlic Message). Message encapsulation is implemented in the underlying -I2CP, -I2NP, and -tunnel message layers. +I2CP, +I2NP, and +tunnel message layers. There is no packet delimiter mechanism or length field in the datagram protocol. +{%- endtrans %}

    +

    {% trans %}Specification{% endtrans %}

    -

    Specification

    - -

    Non-Repliable Datagrams

    +

    {% trans %}Non-Repliable Datagrams{% endtrans %}

    +

    {% trans -%} Non-repliable datagrams have no 'from' address and are not authenticated. They are also called "raw" datagrams. Strictly speaking, they are not "datagrams" at all, they are just raw data. They are not handled by the datagram API. However, SAM and the I2PTunnel classes support "raw datagrams". +{%- endtrans %}

    -

    Format

    +

    {% trans %}Format{% endtrans %}

     +----+----+----+----+----//
     | payload...
    @@ -104,16 +124,20 @@ However, SAM and the I2PTunnel classes support "raw datagrams".
     Length: 0 - unlimited (see notes)
     
    -

    Notes

    +

    {% trans %}Notes{% endtrans %}

    +

    {% trans tunnelmessage=site_url('docs/spec/tunnel-message'), +transports=site_url('docs/transport') -%} The practical length is limited by lower layers of protocols - the -tunnel message spec +tunnel message spec limits messages to about 61.2 KB and the -transports +transports currently limit messages to about 32 KB, although this may be raised in the future. +{%- endtrans %}

    - -

    Repliable Datagrams

    +

    {% trans %}Repliable Datagrams{% endtrans %}

    +

    {% trans -%} Repliable datagrams contain a 'from' address and a signature. These add 427 bytes of overhead. +{%- endtrans %}

    Format

     +----+----+----+----+----+----+----+----+
    @@ -142,11 +166,11 @@ Repliable datagrams contain a 'from' address and a signature. These add 427 byte
     
     
     
    -from      :: a Destination
    +from      :: a Destination
                    length: 387+ bytes
                    The originator and signer of the datagram
     
    -signature :: a Signature
    +signature :: a Signature
                  length: 40 bytes
                  The DSA signature of the SHA256 hash of the payload, which may be verified by the
                  DSA signing public key of the 'from' Destination
    @@ -159,12 +183,13 @@ Total length: Payload length + 427+
     
     
    -

    Notes

    +

    {% trans %}Notes{% endtrans %}

    +

    {% trans transports=site_url('docs/transport') -%} The practical length is limited by lower layers of protocols - the -transports +transports currently limit messages to about 32 KB, so the data length here is limited to about 31.5 KB. - +{%- endtrans %}

    diff --git a/i2p2www/pages/site/docs/spec/updates.html b/i2p2www/pages/site/docs/spec/updates.html index 72e1d2bf..6a69f1d3 100644 --- a/i2p2www/pages/site/docs/spec/updates.html +++ b/i2p2www/pages/site/docs/spec/updates.html @@ -1,71 +1,85 @@ {% extends "global/layout.html" %} -{% block title %}I2P Software Update Specification{% endblock %} -{% block lastupdated %}November 2011{% endblock %} +{% block title %}{% trans %}I2P Software Update Specification{% endtrans %}{% endblock %} +{% block lastupdated %}{% trans %}November 2011{% endtrans %}{% endblock %} {% block accuratefor %}0.8.12{% endblock %} {% block content %} -

    Overview

    -

    +

    {% trans %}Overview{% endtrans %}

    +

    {% trans -%} I2P uses a simple, yet secure, system for automated software update. The router console periodically pulls a news file from a configurable I2P URL. There is a hardcoded backup URL pointing to the project website, in case the default project news host goes down. -

    +{%- endtrans %}

    + +

    {% trans -%} The contents of the news file are displayed on the home page of the router console. In addition, the news file contains the most recent version number of the software. If the version is higher than the router's version number, it will display an indication to the user that an update is available. -

    +{%- endtrans %}

    + +

    {% trans -%} The router may optionally download, or download and install, the new version if configured to do so. -

    +{%- endtrans %}

    -

    News File Specification

    -

    +

    {% trans %}News File Specification{% endtrans %}

    +

    {% trans -%} The news.xml file may contain the following elements: -

    +{%- endtrans %}

     <i2p.news date="$Date: 2010-01-22 00:00:00 $" />
     <i2p.release version="0.7.14" date="2010/01/22" minVersion="0.6" />
     
    -

    +

    {% trans -%} The elements may be included inside XML comments to prevent interpretation by browsers. The i2p.release element and version are required. All others are optional and are currently unused. -

    +{%- endtrans %}

    + +

    {% trans -%} The news source is trusted only to indicate that a new version is available. It does not specify the URL of the update, the checksum, or any other information. -

    +{%- endtrans %}

    -

    Update File Specification

    -

    +

    {% trans %}Update File Specification{% endtrans %}

    +

    {% trans -%} The signed update file, traditionally named i2pupdate.sud, is simply a zip file with a prepended 56 byte header. The header contains: +{%- endtrans %}

      -
    • -A 40-byte DSA signature -
    • +
    • {% trans commonstructures=site_url('docs/spec/common-structures') -%} +A 40-byte DSA signature +{%- endtrans %}
    • +
    • {% trans -%} A 16-byte I2P version in UTF-8, padded with trailing zeroes if necessary -
    -

    +{%- endtrans %} + + +

    {% trans commonstructures=site_url('docs/spec/common-structures') -%} The signature covers only the zip archive - not the prepended version. -The signature must match one of the DSA public keys configured into the router, +The signature must match one of the DSA public keys configured into the router, which has a hardcoded default list of keys of the current project release managers. -

    +{%- endtrans %}

    + +

    {% trans -%} For version comparison purposes, version fields contain [0-9]*, field separators are '-', '_', and '.', and all other characters are ignored. -

    +{%- endtrans %}

    + +

    {% trans -%} As of version 0.8.8, the version must also be specified as a zip file comment in UTF-8, without the trailing zeroes. The updating router verifes that the version in the header (not covered by the signature) matches the version in the zip file comment, which is covered by the signature. This prevents spoofing of the version number in the header. -

    +{%- endtrans %}

    -

    Download and Installation

    -

    +

    {% trans %}Download and Installation{% endtrans %}

    +

    {% trans -%} The router first downloads the header of the update file from one in a configurable list of I2P URLs, using the built-in HTTP client and proxy, and checks that the version is newer. @@ -74,45 +88,58 @@ The router then downloads the full update file. The router verifies that the update file version is newer before installation. It also, of course, verifies the signature, and verifes that the zip file comment matches the header version, as explained above. -

    +{%- endtrans %}

    + +

    {% trans -%} The zip file is extracted in the base $I2P installation directory. -

    +{%- endtrans %}

    + +

    {% trans -%} As of release 0.7.12, the router supports Pack200 decompression. Files inside the zip archive with a .jar.pack or .war.pack suffix are transparently decompressed to a .jar or .war file. Update files containing .pack files are traditionally named with a '.su2' suffix. Pack200 shrinks the update files by about 60%. -

    +{%- endtrans %}

    + +

    {% trans -%} As of release 0.8.7, the router will delete the libjbigi.so and libjcpuid.so files if the zip archive contains a lib/jbigi.jar file, so that the new files will be extracted from jbigi.jar. -

    +{%- endtrans %}

    + +

    {% trans -%} As of release 0.8.12, if the zip archive contains a file deletelist.txt, the router will delete the files listed there. The format is: -

    • -One file name per line -
    • -All file names are relative to the installation directory; no absolute file names allowed, no files starting with ".." -
    • -Comments start with '#' -
    +{%- endtrans %}

    +
      +
    • {% trans %}One file name per line{% endtrans %}
    • +
    • {% trans %}All file names are relative to the installation directory; no absolute file names allowed, no files starting with ".."{% endtrans %}
    • +
    • {% trans %}Comments start with '#'{% endtrans %}
    • +
    + +

    {% trans -%} The router will then delete the deletelist.txt file. -

    +{%- endtrans %}

    -

    Future Work

    -
    • +

      {% trans %}Future Work{% endtrans %}

      +
        +
      • {% trans -%} When a new update file specification is defined, it should use a larger DSA signature, and the signature should cover the version. A file format version number might be a good idea too. -
      • +{%- endtrans %}
      • +
      • {% trans -%} The network will eventually grow too large for update over HTTP. The built-in BitTorrent client, i2psnark, may be used as a distributed update method. This development effort was started in 2009 but is on hold until it is required. -
      • +{%- endtrans %}
      • +
      • {% trans -%} The router update mechanism is part of the web router console. There is currently no provision for updates of an embedded router lacking the router console. -
      +{%- endtrans %}
    • +
    From 5494286c55a7282a8a3600a43cea5e29215c4dd0 Mon Sep 17 00:00:00 2001 From: str4d Date: Tue, 5 Feb 2013 23:32:57 +0000 Subject: [PATCH 395/650] Split the datagrams page between docs/api/ and docs/spec/ --- i2p2www/legacy.py | 2 +- i2p2www/pages/global/nav.html | 1 + i2p2www/pages/site/docs/api/datagrams.html | 114 ++++++++++++++++++++ i2p2www/pages/site/docs/spec/datagrams.html | 102 +----------------- 4 files changed, 119 insertions(+), 100 deletions(-) create mode 100644 i2p2www/pages/site/docs/api/datagrams.html diff --git a/i2p2www/legacy.py b/i2p2www/legacy.py index c185e8e8..685dc8c5 100644 --- a/i2p2www/legacy.py +++ b/i2p2www/legacy.py @@ -34,7 +34,7 @@ LEGACY_PAGES_MAP={ 'configuration': 'docs/spec/configuration', 'contact': 'about/contact', 'cvs': 'misc/cvs', - 'datagrams': 'docs/spec/datagrams', + 'datagrams': 'docs/api/datagrams', 'dev-guidelines': 'volunteer/guides/dev-guidelines', 'developerskeys': 'volunteer/develop/developers-keys', 'donate': 'volunteer/donate', diff --git a/i2p2www/pages/global/nav.html b/i2p2www/pages/global/nav.html index 558a9b33..b1051bb7 100644 --- a/i2p2www/pages/global/nav.html +++ b/i2p2www/pages/global/nav.html @@ -45,6 +45,7 @@
  • +
  • diff --git a/i2p2www/pages/site/docs/api/datagrams.html b/i2p2www/pages/site/docs/api/datagrams.html new file mode 100644 index 00000000..176bd237 --- /dev/null +++ b/i2p2www/pages/site/docs/api/datagrams.html @@ -0,0 +1,114 @@ +{% extends "global/layout.html" %} +{% block title %}{% trans %}Datagrams{% endtrans %}{% endblock %} +{% block lastupdated %}{% trans %}August 2010{% endtrans %}{% endblock %} +{% block accuratefor %}0.8{% endblock %} +{% block content %} +

    {% trans %}Datagram Overview{% endtrans %}

    +

    {% trans i2cp=site_url('docs/protocol/i2cp') -%} +Datagrams build upon the base I2CP to provide authenticated +and repliable messages in a standard format. This lets applications reliably read +the "from" address out of a datagram and know that the address really sent the +message. This is necessary for some applications since the base I2P message is +completely raw - it has no "from" address (unlike IP packets). In addition, the +message and sender are authenticated by signing the payload. +{%- endtrans %}

    + +

    {% trans streaming=site_url('docs/api/streaming'), +transports=site_url('docs/transport') -%} +Datagrams, like streaming library packets, +are an application-level construct. +These protocols are independent of the low-level transports; +the protocols are converted to I2NP messages by the router, and +either protocol may be carried by either transport. +{%- endtrans %}

    + +

    {% trans %}Application Guide{% endtrans %}

    +

    {% trans url='http://docs.i2p-projekt.de/javadoc/net/i2p/client/datagram/package-summary.html', +sam= site_url('docs/api/sam'), +socks=site_url('docs/api/socks') -%} +Applications written in Java may use the +datagram API, +while applications in other languages +can use SAM's datagram support. +There is also limited support in i2ptunnel in the SOCKS proxy, +the 'streamr' tunnel types, and udpTunnel classes. +{%- endtrans %}

    + +

    {% trans %}Datagram Length{% endtrans %}

    +

    {% trans -%} +The application designer should carefully consider the tradeoff of repliable vs. non-repliable +datagrams. Also, the datagram size will affect reliability, due to tunnel fragmentation into 1KB +tunnel messages. The more message fragments, the more likely that one of them will be dropped +by an intermediate hop. Messages larger than a few KB are not recommended. +{%- endtrans %}

    + +

    {% trans elgamalaes=site_url('docs/how/elgamal-aes') -%} +Also note that the various overheads added by lower layers, in particular asymmetric +ElGamal/AES, place a large burden on intermittent messages +such as used by a Kademlia-over-UDP application. The implementations are currently tuned +for frequent traffic using the streaming library. There are a high number +of session tags delivered, and a short session tag lifetime, for example. +There are currently no configuration parameters available within I2CP to tune +the ElGamal Session Tag parameters. +{%- endtrans %}

    + +

    {% trans %}I2CP Protocol Number and Ports{% endtrans %}

    +

    {% trans -%} +The standard I2CP protocol number for datagrams is 17. Applications may or may not choose to set the +protocol in the I2CP header. It is not set by default. +It must be set to demultiplex datagram and streaming traffic received on the same Destination. +{%- endtrans %}

    + +

    {% trans i2cp=site_url('docs/protocol/i2cp') -%} +As datagrams are not connection-oriented, the application may require +port numbers to correlate datagrams with particular peers or communications sessions, +as is traditional with UDP over IP. +Applications may add 'from' and 'to' ports to the I2CP (gzip) header as described in +the I2CP page. +{%- endtrans %}

    + +

    {% trans -%} +There is no method within the datagram API to specify whether it is non-repliable (raw) +or repliable. The application should be designed to expect the appropriate type. +The I2CP protocol number or port could also be used by the application to +indicate datagram type. +{%- endtrans %}

    + +

    {% trans i2psession='http://docs.i2p-projekt.de/javadoc/net/i2p/client/I2PSession.html', +i2psessionmuxed='http://docs.i2p-projekt.de/javadoc/net/i2p/client/I2PSessionMuxedImpl.html' -%} +The protocols and ports may be set in I2CP's +I2PSession API, +as implemented in +I2PSessionMuxedImpl. +{%- endtrans %}

    + +

    {% trans %}Data Integrity{% endtrans %}

    +

    {% trans i2cp=site_url('docs/protocol/i2cp') -%} +Data integrity is assured by the gzip CRC-32 checksum implemented in +the I2CP layer. +There is no checksum field in the datagram protocol. +{%- endtrans %}

    + +

    {% trans %}Packet Encapsulation{% endtrans %}

    +

    {% trans garlicrouting=site_url('docs/how/garlic-routing'), +i2cp=site_url('docs/protocol/i2cp'), +i2np=site_url('docs/protocol/i2np'), +tunnelmessage=site_url('docs/spec/tunnel-message') -%} +Each datagram is sent through I2P as a single message (or as an individual clove in a +Garlic Message). +Message encapsulation is implemented in the underlying +I2CP, +I2NP, and +tunnel message layers. +There is no packet delimiter mechanism or length field in the datagram protocol. +{%- endtrans %}

    + +

    {% trans %}Specification{% endtrans %}

    + +

    {% trans -%} +See the Datagrams Specification page. +{%- endtrans %}

    + + + +{% endblock %} diff --git a/i2p2www/pages/site/docs/spec/datagrams.html b/i2p2www/pages/site/docs/spec/datagrams.html index cc55da37..a64a328e 100644 --- a/i2p2www/pages/site/docs/spec/datagrams.html +++ b/i2p2www/pages/site/docs/spec/datagrams.html @@ -3,105 +3,9 @@ {% block lastupdated %}{% trans %}August 2010{% endtrans %}{% endblock %} {% block accuratefor %}0.8{% endblock %} {% block content %} -

    {% trans %}Datagram Overview{% endtrans %}

    -

    {% trans i2cp=site_url('docs/protocol/i2cp') -%} -Datagrams build upon the base I2CP to provide authenticated -and repliable messages in a standard format. This lets applications reliably read -the "from" address out of a datagram and know that the address really sent the -message. This is necessary for some applications since the base I2P message is -completely raw - it has no "from" address (unlike IP packets). In addition, the -message and sender are authenticated by signing the payload. -{%- endtrans %}

    - -

    {% trans streaming=site_url('docs/api/streaming'), -transports=site_url('docs/transport') -%} -Datagrams, like streaming library packets, -are an application-level construct. -These protocols are independent of the low-level transports; -the protocols are converted to I2NP messages by the router, and -either protocol may be carried by either transport. -{%- endtrans %}

    - -

    {% trans %}Application Guide{% endtrans %}

    -

    {% trans url='http://docs.i2p-projekt.de/javadoc/net/i2p/client/datagram/package-summary.html', -sam= site_url('docs/api/sam'), -socks=site_url('docs/api/socks') -%} -Applications written in Java may use the -datagram API, -while applications in other languages -can use SAM's datagram support. -There is also limited support in i2ptunnel in the SOCKS proxy, -the 'streamr' tunnel types, and udpTunnel classes. -{%- endtrans %}

    - -

    {% trans %}Datagram Length{% endtrans %}

    -

    {% trans -%} -The application designer should carefully consider the tradeoff of repliable vs. non-repliable -datagrams. Also, the datagram size will affect reliability, due to tunnel fragmentation into 1KB -tunnel messages. The more message fragments, the more likely that one of them will be dropped -by an intermediate hop. Messages larger than a few KB are not recommended. -{%- endtrans %}

    - -

    {% trans elgamalaes=site_url('docs/how/elgamal-aes') -%} -Also note that the various overheads added by lower layers, in particular asymmetric -ElGamal/AES, place a large burden on intermittent messages -such as used by a Kademlia-over-UDP application. The implementations are currently tuned -for frequent traffic using the streaming library. There are a high number -of session tags delivered, and a short session tag lifetime, for example. -There are currently no configuration parameters available within I2CP to tune -the ElGamal Session Tag parameters. -{%- endtrans %}

    - -

    {% trans %}I2CP Protocol Number and Ports{% endtrans %}

    -

    {% trans -%} -The standard I2CP protocol number for datagrams is 17. Applications may or may not choose to set the -protocol in the I2CP header. It is not set by default. -It must be set to demultiplex datagram and streaming traffic received on the same Destination. -{%- endtrans %}

    - -

    {% trans i2cp=site_url('docs/protocol/i2cp') -%} -As datagrams are not connection-oriented, the application may require -port numbers to correlate datagrams with particular peers or communications sessions, -as is traditional with UDP over IP. -Applications may add 'from' and 'to' ports to the I2CP (gzip) header as described in -the I2CP page. -{%- endtrans %}

    - -

    {% trans -%} -There is no method within the datagram API to specify whether it is non-repliable (raw) -or repliable. The application should be designed to expect the appropriate type. -The I2CP protocol number or port could also be used by the application to -indicate datagram type. -{%- endtrans %}

    - -

    {% trans i2psession='http://docs.i2p-projekt.de/javadoc/net/i2p/client/I2PSession.html', -i2psessionmuxed='http://docs.i2p-projekt.de/javadoc/net/i2p/client/I2PSessionMuxedImpl.html' -%} -The protocols and ports may be set in I2CP's -I2PSession API, -as implemented in -I2PSessionMuxedImpl. -{%- endtrans %}

    - -

    {% trans %}Data Integrity{% endtrans %}

    -

    {% trans i2cp=site_url('docs/protocol/i2cp') -%} -Data integrity is assured by the gzip CRC-32 checksum implemented in -the I2CP layer. -There is no checksum field in the datagram protocol. -{%- endtrans %}

    - -

    {% trans %}Packet Encapsulation{% endtrans %}

    -

    {% trans garlicrouting=site_url('docs/how/garlic-routing'), -i2cp=site_url('docs/protocol/i2cp'), -i2np=site_url('docs/protocol/i2np'), -tunnelmessage=site_url('docs/spec/tunnel-message') -%} -Each datagram is sent through I2P as a single message (or as an individual clove in a -Garlic Message). -Message encapsulation is implemented in the underlying -I2CP, -I2NP, and -tunnel message layers. -There is no packet delimiter mechanism or length field in the datagram protocol. -{%- endtrans %}

    +

    {% trans -%} +See the Datagrams page for an overview of the Datagrams API. +{%- endtrans %}

    {% trans %}Specification{% endtrans %}

    From d5a8e1b958f28bb3cd0326c3f8b2f34123f08221 Mon Sep 17 00:00:00 2001 From: str4d Date: Wed, 6 Feb 2013 00:27:20 +0000 Subject: [PATCH 396/650] Split streaming library page between docs/api/ and docs/spec/ --- i2p2www/pages/global/nav.html | 1 + i2p2www/pages/site/docs/api/streaming.html | 125 +----------------- i2p2www/pages/site/docs/spec/streaming.html | 135 ++++++++++++++++++++ 3 files changed, 139 insertions(+), 122 deletions(-) create mode 100644 i2p2www/pages/site/docs/spec/streaming.html diff --git a/i2p2www/pages/global/nav.html b/i2p2www/pages/global/nav.html index b1051bb7..286e00e8 100644 --- a/i2p2www/pages/global/nav.html +++ b/i2p2www/pages/global/nav.html @@ -73,6 +73,7 @@
  • +
  • diff --git a/i2p2www/pages/site/docs/api/streaming.html b/i2p2www/pages/site/docs/api/streaming.html index 13616fa8..b6d5601d 100644 --- a/i2p2www/pages/site/docs/api/streaming.html +++ b/i2p2www/pages/site/docs/api/streaming.html @@ -282,129 +282,10 @@ How long to block on write/flush, in milliseconds. Negative means indefinitely.

    {% trans %}Protocol Specification{% endtrans %}

    -

    {% trans %}Packet Format{% endtrans %}

    -

    {% trans -%} -The format of a single packet in the streaming protocol is: -{%- endtrans %}

    -
     
    -+----+----+----+----+----+----+----+----+
    -| send Stream ID    | rcv Stream ID     |
    -+----+----+----+----+----+----+----+----+
    -| sequence  Num     | ack Through       |
    -+----+----+----+----+----+----+----+----+
    -| nc |   NACKs ...
    -+----+----+----+----+----+----+----+----+
    -     | rd |  flags  | opt size| opt data
    -+----+----+----+----+----+----+----+----+
    -   ...                                  |
    -+----+----+----+----+----+----+----+----+
    -|   payload ...
    -+----+----+----+----//
    -
    -
    -
    - - -
    {{ _('Field') }}{{ _('Length') }}{{ _('Contents') }} -
    sendStreamId 4 byte IntegerRandom number selected by the connection recipient -and constant for the life of the connection. -0 in the SYN message sent by the originator, and in subsequent messages, until a SYN reply is received, -containing the peer's stream ID. - -
    receiveStreamId 4 byte IntegerRandom number selected by the connection originator -and constant for the life of the connection. May be 0 if unknown, for example in a RESET packet. - -
    sequenceNum 4 byte Integer -The sequence for this message, starting at 0 in the SYN message, -and incremented by 1 in each message except for plain ACKs and retransmissions. -If the sequenceNum is 0 and the SYN flag is not set, this is a plain ACK -packet that should not be ACKed. - -
    ackThrough 4 byte Integer -The highest packet sequence number that was received -on the receiveStreamId. This field is ignored on the initial -connection packet (where receiveStreamId is the unknown id) or -if the NO_ACK flag set. -All packets up to and including this sequence number are ACKed, -EXCEPT for those listed in NACKs below. - -
    NACK count1 byte Integer -The number of 4-byte NACKs in the next field - -
    NACKs n * 4 byte Integers -Sequence numbers less than ackThrough that are not yet received. -Two NACKs of a packet is a request for a 'fast retransmit' of that packet. - -
    resendDelay1 byte Integer -How long is the creator of this packet going to wait before -resending this packet (if it hasn't yet been ACKed). The -value is seconds since the packet was created. -Currently ignored on receive. - -
    flags 2 byte value -See below. - -
    option size2 byte Integer -The number of bytes in the next field - -
    option data0 or more bytes -As specified by the flags. See below. - -
    payload remaining packet size -
    - -

    {% trans %}Flags and Option Data Fields{% endtrans %}

    -

    {% trans -%} -The flags field above specifies some metadata about the packet, and in -turn may require certain additional data to be included. The flags are -as follows. Any data structures specified must be added to the options area -in the given order. -{%- endtrans %}

    - -

    -Bit order: 15....0 (15 is MSB) -

    - -
    BitFlagOption DataFunction -
    0SYNCHRONIZE-- -Similar to TCP SYN. Set in the initial packet and in the first response. -FROM_INCLUDED and SIGNATURE_INCLUDED must be set also. -
    1CLOSE-- -Similar to TCP FIN. If the response to a SYNCHRONIZE fits in a single message, the response -will contain both SYNCHRONIZE and CLOSE. -SIGNATURE_INCLUDED must be set also. -
    2RESET-- -Abnormal close. -SIGNATURE_INCLUDED must be set also. -
    3SIGNATURE_INCLUDED40 byte DSA Signature - -Currently sent only with SYNCHRONIZE, CLOSE, and RESET, where it is required. -The signature uses the Destination's DSA signing keys -to sign the entire header and payload with the 40-byte space in the option data field -for the signature being set to all zeroes. -
    4SIGNATURE_REQUESTED-- -Unused. Requests every packet in the other direction to have SIGNATURE_INCLUDED -
    5FROM_INCLUDED387+ byte Destination - -Currently sent only with SYNCHRONIZE, where it is required. -
    6DELAY_REQUESTED2 byte Integer -Optional delay. -How many milliseconds the sender of this packet wants the recipient -to wait before sending any more data. -A value greater than 60000 indicates choking. -
    7MAX_PACKET_SIZE_INCLUDED2 byte Integer -Currently sent with SYNCHRONIZE only. -Was also sent in retransmitted packets until release 0.9.1. -
    8PROFILE_INTERACTIVE-- -Unused or ignored; the interactive profile is unimplemented. -
    9ECHO-- -Unused except by ping programs -
    10NO_ACK-- -This flag simply tells the recipient to ignore the ackThrough field in the header. -Currently unused, the ackThrough field is always valid. -
    11-15unused -
    +

    {% trans -%} +See the Streaming Library Specification page. +{%- endtrans %}

    {% trans %}Implementation Details{% endtrans %}

    diff --git a/i2p2www/pages/site/docs/spec/streaming.html b/i2p2www/pages/site/docs/spec/streaming.html new file mode 100644 index 00000000..05db8ba0 --- /dev/null +++ b/i2p2www/pages/site/docs/spec/streaming.html @@ -0,0 +1,135 @@ +{% extends "global/layout.html" %} +{% block title %}{% trans %}Streaming Library Specification{% endtrans %}{% endblock %} +{% block lastupdated %}{% trans %}November 2012{% endtrans %}{% endblock %} +{% block accuratefor %}0.9.3{% endblock %} +{% block content %} +

    {% trans -%} +See the Streaming page for an overview of the Streaming Library. +{%- endtrans %}

    + +

    {% trans %}Protocol Specification{% endtrans %}

    +

    {% trans %}Packet Format{% endtrans %}

    +

    {% trans -%} +The format of a single packet in the streaming protocol is: +{%- endtrans %}

    +
    +
    ++----+----+----+----+----+----+----+----+
    +| send Stream ID    | rcv Stream ID     |
    ++----+----+----+----+----+----+----+----+
    +| sequence  Num     | ack Through       |
    ++----+----+----+----+----+----+----+----+
    +| nc |   NACKs ...
    ++----+----+----+----+----+----+----+----+
    +     | rd |  flags  | opt size| opt data
    ++----+----+----+----+----+----+----+----+
    +   ...                                  |
    ++----+----+----+----+----+----+----+----+
    +|   payload ...
    ++----+----+----+----//
    +
    +
    +
    + + +
    {{ _('Field') }}{{ _('Length') }}{{ _('Contents') }} +
    sendStreamId 4 byte IntegerRandom number selected by the connection recipient +and constant for the life of the connection. +0 in the SYN message sent by the originator, and in subsequent messages, until a SYN reply is received, +containing the peer's stream ID. + +
    receiveStreamId 4 byte IntegerRandom number selected by the connection originator +and constant for the life of the connection. May be 0 if unknown, for example in a RESET packet. + +
    sequenceNum 4 byte Integer +The sequence for this message, starting at 0 in the SYN message, +and incremented by 1 in each message except for plain ACKs and retransmissions. +If the sequenceNum is 0 and the SYN flag is not set, this is a plain ACK +packet that should not be ACKed. + +
    ackThrough 4 byte Integer +The highest packet sequence number that was received +on the receiveStreamId. This field is ignored on the initial +connection packet (where receiveStreamId is the unknown id) or +if the NO_ACK flag set. +All packets up to and including this sequence number are ACKed, +EXCEPT for those listed in NACKs below. + +
    NACK count1 byte Integer +The number of 4-byte NACKs in the next field + +
    NACKs n * 4 byte Integers +Sequence numbers less than ackThrough that are not yet received. +Two NACKs of a packet is a request for a 'fast retransmit' of that packet. + +
    resendDelay1 byte Integer +How long is the creator of this packet going to wait before +resending this packet (if it hasn't yet been ACKed). The +value is seconds since the packet was created. +Currently ignored on receive. + +
    flags 2 byte value +See below. + +
    option size2 byte Integer +The number of bytes in the next field + +
    option data0 or more bytes +As specified by the flags. See below. + +
    payload remaining packet size +
    + +

    {% trans %}Flags and Option Data Fields{% endtrans %}

    +

    {% trans -%} +The flags field above specifies some metadata about the packet, and in +turn may require certain additional data to be included. The flags are +as follows. Any data structures specified must be added to the options area +in the given order. +{%- endtrans %}

    + +

    +Bit order: 15....0 (15 is MSB) +

    + +
    BitFlagOption DataFunction +
    0SYNCHRONIZE-- +Similar to TCP SYN. Set in the initial packet and in the first response. +FROM_INCLUDED and SIGNATURE_INCLUDED must be set also. +
    1CLOSE-- +Similar to TCP FIN. If the response to a SYNCHRONIZE fits in a single message, the response +will contain both SYNCHRONIZE and CLOSE. +SIGNATURE_INCLUDED must be set also. +
    2RESET-- +Abnormal close. +SIGNATURE_INCLUDED must be set also. +
    3SIGNATURE_INCLUDED40 byte DSA Signature + +Currently sent only with SYNCHRONIZE, CLOSE, and RESET, where it is required. +The signature uses the Destination's DSA signing keys +to sign the entire header and payload with the 40-byte space in the option data field +for the signature being set to all zeroes. +
    4SIGNATURE_REQUESTED-- +Unused. Requests every packet in the other direction to have SIGNATURE_INCLUDED +
    5FROM_INCLUDED387+ byte Destination + +Currently sent only with SYNCHRONIZE, where it is required. +
    6DELAY_REQUESTED2 byte Integer +Optional delay. +How many milliseconds the sender of this packet wants the recipient +to wait before sending any more data. +A value greater than 60000 indicates choking. +
    7MAX_PACKET_SIZE_INCLUDED2 byte Integer +Currently sent with SYNCHRONIZE only. +Was also sent in retransmitted packets until release 0.9.1. +
    8PROFILE_INTERACTIVE-- +Unused or ignored; the interactive profile is unimplemented. +
    9ECHO-- +Unused except by ping programs +
    10NO_ACK-- +This flag simply tells the recipient to ignore the ackThrough field in the header. +Currently unused, the ackThrough field is always valid. +
    11-15unused +
    + +{% endblock %} From b455e878c7f27349cf0c0b15abccf113fd69c79c Mon Sep 17 00:00:00 2001 From: str4d Date: Wed, 6 Feb 2013 01:55:33 +0000 Subject: [PATCH 397/650] Assorted internal and external URL fixes --- i2p2www/pages/site/about/browser-config.html | 4 +-- i2p2www/pages/site/about/hall-of-fame.html | 6 ++--- i2p2www/pages/site/about/intro.html | 4 +-- .../pages/site/about/performance/history.html | 5 ++-- i2p2www/pages/site/about/team.html | 2 +- i2p2www/pages/site/comparison/freenet.html | 4 +-- .../pages/site/comparison/other-networks.html | 14 +++++----- i2p2www/pages/site/contact.html | 2 +- i2p2www/pages/site/docs/api/i2pcontrol.html | 2 +- i2p2www/pages/site/docs/api/sam.html | 12 ++++----- i2p2www/pages/site/docs/api/samv2.html | 12 ++++----- i2p2www/pages/site/docs/api/samv3.html | 12 ++++----- i2p2www/pages/site/docs/api/streaming.html | 2 +- .../site/docs/applications/supported.html | 12 ++++----- .../pages/site/docs/discussions/netdb.html | 8 +++--- i2p2www/pages/site/docs/how/cryptography.html | 5 ++-- .../pages/site/docs/how/garlic-routing.html | 2 +- i2p2www/pages/site/docs/how/intro.html | 5 ++-- .../pages/site/docs/how/network-database.html | 2 +- .../pages/site/docs/how/peer-selection.html | 6 ++--- i2p2www/pages/site/docs/how/threat-model.html | 8 +++--- i2p2www/pages/site/docs/index.html | 2 +- i2p2www/pages/site/docs/spec/streaming.html | 26 +++++++++---------- 23 files changed, 80 insertions(+), 77 deletions(-) diff --git a/i2p2www/pages/site/about/browser-config.html b/i2p2www/pages/site/about/browser-config.html index ac2056bd..e3b56988 100644 --- a/i2p2www/pages/site/about/browser-config.html +++ b/i2p2www/pages/site/about/browser-config.html @@ -91,10 +91,10 @@ that only set amount of accesses are allowed per client. Once the limit is reached, the client is blocked out for a timeframe of 1min/1h/1 day. Be respectful and do not overload these services with too many requests! {%- endtrans %}

    -

    {% trans -%} +

    {% trans tpb=i2pconv('tpb.i2p') -%} Filtering is active on these outproxies (for example, mibbit and torrent tracker access is blocked). Note that even though the pirate bay is blocked -they host an official eepsite at tpb.i2p. Eepsites +they host an official eepsite at {{ tpb }}. Eepsites that are accessible via .i2p addresses are also not allowed via the outproxies. As a convenience, False.i2p blocks ad servers. {%- endtrans %}

    diff --git a/i2p2www/pages/site/about/hall-of-fame.html b/i2p2www/pages/site/about/hall-of-fame.html index 346feb8a..833f8ff9 100644 --- a/i2p2www/pages/site/about/hall-of-fame.html +++ b/i2p2www/pages/site/about/hall-of-fame.html @@ -14,11 +14,11 @@ Current balance: as of {{ date }} {% trans euroval='100.0' %}{{ euroval }} €{% endtrans %}
    {{ _('I2PHex bounty') }}: {% trans euroval='60.0' %}{{ euroval }} €{% endtrans %}
    -{{ _('I2P in debian mirrors') }}: +{{ _('I2P in debian mirrors') }}: {% trans euroval='113.0' %}{{ euroval }} €{% endtrans %}
    -{{ _('Bitcoin client for I2P') }}: +{{ _('Bitcoin client for I2P') }}: {% trans euroval='30.0', btcval='118.34' %}{{ euroval }} € and {{ btcval }} BTC{% endtrans %}
    -{{ _('Unit Tests for I2P router') }}: +{{ _('Unit Tests for I2P router') }}: {% trans euroval='2700' %}{{ euroval }} €{% endtrans %}
    {{ _('Bounty Robert') }}: 0
    {{ _('Bounty Syndie') }}: 100 BTC
    diff --git a/i2p2www/pages/site/about/intro.html b/i2p2www/pages/site/about/intro.html index 5c979f5b..4516f101 100644 --- a/i2p2www/pages/site/about/intro.html +++ b/i2p2www/pages/site/about/intro.html @@ -66,8 +66,8 @@ technique to run an anonymous IRC network (where the IRC server is hosted anonymously, and standard IRC clients use an I2PTunnel to contact it). There are other application development efforts going on as well, such as one to build an optimized swarming file transfer application (a la -BitTorrent), a -distributed data store (a la Freenet / +BitTorrent), a +distributed data store (a la Freenet / MNet), and a blogging system (a fully distributed LiveJournal), but those are not ready for use yet. diff --git a/i2p2www/pages/site/about/performance/history.html b/i2p2www/pages/site/about/performance/history.html index f8984dac..59f92ba9 100644 --- a/i2p2www/pages/site/about/performance/history.html +++ b/i2p2www/pages/site/about/performance/history.html @@ -9,13 +9,14 @@ for current issues and thoughts.

    {{ _('Native math') }}

    [{{ _('implemented') }}] -

    {% trans modpow='http://java.sun.com/j2se/1.4.2/docs/api/java/math/BigInteger.html#modPow(java.math.BigInteger,%20java.math.BigInteger)', +

    {% trans modpow='http://docs.oracle.com/javase/1.4.2/docs/api/java/math/BigInteger.html#modPow(java.math.BigInteger,%20java.math.BigInteger)', +gmp='http://gmplib.org/', jbigi=site_url('misc/jbigi') -%} When I last profiled the I2P code, the vast majority of time was spent within one function: java.math.BigInteger's modPow. Rather than try to tune this method, we'll call out to -GNU MP - an insanely fast math library +GNU MP - an insanely fast math library (with tuned assembler for many architectures). (Editor: see NativeBigInteger for faster public key cryptography) {%- endtrans %}

    diff --git a/i2p2www/pages/site/about/team.html b/i2p2www/pages/site/about/team.html index bbdff18f..68974c6e 100644 --- a/i2p2www/pages/site/about/team.html +++ b/i2p2www/pages/site/about/team.html @@ -37,7 +37,7 @@ network. {{ _('manage the project mirrors') }} - {% trans monotone=site_url('get-involved/develop/monotone') %}Monotone guru{% endtrans %} + {% trans monotone=site_url('get-involved/guides/monotone') %}Monotone guru{% endtrans %} welterde, eche|on {{ _('manage the public monotone repositories') }} diff --git a/i2p2www/pages/site/comparison/freenet.html b/i2p2www/pages/site/comparison/freenet.html index 1597cf79..cc4c1dbe 100644 --- a/i2p2www/pages/site/comparison/freenet.html +++ b/i2p2www/pages/site/comparison/freenet.html @@ -13,7 +13,7 @@ built applications on top of it to do more generic anonymous communication, such static websites and message boards. {%- endtrans %}

    -

    {% trans -%} +

    {% trans tahoe='https://tahoe-lafs.org/trac/tahoe-lafs' -%} Compared to I2P, Freenet offers some substantial benefits - it is a distributed data store, while I2P is not, allowing people to retrieve the content published by others even when the publisher is no longer online. In addition, it should be able to @@ -22,7 +22,7 @@ this functionality. On the other hand, there is overlap for users who simply wa communicate with each other anonymously through websites, message boards, file sharing programs, etc. There have also been some attempts to develop a distributed data store to run on top of I2P, -(most recently a port of Tahoe-LAFS) +(most recently a port of Tahoe-LAFS) but nothing is yet ready for general use. {%- endtrans %}

    diff --git a/i2p2www/pages/site/comparison/other-networks.html b/i2p2www/pages/site/comparison/other-networks.html index a8040c4e..61373ac3 100644 --- a/i2p2www/pages/site/comparison/other-networks.html +++ b/i2p2www/pages/site/comparison/other-networks.html @@ -23,8 +23,8 @@ You may contribute an analysis by entering a

    Morphmix / Tarzan

    -[Morphmix] - [Tarzan] +[Morphmix] + [Tarzan]

    {% trans threatmodel=site_url('docs/how/threat-model') -%} Morphmix and Tarzan are both fully distributed, peer to peer networks of @@ -174,7 +174,7 @@ both Mixminion and Mixmaster take the directory based approach as well.

    JAP

    [JAP] -

    {% trans -%} +

    {% trans url='https://www.datenschutzzentrum.de/material/themen/presse/anonip3_e.htm' -%} JAP (Java Anonymous Proxy) is a network of mix cascades for anonymizing web requests, and as such it has a few centralized nodes (participants in the cascade) that blend and mix requests from clients through the sequence of nodes (the cascade) before @@ -184,7 +184,7 @@ are not satisfied with an Anonymizer-like service, JAP is worth reviewing. One caution to note is that anyone under the jurisdiction of the German courts may want to take care, as the German Federal Bureau of Criminal Investigation (FBCI) has successfully mounted an -attack +attack on the network. Even though the method of this attack was later found to be illegal in the German courts, the fact that the data was successfully collected is the concern. Courts change their minds based upon circumstance, and this is evidence that @@ -194,11 +194,11 @@ if it may be found inadmissible in some courts later)

    MUTE / AntsP2P

    [MUTE] - [AntsP2P] + [AntsP2P] -

    {% trans -%} +

    {% trans antnet='http://citeseer.ist.psu.edu/57701.html' -%} Both of these systems work through the same basic -antnet routing, providing some degree of +antnet routing, providing some degree of anonymity based on the threat model of providing plausible deniability against a simple non-colluding adversary. With the antnet routing, they first either do a random walk or a broadcast search to find some peer with the data or identity desired, and then use a feedback diff --git a/i2p2www/pages/site/contact.html b/i2p2www/pages/site/contact.html index c10ee671..e8c5502f 100644 --- a/i2p2www/pages/site/contact.html +++ b/i2p2www/pages/site/contact.html @@ -4,7 +4,7 @@

    IRC

    {% trans -%} Our primary IRC network is the Irc2P network within I2P; a default tunnel to this network is set up with new router installs. - We are also present on multiple standard networks like OFTC, + We are also present on multiple standard networks like OFTC, EIN and Freenode. All I2P-related channels on all these network are linked to the main channels on Irc2P via relay bots. {%- endtrans %}

    diff --git a/i2p2www/pages/site/docs/api/i2pcontrol.html b/i2p2www/pages/site/docs/api/i2pcontrol.html index c5052edf..d3f50466 100644 --- a/i2p2www/pages/site/docs/api/i2pcontrol.html +++ b/i2p2www/pages/site/docs/api/i2pcontrol.html @@ -57,7 +57,7 @@ Parameters are only provided in a named way (maps).
      GetRate – {% trans %}Fetches rateStat from router statManager. Creates stat if not already created.{% endtrans %}
        {{ _('Request:') }} -
      • Stat – [String] {% trans %}Determines which rateStat to fetch, see ratestats.{% endtrans %}
      • +
      • Stat – [String] {% trans ratestats=site_url('misc/ratestats') %}Determines which rateStat to fetch, see ratestats.{% endtrans %}
      • Period – [long] {% trans %}Determines which period a stat is fetched for. Measured in ms.{% endtrans %}
      • Token – [String] {% trans %}Token used for authenticating the client. Is provided by the server via the 'Authenticate' RPC method.{% endtrans %}
      diff --git a/i2p2www/pages/site/docs/api/sam.html b/i2p2www/pages/site/docs/api/sam.html index 2f789bd1..3297fe63 100644 --- a/i2p2www/pages/site/docs/api/sam.html +++ b/i2p2www/pages/site/docs/api/sam.html @@ -34,9 +34,9 @@ the key=value pairs can change (e.g. "ONE TWO A=B C=D" or addition, the protocol is case-sensitive. Communication can take three distinct forms: -* Virtual streams -* Repliable datagrams (messages with a FROM field) -* Anonymous datagrams (raw anonymous messages) +* Virtual streams +* Repliable datagrams (messages with a FROM field) +* Anonymous datagrams (raw anonymous messages) ---------------------------------------------------------------------- SAM connection handshake @@ -334,8 +334,8 @@ Tunnel, I2CP, and Streaming Options These options may be passed in as name=value pairs at the end of a SAM SESSION CREATE line. -All sessions may include I2CP options such as tunnel lengths. -STREAM sessions may include Streaming lib options. +All sessions may include I2CP options such as tunnel lengths. +STREAM sessions may include Streaming lib options. See those references for option names and defaults. @@ -351,7 +351,7 @@ Client library implementations: ---------------------------------------------------------------------- Client libraries are available for C, C++, C#, Perl, and Python. -These are in the apps/sam/ directory in the I2P Source Package. +These are in the apps/sam/ directory in the I2P Source Package. ---------------------------------------------------------------------- diff --git a/i2p2www/pages/site/docs/api/samv2.html b/i2p2www/pages/site/docs/api/samv2.html index 296d0cba..b4707c90 100644 --- a/i2p2www/pages/site/docs/api/samv2.html +++ b/i2p2www/pages/site/docs/api/samv2.html @@ -47,9 +47,9 @@ the key=value pairs can change (e.g. "ONE TWO A=B C=D" or addition, the protocol is case-sensitive. Communication can take three distinct forms: -* Virtual streams -* Repliable datagrams (messages with a FROM field) -* Anonymous datagrams (raw anonymous messages) +* Virtual streams +* Repliable datagrams (messages with a FROM field) +* Anonymous datagrams (raw anonymous messages) ---------------------------------------------------------------------- SAM connection handshake @@ -401,8 +401,8 @@ Tunnel, I2CP, and Streaming Options These options may be passed in as name=value pairs at the end of a SAM SESSION CREATE line. -All sessions may include I2CP options such as tunnel lengths. -STREAM sessions may include Streaming lib options. +All sessions may include I2CP options such as tunnel lengths. +STREAM sessions may include Streaming lib options. See those references for option names and defaults. @@ -417,7 +417,7 @@ Base 64 encoding must use the I2P standard Base 64 alphabet "A-Z, a-z, 0-9, -, ~ Client library implementations: ---------------------------------------------------------------------- Client libraries are available for C, C++, C#, Perl, and Python. -These are in the apps/sam/ directory in the I2P Source Package. +These are in the apps/sam/ directory in the I2P Source Package. Some may be older and have not been updated for SAMv2 support. diff --git a/i2p2www/pages/site/docs/api/samv3.html b/i2p2www/pages/site/docs/api/samv3.html index 81db268f..5c46f858 100644 --- a/i2p2www/pages/site/docs/api/samv3.html +++ b/i2p2www/pages/site/docs/api/samv3.html @@ -56,9 +56,9 @@ messages sent by the client to the SAM bridge, and by "<- " for messages sent by the SAM bridge to the client. I2P communications can take three distinct forms: -* Virtual streams -* Repliable datagrams (messages with a FROM field) -* Anonymous datagrams (raw anonymous messages) +* Virtual streams +* Repliable datagrams (messages with a FROM field) +* Anonymous datagrams (raw anonymous messages) I2P communications are supported by I2P sessions, and each I2P session is bound to an address (called destination). An I2P session @@ -485,8 +485,8 @@ Tunnel, I2CP, and Streaming Options These options may be passed in as name=value pairs at the end of a SAM SESSION CREATE line. -All sessions may include I2CP options such as tunnel lengths. -STREAM sessions may include Streaming lib options. +All sessions may include I2CP options such as tunnel lengths. +STREAM sessions may include Streaming lib options. See those references for option names and defaults. @@ -501,7 +501,7 @@ Base 64 encoding must use the I2P standard Base 64 alphabet "A-Z, a-z, 0-9, -, ~ Client library implementations: ---------------------------------------------------------------------- Client libraries are available for C, C++, C#, Perl, and Python. -These are in the apps/sam/ directory in the I2P Source Package. +These are in the apps/sam/ directory in the I2P Source Package. Some may be older and have not been updated for SAMv3 support. diff --git a/i2p2www/pages/site/docs/api/streaming.html b/i2p2www/pages/site/docs/api/streaming.html index b6d5601d..a7c60e2a 100644 --- a/i2p2www/pages/site/docs/api/streaming.html +++ b/i2p2www/pages/site/docs/api/streaming.html @@ -67,7 +67,7 @@ streaming library, to be interpreted by I2CP.

      {% trans i2cp=site_url('docs/protocol/i2cp'), i2psktmf='http://docs.i2p-projekt.de/javadoc/net/i2p/client/streaming/I2PSocketManagerFactory.html', i2psktm='http://docs.i2p-projekt.de/javadoc/net/i2p/client/streaming/I2PSocketManager.html', -i2psess='http://docs.i2p-projekt.de/javadoc/net/i2p/client/streaming/I2PSession.html', +i2psess='http://docs.i2p-projekt.de/javadoc/net/i2p/client/I2PSession.html', i2pskt='http://docs.i2p-projekt.de/javadoc/net/i2p/client/streaming/I2PSocket.html', i2psskt='http://docs.i2p-projekt.de/javadoc/net/i2p/client/streaming/I2PServerSocket.html' -%} The standard interface to the streaming lib is for the application to use the diff --git a/i2p2www/pages/site/docs/applications/supported.html b/i2p2www/pages/site/docs/applications/supported.html index 52f0ce66..f454e644 100644 --- a/i2p2www/pages/site/docs/applications/supported.html +++ b/i2p2www/pages/site/docs/applications/supported.html @@ -197,7 +197,7 @@ shortcuts. -->

    • -

      El Dorado — +

      El Dorado — {% trans %}Lightweight forum software.{% endtrans %} [{{ _('standalone/mod') }}]

    • @@ -209,7 +209,7 @@ shortcuts.
    • -

      phpBB — +

      phpBB — {% trans %}Most popular open source forum software.{% endtrans %} [{{ _('standalone/mod') }}]

    • @@ -253,7 +253,7 @@ distributed file system to the I2P network. Controller plugin
    • -

      Monotone — +

      Monotone — {% trans monotone=site_url('get-involved/guides/monotone') -%} Another distributed version control system. Currently used in I2P development. @@ -407,7 +407,7 @@ branch of the I2P Monotone repository.

    • I2Phex — {% trans stats=i2pconv('stats.i2p') -%} -Port of the Phex Gnutella client. Website +Port of the Phex Gnutella client. Website for plugin version here. {%- endtrans %} [{{ _('plugin') }}, {{ _('standalone') }}]

      @@ -502,7 +502,7 @@ developers; they may be able to solve it via additional filtering.
      • -

        jIRCii — +

        jIRCii — {% trans stats=i2pconv('stats.i2p') -%} Small Java-based IRC client. Plugin available here. @@ -694,7 +694,7 @@ currently serve content on the I2P network are:

      • -

        nginx — +

        nginx — {% trans %}High-performance lightweight web server.{% endtrans %} [{{ _('standalone') }}]

      • diff --git a/i2p2www/pages/site/docs/discussions/netdb.html b/i2p2www/pages/site/docs/discussions/netdb.html index ab3769b4..55b8c9fc 100644 --- a/i2p2www/pages/site/docs/discussions/netdb.html +++ b/i2p2www/pages/site/docs/discussions/netdb.html @@ -3,7 +3,7 @@ {% block content %}

        NOTE: The following is a discussion of the history of netdb implementation and is not current information. -See the main netdb page for current documentation. +See the main netdb page for current documentation.

        History

        @@ -241,7 +241,7 @@ This just accounts for the stores - what about the queries?

        The Return of the Kademlia Algorithm?

        -(this is adapted from the I2P meeting Jan. 2, 2007) +(this is adapted from the I2P meeting Jan. 2, 2007)
        The Kademlia netDb just wasn't working properly. Is it dead forever or will it be coming back? @@ -282,7 +282,7 @@ Not necessarily DHT-based.

        Floodfill TODO List

        NOTE: The following is not current information. -See the main netdb page for the current status and a list of future work. +See the main netdb page for the current status and a list of future work.

        The network was down to only one floodfill for a couple of hours on March 13, 2008 (approx. 18:00 - 20:00 UTC), @@ -365,7 +365,7 @@ we are now at the minimum number of stats required to monitor the network.

      • [In Release 0.6.3] Manual list of floodfill peers to exclude? -(blocklists by router ident) +(blocklists by router ident)
      • [In Release 0.6.3] Better floodfill peer selection for stores: diff --git a/i2p2www/pages/site/docs/how/cryptography.html b/i2p2www/pages/site/docs/how/cryptography.html index 93b2e2c0..c0bb0602 100644 --- a/i2p2www/pages/site/docs/how/cryptography.html +++ b/i2p2www/pages/site/docs/how/cryptography.html @@ -142,7 +142,8 @@ Using 2 as the generator.

        {% trans %}Short Exponent{% endtrans %}

        {% trans commonstructures=site_url('docs/spec/common-structures'), pdf='http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.14.5952&rep=rep1&type=pdf', -benchmarks=site_url('misc/benchmarks') -%} +benchmarks=site_url('misc/benchmarks'), +oldbenchmarks='http://www.eskimo.com/~weidai/benchmarks.html' -%} While the standard exponent size is 2048 bits (256 bytes) and the I2P PrivateKey is a full 256 bytes, @@ -150,7 +151,7 @@ we use the short exponent size of 226 bits (28.25 bytes). This should be safe for use with the Oakley primes, per On Diffie-Hellman Key Agreement with Short Exponents - van Oorschot, Weiner at EuroCrypt 96, and crypto++'s benchmarks. -Benchmarks originally at this link, now dead, +Benchmarks originally at {{ oldbenchmarks }} (now dead), rescued from the wayback machine, dated Apr 23, 2008. {%- endtrans %}

        diff --git a/i2p2www/pages/site/docs/how/garlic-routing.html b/i2p2www/pages/site/docs/how/garlic-routing.html index 767b2018..f98d6f91 100644 --- a/i2p2www/pages/site/docs/how/garlic-routing.html +++ b/i2p2www/pages/site/docs/how/garlic-routing.html @@ -15,7 +15,7 @@ the usage of "garlic" methods in I2P. Michael J. Freedman in Roger Dingledine's Free Haven Master's thesis Section 8.1.1 (June 2000), as derived from -Onion Routing. +Onion Routing. {%- endtrans %}

        {% trans -%} diff --git a/i2p2www/pages/site/docs/how/intro.html b/i2p2www/pages/site/docs/how/intro.html index a9374630..93ec5cc1 100644 --- a/i2p2www/pages/site/docs/how/intro.html +++ b/i2p2www/pages/site/docs/how/intro.html @@ -151,10 +151,11 @@ the network (N) bears no impact. {%- endtrans %}

        {% trans %}When?{% endtrans %}

        -

        {% trans roadmap=site_url('get-involved/roadmap') -%} +

        {% trans roadmap=site_url('get-involved/roadmap'), +jms='http://www.oracle.com/technetwork/java/jms/index.html' -%} I2P initially began in Feb 2003 as a proposed modification to Freenet to allow it to use alternate transports, such as JMS, then grew into its own as an +href="{{ jms }}">JMS, then grew into its own as an 'anonCommFramework' in April 2003, turning into I2P in July, with code being written in earnest starting in August '03. I2P is currently under development, following the roadmap. diff --git a/i2p2www/pages/site/docs/how/network-database.html b/i2p2www/pages/site/docs/how/network-database.html index 4c677a7b..45bde67c 100644 --- a/i2p2www/pages/site/docs/how/network-database.html +++ b/i2p2www/pages/site/docs/how/network-database.html @@ -747,7 +747,7 @@ for a discussion of the vulnerabilities of peer selection for tunnels. {%- endtrans %}

        {% trans %}Information Leaks{% endtrans %}

        -

        {% trans pdf='https://netfiles.uiuc.edu/mittal2/www/nisan-torsk-ccs10.pdf' -%} +

        {% trans pdf='http://www.eecs.berkeley.edu/~pmittal/publications/nisan-torsk-ccs10.pdf' -%} (Reference: In Search of an Anonymous and Secure Lookup Section 3) {%- endtrans %}

        diff --git a/i2p2www/pages/site/docs/how/peer-selection.html b/i2p2www/pages/site/docs/how/peer-selection.html index 2537ef3e..fd26f061 100644 --- a/i2p2www/pages/site/docs/how/peer-selection.html +++ b/i2p2www/pages/site/docs/how/peer-selection.html @@ -250,8 +250,8 @@ Peers for which a recent connection attempt failed are not used.

        {% trans %}Peer Ordering in Tunnels{% endtrans %}

        -

        {% trans pdf='http://prisms.cs.umass.edu/brian/pubs/wright-tissec.pdf', -pdf2008='http://prisms.cs.umass.edu/brian/pubs/wright.tissec.2008.pdf', +

        {% trans pdf='http://forensics.umass.edu/pubs/wright-tissec.pdf', +pdf2008='http://forensics.umass.edu/pubs/wright.tissec.2008.pdf', tunnelimpl=site_url('docs/tunnels/implementation') -%} Peers are ordered within tunnels to to deal with the predecessor attack @@ -306,7 +306,7 @@ please keep in mind the following minor changes in I2P since the paper's publica

      • {% trans %}Tune-up for Tor{% endtrans %}
      • -{% trans %}Low-resource Routing Attacks Against Tor{% endtrans %} +{% trans %}Low-resource Routing Attacks Against Tor{% endtrans %}
      {% endblock %} diff --git a/i2p2www/pages/site/docs/how/threat-model.html b/i2p2www/pages/site/docs/how/threat-model.html index 09d3c402..33f1cd35 100644 --- a/i2p2www/pages/site/docs/how/threat-model.html +++ b/i2p2www/pages/site/docs/how/threat-model.html @@ -431,7 +431,7 @@ matter, the attacker would need to control a significant portion of the network which other tunnels or messages have those delays). {%- endtrans %}

      -

      {% trans netdb=site_url('docs/how/networkdatabase') -%} +

      {% trans netdb=site_url('docs/how/network-database') -%} Also discussed on the network database page (bootstrap attack). {%- endtrans %}

      @@ -470,8 +470,8 @@ was specifically designed to combat the predecessor attack. See also the intersection attack. {%- endtrans %}

      -

      {% trans pdf2008='http://prisms.cs.umass.edu/brian/pubs/wright.tissec.2008.pdf', -pdf2004='http://prisms.cs.umass.edu/brian/pubs/wright-tissec.pdf' -%} +

      {% trans pdf2008='http://forensics.umass.edu/pubs/wright.tissec.2008.pdf', +pdf2004='http://forensics.umass.edu/pubs/wright-tissec.pdf' -%} References: {{ pdf2008 }} which is an update to the 2004 predecessor attack paper {{ pdf2004 }}. @@ -627,7 +627,7 @@ for more Sybil discussion.

      {% trans %}Buddy Exhaustion attacks{% endtrans %}

      -

      {% trans pdf='https://netfiles.uiuc.edu/mittal2/www/nisan-torsk-ccs10.pdf' -%} +

      {% trans pdf='http://www.eecs.berkeley.edu/~pmittal/publications/nisan-torsk-ccs10.pdf' -%} (Reference: In Search of an Anonymouns and Secure Lookup Section 5.2) {%- endtrans %}

      diff --git a/i2p2www/pages/site/docs/index.html b/i2p2www/pages/site/docs/index.html index 5f8a2341..5b860b55 100644 --- a/i2p2www/pages/site/docs/index.html +++ b/i2p2www/pages/site/docs/index.html @@ -227,7 +227,7 @@ Traditionally used only by Java applications and higher-level APIs.
    • {{ _('Source translation at Transifex') }}
    • -{{ _('0.9 roadmap wiki') }} ({{ _('not current') }}) +{{ _('Roadmap wiki') }}
    • {{ _('Old roadmap') }} ({{ _('not current') }})
    • diff --git a/i2p2www/pages/site/docs/spec/streaming.html b/i2p2www/pages/site/docs/spec/streaming.html index 05db8ba0..41e49de9 100644 --- a/i2p2www/pages/site/docs/spec/streaming.html +++ b/i2p2www/pages/site/docs/spec/streaming.html @@ -33,21 +33,21 @@ The format of a single packet in the streaming protocol is:
      {{ _('Field') }}{{ _('Length') }}{{ _('Contents') }} -
      sendStreamId 4 byte IntegerRandom number selected by the connection recipient +
      sendStreamId 4 byte IntegerRandom number selected by the connection recipient and constant for the life of the connection. 0 in the SYN message sent by the originator, and in subsequent messages, until a SYN reply is received, containing the peer's stream ID. -
      receiveStreamId 4 byte IntegerRandom number selected by the connection originator +
      receiveStreamId 4 byte IntegerRandom number selected by the connection originator and constant for the life of the connection. May be 0 if unknown, for example in a RESET packet. -
      sequenceNum 4 byte Integer +
      sequenceNum 4 byte Integer The sequence for this message, starting at 0 in the SYN message, and incremented by 1 in each message except for plain ACKs and retransmissions. If the sequenceNum is 0 and the SYN flag is not set, this is a plain ACK packet that should not be ACKed. -
      ackThrough 4 byte Integer +
      ackThrough 4 byte Integer The highest packet sequence number that was received on the receiveStreamId. This field is ignored on the initial connection packet (where receiveStreamId is the unknown id) or @@ -55,14 +55,14 @@ if the NO_ACK flag set. All packets up to and including this sequence number are ACKed, EXCEPT for those listed in NACKs below. -
      NACK count1 byte Integer +
      NACK count1 byte Integer The number of 4-byte NACKs in the next field -
      NACKs n * 4 byte Integers +
      NACKs n * 4 byte Integers Sequence numbers less than ackThrough that are not yet received. Two NACKs of a packet is a request for a 'fast retransmit' of that packet. -
      resendDelay1 byte Integer +
      resendDelay1 byte Integer How long is the creator of this packet going to wait before resending this packet (if it hasn't yet been ACKed). The value is seconds since the packet was created. @@ -71,7 +71,7 @@ Currently ignored on receive.
      flags 2 byte value See below. -
      option size2 byte Integer +
      option size2 byte Integer The number of bytes in the next field
      option data0 or more bytes @@ -103,23 +103,23 @@ SIGNATURE_INCLUDED must be set also.
      2RESET-- Abnormal close. SIGNATURE_INCLUDED must be set also. -
      3SIGNATURE_INCLUDED40 byte DSA Signature +
      3SIGNATURE_INCLUDED40 byte DSA Signature Currently sent only with SYNCHRONIZE, CLOSE, and RESET, where it is required. -The signature uses the Destination's DSA signing keys +The signature uses the Destination's DSA signing keys to sign the entire header and payload with the 40-byte space in the option data field for the signature being set to all zeroes.
      4SIGNATURE_REQUESTED-- Unused. Requests every packet in the other direction to have SIGNATURE_INCLUDED -
      5FROM_INCLUDED387+ byte Destination +
      5FROM_INCLUDED387+ byte Destination Currently sent only with SYNCHRONIZE, where it is required. -
      6DELAY_REQUESTED2 byte Integer +
      6DELAY_REQUESTED2 byte Integer Optional delay. How many milliseconds the sender of this packet wants the recipient to wait before sending any more data. A value greater than 60000 indicates choking. -
      7MAX_PACKET_SIZE_INCLUDED2 byte Integer +
      7MAX_PACKET_SIZE_INCLUDED2 byte Integer Currently sent with SYNCHRONIZE only. Was also sent in retransmitted packets until release 0.9.1.
      8PROFILE_INTERACTIVE-- From 5422df80eabc07268a99505415d67698d6f4b6f9 Mon Sep 17 00:00:00 2001 From: str4d Date: Wed, 6 Feb 2013 03:24:18 +0000 Subject: [PATCH 398/650] More assorted internal and external URL fixes --- i2p2www/pages/site/docs/protocol/i2np.html | 2 +- .../pages/site/docs/tunnels/implementation.html | 4 ++-- .../site/docs/tunnels/old-implementation.html | 2 +- .../site/get-involved/bounties/unit-tests.html | 4 ++-- .../site/get-involved/develop/licenses.html | 16 ++++++++-------- .../site/get-involved/develop/signed-keys.html | 2 +- i2p2www/pages/site/get-involved/donate.html | 6 +++--- .../pages/site/get-involved/guides/monotone.html | 2 +- .../site/get-involved/guides/new-developers.html | 6 +++--- .../get-involved/guides/new-translators.html | 4 ++-- i2p2www/pages/site/get-involved/todo.html | 6 +++--- i2p2www/pages/site/links.html | 10 +++++----- i2p2www/pages/site/research/papers.html | 2 -- 13 files changed, 32 insertions(+), 34 deletions(-) diff --git a/i2p2www/pages/site/docs/protocol/i2np.html b/i2p2www/pages/site/docs/protocol/i2np.html index 3ee58d06..02ea85b2 100644 --- a/i2p2www/pages/site/docs/protocol/i2np.html +++ b/i2p2www/pages/site/docs/protocol/i2np.html @@ -226,7 +226,7 @@ Others listed in 2003 Spec

      {% trans %}Full Protocol Specification{% endtrans %}

      -

      {% trans i2npspec=site_url('docs/specs/i2np'), commonstructures=site_url('docs/specs/common-structures') -%} +

      {% trans i2npspec=site_url('docs/spec/i2np'), commonstructures=site_url('docs/spec/common-structures') -%} On the I2NP Specification page. See also the Common Data Structure Specification page. diff --git a/i2p2www/pages/site/docs/tunnels/implementation.html b/i2p2www/pages/site/docs/tunnels/implementation.html index b10288ee..3c8989a3 100644 --- a/i2p2www/pages/site/docs/tunnels/implementation.html +++ b/i2p2www/pages/site/docs/tunnels/implementation.html @@ -328,8 +328,8 @@ Client peer selection is discussed further on the

      {% trans %}Peer Ordering within Tunnels{% endtrans %}

      -

      {% trans pdf='http://prisms.cs.umass.edu/brian/pubs/wright-tissec.pdf', -pdf2008='http://prisms.cs.umass.edu/brian/pubs/wright.tissec.2008.pdf' -%} +

      {% trans pdf='http://forensics.umass.edu/pubs/wright-tissec.pdf', +pdf2008='http://forensics.umass.edu/pubs/wright.tissec.2008.pdf' -%} Peers are ordered within tunnels to deal with the predecessor attack (2008 update). diff --git a/i2p2www/pages/site/docs/tunnels/old-implementation.html b/i2p2www/pages/site/docs/tunnels/old-implementation.html index f4ad6217..88c5c40d 100644 --- a/i2p2www/pages/site/docs/tunnels/old-implementation.html +++ b/i2p2www/pages/site/docs/tunnels/old-implementation.html @@ -531,6 +531,6 @@ reordering, rerouting, or padding messages? To what extent should this be done automatically, how much should be configured as a per tunnel or per hop setting, and how should the tunnel's creator (and in turn, user) control this operation? All of this is left as unknown, to be worked out for -I2P 3.0

      +I2P 3.0

      {% endblock %} diff --git a/i2p2www/pages/site/get-involved/bounties/unit-tests.html b/i2p2www/pages/site/get-involved/bounties/unit-tests.html index 5cfb6e3a..9a14fe2c 100644 --- a/i2p2www/pages/site/get-involved/bounties/unit-tests.html +++ b/i2p2www/pages/site/get-involved/bounties/unit-tests.html @@ -42,11 +42,11 @@ The server needs to be run long term. {% trans euro=150 %}Bounty: {{ euro }} € {%- endtrans %} {{ _('paid to str4d') }}
      -

      {% trans -%} +

      {% trans clover='https://www.atlassian.com/software/clover/overview' -%} To collect this bounty, the existing SDK tests must be checked and made to work again. The need to be integrated into the ant build scripts ("ant test"), and tied in with a code coverage tool (e.g. -Clover). The ant script +Clover). The ant script must be capable of generating test status results as a web page, which will be published online. {%- endtrans %}

      diff --git a/i2p2www/pages/site/get-involved/develop/licenses.html b/i2p2www/pages/site/get-involved/develop/licenses.html index a009fef5..9010e94e 100644 --- a/i2p2www/pages/site/get-involved/develop/licenses.html +++ b/i2p2www/pages/site/get-involved/develop/licenses.html @@ -137,7 +137,7 @@ to what licenses meet the above four guarantees for inclusion in the I2P distrib mihi - SAM Bridge + SAM Bridge apps/sam sam.jar @@ -150,12 +150,12 @@ to what licenses meet the above four guarantees for inclusion in the I2P distrib human - SAM perl library + SAM perl library apps/sam/perl SAM.pm - Artistic + Artistic Public domain
      Cryptix
      @@ -164,7 +164,7 @@ to what licenses meet the above four guarantees for inclusion in the I2P distrib BrianR - SAM C library + SAM C library apps/sam/c libSAM @@ -177,7 +177,7 @@ to what licenses meet the above four guarantees for inclusion in the I2P distrib Nightblade - SAM Python library + SAM Python library apps/sam/python i2p.py @@ -190,7 +190,7 @@ to what licenses meet the above four guarantees for inclusion in the I2P distrib Connelly - SAM C# library + SAM C# library apps/sam/csharp/ n/a @@ -269,9 +269,9 @@ to what licenses meet the above four guarantees for inclusion in the I2P distrib

      {{ _('GPL + java exception') }}

      -

      {% trans -%} +

      {% trans gpl='https://www.gnu.org/licenses/gpl.html' -%} While it may be redundant, just for clarity the -GPL'ed code included within +GPL'ed code included within I2PTunnel and other apps must be released under the GPL with an additional "exception" explicitly authorizing the use of Java's standard libraries: {%- endtrans %}

      diff --git a/i2p2www/pages/site/get-involved/develop/signed-keys.html b/i2p2www/pages/site/get-involved/develop/signed-keys.html index bbbf0296..3befbb97 100644 --- a/i2p2www/pages/site/get-involved/develop/signed-keys.html +++ b/i2p2www/pages/site/get-involved/develop/signed-keys.html @@ -7,7 +7,7 @@ verified differently, since he's away, and only left a binary detached signature for his key. {%- endtrans %}

        -
      1. {{ _('Monotone keys for zzz') }}
      2. +
      3. {{ _('Monotone keys for zzz') }}
      4. {{ _('Monotone keys for welterde') }}
      5. {{ _('Monotone keys for Complication') }}
      6. {{ _('Monotone keys for jrandom') }}
      7. diff --git a/i2p2www/pages/site/get-involved/donate.html b/i2p2www/pages/site/get-involved/donate.html index 546a1f8f..3d4e7c3b 100644 --- a/i2p2www/pages/site/get-involved/donate.html +++ b/i2p2www/pages/site/get-involved/donate.html @@ -81,14 +81,14 @@ You can donate direct via PayPal to the account "{{ account }}".
        -

        Flattr

        +

        Flattr

        {{ _('Flattr this') }}

        -

        Bitcoin

        +

        Bitcoin

        {% trans account='1HkJCceXf7of1sTNRVJbXiZHfDTLL71Siy' -%} -As of December 2010, eche|on has been running a Bitcoin account for the I2P project. +As of December 2010, eche|on has been running a Bitcoin account for the I2P project. If you'd like to donate using Bitcoin, just transfer your desired amount of coins to the account {{ account }} and leave eche|on a note if you'd like your donation to be mentioned on the I2P webpage. {%- endtrans %}

        diff --git a/i2p2www/pages/site/get-involved/guides/monotone.html b/i2p2www/pages/site/get-involved/guides/monotone.html index e7c783a3..362b62f1 100644 --- a/i2p2www/pages/site/get-involved/guides/monotone.html +++ b/i2p2www/pages/site/get-involved/guides/monotone.html @@ -260,7 +260,7 @@

        {% trans -%} - More information about Trust Evauluation Hooks can be found in the official Monotone documentation. + More information about Trust Evauluation Hooks can be found in the official Monotone documentation. {%- endtrans %}

        diff --git a/i2p2www/pages/site/get-involved/guides/new-developers.html b/i2p2www/pages/site/get-involved/guides/new-developers.html index a2d0178a..277b62f0 100644 --- a/i2p2www/pages/site/get-involved/guides/new-developers.html +++ b/i2p2www/pages/site/get-involved/guides/new-developers.html @@ -51,7 +51,7 @@ Monotone is a version control system. We use it because it allows us to keep track of who does what changes to the source code (and for a lot of complicated things, but 'keeping track of changes' is the basic idea). {%- endtrans %}
      8. {% trans -%} -Skim over the monotone tutorial, to make sure you understand the concepts. +Skim over the monotone tutorial, to make sure you understand the concepts. {%- endtrans %}
      9. {% trans -%} @@ -102,7 +102,7 @@ The initial pull may take several hours using the tunnel. If it fails after a partial pull, simply rerun it, it will start where it left off. If you are in a hurry, use the non-anonymous access. {%- endtrans %}

        -

        {% trans viewmtn='http://stats.i2p/cgi-bin/viewmtn/' -%} +

        {% trans viewmtn='http://'+i2pconv('stats.i2p')+'/cgi-bin/viewmtn/' -%} A full list of branches, including i2p.i2p and i2p.www can be found on viewmtn. {%- endtrans %}

        {% trans monotone=site_url('get-involved/guides/monotone') -%} @@ -111,7 +111,7 @@ A long explanation about using monotone is available on the {% trans %}Building I2P{% endtrans %} -

        {% trans sunjdk6='http://java.sun.com/javase/downloads/index.jsp' -%} +

        {% trans sunjdk6='http://www.oracle.com/technetwork/java/javase/downloads/index.html' -%} To compile the code, you need the Sun Java Development Kit 6 or higher, or equivalent JDK (Sun JDK 6 strongly recommended) and Apache ant diff --git a/i2p2www/pages/site/get-involved/guides/new-translators.html b/i2p2www/pages/site/get-involved/guides/new-translators.html index 82754f24..43849b96 100644 --- a/i2p2www/pages/site/get-involved/guides/new-translators.html +++ b/i2p2www/pages/site/get-involved/guides/new-translators.html @@ -16,7 +16,7 @@ Alternatively it can be done "the old way" as outlined below.

      10. {% trans %}Preparation{% endtrans %}
          -
        1. {% trans url='http://ugha.i2p/i2pTranslation' -%} +
        2. {% trans url='http://'+i2pconv('ugha.i2p')+'/i2pTranslation' -%} Come to #i2p-dev on irc and talk to people. Claim the language - To make sure other coworkers don't bump onto the files you are working on, @@ -81,7 +81,7 @@ Alternatively it can be done "the old way" as outlined below.
        3. {% trans %}Preparation{% endtrans %}
            -
          1. {% trans url='http://ugha.i2p/i2pTranslation' -%} +
          2. {% trans url='http://'+i2pconv('ugha.i2p')+'/i2pTranslation' -%} Come to #i2p-dev on irc and talk to people. Claim the language - To make sure other coworkers don't bump onto the files you are working on, diff --git a/i2p2www/pages/site/get-involved/todo.html b/i2p2www/pages/site/get-involved/todo.html index 4d988452..166d8e11 100644 --- a/i2p2www/pages/site/get-involved/todo.html +++ b/i2p2www/pages/site/get-involved/todo.html @@ -49,7 +49,7 @@ Advanced tunnel operation (batching/mixing/throttling/padding) Stop & go mix w/ garlics & tunnels {%- endtrans %}
    -

    {{ _('Performance') }} [{{ _('link') }}]

    +

    {{ _('Performance') }} [{{ _('link') }}]

    {{ _('Core functionality') }}

      @@ -299,8 +299,8 @@ Strict ordering of participants within tunnels

    {% trans link='http://article.gmane.org/gmane.network.i2p/22/', -pdf1='http://prisms.cs.umass.edu/brian/pubs/wright-tissec.pdf', -pdf2='http://prisms.cs.umass.edu/brian/pubs/wright.tissec.2008.pdf' -%} +pdf1='http://forensics.umass.edu/pubs/wright-tissec.pdf', +pdf2='http://forensics.umass.edu/pubs/wright.tissec.2008.pdf' -%} As Connelly proposed to deal with the predecessor attack (2008 update), keeping the order of peers within our tunnels consistent diff --git a/i2p2www/pages/site/links.html b/i2p2www/pages/site/links.html index 53d5be6a..eb137ba3 100644 --- a/i2p2www/pages/site/links.html +++ b/i2p2www/pages/site/links.html @@ -2,16 +2,16 @@ {% block title %}{{ _('Links') }}{% endblock %} {% block content %}

    {{ _('Recommended Links & Resources') }}

    -

    {% trans papers=site_url('about/papers') -%} +

    {% trans media=site_url('about/media') -%} See also the page with -links to papers, presentations, videos, and tutorials about I2P. +links to presentations, videos, and tutorials about I2P. {%- endtrans %}

    @@ -72,8 +75,7 @@ or type java -version at your command prompt. i2pinstall_{{ ver() }}.jar ({{ def_mirror.org }}) ({{ _('select alternate link') }})
    - (SHA256 -9fae874a4d680f50f5efd7be70cfcf55f2f4687e011bde9c4b4899bafb002e97 + (SHA256 {{ i2pinstall_jar_sig }} sig)
    @@ -106,8 +108,7 @@ or type java -version at your command prompt.
    i2p-android-0.9.7.1-0_b4-API8.apk
    - (SHA256 -a6120e19186246458a01e498eeb9e5afcb3901b9c058244410bda85d5a474113 + (SHA256 {{ i2p_android_sig }} )
    @@ -134,8 +135,7 @@ or type java -version at your command prompt. i2psource_{{ ver() }}.tar.bz2 ({{ def_mirror.org }}) ({{ _('select alternate link') }})
    - (SHA256 -7b73bdb23c53798054741cbaa4e7d8cce832ee566fbb17df0c803d0c22d099e1 + (SHA256 {{ i2psource_sig }} sig)
    @@ -264,8 +264,7 @@ receive the release. i2pupdate_{{ ver() }}.zip ({{ def_mirror.org }}) ({{ _('select alternate link') }})
    - (SHA256 -69ca22a77a2de87f726d86555317f8688891d31f5312cf71d5a43febe2729b38 + (SHA256 {{ i2pupdate_sig }} sig)
    From 0e774d2f848e170e6694f74f72b0ed5f03712825 Mon Sep 17 00:00:00 2001 From: str4d Date: Mon, 12 Aug 2013 13:17:02 +0000 Subject: [PATCH 531/650] ./bibtex.html -> ./bibtex --- i2p2www/anonbib/BibTeX.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/i2p2www/anonbib/BibTeX.py b/i2p2www/anonbib/BibTeX.py index 110e5ff3..bc42c3f4 100644 --- a/i2p2www/anonbib/BibTeX.py +++ b/i2p2www/anonbib/BibTeX.py @@ -509,7 +509,7 @@ class BibTeXEntry: res[0:0] = [""] res.append(".") - bibtexurl = "./bibtex.html#%s"%url_untranslate(self.key) + bibtexurl = "./bibtex#%s"%url_untranslate(self.key) res.append((" " "(BibTeX entry)" "") %bibtexurl) From 7509c1b065b8938681a25fa95bdae802a1197157 Mon Sep 17 00:00:00 2001 From: str4d Date: Mon, 12 Aug 2013 13:22:40 +0000 Subject: [PATCH 532/650] Make section slugs safer --- i2p2www/anonbib/views.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/i2p2www/anonbib/views.py b/i2p2www/anonbib/views.py index b98876f1..7e1434cf 100644 --- a/i2p2www/anonbib/views.py +++ b/i2p2www/anonbib/views.py @@ -43,7 +43,7 @@ def papers_list(tag='', choice='date'): for section, entries in rbib: s = { 'name': section, - 'slug': section, + 'slug': BibTeX.url_untranslate(section), 'entries': entries, } sections.append(s) From 205bec10b8356d186b298bbd60c650913c7666e5 Mon Sep 17 00:00:00 2001 From: str4d Date: Mon, 12 Aug 2013 14:18:28 +0000 Subject: [PATCH 533/650] Updated PDF locations --- i2p2www/pages/papers/anonbib.bib | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/i2p2www/pages/papers/anonbib.bib b/i2p2www/pages/papers/anonbib.bib index 8ee2f846..672ddeb1 100644 --- a/i2p2www/pages/papers/anonbib.bib +++ b/i2p2www/pages/papers/anonbib.bib @@ -158,7 +158,7 @@ year = {2009}, month = {March}, pages = {49--58}, - www_pdf_url = {http://freehaven.net/~karsten/volatile/petcon-proceedings-2009.1.pdf}, + www_pdf_url = {https://people.torproject.org/~karsten/petcon-proceedings-2009.1.pdf}, www_section = comm, } @@ -170,7 +170,7 @@ year = {2009}, month = {March}, pages = {59--70}, - www_pdf_url = {I2P-PET-CON-2009.1.pdf}, + www_pdf_url = {/_static/pdf/I2P-PET-CON-2009.1.pdf}, www_section = comm, } @@ -180,6 +180,6 @@ howpublished = {Design document}, year = {2003}, month = Aug, - www_pdf_local = {i2p_philosophy.pdf}, + www_pdf_url = {/_static/pdf/i2p_philosophy.pdf}, www_section = comm, } From 1ce4f0f86c1c8191c5b8a53a1d5075766fdf7fa1 Mon Sep 17 00:00:00 2001 From: str4d Date: Mon, 12 Aug 2013 14:23:05 +0000 Subject: [PATCH 534/650] unpublished -> preprint --- i2p2www/pages/papers/anonbib.bib | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/i2p2www/pages/papers/anonbib.bib b/i2p2www/pages/papers/anonbib.bib index 672ddeb1..73b59b1e 100644 --- a/i2p2www/pages/papers/anonbib.bib +++ b/i2p2www/pages/papers/anonbib.bib @@ -94,11 +94,12 @@ %% inria-00632259, version 1 %% http://hal.inria.fr/inria-00632259 -@unpublished{timpanaro:inria-00632259, +@misc{timpanaro:inria-00632259, hal_id = {inria-00632259}, url = {http://hal.inria.fr/inria-00632259}, title = {{Monitoring the I2P network}}, author = {Timpanaro, Juan Pablo and Chrisment, Isabelle and Festor, Olivier}, + howpublished = {Preprint}, abstract = {{We present the first monitoring study aiming to characterize the usage of the I2P network, a low-latency anonymous network based on garlic routing. We design a distributed monitoring architecture for the I2P network and we show through a one week long experiment that we are able to identify 32\% of all running applications, among web servers and file- sharing clients. Additionally, we identify 37\% of published I2P applications, which turn out to be unreachable after its publication on the I2P distributed database.}}, language = {English}, affiliation = {MADYNES - INRIA Lorraine - LORIA}, From 8ffe50daa2f34a9532c2d55aa60e353b0f4034d2 Mon Sep 17 00:00:00 2001 From: str4d Date: Wed, 14 Aug 2013 22:04:38 +0000 Subject: [PATCH 535/650] Updated sites in footer --- i2p2www/pages/global/footer.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/i2p2www/pages/global/footer.html b/i2p2www/pages/global/footer.html index f6f49979..657b1134 100644 --- a/i2p2www/pages/global/footer.html +++ b/i2p2www/pages/global/footer.html @@ -1,14 +1,14 @@ From e3d2a4a2c27f94cba7af701d9a738a309d05ade2 Mon Sep 17 00:00:00 2001 From: str4d Date: Wed, 14 Aug 2013 22:17:17 +0000 Subject: [PATCH 536/650] Added latest meetings --- i2p2www/meetings/logs/221.log | 319 ++++++++++++++++++++++ i2p2www/meetings/logs/221.rst | 19 ++ i2p2www/meetings/logs/222.log | 354 ++++++++++++++++++++++++ i2p2www/meetings/logs/222.rst | 17 ++ i2p2www/meetings/logs/223.log | 165 ++++++++++++ i2p2www/meetings/logs/223.rst | 13 + i2p2www/meetings/logs/224.log | 489 ++++++++++++++++++++++++++++++++++ i2p2www/meetings/logs/224.rst | 37 +++ i2p2www/meetings/logs/225.log | 108 ++++++++ i2p2www/meetings/logs/225.rst | 12 + 10 files changed, 1533 insertions(+) create mode 100644 i2p2www/meetings/logs/221.log create mode 100644 i2p2www/meetings/logs/221.rst create mode 100644 i2p2www/meetings/logs/222.log create mode 100644 i2p2www/meetings/logs/222.rst create mode 100644 i2p2www/meetings/logs/223.log create mode 100644 i2p2www/meetings/logs/223.rst create mode 100644 i2p2www/meetings/logs/224.log create mode 100644 i2p2www/meetings/logs/224.rst create mode 100644 i2p2www/meetings/logs/225.log create mode 100644 i2p2www/meetings/logs/225.rst diff --git a/i2p2www/meetings/logs/221.log b/i2p2www/meetings/logs/221.log new file mode 100644 index 00000000..1e050604 --- /dev/null +++ b/i2p2www/meetings/logs/221.log @@ -0,0 +1,319 @@ +21:01:00 So, who is here? +21:01:11 Me. +21:01:18 o/ +21:01:37 i'm here :) +21:02:10 eche|on, Meeh, KillYourTV, psi, hottuna +21:02:21 count me in too (as a spectator) +21:02:28 * nom is listening, while coding on some side projects +21:02:39 Feel free to contribute if you feel you have something to add. +21:03:04 * dg waits a minute or two more +21:03:27 rundown of topics in the meantime dg? +21:03:42 Topics: +21:03:45 * Motivating the community - "are bounties appropriate?" +21:03:45 * Managing money +21:03:46 ** Making the project "official" - benefits/negatives/how +21:04:24 i had something to add *thinks* +21:04:31 hm? +21:06:37 * lillith can't remember... probably nothing too important anyway :) +21:09:14 * dg frowns at the lack of others +21:09:44 * LaughingBuddha spectates +21:10:27 Let's start then +21:10:54 * lillith remembered! +21:10:59 hm? +21:11:14 RN: ping +21:11:25 as kytv|away pointed out, if we're deciding on voting we need some sort of elegibility criteria :) +21:11:49 aye +21:12:07 Let's get started +21:12:10 * Motivating the community - "are bounties appropriate?" +21:12:13 i expect asdfsdafsdafsd wishes to be invluded int points 1+2 :) +21:12:24 Are bounties working? +21:12:43 Everything merged into one big argument last time over bounties, management and BTC so trying to spread it out this time & be dignified. +21:12:53 Who's the guy for bounties? eche|on? +21:13:00 yep +21:13:11 Is he here? +21:13:11 Determining if bounties are working depends on what the defined purpose of a bounty is. +21:13:11 define "working". Are they, IMO, bringing in the developers or fixes we need? No. +21:13:18 he's in control of all money - point 2 :) +21:13:25 Then let's think of something else. +21:13:40 The bounty system does not seem to be working for even the bounties themselves. +21:13:54 i think there should be some sort of benefit or incentive further than loving i2p +21:14:09 A lot of the links on the page are 404s too but that's an unrelated issue +21:14:12 From the bounties page: " Instead, we are making use of a bounty system, whereby anyone can get support for working on something that people want implemented, and people who want to contribute to I2P can be assured that their support goes to what they care about." +21:14:12 we have to draw people in then keep them with our charm and civility ;) +21:14:23 Not that I'm in the position to work on any of the bounties, but they seemed to quite vague last time i looked at them +21:14:30 to be* +21:14:37 The only thing that will draw attention to I2P is content. +21:14:45 eche|on posted his thoughts here - http://zzz.i2p/topics/1359 - if he could not attend. +21:14:48 imo bounties do not work, because a code base is only as good as its maintenance, and paying someone for 'completion' gives the wrong ideas/incentives about what we need in terms of developers, for code to be worth using on a distributed scale, it has to be continually worked on by motivated people. having one person create a code base, get paid and possibly disappear does nothing to benefit the community +21:14:51 Title: zzz.i2p: Managing the project (at zzz.i2p) +21:14:57 str4d: instead, as opposed to...? +21:15:17 From that statement above, the purpose of bounties would seem to be to finance one-off drives to get specific features implemented. +21:15:20 are bounties appropriate? - I think it depends, imo bounties for devs, for particular project and where no contest/conmpetiotion is involved - in such cases they are appropriate +21:15:26 nom: it worked in the past if you look at the bounty page.. +21:15:30 str4d: Is that what we want? +21:15:41 nom: agreed +21:15:48 Does that work? Somewhat. +21:16:03 weltende, exactly. There are clear examples of bounties being taken. +21:16:18 http://www.i2p2.de/bounties.html +21:16:29 Title: Bounties - I2P (at www.i2p2.de) +21:16:34 Bounty uptake IS slow, due to a lack of visibility/advertising/marketing/whatever, but the bounties are slowly getting taken. +21:16:41 I don't know if the bounties which are being fufilled are perhaps not being fufilled the way we want too. +21:17:03 But, of the claimed bounties, not a single developer is currently with I2P. +21:17:10 For example: "Datastore over I2P" - "CLAIMED for 700 " - "duck, smeghead" +21:17:20 perhaps, change bounties to ..... and maintain your work for a reasonable time +21:17:23 to get actual continuous development going, a better model is one of project/stipends, where people donate to a project with stated goals, and the people running that project pay the money out continuously to people who are actively working to accomplish those goals +21:17:34 The solution was, IMO, hacky, the bountry $$$ was rather high for the hack and the two developers for that bounty are nowhere to be found. +21:17:46 dg: that's irrelevant - as per the current bounty outline, it is up to the donor to decide on the completion. +21:18:01 What if multiple donors exist? +21:18:08 First donor. +21:18:11 I don't like bounties. IMO, the one way to draw developers in is to draw attention to I2P. +21:18:15 (as per current outline) +21:18:21 lillith: not really needed imho if it's in the core router.. +21:18:25 If a bounty is funded by I2P, then it does become relevant as I2P itself is the judge. +21:18:32 Oh. That doesn't seem right. :s. +21:18:54 IMO, the best way to draw attention to I2P is by providing content. +21:19:06 Right, but some of the bounties can lead to content. +21:19:13 I'm not arguing for the current bounty system, just outlining it. +21:19:44 str4d: right, and thanks. +21:20:03 honestly i think a big part of the problem is that were conflating things that are directly part of the i2p code base, with things that are simply run ontop of i2p. ex translation vs datastore +21:20:03 The biggest problem with a semi-anonymous project like I2P is developer retention. The current bounty model does nothing to help that. +21:20:42 I'm against the bounty system as it doesn't help the ecosystem we have, evidently (none of the developers are here today..) and I feel project funds could be better allocated. +21:20:57 a bounty/payment for one person to do one specific part of the code base is fine in theory, but they don't work for creating continuous development of apps/systems that run ontop of i2p +21:21:12 I concur. +21:21:17 dg: well.. if there aren't taken, then the money isn't spent.. +21:21:54 weltende: The funds are in reserve, they cannot be spent as they are allocated for spending on $bounty. +21:21:57 like adding unit tests to i2p could be worth a bounty, but it would probably be better to make an arrangement with coders who will be paid a small amount continuously to keep adding more unit tests as needed +21:22:03 if you however think that for a certain bounty the code isn't good enough or so.. it might be a good idea to specify more clearly in the bounty description what needs to be done +21:22:26 dg: which is only a problem if we have to spend the money right away +21:23:01 it's not reserved forever as you can see in the bounty page.. funds have gone back to the money pool before +21:23:21 weltende: I doubt we will ever be at the point where we NEED the funds allocated to bounties but it seems redundant. +21:23:44 Fund allocation is beside the current point. +21:23:59 dg: exactly my point +21:24:11 dg: are competitions included in bounties or are they point 1.5? +21:24:14 There will always be money, in one way or another. +21:24:26 (Or not) +21:24:29 i think the datastore is a great example of where bounties shouldn't be used, for something as complex as a universal datastore to be viable, it has to be its own project with active developers, paying someone for completion will get you something that is marginally functional, but it will never improve +21:24:40 ^ +21:24:40 nom: agreed. +21:24:43 lillith: Competitions hadn't occurred to me but I suppose it would be the point after this. +21:24:46 Let me refer to the i2p artwork contest for 29c3 - Was that really a dev project? Was it appropriate to use bounties in it? While there was no even strict criteria stated? +21:24:57 The result will satisfy the bounty, but likely will not scale. +21:25:00 nom: Couldn't have said it better myself. +21:25:26 nom: torrents were nothing but a bounty either.. +21:25:34 Umlaut: i thought they were echelons personal funds? +21:25:54 if I was willing to contribute to the contest, the bounty would rather discourage me? +21:26:01 (most) bounties are set by users - between giving them a choice and them not donating at all, at least with a bounty they have some say in what happens +21:26:32 to put it another way... there are no bounties at google.... +21:26:32 LaughingBuddha really? then sorry, I wasn't aware about that +21:26:32 weltende yes but zzz is continuing to work on snark isn't he? +21:26:47 If I2P had an established structure for spinning off projects (or acting as an umbrella for them) then that would be a different matter (but that ties in to the later point about "official"ness). +21:26:51 Umlaut: I might be mistaken but I thought i read that somewhere +21:27:04 I think that bounties are useful, but not in the way that they are currently being marketed. +21:27:08 LaughingBuddha: all i2p's funds are technically eche|on's personal money +21:27:11 nom: zzz was around anyway though. I think his motivations and such are different than gaining rewards and the bounty program has little to do with it. I do not believe he gained anything from the torrent bounty either. +21:27:18 And that they shouldn't be the main focus. +21:27:21 nom: yes.. but without the bounty there wouldn't have been a codebase to begin with.. (and he was not part of the bounty dev team) +21:27:21 We'll get to the money later.. +21:27:40 lillith: Doesn't he "manage" it? +21:27:47 dg: ok +21:28:10 weltende, you are making a good point. +21:28:14 i2p is no legal entity, so it can't own anything. hence it is eche|on's personal money. +21:28:29 Bounties are useful for kickstarting code, not for continued development. +21:28:36 lillith: I see +21:28:36 if you want continuous development you should pay developers continuously to work on things they want to work on. donating money to get something done is fine, but it shouldn't be given as a lump sum to whoever can get an 0.0.1 working first, it should be used to fund project development over time +21:28:39 he could legally leave with it all one day (he wouldnt', but he could) +21:28:48 nom: and I don't really see your point with no bounties at google.. the people that work for google get paid to work there.. +21:28:52 ^this +21:29:27 But it seems we agree with the first part of nom's statement. No? +21:29:30 eg bounty of $X per month to work on something +21:29:45 Yeah +21:29:52 or perhaps define milestones in the bounty? +21:29:56 Seems like a good solution +21:30:07 (and upon reaching milestone $X you get $Y amount of money) +21:30:07 That sounds good. +21:30:14 milestones seem like a good idea +21:30:17 but they need to be clearly outlined +21:30:20 Milestones + continuous payment? +21:30:20 lol thats what my point was, they get paid, and they do work, and the work they do isn't directly connected with how they get paid. ofc if they stopped doing work, they would stop getting paid, but their not getting paid for completing a specific piece of code, their getting paid enough to live on and spend their lives coding +21:30:23 Milestones is sort of like what the Unit Tests bounty currently has. +21:30:27 is it eche|on we have to ask nicely to change the website etc? +21:30:38 no, website is in mtn +21:30:41 nom I agree with your point, paying to the devs who are reliable and known for being good contributors +21:30:44 lillith: no, anyone can change the website. +21:30:54 Or keep a part of the bounty as a "continued support" payment per month of the application/whatever +21:31:22 So we don't get outdated apps, libs, etc. +21:31:29 Would the project be judged at every milestone then? +21:31:44 LaughingBuddha: good point. Who by? +21:32:00 eh, milestones are just smaller bounties... a simpler solution is to have a pool of money for a project, and someone/group of someones who pay the money to people who are actively working on it +21:32:03 The "board"? (Againg, getting to this later). +21:32:10 Dev board? +21:32:10 yeah +21:32:29 generally you would end up with the dev board being the same people who are getting paid ofc... +21:32:46 to make anything decided upon here 'official', is that as simple as someone checking an update to the website into mtn? +21:32:55 how many active devs are there working on the i2p codebase? +21:32:58 also you need to take under consideration how the current donating system looks from the potential donor (someone new to i2p community especially) point of view +21:33:04 LaughingBuddha: one +21:33:07 lillith: Kinda. And posting ot zzz.i2p. ;_; +21:33:15 The dev board determine the state of $project and decide if it should continue to get funding? +21:33:18 i could be one of them +21:33:25 LaughingBuddha: 2, 3? +21:33:32 hmm +21:33:47 the board / employees model seems to work pretty well for 99% of the corporations in the world. you have a group of people who are the most committed and have already contributed a lot who manage the money, and you have people who join and contribute and get paid for their efforts based on the judgement of the long time contributors +21:33:54 What if we set up a board of min. 5 people who are knowledgeable on the subject? +21:34:01 Devs + Users +21:34:09 and i would trust the system more if there was more than one person, something like mentioned already dev-board which handles the money +21:34:24 What if you had to pay to be on the board? +21:34:31 wut +21:34:38 (this only works tho if you can separate i2p proper projects, from projects that just run on i2p, which should not be managed by the i2p dev team itself) +21:34:38 orion: not a good model. +21:34:47 inb4 Russian oligarch takes over I2P +21:34:57 haha +21:35:06 inb4 already happened, zzz = vladimir +21:35:10 Pay in code. +21:35:29 And how do you measure how much you have to pay? +21:35:32 200 lines of code? +21:35:35 some people are big contributers without coding +21:35:46 No idea, just brainstorming. +21:35:49 like any oligarchy the only natural system is election by the existing board +21:35:49 Exactly. +21:36:03 So, would the normal "dev" (team) board (coming up later) decide if $project is worth paying out to? +21:36:15 Overcomplication will lead to it not being done +21:36:22 3 tiers: inner circle, outer circle, others +21:36:30 lillith: i like that +21:36:37 other = new/ unknown people +21:36:51 outer circle = known/ trusted people +21:36:51 because we don't seem to have enough devs for a real judge panel +21:37:02 dg I would think so as the devs should know *best* what project are most important/urgent/worth spending money on +21:37:05 inner circle voted for by outer circle +21:37:20 its a hierarchy, the i2p project as a whole is more than just the i2p dev team, but they are the tip of the spear so to speak. they get / have the most donations / resources. but other projects built ontop of i2p wouldn't be managed by the i2p dev team, but could get funding from i2p proper +21:37:23 kind like meetings but more structured hierachally +21:38:13 imo <+dg> Overcomplication will lead to it not being done +21:38:37 +1 +21:39:15 The whole (team/dev) "board" idea ties in nicely as we will be discussing this next anyway +21:39:22 Should we leave this for another time or ...? +21:39:28 in short, zzz eche and whoever else they consider to be part of the 'board' of i2p are in charge of the money/decisions (they already are), and other projects on i2p should be structured similarly with their own boards of decision makers. instead of bounties for a sub project (datastore, btc client, etc) the bountie should be given to the board for that project, and let them decide how to spend it to get things done +21:39:39 so shall we get back on topic or has bouties been discussed to death? +21:40:49 and the decision to give a bounty to a board of devs for a project obviously has to be made by the board of i2p, that way you don't have 3 people show up, say their gonna do something, get the money and then never do it. +21:41:13 nom: +1 +21:41:21 nom: +1 +21:41:24 nom: I think it's payed out upon completion +21:41:34 nom++ +21:41:46 nom: +1 +21:41:54 I think that's a good note to end on? :) +21:42:14 Agreed +21:42:24 in the future it would be better for donators to give directly to the sub project if a board/group already exists, instead of donating to eche to create a bounty. since if theres already a group working on it, they would be the best to determine how to use the money to accomplish those goals +21:42:53 ok, moving on +21:42:58 nom that makes perfect sense +21:43:01 nom++ +21:43:11 * nom raises his glass, cheers mates +21:43:18 I feel we have covered "managing money" mostly and it comes under "making the project official" anyway +21:43:21 :) +21:43:21 So let's do the latter? +21:43:47 clarify the position on money first for lurkers? +21:43:54 for an e.V. we would at least 7 people who are willing to go public as members +21:43:55 Official = Register as Organisation? +21:44:26 LaughingBuddha: yes +21:44:29 in case register as a organization, in which country? +21:45:01 lillith: Bounty funds should go to teams assigned by the core I2P board.. if we go ahead with that. +21:45:04 Meeh: US, I assume? +21:45:07 that also need deanonymization of sertiant people +21:45:14 ok so who are the brave souls to give up their anonymity (if that means going official)? +21:45:17 What did you guys decide on? +21:45:20 Not necessarily the US +21:45:28 idk if 'offical' designation would really be all that useful... i honestly can't see what the benefit would be +21:45:31 presumably the people have to be in the US too? +21:45:54 nom: a legal entity to donate to +21:45:54 other than to put the project/people more on the radar of the powers that be... +21:46:06 I can give out my identity, so no problem for me.. But I guess I'm not allowed into the US, so yea. +21:46:17 Registration is stupid. +21:46:28 dg: What are the benefits? +21:46:39 Let's just spread out the money among different "accounts" managed by different people. +21:46:55 I.e, the eche|on account, the zzz account, the dg account, etc. +21:46:57 A wallet for each (sub)project? +21:47:04 LaughingBuddha: Managing the project's money under "I2P" and not a singular person, or persons. An official guise is far less suspicious and accountable. +21:47:09 No. +21:47:12 Do you think that going official would bring some real benefits to the i2p-world? +21:47:14 orion: not sure if the tax office might not find tht fishy +21:47:14 Just different "accounts". +21:47:32 * nom thinks the focus should be more on the logistics of the hierarchy of boards / democracy / voting thing. to actually have a system like that we would need either a well run website, or some sort of distributed system for it +21:47:35 dg: I see +21:47:46 it would certainly bring a lot of paperwork +21:47:54 Umlaut: no more complaining about eche|on holding the money +21:48:04 nom++ +21:48:13 * str4d@freenode clones nom's brain +21:48:14 nom: perhaps so, yeah. If we can arrange that, then we can come to a consensus on this.. +21:48:44 For the record, if you guys want to do something that requires giving up anonymity, I will do it. +21:48:57 git clone http://git.repo.i2p/repo/nom.git +21:49:00 I'd consider it +21:49:03 Going "official" is primarily a financial decision IMHO; it doesn't really contribute to the structure. +21:49:22 Even though I am opposed to the idea of going to the government, I will do it if that is what the project decides is best. +21:49:40 So, let's change the focus to the organizational structure +21:49:51 (As that supercedes this anyhow) +21:50:06 str4d: well.. e.V. requires the members to vote for an board once a year... so we already have procedure for voting for the board then ;) +21:50:14 "The Debian project only allows voting to be done by 'Debian Developers' (where "$developer" = "any sort of contributor"). If there is any sort of voting system enabled here it would need to be limited in a similar fashion, otherwise the system would be ripe for abuse, allowing for a small but vocal clique to push its demands through." +21:50:21 Should we adopt a similar approach? +21:50:25 (for the e.V.) +21:50:44 how much do you need to contribute to be a contributer? +21:50:59 The problem with the "Debian Developers" approach is the number of developers I2P has (very few) +21:51:05 ie is being active in #i2p-help enough? +21:51:25 we must find a definition on contributer +21:51:33 for what? +21:51:36 * lillith does not read 'contributer' as 'code contributer' +21:51:55 str4d: "any sort of contributor". +21:51:59 sigint: read scrollback on sighup ;) +21:52:10 will do +21:52:12 dg, yeah, just read that part *derp* +21:52:12 org structure is pretty simple in theory, just have a three tiered system of board members (elected by the existing board oligarchy), contributors (elected at large by the existing group of contributors), and users (everyone else, including people who /want/ to be seen as contributors, but havn't been around long enough for people generally to trust them) +21:52:27 sighup's like your little brother ;) +21:52:39 it all depends on the scale of contribution, reliability of the contributor and other factors +21:53:06 sorta like, royalty, nobility, and the commoners.... +21:53:13 reliability = being trusted by others +21:53:16 maybe a good start will be starting with rough numbers and working from there? +21:53:31 nom i'm actaually referring to what you have said +21:54:09 not reliable = someone who promised to do something, raised some hope and then run away (with a bounty..) +21:54:24 hmm yah +21:55:35 nom: "existing"? +21:56:15 I gotta go. In closing I just want to say that having funds in one central location makes it easier to steal by oppressive governments, and that if we need to do something which requires giving up my anonymity, I will do it. Cya +21:56:26 perhaps, supreme court(board), senate(contributors) and house(users) would be better... the board has the real control over all the decisions, but they take into account the votes of the contributors who are trusted identities, and the votes of the general population of users too, but you don't weigh that too much as theres no real protection against people making tons of user idents to vote with +21:56:33 bye orion :) +21:56:37 Should we cut now and continue this next week at the same time? +21:56:40 o/ orion +21:56:50 An hour is long, I don't want this to drag on. +21:57:04 Whatever you want. +21:57:07 dg: i'm up for that +21:57:17 I'm happy to continue next week. +21:57:26 gives time to ponder what has already been said +21:57:29 sure, sounds good +21:57:31 We need to think this over. +21:57:43 And hopefully a few more people show up then ^_^ +21:58:07 * nom thinks the main takeaway here is that we could use a site / system to have group decision making / voting on +21:58:07 yes... +21:58:14 I agree, sounds good guys. I'll update the zzz.i2p topic soon (poke me if I don't in 24 hours). +21:58:25 thanks all. :) +21:58:29 Good session +21:58:32 * lillith picks up the baffer menacingly +21:58:42 ;) go +21:58:53 thanks for letting me join +21:58:53 *baf* meeting closed :) +21:59:04 lights out! +21:59:06 thank you, and goodnight :) +21:59:19 Great. I joined in right at the end. I forgot that there even was one :| +21:59:22 inb4 massive well timed netsplit +21:59:25 brb, reading backlog +21:59:28 o/ +21:59:40 sigint timezone fail? +21:59:50 o/ sponge. +21:59:50 :-) +21:59:57 sigint: same time next week ;) say anything you missed the chance to then :) +22:00:12 orion wants to know about my ideas I see... +22:00:50 I pointed him in your direction sponge - figured pooling the creative juices was a good idea. +22:01:05 lillith: i hadn't explicitely planned on joining this meeting, but it would have been nice. no big deal though. i do have an idea that would be good to bring up in next week's meeting. +22:01:09 Yes, excellent. +22:01:32 I need people to help with my ideas... I have too many +22:01:35 idea: offer btc rewards for security vulnerabilities +22:01:39 sigint: it's dg you'll want to talk to on that then :) +22:01:41 (And orions work on i2pcpp has proven that he is good at implementing stuff ^_^) +22:01:58 sigint, post any ideas for next week in the zzz.i2p thread. +22:01:59 * lillith raises eyebrows +22:02:07 vairy interesting +22:02:10 will do diff --git a/i2p2www/meetings/logs/221.rst b/i2p2www/meetings/logs/221.rst new file mode 100644 index 00000000..aa831b9e --- /dev/null +++ b/i2p2www/meetings/logs/221.rst @@ -0,0 +1,19 @@ +I2P dev meeting, March 26, 2013 @ 21:00 UTC +=========================================== + +Quick recap +----------- + +* **Present:** + dg, + LaughingBuddha, + lillith, + Meeh, + nom, + orion, + str4d, + Umlaut, + weltende + +* **Next Meeting** + The next meeting is scheduled for Tuesday, April 2 @ 21:00 UTC (9:00PM) diff --git a/i2p2www/meetings/logs/222.log b/i2p2www/meetings/logs/222.log new file mode 100644 index 00000000..f1211097 --- /dev/null +++ b/i2p2www/meetings/logs/222.log @@ -0,0 +1,354 @@ +20:52:42 okay meeting topics for today: +20:54:22 1. Are bounties appropriate? +20:54:29 2. Managing money +20:54:29 2a. The ssl certs +20:54:32 3. Making the i2p project official +20:56:38 4. Procedure regarding decicions for the project (for example making it official) +20:56:53 for scrollback from last week if you were not here, http://sighup.i2p/irclogs/show?search=&user=&from_date=26+Mar+2013&to_date=26+Mar+2013&channels[]=#i2p-dev&per_page=3&page_format=Html +20:56:53 relevant zzz.i2p posts: http://zzz.i2p/topics/1359 for the meeting thread +20:56:53 http://zzz.i2p/topics/1366 for the bounties thread +20:57:07 Title: zzz.i2p: Managing the project (at zzz.i2p) +20:57:09 Title: zzz.i2p: I2P Bounty System - 2013 (at zzz.i2p) +20:57:55 chosen download bin file from zzz.i2p? +20:58:02 1. Are bounties appropriate, and further bounty discussion +20:58:05 Huh. Corruption again! +20:58:50 not sure who (if anyone) woud like to be pinged, so i'l go on +20:59:22 trolly: that's a bug +20:59:30 haha, no problem +20:59:41 Last week it was decided that while bounties can be a good thing they may well need some looking at +20:59:48 a trojan bug? just joking.. +20:59:59 try to nab the output of `http_proxy="http://127.0.0.1:4444/" http://zzz.i2p/whateverurlbrokebefore` and check /logs for anything important +21:00:05 it seems to be corruption, we saw this on id3nt.i2p in the past +21:00:19 i suggested some revisions of the 50 BTC syndie bounty to echelon, and he has updated it +21:01:06 which led me to two questions: can/should we employ people, ie give them a small amount of money regularly over an extended period? +21:01:57 and what exactly is the procedure on bounties funded by i2p's money, not directly from a donor +21:02:20 * lillith opens up the floor for discussion +21:04:50 dg: if it's occuring on another site, that suggests an I2P tunnel problem. +21:05:26 str4d_: This happened before, is what I am saying. I do not know if the person affected == trolly but it was a few months back and none of us had any answer. +21:05:41 * str4d_ was affected by it. +21:05:52 dg: !!! +21:05:56 Okay, more than one person. +21:06:10 I believe zab was still around at the time which may tell you the period.. +21:06:21 dr|z3d: !!! +21:06:24 But the issue is orthogonal to the current discussion =) +21:06:36 * dr|z3d lols. +21:06:47 str4d_: implying discussion ;) +21:08:32 should i2p employ people? yes and no IMO. yes the people that continue to provide services that make i2p of higher quality (such as running the default IRC network and the more popular things like id3nt.i2p) are the best candidates to receive funds... in addition to the developer stuff which may have bounties attached. +21:09:27 Shinobiwan: I wouldn't consider that employment though. +21:09:50 "Employment" would be payments for the purpose of direct I2P development (code or otherwise). +21:10:19 Shinobiwan: i2p should award effort and achievement. +21:10:43 what i had initially proposed was a small monthly payment for maintaining syndie, getting and keeping it into repos, bug fizing, etc +21:12:25 otoh, i2p should not award aspiration, lazinesss or failure to deliver. +21:12:32 That seems like a good compromise between the current bounty system and "proper" employment (which is hard for anonymous dev work) +21:13:20 Right. So if a monthly system were set up, the payment would be subject to "sufficient" work having been done. +21:13:31 dr|z3d: absolutely. there is plenty of money to give to people who deserve it +21:14:06 (So it would require a monthly meeting between the deciding people to analyze the various outputs during that period) +21:14:09 lillith: we're swimming in it. +21:14:35 I don't think that failure to deliver in one particular month should be cause for complete funding cuts, though. +21:15:03 commitment, dedication, service. +21:15:04 people have afk commitments as well as internet ones +21:15:07 derp, pingout. +21:15:37 remind me again why str4d_ isn't getting compensated? :) +21:16:07 I'd propose a more flexible system where the "employee" gets paid for the months they do sufficient work in. +21:16:07 (extended absences would be grounds for discontinuing funding though) +21:16:22 lillith: exactly (like zzz currently) +21:17:02 dr|z3d: under my proposed system, I wouldn't be at present =P +21:17:26 the threat of halebopp dropping indent inspires zzz to offer hosting costs. so why does str4d_ have to battle with eche|on to get hosting funding? +21:17:53 i offer one word: incompetence. +21:17:56 dr|z3d: that's on a tangent. +21:18:42 str4d_: more than likely. +21:18:45 what kind of maintenance work are we talking about here? shouldn't bugs and specific goals like repo inclusion be separate bounties so more than one person can claim them? +21:18:56 There are two kinds of potential funding that I can see - the bounty/employment hybrid above, and donations from I2P towards community services. These should be treated separately. +21:19:25 value added recompense. +21:20:00 anything else is jizz. like paying 10btc for dogpoo. +21:20:03 str4d_: and competitions too, if there were ever to be another +21:20:10 darrob: what we are trying to do is promote developers staying around. +21:20:13 lillith: true, that's a third category. +21:20:40 also beer. my bad. +21:21:34 I wouldn't mind being paid beer for my humor... ;) +21:21:43 from echelon.i2p: - the I2P general fund will cover all needed costs of I2P - discussed by dev team and will be noted here and on official webpage +21:22:09 i think most things would be acceptable as long as they are discussed and agreed upon beforehand +21:22:12 darrob: So rather than paying out a large lump sum for an arbitrary milestone and then the dev goes AWOL, we define smaller milestones and tasks within the confines of (what is currently called) the bounty, and the dev gets continual smaller payments. +21:23:55 The bounty system would still exist for bounties proposed by third parties (as they have control over how their funds are used), but for bounties that would be proposed by I2P itself from I2P funds, the new system should be better for I2P IMHO. +21:24:26 bounties are shit. hit and run contributors. +21:25:09 dr|z3d: hence why we are discussing a new system +21:25:12 not to mention "i paid $200, I'm important attitudes" +21:25:26 Part of the problem IMHO is that the current system only has a general description, with no concrete structure. +21:25:49 lillith: excuse me if i'm not quite following the finer points of the argument :) +21:25:52 For the new system, we need an agreed set of guidelines for proposing and managing funded tasks. +21:26:59 dr|z3d: if people want to waste/spend their money on bounties for improperly completed features, they should still be allowed to imho +21:27:58 lillith: yep. Or they can choose to use the new system, by donating their money to I2P and putting in a request through whatever process we decide on to set up a new funded task. +21:28:16 i agree - there is money there, and we might as well use it, so we might as well use it properly and effectively +21:28:56 and then if the donor goes awol it's still technically a community owned bounty +21:28:59 i'd like to see people sticking around too, of course, but i don't see how bounties are shit at all. on the other hand the monthly thing sounds like trouble but i don't mean to dismiss it too quickly. +21:29:02 Tasks funded via the new system need to be funded with money controlled by I2P, because it will be a panel of I2P representatives who decide what counts as "sufficient" work, not the donor themselves. +21:29:03 lillith: i disagree. donate to the project and let the project decide how to distribute rewards. +21:29:06 * Shinobiwan not sure if my other msgs went through +21:29:17 bounty and employment != donation ... both should take place I think... employment/bounty for dev specific stuff... and perhaps donations for things like community services +21:29:19 the employment part would need more of a specific set of conditions +21:29:24 the community service part, really just needs the community to decide what's worth supporting +21:29:27 and then dish out something appropriate +21:29:50 dr|z3d: both options will be there. +21:29:53 Shinobiwan: they didnt, now they did :) +21:30:04 Shinobiwan: http://killyourtv.i2p/irclogs/latest.log.html for scrollback. +21:30:07 Title: #i2p-dev logs for Tuesday, 2013-04-02 (at killyourtv.i2p) +21:30:12 "oh we need russian" no we don't. we need commitment. not money chasing rats that disappear as soon as the bounty is awarded. +21:30:24 thx str4d, K1773R +21:30:47 dr|z3d: a new, private infrastructure may well appear for paying individuals for work - it might as well all be in together +21:31:27 darrob: the reason most proposals sound like trouble is because we don't have a large enough developer base to properly run/support them. Therefore, a proposal that should result in a larger developer base is a good idea. +21:31:42 money should not be able to dictate the project. period. +21:32:01 and http://killyourtv.i2p/irclogs/%23i2p-dev.2013-04-02.log for "live" scrollback (the HTMLized logs are processed every 10 minutes or so) +21:32:16 sponsor the project, great, but don't tell us how to spend the money. +21:32:27 dr|z3d: i like it if a money chasing rat fixed certain features in syndie and ran. what's the problem? maybe someday syndie will get a real developer again but that person won't necessarily need payment then. actually, as far as committed maintainers are concerned, it might actually be counterproductive to offer a pay for the job. +21:33:05 thx KillYourTV +21:33:19 np +21:33:36 darrob: the "problem" is money thinking it can dictate the agenda. +21:33:39 dr|z3d: i2p isn't being told how to spend its money, because bounty money never was i2p's. i2p/echelon just act as an escrow service +21:33:39 Interesting point dr|z3d - I think part of this depends on what we define as the I2P project. +21:34:42 lillith: I think the point dr|z3d is making is that, rather than being told how to spend its money, I2P is being told how to proceed, i.e. the development path is decided by the person with the most money. +21:34:57 dr|z3d: bounties are just offers (or cries for help). where do you get the negative attitude? +21:35:21 And if the bounty process was adhered to as-is, that could potentially be rather problematic wrt the threat model. +21:36:18 that is a good point - i hadn't thought of it in that way before +21:36:47 a set of rules that says "This person must be paid on this date" is a good idea in that, that person can count on the income to be there when they need it. But on the other hand, it also may create drama when people fail to meet other people's expectations of what that money is really going towards... so I think it's probably not inappropriate to have meeting specifically for 'paydays' or whatever... if there's going to be a 'regular' thing. +21:37:35 bounties are shit. show me ongoing commitment from bounty hunters and i'll change my view. except you can't. hit and run merchants. +21:37:49 So maybe what needs to happen is that any tasks/sub-projects that affect I2P directly must be funded and controlled by I2P itself. +21:37:52 darrob: i get the "negative" attitudes from half complete work that's awarded a bounty, only to disappear before you can say "um, i think you missed..." +21:38:03 darrob: also, next time you pretend str4d_ is a css artist, don't bother. you insult yourself. +21:38:10 and you also lose a friend. +21:38:13 dr|z3d: didn't str4d_ and zzz claim some bounties for the unit tests? +21:38:17 dr|z3d: what? +21:38:20 dr|z3d: OT +21:38:55 str4d_: yeah. also, beer. darrob: if you don't get it, *yawn* +21:39:03 lillith: that was after the unit tests bounty was split up into sub-tasks/milestones (which I'd say was a step towards the proposed new system). +21:39:45 dr|z3d: keep on-topic in here please =) +21:39:56 I think everything has been said on this topic now no? +21:40:03 if bounties exist IMO they should go towards the things that nobody currently part of the community knows how to or can do, IMO... not the things they dont have time for. +21:40:06 * dr|z3d recalibrates. +21:40:06 i guess all i'm trying to say is that i question that hit and run improvements are necessarily a bad thing. +21:40:19 I2P will survive with everyone supporting it, not just the people who get paid +21:40:30 darrob: they are good for kickstarting development in a new area +21:40:37 But the I2P router/project is not a new area, IMHO +21:40:53 So, how about the following: +21:41:20 Shinobiwan: like design! *laughs* 5 years of asking for help, and not one iota of thought to offer a bounty *laughs* +21:41:58 Projects that directly affect the I2P program/network can be funded only from I2P funds, and donors who want to contribute just donate to I2P. +21:42:21 because designers aren't coders, ergo worth nothing. except when you're offering 10BTC/100$ for anything, including crayons. +21:42:47 Projects that don't directly affect the I2P program/network but are still I2P-related (e.g. syndie) are eligible for bounties on new/substantial work. +21:42:58 sorry, but I can't take this conversation _too_ seriously, built as it is on an anthill of incompetence. +21:43:01 (But can also be managed via I2P if the donor wants) +21:43:23 dr|z3d: i'l ping you when we move on then :) +21:43:26 But a bounty would need to be more accurately-defined than the current system allows. +21:43:46 lillith: very good, sir :) +21:44:04 s/allows/does +21:44:10 str4d_: does that imply that there will be an i2p management board to make those decisions? i think that was another week's discussion, right? +21:44:32 darrob: yes. +21:44:42 This is separate to any "official-ness". +21:45:05 str4d_: sounds good :) +21:45:32 But there would be a panel of (elected) developers (coders/designers/contributors) who are trusted with steering the I2P project. +21:45:46 I.e. something a bit more formal than what we currently have. +21:46:00 darrob: that's either coming up or later, depending on whether we want to continue +21:46:26 Mmm. My proposal works under the assumption that such a panel exists in some form. +21:47:05 (exact specifics being discussed later as above) +21:47:21 lulz +21:47:28 what's #i2p-dev then? +21:47:35 i disagree with the panel idea tbh +21:47:38 meetings seem to work well, and they let new people have a say too +21:47:38 it would need to be large enough to get a variety of perspectives +21:47:38 you never know who might offer then next amazing idea +21:48:04 lillith: exactly. +21:48:11 it's that panel, but yea... it would need to become officially official +21:48:18 But with the current size of the developer base, that's hard. +21:48:25 It's a chicken-and-egg problem. +21:48:35 And we need to break into the loop somewhere. +21:51:05 Shinobiwan: yea, thats basically what i'm trying to say :) +21:51:05 actually no it's not +21:51:05 #i2p-dev along with mailing lists, zzz.i2p, syndie, etc +21:51:05 anyone who wants a say should have a chance imho +21:52:35 lillith: yes, but there still needs to be a group of people with a final say. +21:52:53 people need to know eachother w/out knowing one another... to the point I can say, str4d, KYTV, dr|z3d ... (a lot more but just for example) have been on the network for so long, and IMO all make I2P of higher quality. Collectively I think people can figure out and reach an agreement who would go on such a panel... even though nobody really knows eachother AFK. Opinions from new people to the project should be listened to also +21:52:53 however +21:53:00 (i.e. the people who control the funds. Currently, that is a single person - eche) +21:53:25 At least to begin with. +21:53:52 The Debian developer model is a good one for making decisions like you suggest lillith - all done via voting. +21:53:55 so, everyone has a say, a few (3 or 4) people have the final say? +21:54:10 (And a "developer" is just someone who has contributed in some way IIRC) +21:54:25 But a voting system needs a larger base of "developers" first, I think. +21:54:51 lillith: anyone can suggest an idea - that's never going to change. +21:55:06 in my mind it's more than 3 or 4 people.. more like 12+ and growing... but people that fail to make the meetings don't get to vote... (and if their vote is especially important/relevant, then the meeting might happen another time) +21:55:12 But I2P has finite resources, and those resources need to be allocated appropriately. +21:56:06 (the biggest resource being time from continual developers) +21:56:20 as I wrote on zzz.i2p, I think votes such as via gpg signed messages to a mailing list would be better than irc. We've got mailing lists and they should be utilized. +21:56:20 s/biggest/most important but currently most limited/ +21:56:23 str4d_ meant: (the most important but currently most limited resource being time from continual developers) +21:56:28 KillYourTV: agreed. +21:56:43 ya gpg signed == much better +21:56:54 Provides a transparent and verifiable archive of votes. +21:57:09 is that topic 1 over then? +21:57:09 i agree also. don't expect to accomplish any serious discussion on irc. +21:57:12 * KillYourTV is 'stealing' ideas from Debian's system(s) +21:57:19 http://www.debian.org/vote/ +21:57:22 Title: Debian Voting Information (at www.debian.org) +21:57:39 it's all open source, its there to be 'stolen' :) +21:58:06 2. Managing money +21:58:10 and with mailing lists you have the oh-so-helpful 'plonk' mechanism available if needed to raise the signal to noise ratio. +21:58:21 eche|on: ping +21:58:24 KillYourTV: dont copy the "GPL Nazis" idea pls :P +21:59:46 afaict the money management wrt bounties has already been discussed enough +22:00:12 KillYourTV: if we go the mailing-list route, the mailing-list needs to be usable entirely within I2P (currently not the case). +22:00:23 (But also usable externally) +22:00:33 but there are other, non- bounty uses for money, for example purchasing ssl certificates +22:00:36 agreed +22:00:53 str4d_: the nntp interface should qualify. +22:00:53 and agreed to lillith's last point (ofc) +22:01:04 dr|z3d welt weltende welterde echelon +22:01:07 ...which i *think* is functional. +22:01:10 are they linked? +22:01:30 I know they were supposed to be but the last I checked (months ago) they weren't. +22:01:38 purchasing ssl certificates would go w/ donations IMO ... community services ... the same way to decide what the money goes towards as donations. +22:01:41 * KillYourTV fires up the nntp tunnel +22:01:41 you can at least read through it. +22:01:44 can we keep this ontopic guys, project management is coming up :) +22:02:01 i.e.. have a meeting... say "we need this"... "agree?" ... panel says OK ... majority of panel green light +22:02:32 not so quickly, but the general idea. +22:02:32 hehe +22:02:47 Shinobiwan: can fall under the same vote system proposed above. +22:03:14 yep +22:04:16 well the ML interface is accesible via i2p more or less.. http://vmfwbic2brek2ez223j6fc6bl5mmouzqvbsch45msvyyzih3iqua.b32.i2p/ still contains redirects to lists.i2p2.de.. not sure what to do about those +22:04:24 Title: lists.i2p2.de Mailing Lists (at vmfwbic2brek2ez223j6fc6bl5mmouzqvbsch45msvyyzih3iqua.b32.i2p) +22:04:32 if there is such a panel, it is not finalized at a fixed number of people... IMO... it should grow, and grow and grow... so, whatever panel currently exists, should have some procedure to bring in new panel members regularly +22:04:43 we need a central party with a politburo and the users' congress. :) +22:04:46 FTR, the mailing lists as currently set up are not available via nntp. +22:05:04 (haven't added it to the hosts.txt yet) +22:05:42 (at least not under i2p.*) +22:06:27 hmm.. they should be.. but maybe not under i2p.* +22:06:46 I didn't set it up.. so don't really know anymore ;) +22:06:58 KillYourTV: i think i2p. are welt's preexisting groups. the new ones are alt.privacy.i2p.dev/general and alt.privacy.syndie.dev/general. +22:08:42 ah...nvm me. now that I refreshed the list again I see those new ones. +22:09:00 sorry +22:09:03 ah.. right.. slrn didn't show them as they didn't contain unread messages +22:09:34 i'm still confused why there are no messages. i really thought i saw a couple of test messages before. +22:09:45 can we get back on topic please? +22:10:23 i, and surely others want to know what's going on with ssl certificates for the i2p domains +22:11:17 i didn't see the topic change, just but there are other, non- bounty uses for money, for example purchasing ssl certificates /me zips it +22:11:56 ahh, sorry +22:12:06 can we keep this ontopic guys, project management is coming up :) +22:12:23 and what's the topic? ;) (I didn't see that switch) +22:12:30 2. Managing money +22:12:41 afaict the money management wrt bounties has already been discussed enough +22:12:41 lillith: eche is currently sourcing the required money. +22:12:48 but there are other, non- bounty uses for money, for example purchasing ssl certificates +22:13:16 eche|on: any updates on the certificate situation? I haven't had to get "real "certs for a while and don't know how long the verification process takes nowadays. +22:13:19 kytv2: I am on the hunt for 3k and cert requests... +22:13:29 so it's under control then? +22:13:36 and pushed.. +22:14:14 yes, it's being taken care of +22:14:21 Can I reiterate my opinion that it's dangerous to have one person managing all the money? +22:14:45 ok +22:15:00 Current topic = ? +22:15:03 It's not being put in to some off-shore corporation, right? +22:15:14 2. Managing money +22:15:21 orion: no. +22:15:58 afair eche wanted to speak with an lawyer about making i2p an official entity of some kind +22:15:58 dr|z3d: ping :) +22:16:12 Currently our funds lie in a (bank?) account owned by eche|on and (mostly) in a Bitcoin wallet held by eche|on. +22:16:49 yes, that's right, in .at IIRC +22:17:07 (wrt: 'official entity') +22:18:46 at as in austria? +22:18:53 yes +22:19:19 (not australia *scnr*) +22:19:46 (running gag from EEVblog if you are curious) +22:20:26 okay, looks like we've moved on again +22:20:41 3. Making the project official +22:21:12 lillith: re: money management, it's rather dependent on both the "official" status of the project, and the project management status. +22:21:30 (The former re: where funds are kept, the latter re: how funds are spent) +22:22:14 ok, fair enough :) we can straddle points 2 and 3 for a while then :) +22:25:16 must go +22:25:19 bye +22:25:47 later I'll send yo new translaion str4d_ +22:29:26 or not, as the case may be +22:30:11 i'd suggest time to move on :) +22:30:28 Starting build #28 for job I2P-Bote +22:30:28 4. Procedure for making decisions in i2p +22:31:27 * KillYourTV votes for taking long discussions about important decisions to a mailing list +22:31:30 Project I2P-Bote build #28:SUCCESS in 1 min 3 sec: http://jenkins.killyourtv.i2p/job/I2P-Bote/28/ +22:31:34 so, mailing list, hierachy, etc +22:31:37 That way anyone can take part when he/she can +22:31:50 i'd like to put in an honourable mention for syndie here +22:31:56 +1 +22:32:03 (@ML) +22:32:04 everything is signed by default, for a start +22:33:18 I like syndie too (ofc), but mailing lists would be easier for outsiders to take part +22:33:45 but yes, i agree in principle. no point hanging around waiting for discussion that clearly isn't happening +22:33:48 that's not to say that discussions can't be mirrored to syndie... +22:34:33 yeah.. nntp syndie gateway or so would be nice to have +22:34:36 and of course, officially moving is only one thread away ;) +22:35:54 21:00 UTC isn't handy for everyone. On a mailing list time zones mean nothing. On a mailing list there no netsplits, relay problems, or ping outs. For meaningful discussions a mailing list (IMHO) is _THE_ way to go. +22:36:30 KillYourTV: I agree. +22:37:54 irc is good when you need pretty-damn-close-to-realtime...but "we need a new domain" doesn't have that kind of urgency. Post it and it'll be addressed when $user can address it. +22:37:54 imho syndie has all the benefits of mailing lists and more, the only issue is accessability for outsiders +22:38:32 then again, how many people that we want to include already use mailing lists? +22:39:03 There's been talk of a Syndie webapp" but I don't think that's gone (and will) go anywhere. +22:40:20 I'd gather that more use mailing lists than IRC. +22:40:31 i don't want to dominate a discussion on syndie vs ml here, but i think it's something woth considering +22:41:25 * weltende@freenode prefers his mail/nntp client tbh +22:42:04 syndie via mutt would = 'win' +22:43:14 this topic also includes hierachy, which was touched upon before but imo needs some expansion +22:45:09 I don't know if we can come to a consensus on anything AND have a discussion easily with IRC meetings anymore. +22:45:28 It worked in 2006 when it was more of a quick update on the project but it's not anymore and it involves lengthy debates/discussion. +22:46:40 having more time to think through things would result in on topic, well thought out, clear discussion +22:46:47 threading also = win +22:47:13 +1 +22:47:21 +1 +22:47:28 +1 +22:47:39 might I add: nntp, fuck yeah. +22:47:50 irc meetings were always an experimental thing, and the experiment failed :) +22:48:05 hey, lillith, at least we're having the discussions now, right? :) +22:49:40 imho we should keep irc meetings and move things that take a long time in the meeting or which has a lot of discussion to the ML +22:50:11 yep :) seems like no-one actually likes meetings anyway haha +22:50:15 I think it's mainly due to the timing. +22:50:18 And pressure to respond in a fast manner.. +22:50:18 postman: http://zzz.i2p/topics/1367 +22:50:18 but there's no chance of getting a time thats good for _everyone_ +22:50:18 plus some people have irregular schedules +22:50:18 Exactly. +22:50:25 Title: zzz.i2p: I2P and e-mail (at zzz.i2p) +22:50:30 with a heavy heart, and feeling rather poetic, i'd gladly baf the last meeting ;) +22:50:41 weltende: I was thinking this.. keep irc meetings for discussion of some things in the ML (actually doing something & such). W +22:50:44 go for it, lillith. +22:51:26 * lillith bafs the meeting closed +22:51:36 thank you, and goodnight :) +22:52:01 Starting build #103 for job I2P +22:52:09 can susimail handle mailing lists? +22:52:41 sure, but I'd use a 'real' client like claws or mutt +22:53:04 (just a matter or preference) +22:54:55 ahh, thats okay then :) +22:56:33 Project I2P build #103:SUCCESS in 4 min 34 sec: http://jenkins.killyourtv.i2p/job/i2p/103/ +23:01:15 Project I2P UnitTests build #74:SUCCESS in 4 min 31 sec: http://jenkins.killyourtv.i2p/job/UnitTests/74/ +23:04:51 and +1 to meetings continuing with the bigger things being taken to mailing lists/forums/syndie. +23:05:54 IRC is good for quick status updates..but a "newsletter" of sorts could work for that purpose too. +23:06:19 it's nice to have a start, with some goals, and an end, with a consensus +23:06:22 mailing list also works for alerts. see how tor do it with consensus issues. +23:06:46 'today THIS is what we decided and THIS is what we're going to do about it' +23:07:29 i'm not sure but i imagine ml discussions as dragging on with no distinct endpoint +23:07:52 +1 for newsletter though +23:08:33 they can, sure...but I think more will be accomplished on a long ML discussion than a 4-5 hour long irc meeting. +23:09:08 * lillith signs up with an open mind :) +23:09:38 * psi likes the idea of a mailing list +23:09:53 where is the ML? +23:10:01 * KillYourTV really likes MLs but they (the ones on the Internet) will probably cause his AFK identity to be leaked...heh +23:10:12 lists.i2p2.de i think +23:10:39 and (/me scrolls up) +23:10:54 http://vmfwbic2brek2ez223j6fc6bl5mmouzqvbsch45msvyyzih3iqua.b32.i2p/ +23:11:08 Title: lists.i2p2.de Mailing Lists (at vmfwbic2brek2ez223j6fc6bl5mmouzqvbsch45msvyyzih3iqua.b32.i2p) +23:11:24 it just redirects +23:11:55 there's also nntp.welterde.i2p +23:12:37 alt.privacy.i2p.*, alt.privacy.syndie.* +23:13:16 (cheers darrob for pointing me to the right usenet groups) +23:14:57 * RN wanders off to tinker with thundirbird +23:17:46 +1 to meetings continuing (but sticking to time) and +1 to "important" discussions on the ML. +23:19:32 for you interested.. posting is atm allowed for the following groups: +23:19:35 post: "i2p.*,alt.anonymous,alt.anonymous.*,alt.privacy.anon-server,alt.privacy.anon-server.*,alt.privacy.i2p.*,alt.privacy.syndie.*" +23:25:35 this will have to be fixed before "important" discussions make their way there http://lists.i2p2.de/pipermail/i2p-general/ +23:25:42 Title: The I2p-general Archives (at lists.i2p2.de) +23:26:27 ...unless the messages were purposely wiped (which wouldn't make sense) +23:30:13 hmm.. +23:30:21 no idea atm.. but heading to bed now diff --git a/i2p2www/meetings/logs/222.rst b/i2p2www/meetings/logs/222.rst new file mode 100644 index 00000000..6432b8b8 --- /dev/null +++ b/i2p2www/meetings/logs/222.rst @@ -0,0 +1,17 @@ +I2P dev meeting, April 2, 2013 @ 21:00 UTC +========================================== + +Quick recap +----------- + +* **Present:** + dg, + dr|z3d, + K1773R, + KillYourTV, + lillith, + orion, + RN, + Shinobiwan, + str4d, + weltende diff --git a/i2p2www/meetings/logs/223.log b/i2p2www/meetings/logs/223.log new file mode 100644 index 00000000..d870bf07 --- /dev/null +++ b/i2p2www/meetings/logs/223.log @@ -0,0 +1,165 @@ +19:56:52 Hi@all && (welt||welterde||weltende) +19:57:24 ;-) +20:00:33 Starting build #182 for job I2P +20:01:11 Mathiasdm, Meeh, postman, str4d, _sponge, KillYourTV, Complication +20:01:19 Alright, lets get this meeting started +20:01:33 meeting? hmm +20:01:33 Agenda: +20:01:39 * New bounty system +20:01:44 * New bounties +20:01:49 * Misc? +20:02:21 __New bounty system___ +20:03:25 During this summer I'll have some time over for I2P development, but I also have to pay my rent which is why a new bounty system or at least a new set of bounties and sub-bounties will be suggested +20:03:51 \o +20:04:37 Project I2P build #182:SUCCESS in 4 min 7 sec: http://jenkins.killyourtv.i2p/job/I2P/182/ +20:05:00 after discussing the idea with eche|on, it seems like the best option for payed work is via the bounty system +20:05:44 to make it work I'll suggest at least one large bounty and then create sub-bounties for it +20:06:27 the sub bounties will be created and closed on a bi-weekly schedule +20:06:41 (preferably by holding a meeting like this when a sub bounty is to be closed) +20:07:27 you know my opinion, and so I just wait for input ;-) +20:07:35 Currently the i2p project has a lot of funds which aren't doing us any good +20:08:10 and allowing me to contribute to some much needed problem areas in i2p should be a good thing overall +20:08:51 Does anyone have any questions or feedback at this idea? +20:09:26 I've talked to zzz, eche|on, postman and Mathiasdm earlier and they have approved +20:10:07 I've tried to reach welt/welterde/weltende, _sponge, badger and KillYourTV but have not gotten any response from them +20:10:23 Project I2P UnitTests build #153:SUCCESS in 5 min 36 sec: http://jenkins.killyourtv.i2p/job/UnitTests/153/ +20:10:35 But I'd like to know what the rest of the inhabitants of #i2p-dev think about the idea +20:10:52 I agree that we should be doing something with the funds +20:11:08 An organized method of doing so is useful, I don't disagree at all so I'm remaining mute +20:12:04 dg, does this seem like a good way of doing something useful? +20:13:00 yes. The bounty system already works, we should build upon it +20:13:19 you're proposing using existing funds? euros or BTC? +20:13:21 As far as bounty amounts go, 325€ per bi-weekly sub-bounty is what I need to cover my basic costs of living +20:13:47 euros are safer and simpler for me +20:14:07 but maybe parts could be payed in btc +20:14:42 in any case the bounty should be set in euros and then possibly payed out in btc +20:14:47 eche|on, whats our balances? +20:15:27 and to answer your question, Im proposing using existing funds +20:15:27 http://echelon.i2p/donations/index.html - still on those sums +20:15:32 Title: Donations (at echelon.i2p) +20:15:40 so ~28k€ and 626 BTC +20:16:47 hottuna: What work will you be performing? +20:17:22 appx. how many hours a week are you proposing to work? +20:17:35 that is point two on the agenda, but i'm primarily thinking about improving on our floodfill issues +20:17:57 40 h/week. So full time. +20:18:56 so round numbers, 8 euros/hour +20:19:18 nope. 4 euros/hour +20:19:20 in my mind that sounds reasonable/cheap +20:19:35 325/80 +20:20:13 mcdonalds isn't hiring? :) +20:20:35 i think burger king has payed me more an hour :P +20:21:06 you worked for a burger king? hell,... I should have visited your working office^^ +20:21:35 appx. how many weeks you propose to work? +20:21:56 lets see.. this will be a rough number +20:23:19 I should manage at least 8, but it could be more or less than that +20:24:10 so a 1300 euro commitment from us +20:24:24 yeah +20:24:49 more than that would have to be discussed in a meeting +20:25:18 anybody remember what we paid jrandom monthly? +20:26:08 let's see what the internet archive says +20:26:10 less. ~500$ IMHO +20:26:39 he was more of a hippie than tuna is :) +20:26:50 $465 USD/month +20:27:11 I'm hippying as hard as I can damnit! +20:27:52 hippy harder!! +20:28:49 alright, so does anyone have any objections or questions? +20:29:15 no objection +20:29:41 sounds good +20:30:25 ditto +20:30:54 Alright. Then we are all happy about this +20:31:32 For the record: As no complaints have been raised, we'll proceed with the new bounty system. +20:31:47 __New bounties__ +20:32:34 The floodfill system has some issues, including attack resistance and scalability. +20:33:02 Replacing it is the first bounty that I will suggest. +20:33:30 I've talked to zzz about some alternatives +20:33:47 and step one appears to be to move to a kademlia based netdb +20:34:30 zzz has in fact already started by implementing kademlia in i2psnark +20:34:59 this is probably a good base for for a netdb network +20:35:53 there are some modifications that can be made to kad to make it more probabilistic and avoid the worst aspects of eclipse and sybil attacks. +20:36:01 I'm not sure "replace" is the right word. And also not sure it's the top of my list. Our ff system is actually in pretty good shape right now. But I'm not sure how much you want to get into discussing it now. +20:36:27 A reasonable sub-bounty may be just to analyze the current situation and make proposals +20:36:41 replace would be a long term goal, initially adding a second netdb backend would be the goal +20:36:58 yeah, replace is the wrong word. +20:37:09 but sure, the UCSD folks highlighted some issues. +20:37:35 ignoring vulnerabilities for a moment, I think we're actually good for a couple years of growth w/o changes +20:38:06 22:37 < zzz> A reasonable sub-bounty may be just to analyze the current situation and make proposals <-- sounds like a good idea if it's time-boxed +20:38:53 spending two weeks on an analysis might be overkill, but having a meeting and discussing the alternatives after a week might be good +20:38:55 what's _not_ realistic is replacing ffs with R5N this summer. +20:39:09 zzz, agreed +20:41:24 there might also be a need for some work surrounding development like multirouter support +20:41:24 which would make development easier +20:41:24 fyi for everybody, the netdb roadmap in my head is 1) encrypted lookup responses and 2) migrate the snark kad back to router +20:41:24 like the ideas +20:41:35 ./roadmap +20:41:49 yeah +20:44:21 I don't think that 2 full weeks are needed for this +20:44:27 yea +20:45:21 "alternative exploration"? +20:45:30 as in the exploration tunnels right or? +20:45:30 depends how long before your head explodes +20:45:37 what else on your list? +20:45:45 "alternative exploration" = {what technology?, if dht-which?, what code-base?} +20:46:03 maybe one week, and if I have time to spare I'll start with the multirouter stuff. +20:47:09 I'm not sure, but some of the bounties like ipv6 will have to be completed soon as ipv6 looks to be actually deployed now +20:47:40 zzz is working on ipv6 a load but he my appreciate help +20:48:12 I try to add IPv6 on my root server for I2P use. +20:48:15 Resolving issues regarging an openitp submission has been suggested by zzz +20:48:22 as soon as I find time to understand and get it up... +20:48:57 I have a dev server that I can let developers into for testing.. It have multiple ipv6 adresses +20:49:00 having us accepted into OpenITP would be a major thing for us +20:49:07 Could setup more of them now for testing +20:49:22 and now gone for a good night time... +20:49:25 here's my list: IPv6 (incl. testing), Crypto (see trac wiki), OpenITP prep (see trac wiki), NTCP and SSU protocol obfuscation (old zzz.i2p post, Lance James might be able to help), other state firewall resistance, Symmetric NATs (ticket #873), ... +20:49:32 http://trac.i2p2.i2p/ticket/873 - (accepted defect) - Port changing .. obscurely +20:49:40 zzz: want access to a ipv6 server for testing? +20:49:51 hottuna: major thing, yes, but, in case you (or others) are not aware: OpenITP are not long term funders. They fund short, achievable goals to improve projects "quickly". +20:51:05 Meeh yes, in a couple weeks. I'd like to see the minor fix in 0.9.5 to ignore published IPv6 addresses get out there before we start publishing them +20:51:24 s/0.9.5/0.9.6/ +20:51:24 crypto is another thing that I know a bit about, so my time might be well spent there +20:51:27 zzz meant: Meeh yes, in a couple weeks. I'd like to see the minor fix in 0.9.6 to ignore published IPv6 addresses get out there before we start publishing them +20:51:48 ok :) I can setup multiple too if needed +20:51:51 maybe if we're lucky I'll be somewhat done with the floodfill system by the time zzz is done with ipv6 +20:51:58 got a /48 net +20:52:14 that way we could both attack the crypto problem +20:52:21 heck what about i2pcpp +20:52:37 orion is 404 atm +20:52:48 sindu might help there when he got time, great C coder +20:52:59 talked about it earlier, know him from RL +20:53:26 that sounds interesting +20:53:49 if orion is at least willing to accept help, that's a big step - he wasn't before - +20:53:52 but I think that I should spend time where makes the most difference which in my mind is floodfills/ipv6 and crypto +20:54:11 *it +20:54:14 sure, my list doesn't necessarily match your skills or interest +20:54:29 also, he should get some creds for spreading the i2p stickers around Oslo, Norway. He have placed it all around the city +20:54:44 hottuna: if you want, send more.. soon emtpy again:P +20:55:11 oh yeah, hottuna if you aren't coming to DEFCON I need some too +20:55:30 im planning on coming to defcon +20:55:44 i havent bought any plane tickets yet, but I will soon. +20:55:47 oh hella yes. +20:56:23 hottuna: if you got files, I might be able to get some free printups myself +20:56:43 the files are in the i2p.graphics branch +20:56:46 if you got the sticker in png/ai/whatever format +20:56:49 ok thanks +20:57:00 if im remembering correctly +20:57:16 alright. +20:57:51 Is everyone ok with the first bounty being for the floodfill system? +20:58:02 aye +20:58:25 yepp +20:58:50 ok, so first 1 week of research into the options, followed by implementation (currently most likely kademlia)? sounds good +20:59:06 yes, that's the idea +21:01:56 ok +21:03:15 For the record: The first bounty to be introduced is adding a new netdb backend. The first sub bounty should be divided into alternative exploration, multirouter research and discussion with you guys +21:03:26 __Misc__ +21:04:38 How is the website deployment going? +21:09:27 Everyone died? +21:09:31 str4d? +21:12:57 oh +21:13:04 I was curious :) +21:14:22 did I miss anything exciting? +21:14:29 only this: +21:14:32 23:10 -!- hottuna [hottuna@irc2p] has quit [Quit: leaving] +21:14:32 23:12 <+Mathiasdm> oh +21:14:35 23:13 <+Mathiasdm> I was curious :) +21:15:12 Alright, if no one knows, let's see next week +21:15:38 * hottuna baf's with the meeting ending hammer +21:19:59 * Mathiasdm lurks onward :) diff --git a/i2p2www/meetings/logs/223.rst b/i2p2www/meetings/logs/223.rst new file mode 100644 index 00000000..20fcb43f --- /dev/null +++ b/i2p2www/meetings/logs/223.rst @@ -0,0 +1,13 @@ +I2P dev meeting, May 21, 2013 @ 20:00 UTC +========================================= + +Quick recap +----------- + +* **Present:** + dg, + eche|on, + hottuna, + Mathiasdm, + Meeh, + zzz diff --git a/i2p2www/meetings/logs/224.log b/i2p2www/meetings/logs/224.log new file mode 100644 index 00000000..314f624d --- /dev/null +++ b/i2p2www/meetings/logs/224.log @@ -0,0 +1,489 @@ +19:52:28 zzz, christoph2: syn +19:54:26 yay, dev beating! +19:54:33 s/beating/meeting/ +19:54:37 topiltzin meant: yay, dev meeting! +20:00:03 * hottuna baf's the meeting opened +20:00:07 Agenda: +20:00:14 * The next NetDB backend +20:00:14 * Ticket #729 - properties location on osx +20:00:14 * Ticket #741 - process renamer on windows +20:00:14 * Misc? +20:00:22 http://trac.i2p2.i2p/ticket/729 - (assigned enhancement) - on OSX ~/.i2p -> ~/Library/Application Support/i2p +20:00:33 http://trac.i2p2.i2p/ticket/741 - (accepted enhancement) - Make I2P easier to deal with with Windows firewall software +20:00:45 __ The next NetDB backend__ +20:01:16 I've been working on a proposal, the first RFC is ready +20:01:35 http://trac.i2p2.de/wiki/NetDB/NextBackend +20:01:38 Title: NetDB/NextBackend – I2P (at trac.i2p2.de) +20:02:14 The general idea is to use a Kademlia base and extend it with features that improve performance and/or reliability. +20:02:59 Some of the initial code for Kademlia has already been written by zzz +20:03:34 In fact a full BEP5 implementation. BEP5 is the mainline bittorrent implementation of Kademlia. +20:04:13 Several DHTs have been considered: Chord, Freenet and Pastry. +20:04:47 However Kad is fast, extendible and relatively reliable. +20:05:05 some other Kad derivatives that are used in production: Azureus kad, eMule kad, Mojito Kad (Limewire) +20:05:24 Overnet (eDonkey, now defunct) +20:05:47 no p2p app uses chord or pastry (to my knowledge) +20:05:54 I've had a look through the Az-Kad and it's not very compatible. Mojito might be interesting +20:05:57 On top of Kad a few changes have been proposed. +20:06:05 Recursive tunnels for faster lookups. +20:06:20 And Random Recursive lookups for more reliable lookups. +20:07:13 Insertions will be standard Kad until Random Recursive Stores are implemented. +20:07:45 Alright, so that is the overview. Does anyone have any questions? +20:08:17 One objection to recursive tunnels is that it renders local ip banlists useless +20:08:40 for example, I could have manually added the ips of a hostile party to my ban list +20:09:18 the nodes that participate in the recursive lookup/store will not know that +20:09:37 That is true. +20:10:00 Recursive queries are somewhat frail, and should only be used for speed. +20:10:35 Random Recursive queries will however, eventually find a path which doesnt involve the banned nodes. +20:11:05 For what kind of situations would you not trust the ban-list of another node? +20:11:25 sponge: want udp +20:11:28 eche|on: count is not persistent after network changes ("soft restart") +20:11:51 for the situation where the operator of that node hasn't been diligent in updating the banlist +20:12:02 or for the situation where the other node has no banlist at all +20:12:29 But what would happen if the query passed through a 'banned' node? +20:12:51 Either it is forwarded, dropped or recorded. +20:13:31 iterative never passes thru anybody +20:13:34 whatever the sybil/eclipse attack does - probably droped? +20:14:38 That is the thing about Recursive. It's ok if it fails. We have more reliable methods for keys that are under attack. +20:15:09 Like Iterative or Random Recursive +20:15:24 how to select a mode? +20:15:35 theoretically you could include a small bloom filter of banned ips to the query +20:15:54 mode selection an open question. +20:15:57 is an* +20:16:28 In my mind a parallel version would be interesting +20:16:39 A sequential failover version would be slow +20:17:03 But it is a bandwidth vs. max_latency tradeof +20:17:51 topiltzin: R5N includes a bloomfilter in queries. But I don't think the really is needed. +20:18:14 We build this thing to work even if failures are encountered +20:18:14 how much slower is the iterative lookup, and is that slowness a bottleneck of any kind? Do we really need to be optimizing that? +20:18:45 I think we gotta start with adding stat code (where necessary) to netdb and snark and gathering stats on current performance of those two impls +20:18:52 When you visit an eepsite, a lookup has to be done. +20:19:25 topiltzin: the speed of lookups can be seen under the 'Lookup' part of http://trac.i2p2.de/wiki/NetDB/NextBackend +20:19:28 Title: NetDB/NextBackend – I2P (at trac.i2p2.de) +20:20:16 netdb has lots of stats, if we add stats to equivalent places in snark we can start to put a picture together +20:20:35 query latencies etc? +20:21:06 zzz: +1 on moar stats +20:21:06 latencies, queries-per-success, etc, yes +20:22:26 Having access to those stats would be interesting. Especially when developing something new. However comparing I2PSnark-DHT to FloodFill is comparing apples to oranges. +20:22:29 as I said the other day, I think the snark code could be moved back to netdb but only if we choose K and B to swallow the whole local netdb into the routing table +20:22:57 if the routing table is missing most of the local netdb we may as well just keep sorting +20:23:55 your proposal (and yes it's been my plan for a couple years as well) is to replace the orange with the apple, so it's kindof important to compare them. +20:23:58 Im am not against setting a high B, lookup latency is a real issue +20:24:55 regarding K I think keeping it at 8 may be reasonable. +20:25:18 of course the new dht would have to be evaluated. +20:26:05 you can't pick K in isolation. You have to pick K and B to make the routing table work as well as sorting does now, for a given local netdb size. +20:27:03 Both can be tweaked while deploying. +20:27:29 So I'd go for an initial guesstimation base on what we know and what we need. +20:28:17 also depends greatly on whether it's the ffs or everybody that's in the new dht +20:29:24 Not making every node a participant in the new dht would be a mistake an keep us vulnerable to attacks like that presented in the UCSB paper +20:30:15 I don't see info on who's in or out in your proposal +20:30:18 I suppose I wasn't very clear about that in the proposal. +20:30:25 ;) +20:31:30 not at all sure you want everybody (natted, android, hidden, chinese, mobile phones, etc) in it +20:31:46 check out jr's extensive comments on where it all went bad +20:31:53 node churn is not good for the dht. You should have some minimal uptime requirements +20:32:32 topiltzin: node churn isnt much of an issue since all our data is mutable and republished every 37 seconds - 30 minutes +20:33:09 nat:ed nodes should probably not participate. android probably should +20:33:17 sure, N=500 and B=-8 was the disaster he never figured out, but there were other causes too, that are still present in our network... and could get much much worse if android takes off +20:33:25 chinese.. i don't know.. +20:34:04 other than likely having higher churn, how is android different? +20:34:32 node churn affects routing negatively.. so if the goal of this effort is to improve routing you cannot ignore it +20:34:39 I mean phones, not android in particular +20:34:58 android==phnoes for me aswell +20:35:22 mobile devices have lower bandwidth and horsepower and intermittent connectivity +20:35:57 How is it done now? +20:36:12 what? +20:36:39 regarding android devices that want to be an ff? +20:36:42 christoph2: is lurking somewhere +20:36:49 * christoph2 hides +20:37:00 there are some criteria for becoming an FF, one of them is uptime +20:37:11 how would fast key-rotation interfere with an eclipse attack? +20:37:57 and how long does it take for a node to integrate into the netdb of the other nodes? (ie pollute their routing tables) +20:38:32 androids become ff automatically like anybody else, if they meet the criteria. But seems unlikely anybody would do that over the air +20:38:38 well you have time T it takes to integrate a node into I2P (untill it's reasonably well connected) and time t the rotation. you need T/t + safety nodes for eclipse +20:38:53 topiltzin: uptime is really not much of an issue. R5N has some pretty aggressive replication factors. So churn is not an issue +20:39:00 * nodes needed to actually eclipse +20:40:27 hottuna: not exactly following code changes. was less than 30 minutes in december +20:40:27 I did some quick calculations yesterday +20:40:27 well 0.9.2 iirc +20:40:27 nodes_needed_for_eclipse = (60/key_rot_interval)*eclipse_integration_time*attackers_per_eclipse +20:40:27 nodes_needed_for_eclipse = (60/10)*24*20 = 2880. Which might be prohibitive for an attacker. +20:40:27 hottuna, how would a new keyspace (either a different permutation formula, different rotation schedule, or both) work? I don't see how we could ever migrate over. +20:40:27 ok, that sounds reasonable +20:40:49 We'd use both in parallel? the current implementation will remain separate until we can safely move away from it. +20:41:26 what I really want to know is what can we do in the next two weeks to improve resistance +20:41:29 christoph2: are those calculations sensible? and would 2880 nodes be an issue at all? +20:41:36 if that's making the class N routers ff, lets do that. +20:41:36 I find it very hard to believe that node churn isn't an issue. The bigger the churn, the worse the routing table of each individual node +20:42:29 how could we ever 'move safely away' and maintain compatibility? How could we handle the conn limit issues of two parallel impls? How would we migrate from one to the other? +20:42:33 topiltzin: the value K, which is the size of each bucket in the routing table is chosen to be a number of nodes that are highly unlikely to drop out of the dht in an hour. +20:42:33 ^^ class F but !windoze +20:43:04 s/F/N/ +20:43:08 topiltzin meant: ^^ class N but !windoze +20:43:12 sure, we could do class N non-windows. No idea how many there are +20:43:35 it would also expose those routers as being non-windows, small anon issue +20:43:35 hottuna: you get ~20 on a moderately expensive server. 100 of these may or may not be a problem depending on whom you defend against. and I'm not sure if you couldn't get several times more nodes per server with proper code +20:44:22 alright, so it could be a bit of an issue. However it won't be for long the way technology tends to evolve +20:45:28 what else could we do for 0.9.7? +20:45:28 true re: anon issue.. so maybe just do all N and hope we don't piss users off too mch +20:46:18 didn't read everything. what was the issue with windows? +20:46:25 re connections: old nodes would carry on as usual. new nodes would balance their queries amongst both nets. +20:46:49 christoph2: baked in connection limits +20:46:52 christoph2: windows doesnt allow for a large number of connections +20:47:07 ah ok +20:47:27 christoph2: alright, so that answers the key rotation issue. it is probably not worthwhile +20:47:34 actually it's the rate at which new connections are opened that's limited +20:49:07 hottuna, I don't see how we get from here to there. I can see how to move the snark code to netdb with the same iterative lookups in the same keyspace. I don't know whether its worth it, but at least I can see how. After that it all seems really hard and mysterious. +20:50:02 We would change the key-space? Or what are you referring to as keyspace? +20:50:05 +1 with starting with snark code and figuring other stuff $later +20:50:40 keyspace = key->routing key algo, including rotation +20:52:14 so step one while deploying is having something that works (likely iterative only). then we add new KRPC messages for Recursive and Random Recursive +20:52:54 And when the net has upgraded to mostly support them we can enable them in the originator nodes. +20:53:27 deploying will even help us figure out performance while under massive attack +20:53:38 (for background, I started with the netdb kbucket code to make a generic library in i2p.zzz.kademlia, with arbitrary K, B, hash size, and eviction algo. Then I unit tested it to death. Then I moved it to snark for BEP 5 and more testing. The last part of the original plan is to move it back to netdb to complete the circle) +20:54:54 zzz.kad && i2psnark seems like a good base. I've been reading some of the code today, and it makes a lot of sense to me. +20:55:01 you're proposing different keyspace, different rotation, and different participants. i.e. a completely new overlay. +20:55:33 I'd like to do a completely new overlay. +20:56:04 oh good. code reading++. +20:56:47 alright. If this makes sense and no one has any objections I'd like to move this meeting along. +20:57:42 __Ticket #729 - properties location on osx__ +20:57:49 topiltzin, Meeh +20:58:11 yep, that's some very low-hanging fruit that's been dangling around +20:58:39 new overlay sounds like misery to me. +21:00:12 ... awkward moment ... +21:00:59 we still on dht? +21:02:09 imho discussion on dht isn't over but for the benefit of the meeting it should be +21:02:23 no decisions seem clear +21:02:26 * dg returns to shadows +21:03:16 I think the decision for the immediate future 0.9.7 is moar FFs .. the long-term view is still foggy +21:03:42 I'm gonna go ahead with #729 . Meeh, you around bro? +21:04:16 sry, I forgot about meeting +21:04:57 alright topiltzin, what's up with #729? +21:05:35 So, I've been running it for a while now, propagating trunk to branch i2p.i2p.729 +21:05:50 works fine, straight-forward +21:06:21 affects only new installs on OSX, so low impact, etc. +21:06:44 I'd like to merge it and get it over with +21:07:03 zzz, up for the #729 merge? +21:07:45 I don't have mac access, but Im assuming that topiltzin and Meeh does. +21:08:12 Yeah, we're probably the only osx users around here :) +21:08:15 here's a diff: +21:08:15 mtn diff -r h:i2p.i2p -r h:i2p.i2p.729 +21:09:14 I don't have repo access on this machine :/ +21:09:41 "access"? +21:10:00 as in set up :P +21:10:07 no objections +21:10:38 pastebin coming for those who care +21:10:50 just needs some testing, but probably wont get more unless its merged +21:10:50 thanks! +21:11:35 I lobbied for merging months ago as you will see in #729 comments +21:11:42 http://pastethis.i2p/show/3404/ +21:11:45 Title: Paste #3404 | LodgeIt! (at pastethis.i2p) +21:12:01 let's go ahead with the merge then +21:12:17 ok great. Meeh, speak now or forever hold your peace +21:12:28 (or whatever it is the priest says at the wedding) +21:13:18 I'd like him to speak later too if that's when he tests it :) +21:13:21 ok, I'll merge after the meeting +21:13:56 __Ticket #741 - process renamer on windows__ +21:14:11 str4d: you around for this? +21:15:54 mmk, this ticket is not so small +21:16:57 background - on windows, i2p runs with a process name of "java" +21:16:57 hi +21:17:24 meeting today? +21:17:27 which means any security settings that are applied to i2p become valid for any and every java application +21:17:41 sponge: yes. http://zzz.i2p/topics/1397?page=1#p6616 +21:17:48 Title: zzz.i2p: Meeting [4th June] (at zzz.i2p) +21:17:48 ty +21:17:59 bout time I made one of these... +21:18:48 this day is always difficult for me to do anything at this particular hour +21:18:55 can we do anything on 741 w/o str4d ? +21:19:29 I finally have a machine with windows on it +21:19:36 if we have a copy of visual studio then we can do everything without him +21:19:59 7 iirc, never use it though, so i can help/test +21:20:14 I could get a VS license from microsoft, if anyone knows how to use it.. +21:20:41 it's a good idea for the project to have such license +21:20:41 I mean as far as discussion. So back to the beginning, topiltzin you put this on the agenda why? just to try to get things moving? +21:20:41 vs is pretty painful from what I have heard +21:21:07 exactly - get some action going +21:21:37 Alright, str4d isn't around. Should we table this? +21:21:48 aye +21:22:28 * sponge has some 'misc' for discussion +21:22:41 let me know when I got the talking stick +21:23:03 Ill take that as a resounding yes. +21:23:03 Moving along.. +21:23:06 __Misc__ +21:23:09 if you guys want to table it fine, but let's not forget about it competely +21:23:21 topiltzin: agreed +21:23:46 (I will bring it up next meeting too) +21:23:57 ;-) +21:24:08 sponge: Misc was it? +21:24:51 MISC-- Bridge API for UDP (BOB) -- I have a few ideas on how it could be done, but I need some feedback, and need to know if it is even wanted +21:25:18 basically we need some sort of standard that is expandable +21:25:22 and to stick with it +21:25:43 it also has to be able to not mess with what is out there already +21:25:57 well-- adapt easily +21:26:56 So the question is what people would use it for? +21:27:03 we already have a thread going at http://zzz.i2p/topics/1393 --- how about putting your proposal there? +21:27:10 Title: zzz.i2p: UDP Trackers (at zzz.i2p) +21:27:10 two ways I am thinking of is either wrap a UDP packet with <> or <> +21:28:13 hottuna: trackers, voip? +21:28:16 I'm curious on demand +21:28:16 dare i say it, games +21:29:03 and I need people to discuss this. I have been trying for YEARS to talk with someine, to get more ideas, and nobody wants to think on the problem +21:29:03 oh, anonet. psi was pushing for that. +21:29:03 *someone +21:29:03 gotta read up on how SOCKS does it too +21:29:03 there are apps out there that do use IDP +21:29:06 *UDP +21:29:22 don't forget gnutella +21:29:25 voip (mumble) has been implemented and seen some use +21:29:44 that's tcp +21:29:47 bote uses a udp-ish packet too +21:29:54 gnutella can use udp +21:29:58 zzz: My bad +21:30:29 When is the next meeting? +21:30:40 Whenever someone wants to hold one +21:30:40 it's all easy inside the JVM. I could add udp to zzzot in a day. It's the external i/f that is a pita. +21:30:40 so is there demand? and if you got implementation ideas that can expand and not go stale, post +21:30:45 Oh crap. We're in a meeting. +21:30:45 I won't host one next week. +21:31:06 orion: we're at __Misc__ now.. +21:31:25 sponge: yes. +21:31:32 number 2 misc--- ipv6 and it's implications on de-anoning +21:31:35 hottuna: Thank you. +21:31:50 concerns? +21:32:01 haw close are we to using ipv6 +21:32:08 how +21:32:12 what concerns are you having sponge? +21:32:27 ipv6 can link to who you are very easily +21:32:46 damn, overslept the meeting -.- +21:32:53 IPv6 thread: http://zzz.i2p/topics/109 +21:32:56 since the address space is larger? +21:32:59 Title: zzz.i2p: IPV6 TODO (at zzz.i2p) +21:33:03 yes +21:33:03 I was thinking +21:33:14 zzz: this is different, but related +21:33:17 ipv6 does not deanonymize? WHOIS _may_ be more accurate as _may_ be determining if a NAT is in place (Bob and Ryan are behind a NAT, you do not know which is which) -- with IPv6, you can perhaps know if it is Bob or Ryan. +21:33:24 IMO, it makes no practical difference to I2P. +21:33:27 i2p could get an ipv6 space +21:33:39 socks 5 udp would be awesome +21:33:42 farm that out to users via tunnel +21:33:45 o/ +21:33:48 Side note: i2pcpp will have full ipv6 support. +21:33:54 Apologies for being late. +21:33:57 dg: I agree. +21:34:06 awaiting sponge to list his concerns (post #66) +21:34:20 hottuna: Can we move on if sponge has nothing to add? +21:34:35 i feel it's a non issue +21:34:35 schedule? merge for 0.9.8, enable by default in 0.9.9 +21:34:38 so in short.... will i2p provide an ipv6 tunnel for persons of high concern? +21:34:53 hey str4d, you missed the i2p.exe discussion :( +21:35:04 should wee? +21:35:07 I don't think our threat model includes I2P being illegal to run. +21:35:31 If that was the case ipv4 would be problematic as well. +21:35:42 orion, I'm trying to keep our docs up to date w.r.t IPv6. The docs should match what's in my ipv6 branch now. +21:35:45 ht: in some countries (china?) it is +21:36:20 And who runs i2p is the only additional information that would be leaked. +21:36:39 the best way thru the GFW may be via IPv6, hard to see how it's a negative +21:38:09 last misc from me--- So sorry I have been missing all the previous meetings. Again, difficult for me to do this day of the week, and hour. I will be more active very soon on everything as well... the talking stick is for the next persion... +21:38:13 zzz: Thank you. +21:39:03 Meeh: you missed #726, but are requested to do some testing of the patches that will be merged by topiltzin (i think that is the summary) +21:39:15 str4d: #741 was tabled for next meeting +21:39:22 sponge: nice :) +21:39:29 I say bring up 741 now +21:39:32 Okay, anything else? +21:39:32 hottuna: noted. +21:39:39 he's here, why not +21:39:46 fine by me +21:39:46 hottuna: Yes, minor thing. +21:40:01 ok, go orion! +21:40:04 de-tablizing 741 ... :) +21:40:20 I was wondering if someone could get me my credentials for the press@i2p2.de email account. +21:40:27 As well as update the website. +21:40:46 orion: website is in mtn +21:40:56 update what part of the website? +21:41:03 And no credentials required to update website. +21:41:18 (Just create a mtn key and go) +21:41:25 str4d: email account +21:41:43 welterde handles that domain as far as I know. +21:41:46 Or, nevermind. The team.html page has already been updated. +21:41:46 you'll be sorely disappointed, as I don't think we've ever gotten a single email there, but welterde is the person to ask to get added. It's just a redirector to a list, there's no account. +21:42:02 So right now it's just the email account. +21:42:20 I Will speak to welterde, thank you. I yield my time. +21:42:30 excellent +21:42:38 __Ticket #741 - process renamer on windows__ +21:42:45 Okay, so briefly de-tablizing 741? +21:42:45 topiltzin, str4d +21:42:52 yes +21:42:58 :-) +21:43:05 Current situation: the process renamer works. +21:43:12 (When called by the Tanuki wrapper) +21:43:23 (or passed CLI arguments) +21:44:01 I've tested it on Win7. topiltzin has verified that the code has been run on pretty much everything except Win8. +21:44:12 So it needs testing there. +21:44:34 Does anyone have win8 access? +21:44:37 32/64? +21:44:52 * KillYourTV can +21:44:59 The one part that is not working currently is the internal defaults - the arguments that are used if no arguments are provided externally (i.e. wrapper or CLI). +21:45:02 (win 8, x64 and/or x86) +21:45:09 My daughter was going to upgrade to 8, but we found out it is really bad. +21:45:12 zzz: I was running 64-bit Win7 +21:45:30 (IIRC) +21:45:30 so KillYourTV, you're up for some testing? +21:45:37 always +21:45:44 :) +21:45:52 Thanks KillYourTV :) +21:46:11 two remaining points I can see: +21:46:11 * KillYourTV will set up some VMs +21:46:14 Testing just requires dropping the new i2p.exe into the install folder, and tweaking wrapper.config to use "i2p" instead of "java". +21:46:21 1. Icons - need them in different sizes, alpha channels, b.s. +21:46:36 2. Strings like license, description, etc. need reviewing +21:46:55 1. - I've set the VS file to refer to the icon in the installer/ dir in i2p.i2p. +21:47:22 So it should be using the same icon as the launch4j-based i2p.exe uses. +21:47:25 I've not noticed but is the proposed "renamer" already in i2p.i2p? +21:47:36 2. - Agreed. +21:47:36 re Icons: i don't think that any high quality/svg files exist +21:47:51 KillYourTV: yes - installer/c/i2pExe +21:48:10 if it doesnt work w/o arguments, isnt that a problem? +21:48:10 cheers, I can handle the rest then ^^ +21:48:28 zzz: yes it is. +21:48:35 then some things like control panel are going to look weird +21:48:43 That needs to be fixed if it is going to replace the launch4j-based i2p.exe +21:48:54 str4d: are you sure it's a problem? I thought you hardcoded some defaults +21:49:17 topiltzin: I did, but it just crashes and I couldn't work out why at the time. +21:49:29 hardcodeing can be a bad thing, Do a path search first. +21:49:47 But when I pulled out (what should have been) the exact same arguments and used them via the CLI, it worked fine.. +21:50:02 sponge: different defaults. +21:50:13 ahh +21:50:35 sponge: these are the settings that I2P is run with if nothing else is there (no wrapper.config). See installer/i2pstandalone.xml +21:50:38 str4d: in order KillYourTV to test you need to build the actual i2p.exe or have you commited that in mtn? +21:50:46 (and the doBuildExe target in build.xml) +21:50:49 str4d: you may have to do like I did for BOB, basically a double main() +21:50:53 topiltzin: it's in mtn +21:51:07 * KillYourTV already asked ^^ +21:51:14 topiltzin: needs to be built - I wasn't going to commit the binary until we were close to actually using i. +21:51:21 KillYourTV: I meant that the source is in mtn ^_^ +21:51:24 the first main inserts missing args, passes it to the actual main() +21:51:31 oh...heh +21:51:58 sponge: that's pretty much what is done - if args are passed they are used, otherwise default args are constructed. +21:52:05 so you got main() and _main() +21:52:08 ok so the i2p.exe is not in mtn? +21:52:08 topiltzin: what is the format of launch.properties? +21:52:27 topiltzin: correct. Just installer/c/i2pExe/i2p.c etc. +21:52:30 the first is just a cleanup +21:52:37 sponge: see installer/c/i2pExe/i2p.c for the code. +21:52:37 topiltzin: src yes, binary no +21:52:48 will look, thanks +21:53:11 I'll get back to you on why it is broken +21:53:27 topiltzin: there were also several commented-out methods that I couldn't work out their purpose. +21:54:04 that's fine, I can explain offline +21:54:15 but KillYourTV needs a binary to test, can you build one? +21:54:54 topiltzin: sure. +21:55:21 launch.properties - I believe one line per property, need to double-check +21:55:39 (unless you already have VS2008 KillYourTV - that's what it is built with) +21:56:05 which brings up another interesting __misc__ point: +21:56:08 topiltzin: I'm thinking that launch.properties could be like wrapper.config but for the standalone case. +21:56:23 yeah +21:56:42 (Because the current standalone i2p.exe is not adjustable at all) +21:58:33 now that the project is loaded with cash (because some mysterious person donated 1000 BTC when they were still cheap) we should have some software licenses for things like vmware, visual studio, etc. +21:59:21 visual studio I can get for free or one of you guys +21:59:24 I'm sure that KillYourTV has legally purchased his copies of Windows 8 :-D but technically it's the project that should be funding that +21:59:39 microsoft is advertising $450 win8 computers on tv (Asus? Acer?), we could just buy one of those +22:00:05 excellent idea zzz +22:00:16 (dreamspark copies, "for educational use") +22:00:27 tiger direct often has deals for 300-400 on low end laptops +22:00:27 If Microsoft offers student discounts, I can get them. +22:00:34 If you want to go that route. +22:00:37 hottuna yes please (re VS) +22:00:51 wait +22:01:01 is the gamer laptop we bought win. 8? +22:01:19 do we really need toys? couldnt the testing be done on a vm? +22:01:27 echelon had his own windows. +22:01:45 and I do my testing in clean VMs +22:01:52 str4d: I have vs around some place (it is very old) but I won't be using that. I'll simply review your code once pull and apply is finished here and advise you +22:02:14 sponge: thanks. +22:02:59 a vm is always better +22:02:59 I agree with hottuna regarding the VM. +22:02:59 and we can pass around images for easier debugging etc. +22:02:59 alright. so are we happy with this topic/discussion? +22:02:59 str4d: no problem. I've head my head buried in C, C++ and ASM for the last month +22:03:02 a win8 netbook would be a hella lot cheaper than VS +22:03:52 zzz: What if I got a student copy of VS? +22:04:03 I was thinking of donating my student copy as well. +22:04:14 orion: if you get a student copy i2p cannot technically use it +22:04:21 My daughter could possibly get a student version too +22:04:27 s/technically/legally/ +22:04:31 topiltzin meant: orion: if you get a student copy i2p cannot legally use it +22:04:31 topiltzin: why not? +22:04:34 hottuna: yes over here. Two main action items: Fix the defaults (and provide a launch.properties); build an i2p.exe for KillYourTV to test. +22:04:37 It's for my education. +22:05:07 and not for a for-profit company/project +22:05:07 beause it is a student copy for orion's education - it means only he can use it +22:05:26 ok. in that case I cant provide VS. +22:05:49 what license does yours have? +22:05:58 and this stuff cant be built by mingw? +22:05:58 topiltzin: student +22:06:46 you can use it to build i2p.exe or other stuff for i2p, the only thing you can't do is give it to someone else +22:07:23 what about vs2008 express? Is that limited to 32bit only? +22:07:46 str4d: note! It is not good style to mix C++ comments in C code ;-) use /* */ +22:08:01 I suppose we need i2p.exe 64bit _and_ i2p.exe 32bit +22:08:32 I *think* 32-bit only is good enough +22:08:35 I also already see your problem +22:09:01 good enough = runs on both 64 and 32 bit windows +22:09:19 I'm not sure a 32bit i2p.exe can load the 64bit wrapper. The 32bit wrapper can't load the 64bit jvm +22:09:36 dunno though about this +22:10:48 str4d: i2p.c line 54, and the loop below -- you are not assiginging correctly... it should be '*new_argv[0]' not 'new_argv[0]' same for the loop below that. The final NULL should be OK +22:11:06 KillYourTV: how about a x86 which starts the x86 or x64 launcher? +22:11:44 str4d: Try that, and it should work for you +22:11:47 that's what I'm saying, I don't know if it can work. 32bit binaries _usually_ cannot call x64 binaries. +22:12:47 actually the first line may be OK, but the loop does need to be a * +22:13:26 read_options, if returning as a pointer, needs to copy the pointer +22:13:45 KillYourTV: trough cmd.exe it should work as last resort, tough thats a win problem +22:13:48 new_argv[i] = &(read_options[i-1]); +22:13:51 like so +22:14:57 sponge do you have access to a windows box? Can you help test this? +22:15:17 sponge: also post any comments on trac #741 +22:15:35 I have a win 7 laptop, but can't test today. I'm short on time, and had to budget time to be here +22:16:17 otherwise i would jump at it +22:16:52 point is that you have a pointer to an array of pointers +22:17:41 I can basically test any/all versions of Windows +22:17:44 you are not copying the pointer, your code is copying the first few chars, which will point to random crap and cause your crash +22:18:46 new_argv[0] = argv[0]; <-- that is okay +22:18:59 new_argv[i] = read_options[i-1]; <-- random crap +22:19:13 * hottuna is readying the meeting closing hammer +22:20:21 alright.. closing time +22:20:24 sponge: I'm pretty sure that section is still the same as it was for limewireExe +22:20:31 Before everyone goes, I've been thinking of "non profit 501(c)(3) status" for the Invisible Internet Project. Would this be the place to talk about that or somewhere else? +22:20:38 (Which *should* have been in a working state, according to topiltzin) +22:20:45 micster: yes +22:21:04 hottuna: we're done with #741? +22:21:22 i doubt we'll become done with it :P +22:21:29 str4d: problem 2 +22:21:33 free(read_options); +22:21:45 don't free them there +22:21:48 I saw a post in the forum about someone wanting to incorporate in Germany. I'm in the US and have an interest in pursuing this. +22:21:52 KillYourTV: re: 32/64, what currently happens with the launch4j-based i2p.exe? That starts a separate java.exe process; is it built separately for 32 and 64 bit? +22:21:55 sponge: I've gotta go. Could you take care of the rest of the meeting? +22:21:58 free them at the very end +22:22:09 I'm about to go too +22:22:15 it just needs a final baf, and it's done +22:22:18 darnit! +22:22:25 micster: Great! Sadly, timing's pretty bad. Post about it on zzz.i2p ("the forum") if you can? +22:22:28 sponge: I'll try your suggestion and report back. +22:22:31 I think it is done +22:22:38 Ok +22:22:41 (later though - afk now o/) +22:22:59 str4d: double check that it is a pointer +22:23:01 * hottuna baf's the meeting closing hammer +22:23:06 * hottuna **baf** +22:23:17 **BARF** :-) +22:23:35 summary posted at: http://zzz.i2p/topics/1397 +22:23:42 Title: zzz.i2p: Meeting [4th June] (at zzz.i2p) +22:23:50 :) +22:23:57 cool, I can now go run my errands +22:24:08 great meeting everyone! +22:24:19 micster: the meeting is now finishing up and everyone seems to have a lot they want to get across. You'll get more exposure and brain time if you post it there. +22:24:53 Ok, I'll make the post. Maybe it can be discussed in a future meeting. +22:25:01 Just wanted to see if I was in the right place. +22:26:52 lots of good discussion. thanks for making the time to particpate y'all +22:27:07 :) +22:28:54 micster, the correct thread for that is http://zzz.i2p/topics/1388 +22:28:58 Title: zzz.i2p: Official I2P group (at zzz.i2p) diff --git a/i2p2www/meetings/logs/224.rst b/i2p2www/meetings/logs/224.rst new file mode 100644 index 00000000..79146123 --- /dev/null +++ b/i2p2www/meetings/logs/224.rst @@ -0,0 +1,37 @@ +I2P dev meeting, June 4, 2013 @ 20:00 UTC +========================================= + +Quick recap +----------- + +* **Present:** + christoph2, + dg, + hottuna, + inscrutable, + KillYourTV, + Meeh, + orion, + psi, + sponge, + str4d, + topiltzin, + zzz + +* The next NetDB backend + * Fast key rotation is probably meaningless according to discussions with christop egger. + * Regarding building a completely new overlay, that may be difficult task. + +* Ticket #729 - properties location on osx + * zab/topiltzin will merge. Meehs attention is requested for some testing. + +* Ticket #741 - process renamer on windows + * KillYouTV agreed to some Win8 x84/x64 testing. + * Defaults of the new i2p exe are not set up/working yet. + * Icons for the I2P executables are not available in high quality/svg. -> Bad looks. + +* Misc? + * Sponge: Bridge API for UDP (BOB) RFC + * Sponge: IPV6 and de-anonymization since the address space is so large that each user and device is likely to have an address. + * Sponge: Will be around more Real Soon Now (tm). + * Orion: i2pcpp supports ipv6. diff --git a/i2p2www/meetings/logs/225.log b/i2p2www/meetings/logs/225.log new file mode 100644 index 00000000..466eb4fe --- /dev/null +++ b/i2p2www/meetings/logs/225.log @@ -0,0 +1,108 @@ +20:00:08 0) hi +20:00:23 1) RI verifies disabled in a point release? +20:00:30 2) misc. topics led by Meeh +20:00:33 3) baffer by Meeh +20:00:36 ------------- +20:00:36 0) hi +20:00:51 1) RI verifies disabled in a point release? +20:01:02 welterde brought this up the other day +20:01:33 if I'm going to do it it has to be in the next few days, as I'm AFK ~ 13th - 29th +20:01:53 echelon is traveling but for the moment we'll assume we can get a hold of him and he can do the news +20:02:14 so welterde, please make your case for why we should do this +20:03:08 the attack outlined in the paper is quite an serious attack for your not-well used destinations, as the required statistics are not very large +20:04:14 does it attack the server dests, or the (client) users that connect to them? +20:04:21 and for long-lived destinations it's even more dangerous as you can keep the attack going for as long as it takes to get enough statistics +20:05:08 zzz: the client that connects to some dest... say irc link tunnels over dedicated destination would be a prime target (if you get hold of the destination somehow) +20:06:29 zzz: however.. there is an option to disable RI verifies in the advanced options.. maybe news update to users to disable it? +20:06:29 have you always considered it serious or have you changed your mind recently? +20:06:56 I thought I just added that option last week? +20:07:15 oh +20:07:18 you did, I made the same mistake. +20:07:34 thought you just changed the default value of that option.. ok.. not an option then +20:07:57 maybe I didnt explain it well in some post... +20:08:59 zzz: and in the paper they also didn't take timing into account.. I guess that can be used to further improve the attack +20:09:02 We've had a preprint of their paper for almost 5 months, since March 10. If this is a drop-everything problem, we've done an incredibly poor job of responding. +20:09:33 So I'm wondering if you have always thought it critical or have changed your mind recently, if so why? +20:10:33 well.. I was under quite a bit of stress until recently.. so didn't really take a look until now +20:11:30 zzz: buts it's really hard to say as we don't really have that much data on these things.. +20:11:48 what happened to that page on trac with our openitp responses, and our lack of security criteria... +20:12:11 If it is a drop-everything problem, waiting 1 1/2 more months is a problem too. +20:12:30 sure +20:12:40 but is it +20:13:12 is the problem the RI verifies or is it Sybil? If it's Sybil then we don't have any near-term fixes +20:13:27 zzz: it's the RI verifies +20:13:46 i.e., is there a large class of hostile-ff attacks +20:14:16 zzz: and an variant of the attack might be possible with RI lookup and then waiting for an connect as well.. but that attack would be magnitudes more difficult.. so I wouldn't worry about that one just yet +20:14:35 if an attacker takes over a portion of the keyspace, isn't there any number of things he could do? +20:15:20 zzz: given enough time the attacker doesn't have to occupy an large portion of the keyspace +20:15:23 I guess I always looked at this as a Sybil issue. Doesnt me I was right. +20:15:30 *mean +20:16:07 he only has to occupy the space surrounding the target LS +20:16:53 zzz: hmm.. what would be nice for stats.i2p or so would be an visualization of the ff over the keyspace.. (if there is no such thing yet) +20:18:50 ok thanks for making the case welterde. Let me now ask for others to jump here with their opinions +20:18:53 non-subtle attacks might be visible there then +20:19:00 * welterde looks for the openitp page you mentioned +20:19:22 str4d set it up but I don't see it linked on the home page any more +20:19:35 q: Could someone pull off the RI attack without full keyspace Sybil? +20:19:45 I think yes but ??? +20:20:05 http://trac.i2p2.i2p/wiki/OpenITPReview/Criteria +20:20:35 Vulnerability Response Process Maturity and Transparency +20:21:20 we aren't ever talking about full keyspace sybil here. You're targeting a particular slice +20:21:31 dg: he only has to capture most LS lookups.. and as many RI lookups as possible; the latter portion only depends on how much time he has for the attack +20:22:17 "most"? For the network? +20:22:20 it's just really bugging me that we could have done this months ago for no effort. +20:22:39 right. it looks shit if we do it now, really. +20:22:49 but I guess that's irrelevant +20:23:14 who else has an opinion, please speak up +20:23:43 dd if=/dev/null of=opinion.txt +20:24:13 last call. we doing this? +20:24:27 of course if someone was bored he could whip up an simulation.. that would certainly help ;) +20:25:09 maybe I'm just pissed at myself that I didn't think of just turning off the verifies. +20:25:32 zzz: don't worry about it. you aren't expected to cover everything always. +20:25:43 ok everybody with an opinion please enter yes to do a release this week or no for don't +20:26:06 (or i am here if you don't care one way or the other..) +20:26:58 If I don't see any votes we arent doing it +20:27:21 will the release contain *only* disabling RI verifies? +20:27:32 vs. whatever is in trunk now? +20:27:35 maybe we shouldn't have skipped the who is here phase of the meeting +20:27:54 I'm just not qualified enough. +20:27:57 I don't care who is here. I care who has an opinion. +20:28:24 zzz: well.. who isn't here doesn't have an opinion ;) +20:28:46 zzz: I guess we are talking more about an small release, right? +20:28:59 welterde: what do you mean +20:29:02 It would be just RI verifies + anything else tiny we decide to pluck from trunk +20:29:17 and probably called 0.9.7.1? +20:29:28 yeah.. that's what I had in mind as well +20:29:39 no knowledge of this topic therefore no opinion, if we do it i'll of course be able to do the uploads to the various places, etc. +20:29:58 for gods sake somebody vote. welterde at least +20:30:13 who else has read the UCSB paper? +20:30:16 oh I am for it if that's not clear ;) +20:30:41 I've read it.. +20:31:16 I'm anxious to test the other stuff in trunk so the more we decide to pluck the more "Yes" my vote becomes. No opinion strictly on RI verification. +20:31:54 str4d: your opinion? you were quite active in the discussion on the forum ;) +20:33:56 zzz: maybe we should do the vote on the paper thread.. so str4d and tuna (and the others in the thread who are not here) have a say as well.. +20:33:56 I would want to keep the "other stuff" list very short as I would be doing this very fast and then blowing out of town, unable to fix problems +20:33:59 tuna is almost completely afk for a while yet +20:34:51 a no would be better than silence +20:35:03 zzz: well.. or kytv could do the build.. +20:35:10 in theory kytv can do releases too, he's the other one with signing keys, yes +20:36:35 ok then lets do it. I'll put a thread up on zzz.i2p if you want to propose other stuff to go in, final decision in about 24 hours, and I'll do the build maybe thursday. Can somebody contact echelon? +20:36:53 anything else on this topic? +20:37:37 I don't think so. +20:38:23 http://zzz.i2p/topics/1443 +20:38:40 please review the 17K line diff from 0.9.7 and history.txt for other pluck candidates +20:38:47 2) Meeh's topics +20:38:50 take it away Meeh +20:54:33 zzz: the tag is "i2p-0.9.7" +20:54:36 not "0.9.7" +20:54:47 * topiltzin preparing his plucklist +20:55:26 same here +20:55:32 thx +20:55:47 zzz: pm ok? +20:57:06 only if it's of zero interest to anybody else +20:58:51 draft for email to zooko +20:58:55 http://pastethis.i2p/show/0bZ3iFeE9uABCORkfXV6/ +20:58:58 Title: Paste #0bZ3iFeE9uABCORkfXV6 | LodgeIt! (at pastethis.i2p) +20:59:10 I didn't include status or anything yet. I may be way off base. Feedback appreciated. +21:01:00 3) /me *baf*s the meeting closed for Meeh +21:03:29 dg that's a really great start. diff --git a/i2p2www/meetings/logs/225.rst b/i2p2www/meetings/logs/225.rst new file mode 100644 index 00000000..28338222 --- /dev/null +++ b/i2p2www/meetings/logs/225.rst @@ -0,0 +1,12 @@ +I2P dev meeting, August 6, 2013 @ 20:00 UTC +=========================================== + +Quick recap +----------- + +* **Present:** + dg, + kytv, + topiltzin, + welterde, + zzz From 4e5b6790d12bb7acb9ca3dbe6b3c471cd0174370 Mon Sep 17 00:00:00 2001 From: str4d Date: Wed, 14 Aug 2013 22:18:06 +0000 Subject: [PATCH 537/650] Added site updater --- site-updater.sh | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100755 site-updater.sh diff --git a/site-updater.sh b/site-updater.sh new file mode 100755 index 00000000..85ae1067 --- /dev/null +++ b/site-updater.sh @@ -0,0 +1,18 @@ +#!/bin/sh +TMP=tmp + +mtn update 2>&1 | tee $TMP + +cat $TMP | grep "^mtn: updating 'i2p2www/translations/" >/dev/null +if [ $? -eq 0 ]; then + echo "Translations updated, compiling messages" + ./compile-messages.sh +fi + +cat $TMP | grep "^mtn: updating 'i2p2www/.*/.*\.py" >/dev/null +if [ $? -eq 0 ]; then + echo "Python files changed, restarting server" + supervisorctl restart mainsite +fi + +rm $TMP From 53e242e93ac93a999b7a13913bdc73aa1fb5d0d5 Mon Sep 17 00:00:00 2001 From: dev Date: Wed, 14 Aug 2013 22:21:59 +0000 Subject: [PATCH 538/650] change server restart method --- site-updater.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/site-updater.sh b/site-updater.sh index 85ae1067..448f3aeb 100755 --- a/site-updater.sh +++ b/site-updater.sh @@ -12,7 +12,7 @@ fi cat $TMP | grep "^mtn: updating 'i2p2www/.*/.*\.py" >/dev/null if [ $? -eq 0 ]; then echo "Python files changed, restarting server" - supervisorctl restart mainsite + touch /tmp/2fcd2f17-c293-4f77-b4c9-9b266ba70daa fi rm $TMP From 536134c7bd5fb101962c4d93180e0ce7cb59921c Mon Sep 17 00:00:00 2001 From: str4d Date: Thu, 15 Aug 2013 08:10:42 +0000 Subject: [PATCH 539/650] Updated README --- README | 15 +++++++++++++++ www.i2p2/README | 14 -------------- 2 files changed, 15 insertions(+), 14 deletions(-) create mode 100644 README delete mode 100644 www.i2p2/README diff --git a/README b/README new file mode 100644 index 00000000..e6eae615 --- /dev/null +++ b/README @@ -0,0 +1,15 @@ +To run locally (for testing purposes): + +- Install proxychains, configure it for Tor + +- Pull in the dependencies: +$ proxychains ./setup_venv.sh +(you can also pull them non-anon by leaving out proxychains) + +- Compile translations (if you want to see them): +$ ./compile-messages.sh + +- Start the webserver: +$ ./runserver.py + +- Open the site at http://localhost:5000/ diff --git a/www.i2p2/README b/www.i2p2/README deleted file mode 100644 index 1b8ba45d..00000000 --- a/www.i2p2/README +++ /dev/null @@ -1,14 +0,0 @@ -To run locally (for testing purposes): - -$ python app.py -This will run a webserver on http://localhost:5009/ - -If you get python import errors when trying to run the local web server, you -might need to install required dependencies: jinja and werkzeug. If you are -using Linux, they might be in the repository of your distribution. Otherwise -you will have to install them yourself. Please see the homepages of these -projects: - -http://jinja.pocoo.org/ -http://werkzeug.pocoo.org/ - From 5816bafb17ab16fc00a7434d74c1c135b72da3aa Mon Sep 17 00:00:00 2001 From: str4d Date: Thu, 15 Aug 2013 08:17:07 +0000 Subject: [PATCH 540/650] Removed old files --- www.i2p2/app.py | 74 -------------------------------------------- www.i2p2/generate.py | 26 ---------------- www.i2p2/generate.sh | 5 --- 3 files changed, 105 deletions(-) delete mode 100644 www.i2p2/app.py delete mode 100644 www.i2p2/generate.py delete mode 100755 www.i2p2/generate.sh diff --git a/www.i2p2/app.py b/www.i2p2/app.py deleted file mode 100644 index 76323b41..00000000 --- a/www.i2p2/app.py +++ /dev/null @@ -1,74 +0,0 @@ -from werkzeug import BaseRequest, BaseResponse, ETagResponseMixin, escape, run_simple, SharedDataMiddleware -from werkzeug.exceptions import HTTPException -from werkzeug.routing import RequestRedirect -from jinja import Environment, FileSystemLoader, MemcachedFileSystemLoader -from jinja.exceptions import TemplateNotFound -import os -from time import time -from random import randint - -domain = "http://www.i2p2.de" - -class Request(BaseRequest): - """Useful subclass of the default request that knows how to build urls.""" - - def __init__(self, environ): - BaseRequest.__init__(self, environ) - - -class Response(BaseResponse, ETagResponseMixin): - """Subclass of base response that has a default mimetype of text/html.""" - default_mimetype = 'text/html' - - -# setup jinja -try: - env = Environment(loader=MemcachedFileSystemLoader('pages', memcache_host=['127.0.0.1:11211'], memcache_time=5*60)) -except RuntimeError: - env = Environment(loader=FileSystemLoader('pages', use_memcache=False, auto_reload=True)) - -def app(environ, start_response): - """The WSGI application that connects all together.""" - req = Request(environ) - path = req.path[1:].lower() - # do theme handling - theme = 'light' - if 'style' in req.cookies: - theme = req.cookies['style'] - if 'theme' in req.args.keys(): - theme = req.args['theme'] - if not os.path.isfile('static/styles/%s.css' % theme): - theme = 'light' - if path == '': - path = 'index' - mime_type='text/html' - try: - try: - path.index('.') - if path.split('.')[-1].isdigit() and not path.split('.')[-1].isalpha(): - raise ValueError() - tmpl = env.get_template(path) - if path[-3:] == 'txt': - mime_type='text/plain' - if path[-3:] == 'xml': - mime_type='text/xml' - except ValueError: - tmpl = env.get_template(path + '.html') - except TemplateNotFound: - tmpl = env.get_template('not_found.html') - resp = Response(tmpl.render(static=False, theme=theme, domain=domain, path=path), mimetype=mime_type) - # more theme handling - if theme == 'light' and 'style' in req.cookies: - resp.delete_cookie('style') - elif theme != 'light': - resp.set_cookie('style', theme) - resp.add_etag() - resp.make_conditional(req) - return resp(environ, start_response) - -app = SharedDataMiddleware(app, { - '/_static': os.path.join(os.path.dirname(__file__), 'static') -}) - -if __name__ == '__main__': - run_simple('localhost', 5009, app) diff --git a/www.i2p2/generate.py b/www.i2p2/generate.py deleted file mode 100644 index f37b93d7..00000000 --- a/www.i2p2/generate.py +++ /dev/null @@ -1,26 +0,0 @@ -#!/usr/bin/env python -import os -from jinja import Environment, FileSystemLoader -#from codecs import open - -env = Environment(loader=FileSystemLoader('pages'), trim_blocks=True, friendly_traceback=False) - - -def get_files(folder): - for fn in os.listdir(folder): - if fn.startswith('_'): - continue - fn = os.path.join(folder, fn) - if os.path.isdir(fn): - for item in get_files(fn): - yield item - else: - yield fn - -for filename in get_files('pages'): - print filename - filename = filename.split('/', 2)[1] - t = env.get_template(filename) - f = open(os.path.join('out', filename), 'w') - f.write(t.render(static=True).encode('utf-8')) - f.close() \ No newline at end of file diff --git a/www.i2p2/generate.sh b/www.i2p2/generate.sh deleted file mode 100755 index f56989fc..00000000 --- a/www.i2p2/generate.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/sh -rm -rf out -mkdir out -cp -R static out/_static -python generate.py From 4ae84aa9e276f246a3aa349e47f4cd2c7b384a73 Mon Sep 17 00:00:00 2001 From: str4d Date: Thu, 15 Aug 2013 08:30:01 +0000 Subject: [PATCH 541/650] Moved setup, translation config files into subdir --- compile-messages.sh | 2 +- {babel.cfg => etc/babel.cfg}/about | 0 {babel.cfg => etc/babel.cfg}/blog | 0 {babel.cfg => etc/babel.cfg}/comparison | 0 {babel.cfg => etc/babel.cfg}/docs | 0 {babel.cfg => etc/babel.cfg}/get-involved | 0 {babel.cfg => etc/babel.cfg}/misc | 0 {babel.cfg => etc/babel.cfg}/priority | 0 {babel.cfg => etc/babel.cfg}/research | 0 multi-domain.patch => etc/multi-domain.patch | 0 project.vars => etc/project.vars | 0 reqs.txt => etc/reqs.txt | 0 translation.vars => etc/translation.vars | 2 +- extract-messages.sh | 2 +- init-new-po.sh | 2 +- setup_venv.sh | 6 +++--- update-existing-po.sh | 2 +- 17 files changed, 8 insertions(+), 8 deletions(-) rename {babel.cfg => etc/babel.cfg}/about (100%) rename {babel.cfg => etc/babel.cfg}/blog (100%) rename {babel.cfg => etc/babel.cfg}/comparison (100%) rename {babel.cfg => etc/babel.cfg}/docs (100%) rename {babel.cfg => etc/babel.cfg}/get-involved (100%) rename {babel.cfg => etc/babel.cfg}/misc (100%) rename {babel.cfg => etc/babel.cfg}/priority (100%) rename {babel.cfg => etc/babel.cfg}/research (100%) rename multi-domain.patch => etc/multi-domain.patch (100%) rename project.vars => etc/project.vars (100%) rename reqs.txt => etc/reqs.txt (100%) rename translation.vars => etc/translation.vars (79%) diff --git a/compile-messages.sh b/compile-messages.sh index 18b88163..bc2e8b7b 100755 --- a/compile-messages.sh +++ b/compile-messages.sh @@ -1,5 +1,5 @@ #!/bin/sh -. ./translation.vars +. ./etc/translation.vars if [ $# -ge 1 ] then diff --git a/babel.cfg/about b/etc/babel.cfg/about similarity index 100% rename from babel.cfg/about rename to etc/babel.cfg/about diff --git a/babel.cfg/blog b/etc/babel.cfg/blog similarity index 100% rename from babel.cfg/blog rename to etc/babel.cfg/blog diff --git a/babel.cfg/comparison b/etc/babel.cfg/comparison similarity index 100% rename from babel.cfg/comparison rename to etc/babel.cfg/comparison diff --git a/babel.cfg/docs b/etc/babel.cfg/docs similarity index 100% rename from babel.cfg/docs rename to etc/babel.cfg/docs diff --git a/babel.cfg/get-involved b/etc/babel.cfg/get-involved similarity index 100% rename from babel.cfg/get-involved rename to etc/babel.cfg/get-involved diff --git a/babel.cfg/misc b/etc/babel.cfg/misc similarity index 100% rename from babel.cfg/misc rename to etc/babel.cfg/misc diff --git a/babel.cfg/priority b/etc/babel.cfg/priority similarity index 100% rename from babel.cfg/priority rename to etc/babel.cfg/priority diff --git a/babel.cfg/research b/etc/babel.cfg/research similarity index 100% rename from babel.cfg/research rename to etc/babel.cfg/research diff --git a/multi-domain.patch b/etc/multi-domain.patch similarity index 100% rename from multi-domain.patch rename to etc/multi-domain.patch diff --git a/project.vars b/etc/project.vars similarity index 100% rename from project.vars rename to etc/project.vars diff --git a/reqs.txt b/etc/reqs.txt similarity index 100% rename from reqs.txt rename to etc/reqs.txt diff --git a/translation.vars b/etc/translation.vars similarity index 79% rename from translation.vars rename to etc/translation.vars index 46ccc9ea..b892c1db 100644 --- a/translation.vars +++ b/etc/translation.vars @@ -1,6 +1,6 @@ PROJECT=I2P VERSION=website -BABELCFG=babel.cfg +BABELCFG=etc/babel.cfg POTDIR=pots PROJDIR=i2p2www TRANSDIR=$PROJDIR/translations diff --git a/extract-messages.sh b/extract-messages.sh index bfedfc27..fb7250d9 100755 --- a/extract-messages.sh +++ b/extract-messages.sh @@ -1,5 +1,5 @@ #!/bin/sh -. ./translation.vars +. ./etc/translation.vars if [ ! -e $POTDIR ]; then mkdir $POTDIR diff --git a/init-new-po.sh b/init-new-po.sh index 71a50008..5a021c41 100755 --- a/init-new-po.sh +++ b/init-new-po.sh @@ -1,5 +1,5 @@ #!/bin/sh -. ./translation.vars +. ./etc/translation.vars if [ $# -ge 1 ] then diff --git a/setup_venv.sh b/setup_venv.sh index 79d46ba2..e9ed695b 100755 --- a/setup_venv.sh +++ b/setup_venv.sh @@ -1,6 +1,6 @@ #!/bin/sh set -e -. ./project.vars +. ./etc/project.vars if [ ! $venv ]; then echo "ERROR: virtualenv not found!" >&2 @@ -10,7 +10,7 @@ else fi . $venv_dir/bin/activate - pip install -r reqs.txt + pip install -r etc/reqs.txt # Apply multi-domain patch to Flask-Babel - patch -p0 Date: Thu, 15 Aug 2013 21:27:54 +0000 Subject: [PATCH 542/650] % -> % to fix translations problems --- .../pages/site/about/performance/history.html | 4 +- i2p2www/pages/site/docs/api/i2ptunnel.html | 4 +- .../site/docs/applications/bittorrent.html | 2 +- i2p2www/pages/site/docs/discussions/ntcp.html | 14 ++--- .../pages/site/docs/how/network-database.html | 4 +- .../pages/site/docs/how/peer-selection.html | 2 +- i2p2www/pages/site/docs/how/threat-model.html | 6 +- i2p2www/pages/site/docs/spec/blockfile.html | 8 +-- i2p2www/pages/site/docs/spec/plugin.html | 2 +- i2p2www/pages/site/docs/spec/updates.html | 2 +- i2p2www/pages/site/docs/transport/ssu.html | 4 +- i2p2www/pages/site/faq.html | 4 +- .../get-involved/bounties/unit-tests.html | 4 +- i2p2www/pages/site/misc/benchmarks.html | 2 +- i2p2www/pages/site/misc/jbigi.html | 2 +- i2p2www/translations/de/LC_MESSAGES/about.po | 11 ++-- i2p2www/translations/de/LC_MESSAGES/blog.po | 2 +- .../translations/de/LC_MESSAGES/comparison.po | 2 +- i2p2www/translations/de/LC_MESSAGES/docs.po | 39 ++++++------- .../de/LC_MESSAGES/get-involved.po | 7 +-- i2p2www/translations/de/LC_MESSAGES/misc.po | 2 +- .../translations/de/LC_MESSAGES/priority.po | 54 +++++++++--------- .../translations/de/LC_MESSAGES/research.po | 2 +- i2p2www/translations/es/LC_MESSAGES/about.po | 20 ++----- i2p2www/translations/es/LC_MESSAGES/blog.po | 2 +- .../translations/es/LC_MESSAGES/comparison.po | 2 +- i2p2www/translations/es/LC_MESSAGES/docs.po | 45 +++++++-------- .../es/LC_MESSAGES/get-involved.po | 7 +-- i2p2www/translations/es/LC_MESSAGES/misc.po | 2 +- .../translations/es/LC_MESSAGES/priority.po | 56 +++++++++---------- .../translations/es/LC_MESSAGES/research.po | 2 +- i2p2www/translations/fr/LC_MESSAGES/about.po | 11 ++-- i2p2www/translations/fr/LC_MESSAGES/blog.po | 2 +- .../translations/fr/LC_MESSAGES/comparison.po | 2 +- i2p2www/translations/fr/LC_MESSAGES/docs.po | 39 ++++++------- .../fr/LC_MESSAGES/get-involved.po | 7 +-- i2p2www/translations/fr/LC_MESSAGES/misc.po | 2 +- .../translations/fr/LC_MESSAGES/priority.po | 54 +++++++++--------- .../translations/fr/LC_MESSAGES/research.po | 2 +- .../translations/pt/LC_MESSAGES/priority.po | 54 +++++++++--------- .../translations/sv_SE/LC_MESSAGES/about.po | 11 ++-- .../translations/sv_SE/LC_MESSAGES/blog.po | 2 +- .../sv_SE/LC_MESSAGES/comparison.po | 2 +- .../translations/sv_SE/LC_MESSAGES/docs.po | 39 ++++++------- .../sv_SE/LC_MESSAGES/get-involved.po | 7 +-- .../translations/sv_SE/LC_MESSAGES/misc.po | 2 +- .../sv_SE/LC_MESSAGES/priority.po | 54 +++++++++--------- .../sv_SE/LC_MESSAGES/research.po | 2 +- 48 files changed, 285 insertions(+), 326 deletions(-) diff --git a/i2p2www/pages/site/about/performance/history.html b/i2p2www/pages/site/about/performance/history.html index 59f92ba9..d919c51a 100644 --- a/i2p2www/pages/site/about/performance/history.html +++ b/i2p2www/pages/site/about/performance/history.html @@ -24,7 +24,7 @@ Rather than try to tune this method, we'll call out to ugha and duck are working on the C/JNI glue code, and the existing java code is already deployed with hooks for that whenever its ready. Preliminary results look fantastic - running the router with the native GMP modPow is providing over -a 800% speedup in encryption performance, and the load was cut in half. This +a 800% speedup in encryption performance, and the load was cut in half. This was just on one user's machine, and things are nowhere near ready for packaging and deployment, yet. {%- endtrans %}

    @@ -54,7 +54,7 @@ have to do the network database lookup.

    {% trans -%} For unpublished LeaseSets such as "shared clients", this is the only way to get the LeaseSet to Bob. Unfortunately this bundling every time adds -almost 100% overhead to a high-bandwidth connection, and much more to +almost 100% overhead to a high-bandwidth connection, and much more to a connection with smaller messages. {%- endtrans %}

    {% trans -%} diff --git a/i2p2www/pages/site/docs/api/i2ptunnel.html b/i2p2www/pages/site/docs/api/i2ptunnel.html index 608ab170..f06536cd 100644 --- a/i2p2www/pages/site/docs/api/i2ptunnel.html +++ b/i2p2www/pages/site/docs/api/i2ptunnel.html @@ -40,8 +40,8 @@ A HTTP proxy used for browsing I2P and the regular internet anonymously through Browsing internet through I2P uses a random proxy specified by the "Outproxies:" option. {%- endtrans %}

  • Irc2P - localhost:6668 - {% trans %}An IRC tunnel to the default anonymous IRC network, Irc2P.{% endtrans %}
  • -
  • mtn.i2p2.i2p - localhost:8998 - {% trans -%} -The anonymous monotone +
  • mtn.i2p2.i2p - localhost:8998 - {% trans monotone='http://en.wikipedia.org/wiki/Monotone_%28software%29' -%} +The anonymous monotone sourcecode repository for I2P {%- endtrans %}
  • smtp.postman.i2p - localhost:7659 - {% trans postman=i2pconv('hq.postman.i2p') -%} diff --git a/i2p2www/pages/site/docs/applications/bittorrent.html b/i2p2www/pages/site/docs/applications/bittorrent.html index 79320856..86744fa0 100644 --- a/i2p2www/pages/site/docs/applications/bittorrent.html +++ b/i2p2www/pages/site/docs/applications/bittorrent.html @@ -108,7 +108,7 @@ The peers key may be absent, or the peers value may be zero-length.

    {% trans -%} While compact response support is optional for both clients and trackers, it is highly -recommended as it reduces the nominal response size by over 90%. +recommended as it reduces the nominal response size by over 90%. {%- endtrans %}

    diff --git a/i2p2www/pages/site/docs/discussions/ntcp.html b/i2p2www/pages/site/docs/discussions/ntcp.html index 50409695..f5bf132e 100644 --- a/i2p2www/pages/site/docs/discussions/ntcp.html +++ b/i2p2www/pages/site/docs/discussions/ntcp.html @@ -144,10 +144,10 @@ Posted to new Syndie, 2007-03-27

    On the whole, I'm open to experimenting with this, though remember why NTCP is there in the first place - SSU failed in a congestion collapse. NTCP "just -works", and while 2-10% retransmission rates can be handled in normal -single-hop networks, that gives us a 40% retransmission rate with 2 hop +works", and while 2-10% retransmission rates can be handled in normal +single-hop networks, that gives us a 40% retransmission rate with 2 hop tunnels. If you loop in some of the measured SSU retransmission rates we saw -back before NTCP was implemented (10-30+%), that gives us an 83% retransmission +back before NTCP was implemented (10-30+%), that gives us an 83% retransmission rate. Perhaps those rates were caused by the low 10 second timeout, but increasing that much would bite us (remember, multiply by 5 and you've got half the journey). @@ -333,7 +333,7 @@ stream timeout. TCP in practice has retransmission timeouts orders of magnitude less, though yes, can get to 60s on links running through exposed wires or satellite transmissions ;) If we increase the streaming lib retransmission timeout to e.g. 75 seconds, we could go get a beer before a web page loads -(especially assuming less than a 98% reliable transport). That's one reason we +(especially assuming less than a 98% reliable transport). That's one reason we prefer NTCP.

    @@ -399,7 +399,7 @@ more often on NTCP, but maybe that's a hint on why NTCP performs worse. Posted to new Syndie, 2007-03-31

    measured SSU retransmission rates we saw back before NTCP was implemented -(10-30+%) +(10-30+%)

    Can the router itself measure this? If so, could a transport be selected based @@ -463,7 +463,7 @@ while still somewhat bothering to carry TCP streams. On that background, a small diversity of transports (as many as needed, but not more) appears sensible in either case. Which should be the main transport, depends on their performance-wise. I've seen nasty stuff on my line when I -tried to use its full capacity with UDP. Packet losses on the level of 35%. +tried to use its full capacity with UDP. Packet losses on the level of 35%.

    We could definitely try playing with UDP versus TCP priorities, but I'd urge @@ -502,7 +502,7 @@ build messages). On that background, a small diversity of transports (as many as needed, but not more) appears sensible in either case. Which should be the main transport, depends on their performance-wise. I've seen nasty stuff on my line when I -tried to use its full capacity with UDP. Packet losses on the level of 35%. +tried to use its full capacity with UDP. Packet losses on the level of 35%.

    diff --git a/i2p2www/pages/site/docs/how/network-database.html b/i2p2www/pages/site/docs/how/network-database.html index 136fc044..bd948a8e 100644 --- a/i2p2www/pages/site/docs/how/network-database.html +++ b/i2p2www/pages/site/docs/how/network-database.html @@ -279,7 +279,7 @@ automatically enabled. {%- endtrans %}

    {% trans -%} -With the current rules for automatic opt-in, approximately 6% of +With the current rules for automatic opt-in, approximately 6% of the routers in the network are floodfill routers. {%- endtrans %}

    @@ -810,7 +810,7 @@ more correlative. Of course, a larger network makes a Sybil attack that much har

    {% trans threatmodel=site_url('docs/how/threat-model') -%} However, the general issue of DHT information leakage in I2P needs further investigation. The floodfill routers are in a position to observe queries and gather information. -Certainly, at a level of f = 0.2 (20% malicious nodes, as specifed in the paper) +Certainly, at a level of f = 0.2 (20% malicious nodes, as specifed in the paper) we expect that many of the Sybil threats we describe (here, here and diff --git a/i2p2www/pages/site/docs/how/peer-selection.html b/i2p2www/pages/site/docs/how/peer-selection.html index fd26f061..5922d8b4 100644 --- a/i2p2www/pages/site/docs/how/peer-selection.html +++ b/i2p2www/pages/site/docs/how/peer-selection.html @@ -237,7 +237,7 @@ To prevent some simple attacks, and for performance, there are the following res Two peers from the same /16 IP space may not be in the same tunnel. {%- endtrans %}

  • {% trans -%} -A peer may participate in a maximum of 33% of all tunnels created by the router. +A peer may participate in a maximum of 33% of all tunnels created by the router. {%- endtrans %}
  • {% trans -%} Peers with extremely low bandwidth are not used. diff --git a/i2p2www/pages/site/docs/how/threat-model.html b/i2p2www/pages/site/docs/how/threat-model.html index 33f1cd35..1fd3b026 100644 --- a/i2p2www/pages/site/docs/how/threat-model.html +++ b/i2p2www/pages/site/docs/how/threat-model.html @@ -312,7 +312,7 @@ willing to contribute. The defense against this is: Set defaults so that most users provide resources to the network. In I2P, users route traffic by default. In sharp distinction to other networks, -over 95% of I2P users relay traffic for others. +over 95% of I2P users relay traffic for others. {%- endtrans %}
  • {% trans -%} Provide easy configuration options so that users may increase their @@ -585,7 +585,7 @@ Reference: Breaking and Improving Protocol Obfuscation Sybil describes a category of attacks where the adversary creates arbitrarily large numbers of colluding nodes and uses the increased numbers to help mounting other attacks. For instance, if an attacker is in a network where peers -are selected randomly and they want an 80% chance to be one of those peers, they +are selected randomly and they want an 80% chance to be one of those peers, they simply create five times the number of nodes that are in the network and roll the dice. When identity is free, Sybil can be a very potent technique for a powerful adversary. The primary technique to address this is simply to make @@ -640,7 +640,7 @@ This is somewhat mitigated by our peer profiling methods used to monitor the performance of peers. However, this is a powerful attack as the number of routers approaches -f = 0.2, or 20% malicious nodes, as specifed in the paper. +f = 0.2, or 20% malicious nodes, as specifed in the paper. The malicous routers could also maintain connections to the target router and provide excellent forwarding bandwidth for traffic over those connections, in an attempt to manipulate the profiles managed by the target and appear attractive. diff --git a/i2p2www/pages/site/docs/spec/blockfile.html b/i2p2www/pages/site/docs/spec/blockfile.html index f9ed3958..88ace4cd 100644 --- a/i2p2www/pages/site/docs/spec/blockfile.html +++ b/i2p2www/pages/site/docs/spec/blockfile.html @@ -169,8 +169,8 @@ The maximum number of entries per span is 16. {%- endtrans %}

    {% trans %}Properties Skiplist{% endtrans %}

    -

    {% trans -%} -"%%__INFO__%%" is the master database skiplist with String/Properties key/value entries containing only one entry: +

    {% trans INFO='"%%__INFO__%%"' -%} +{{ INFO }} is the master database skiplist with String/Properties key/value entries containing only one entry: {%- endtrans %}

         "info": a Properties (UTF-8 String/String Map), serialized as a Mapping:
    @@ -182,8 +182,8 @@ The maximum number of entries per span is 16.
     

    {% trans %}Reverse Lookup Skiplist{% endtrans %}

    -

    {% trans -%} -"%%__REVERSE__%%" is the reverse lookup skiplist with Integer/Properties key/value entries +

    {% trans REVERSE='"%%__REVERSE__%%"' -%} +{{ REVERSE }} is the reverse lookup skiplist with Integer/Properties key/value entries (as of database version 2): {%- endtrans %}

    diff --git a/i2p2www/pages/site/docs/spec/plugin.html b/i2p2www/pages/site/docs/spec/plugin.html
    index 406d833e..8526379b 100644
    --- a/i2p2www/pages/site/docs/spec/plugin.html
    +++ b/i2p2www/pages/site/docs/spec/plugin.html
    @@ -321,7 +321,7 @@ Other plugin guidelines
     
  • See i2p.scripts branch or any of the sample plugins on zzz's page for a xpi2p file generator to make it easy.
  • -Pack200 of jars and wars is strongly recommended for plugins, it generally shrinks plugins by 60-65%. +Pack200 of jars and wars is strongly recommended for plugins, it generally shrinks plugins by 60-65%. See any of the sample plugins on zzz's page for an example. Pack200 unpacking is supported on routers 0.7.11-5 or higher, which is essentially all routers that support plugins at all. diff --git a/i2p2www/pages/site/docs/spec/updates.html b/i2p2www/pages/site/docs/spec/updates.html index 76781107..a851aa9b 100644 --- a/i2p2www/pages/site/docs/spec/updates.html +++ b/i2p2www/pages/site/docs/spec/updates.html @@ -99,7 +99,7 @@ As of release 0.7.12, the router supports Pack200 decompression. Files inside the zip archive with a .jar.pack or .war.pack suffix are transparently decompressed to a .jar or .war file. Update files containing .pack files are traditionally named with a '.su2' suffix. -Pack200 shrinks the update files by about 60%. +Pack200 shrinks the update files by about 60%. {%- endtrans %}

    {% trans -%} diff --git a/i2p2www/pages/site/docs/transport/ssu.html b/i2p2www/pages/site/docs/transport/ssu.html index d846503c..6d475bdc 100644 --- a/i2p2www/pages/site/docs/transport/ssu.html +++ b/i2p2www/pages/site/docs/transport/ssu.html @@ -81,7 +81,7 @@ The MTU value is adjusted based on the percentage of packets that are retransmit {%- endtrans %}

    {% trans -%} -For both MTU values, it is desirable that (MTU % 16) == 12, so that +For both MTU values, it is desirable that (MTU % 16) == 12, so that the payload portion after the 28-byte IP/UDP header is a multiple of 16 bytes, for encryption purposes. {%- endtrans %}

    @@ -118,7 +118,7 @@ honor that when a connection is established.

    {% trans -%} For IPv6, the minimum MTU is 1280. The IPv6 IP/UDP header is 48 bytes, -so we use an MTU where (MTN % 16 == 0), which is true for 1280. +so we use an MTU where (MTN % 16 == 0), which is true for 1280. {%- endtrans %}

    {% trans %}Message Size Limits{% endtrans %}

    diff --git a/i2p2www/pages/site/faq.html b/i2p2www/pages/site/faq.html index f0e8ac46..3f9e727b 100644 --- a/i2p2www/pages/site/faq.html +++ b/i2p2www/pages/site/faq.html @@ -159,7 +159,7 @@ garbage collection. Increase the setting wrapper.java.maxmemory in
  • {% trans -%} -Is the CPU usage simply higher than you would like, or is it pegged at 100% for a long time? +Is the CPU usage simply higher than you would like, or is it pegged at 100% for a long time? If it's pegged, this could be a bug. Look in the logs for clues. {%- endtrans %}
  • @@ -203,7 +203,7 @@ All traffic you route is internal to the I2P network, you are not an diff --git a/i2p2www/pages/site/misc/jbigi.html b/i2p2www/pages/site/misc/jbigi.html index caa4123f..48769133 100644 --- a/i2p2www/pages/site/misc/jbigi.html +++ b/i2p2www/pages/site/misc/jbigi.html @@ -123,7 +123,7 @@ info, it will be something like this: {%- endtrans %}
     native run time:  5842ms ( 57ms each)
     java run time:   41072ms (406ms each)
    -native = 14.223802103622907% of pure java time
    +native = 14.223802103622907% of pure java time
     
    {% trans %}If the native is indeed 5-7x faster (or more) then it looks all good. If not, please report.{% endtrans %}
  • {% trans %}Copy libjbigi.so to your i2p directory{% endtrans %}
  • diff --git a/i2p2www/translations/de/LC_MESSAGES/about.po b/i2p2www/translations/de/LC_MESSAGES/about.po index be96aa54..1a68b0b1 100644 --- a/i2p2www/translations/de/LC_MESSAGES/about.po +++ b/i2p2www/translations/de/LC_MESSAGES/about.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-12 10:29+0000\n" +"POT-Creation-Date: 2013-08-15 21:25+0000\n" "PO-Revision-Date: 2013-07-04 16:33+0000\n" "Last-Translator: D.A. Loader\n" "Language-Team: German " @@ -1815,7 +1815,6 @@ msgid "" msgstr "" #: i2p2www/pages/site/about/performance/history.html:23 -#, python-format msgid "" "\n" "ugha and duck are working on the C/JNI glue code, and the existing java " @@ -1824,8 +1823,8 @@ msgid "" "results\n" "look fantastic - running the router with the native GMP modPow is " "providing over\n" -"a 800% speedup in encryption performance, and the load was cut in half. " -"This\n" +"a 800% speedup in encryption performance, and the load was cut in " +"half. This\n" "was just on one user's machine, and things are nowhere near ready for " "packaging\n" "and deployment, yet." @@ -1876,12 +1875,12 @@ msgid "" msgstr "" #: i2p2www/pages/site/about/performance/history.html:54 -#, python-format msgid "" "For unpublished LeaseSets such as \"shared clients\", this is the only " "way to\n" "get the LeaseSet to Bob. Unfortunately this bundling every time adds\n" -"almost 100% overhead to a high-bandwidth connection, and much more to\n" +"almost 100% overhead to a high-bandwidth connection, and much more to" +"\n" "a connection with smaller messages." msgstr "" diff --git a/i2p2www/translations/de/LC_MESSAGES/blog.po b/i2p2www/translations/de/LC_MESSAGES/blog.po index d24bbb03..44057ff2 100644 --- a/i2p2www/translations/de/LC_MESSAGES/blog.po +++ b/i2p2www/translations/de/LC_MESSAGES/blog.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-12 10:29+0000\n" +"POT-Creation-Date: 2013-08-15 21:25+0000\n" "PO-Revision-Date: 2013-08-12 10:32+0000\n" "Last-Translator: str4d \n" "Language-Team: German " diff --git a/i2p2www/translations/de/LC_MESSAGES/comparison.po b/i2p2www/translations/de/LC_MESSAGES/comparison.po index 9521b5ef..90835920 100644 --- a/i2p2www/translations/de/LC_MESSAGES/comparison.po +++ b/i2p2www/translations/de/LC_MESSAGES/comparison.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-12 10:29+0000\n" +"POT-Creation-Date: 2013-08-15 21:25+0000\n" "PO-Revision-Date: 2013-07-04 16:33+0000\n" "Last-Translator: D.A. Loader\n" "Language-Team: German " diff --git a/i2p2www/translations/de/LC_MESSAGES/docs.po b/i2p2www/translations/de/LC_MESSAGES/docs.po index 9ca4e123..10d75411 100644 --- a/i2p2www/translations/de/LC_MESSAGES/docs.po +++ b/i2p2www/translations/de/LC_MESSAGES/docs.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-12 10:29+0000\n" +"POT-Creation-Date: 2013-08-15 21:25+0000\n" "PO-Revision-Date: 2013-08-12 10:33+0000\n" "Last-Translator: str4d \n" "Language-Team: German " @@ -2415,9 +2415,7 @@ msgstr "" #: i2p2www/pages/site/docs/api/i2ptunnel.html:43 #, python-format msgid "" -"The anonymous
    monotone" -"\n" +"The anonymous monotone\n" "sourcecode repository for I2P" msgstr "" @@ -3543,7 +3541,7 @@ msgstr "" msgid "" "While compact response support is optional for both clients and trackers," " it is highly\n" -"recommended as it reduces the nominal response size by over 90%." +"recommended as it reduces the nominal response size by over 90%." msgstr "" #: i2p2www/pages/site/docs/applications/bittorrent.html:116 @@ -7104,9 +7102,8 @@ msgid "" msgstr "" #: i2p2www/pages/site/docs/how/network-database.html:281 -#, python-format msgid "" -"With the current rules for automatic opt-in, approximately 6% of\n" +"With the current rules for automatic opt-in, approximately 6% of\n" "the routers in the network are floodfill routers." msgstr "" @@ -7932,7 +7929,7 @@ msgid "" "further investigation.\n" "The floodfill routers are in a position to observe queries and gather " "information.\n" -"Certainly, at a level of f = 0.2 (20%% malicious nodes, as " +"Certainly, at a level of f = 0.2 (20% malicious nodes, as " "specifed in the paper)\n" "we expect that many of the Sybil threats we describe\n" "(here,\n" @@ -8313,10 +8310,9 @@ msgid "Two peers from the same /16 IP space may not be in the same tunnel." msgstr "" #: i2p2www/pages/site/docs/how/peer-selection.html:239 -#, python-format msgid "" -"A peer may participate in a maximum of 33% of all tunnels created by the " -"router." +"A peer may participate in a maximum of 33% of all tunnels created by " +"the router." msgstr "" #: i2p2www/pages/site/docs/how/peer-selection.html:242 @@ -10687,7 +10683,7 @@ msgid "" "Set defaults so that most users provide resources to the network.\n" "In I2P, users route traffic by default. In sharp distinction to\n" "other networks,\n" -"over 95%% of I2P users relay traffic for others." +"over 95% of I2P users relay traffic for others." msgstr "" #: i2p2www/pages/site/docs/how/threat-model.html:317 @@ -11089,14 +11085,13 @@ msgid "" msgstr "" #: i2p2www/pages/site/docs/how/threat-model.html:584 -#, python-format msgid "" "Sybil describes a category of attacks where the adversary creates " "arbitrarily\n" "large numbers of colluding nodes and uses the increased numbers to help \n" "mounting other attacks. For instance, if an attacker is in a network " "where peers\n" -"are selected randomly and they want an 80% chance to be one of those " +"are selected randomly and they want an 80% chance to be one of those " "peers, they\n" "simply create five times the number of nodes that are in the network and " "roll \n" @@ -11173,7 +11168,7 @@ msgid "" "the performance\n" "of peers.\n" "However, this is a powerful attack as the number of routers approaches\n" -"f = 0.2, or 20%% malicious nodes, as specifed in the paper.\n" +"f = 0.2, or 20% malicious nodes, as specifed in the paper.\n" "The malicous routers could also maintain connections to the target router" " and provide\n" "excellent forwarding bandwidth for traffic over those connections, in an " @@ -13195,8 +13190,8 @@ msgstr "" #: i2p2www/pages/site/docs/spec/blockfile.html:172 #, python-format msgid "" -"\"%%__INFO__%%\" is the master database skiplist with String/Properties " -"key/value entries containing only one entry:" +"%(INFO)s is the master database skiplist with String/Properties key/value" +" entries containing only one entry:" msgstr "" #: i2p2www/pages/site/docs/spec/blockfile.html:184 @@ -13206,8 +13201,8 @@ msgstr "" #: i2p2www/pages/site/docs/spec/blockfile.html:185 #, python-format msgid "" -"\"%%__REVERSE__%%\" is the reverse lookup skiplist with " -"Integer/Properties key/value entries\n" +"%(REVERSE)s is the reverse lookup skiplist with Integer/Properties " +"key/value entries\n" " (as of database version 2):" msgstr "" @@ -14134,7 +14129,7 @@ msgid "" "are transparently decompressed to a .jar or .war file.\n" "Update files containing .pack files are traditionally named with a '.su2'" " suffix.\n" -"Pack200 shrinks the update files by about 60%." +"Pack200 shrinks the update files by about 60%." msgstr "" #: i2p2www/pages/site/docs/spec/updates.html:105 @@ -15180,7 +15175,7 @@ msgstr "" #: i2p2www/pages/site/docs/transport/ssu.html:83 msgid "" -"For both MTU values, it is desirable that (MTU % 16) == 12, so that\n" +"For both MTU values, it is desirable that (MTU % 16) == 12, so that\n" "the payload portion after the 28-byte IP/UDP header is a multiple of\n" "16 bytes, for encryption purposes." msgstr "" @@ -15226,7 +15221,7 @@ msgstr "" #: i2p2www/pages/site/docs/transport/ssu.html:119 msgid "" "For IPv6, the minimum MTU is 1280. The IPv6 IP/UDP header is 48 bytes,\n" -"so we use an MTU where (MTN % 16 == 0), which is true for 1280." +"so we use an MTU where (MTN % 16 == 0), which is true for 1280." msgstr "" #: i2p2www/pages/site/docs/transport/ssu.html:124 diff --git a/i2p2www/translations/de/LC_MESSAGES/get-involved.po b/i2p2www/translations/de/LC_MESSAGES/get-involved.po index f6df94ad..124f85fc 100644 --- a/i2p2www/translations/de/LC_MESSAGES/get-involved.po +++ b/i2p2www/translations/de/LC_MESSAGES/get-involved.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-12 10:29+0000\n" +"POT-Creation-Date: 2013-08-15 21:25+0000\n" "PO-Revision-Date: 2013-07-04 16:33+0000\n" "Last-Translator: D.A. Loader\n" "Language-Team: German " @@ -1562,10 +1562,9 @@ msgid "Streaming lib tests" msgstr "" #: i2p2www/pages/site/get-involved/bounties/unit-tests.html:94 -#, python-format msgid "" "To collect this bounty, a new set of unit tests must meet a \n" -"measured code coverage of 90% of the streaming lib \n" +"measured code coverage of 90% of the streaming lib \n" "(i2p/apps/ministreaming/ and i2p/apps/streaming/)." msgstr "" @@ -1575,7 +1574,7 @@ msgstr "" #: i2p2www/pages/site/get-involved/bounties/unit-tests.html:106 msgid "" -"To collect this bounty, all above unit tests must meet the 100%\n" +"To collect this bounty, all above unit tests must meet the 100%\n" "coverage marker (except for log statements)." msgstr "" diff --git a/i2p2www/translations/de/LC_MESSAGES/misc.po b/i2p2www/translations/de/LC_MESSAGES/misc.po index e5a5c1d4..7fadee6c 100644 --- a/i2p2www/translations/de/LC_MESSAGES/misc.po +++ b/i2p2www/translations/de/LC_MESSAGES/misc.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-12 10:29+0000\n" +"POT-Creation-Date: 2013-08-15 21:25+0000\n" "PO-Revision-Date: 2013-07-04 16:33+0000\n" "Last-Translator: D.A. Loader\n" "Language-Team: German " diff --git a/i2p2www/translations/de/LC_MESSAGES/priority.po b/i2p2www/translations/de/LC_MESSAGES/priority.po index 3d916fd1..d4ab9dbe 100644 --- a/i2p2www/translations/de/LC_MESSAGES/priority.po +++ b/i2p2www/translations/de/LC_MESSAGES/priority.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-12 10:29+0000\n" +"POT-Creation-Date: 2013-08-15 21:25+0000\n" "PO-Revision-Date: 2013-08-12 10:34+0000\n" "Last-Translator: str4d \n" "Language-Team: German " @@ -336,15 +336,15 @@ msgstr "" msgid "Download" msgstr "Download" -#: i2p2www/pages/downloads/list.html:4 +#: i2p2www/pages/downloads/list.html:9 msgid "Download I2P" msgstr "Download I2P" -#: i2p2www/pages/downloads/list.html:6 +#: i2p2www/pages/downloads/list.html:11 msgid "Dependency" msgstr "Abhängigkeit" -#: i2p2www/pages/downloads/list.html:7 +#: i2p2www/pages/downloads/list.html:12 #, python-format msgid "" "\n" @@ -360,21 +360,21 @@ msgid "" "or type java -version at your command prompt.\n" msgstr "" -#: i2p2www/pages/downloads/list.html:20 +#: i2p2www/pages/downloads/list.html:25 msgid "Clean installs" msgstr "saubere Installationen" -#: i2p2www/pages/downloads/list.html:27 i2p2www/pages/downloads/list.html:45 -#: i2p2www/pages/downloads/list.html:73 i2p2www/pages/downloads/list.html:135 +#: i2p2www/pages/downloads/list.html:32 i2p2www/pages/downloads/list.html:49 +#: i2p2www/pages/downloads/list.html:76 i2p2www/pages/downloads/list.html:136 #: i2p2www/pages/downloads/list.html:265 msgid "select alternate link" msgstr "" -#: i2p2www/pages/downloads/list.html:35 +#: i2p2www/pages/downloads/list.html:39 msgid "Download that file and run it." msgstr "Lade die Datei herunter und führe sie aus." -#: i2p2www/pages/downloads/list.html:53 +#: i2p2www/pages/downloads/list.html:56 #, python-format msgid "" "Download that file and double-click it (if that works) or\n" @@ -385,11 +385,11 @@ msgid "" " "Open with Java"." msgstr "" -#: i2p2www/pages/downloads/list.html:61 i2p2www/pages/downloads/list.html:89 +#: i2p2www/pages/downloads/list.html:64 i2p2www/pages/downloads/list.html:91 msgid "Command line (headless) install:" msgstr "" -#: i2p2www/pages/downloads/list.html:62 +#: i2p2www/pages/downloads/list.html:65 #, python-format msgid "" "Download the %(i2pversion)s OSX graphical installer file above and\n" @@ -397,7 +397,7 @@ msgid "" "from the command line." msgstr "" -#: i2p2www/pages/downloads/list.html:81 +#: i2p2www/pages/downloads/list.html:83 #, python-format msgid "" "Download that file and double-click it (if that works) or\n" @@ -408,7 +408,7 @@ msgid "" " "Open with Java"." msgstr "" -#: i2p2www/pages/downloads/list.html:90 +#: i2p2www/pages/downloads/list.html:92 #, python-format msgid "" "Download the graphical installer file above and\n" @@ -416,11 +416,11 @@ msgid "" "from the command line." msgstr "" -#: i2p2www/pages/downloads/list.html:100 +#: i2p2www/pages/downloads/list.html:102 msgid "Packages for Debian & Ubuntu are available." msgstr "" -#: i2p2www/pages/downloads/list.html:115 +#: i2p2www/pages/downloads/list.html:116 #, python-format msgid "" "The above file is the current release build.\n" @@ -430,7 +430,7 @@ msgid "" " scan or click the QR code." msgstr "" -#: i2p2www/pages/downloads/list.html:122 +#: i2p2www/pages/downloads/list.html:123 msgid "" "The release and dev versions of the I2P APK are not compatible, as they\n" " are signed by zzz and sponge respectively. Uninstall one before " @@ -438,7 +438,7 @@ msgid "" " the other." msgstr "" -#: i2p2www/pages/downloads/list.html:132 +#: i2p2www/pages/downloads/list.html:133 msgid "Source package" msgstr "Quell Pakete" @@ -584,7 +584,7 @@ msgstr "" msgid "Manual updates" msgstr "manuelle Updates" -#: i2p2www/pages/downloads/list.html:275 +#: i2p2www/pages/downloads/list.html:274 msgid "" "Download that file to your I2P\n" " installation directory and rename as i2pupdate.zip.\n" @@ -595,26 +595,26 @@ msgid "" " NOT need to unzip that file." msgstr "" -#: i2p2www/pages/downloads/list.html:284 +#: i2p2www/pages/downloads/list.html:283 msgid "Click \"Restart\"" msgstr "" -#: i2p2www/pages/downloads/list.html:289 +#: i2p2www/pages/downloads/list.html:288 msgid "Grab a cup of coffee and come back in 11 minutes" msgstr "" -#: i2p2www/pages/downloads/list.html:297 +#: i2p2www/pages/downloads/list.html:296 #, python-format msgid "" "The file is signed by zzz,\n" "whose key is here." msgstr "" -#: i2p2www/pages/downloads/list.html:302 +#: i2p2www/pages/downloads/list.html:301 msgid "Previous Releases" msgstr "" -#: i2p2www/pages/downloads/list.html:304 +#: i2p2www/pages/downloads/list.html:303 #, python-format msgid "" "Previous releases are available on Distribution
    - All traffic on I2P is encrypted in multiple layers." " You don't know\n" @@ -1586,7 +1584,7 @@ msgid "" "participating tunnels to 0 (see above).\n" "It would be nice if you didn't do this, you should help the network by " "routing traffic for others.\n" -"Over 95% of users route traffic for others." +"Over 95% of users route traffic for others." msgstr "" #: i2p2www/pages/site/faq.html:210 diff --git a/i2p2www/translations/de/LC_MESSAGES/research.po b/i2p2www/translations/de/LC_MESSAGES/research.po index 7fe5d4ea..ea13f166 100644 --- a/i2p2www/translations/de/LC_MESSAGES/research.po +++ b/i2p2www/translations/de/LC_MESSAGES/research.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-12 10:29+0000\n" +"POT-Creation-Date: 2013-08-15 21:25+0000\n" "PO-Revision-Date: 2013-07-04 16:33+0000\n" "Last-Translator: D.A. Loader\n" "Language-Team: German " diff --git a/i2p2www/translations/es/LC_MESSAGES/about.po b/i2p2www/translations/es/LC_MESSAGES/about.po index 7aac8db5..5c79c99a 100644 --- a/i2p2www/translations/es/LC_MESSAGES/about.po +++ b/i2p2www/translations/es/LC_MESSAGES/about.po @@ -13,7 +13,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-12 10:29+0000\n" +"POT-Creation-Date: 2013-08-15 21:25+0000\n" "PO-Revision-Date: 2013-07-22 10:38+0000\n" "Last-Translator: trolly\n" "Language-Team: Spanish " @@ -2158,7 +2158,6 @@ msgstr "" "cryptography)" #: i2p2www/pages/site/about/performance/history.html:23 -#, python-format msgid "" "\n" "ugha and duck are working on the C/JNI glue code, and the existing java " @@ -2167,20 +2166,12 @@ msgid "" "results\n" "look fantastic - running the router with the native GMP modPow is " "providing over\n" -"a 800% speedup in encryption performance, and the load was cut in half. " -"This\n" +"a 800% speedup in encryption performance, and the load was cut in " +"half. This\n" "was just on one user's machine, and things are nowhere near ready for " "packaging\n" "and deployment, yet." msgstr "" -"\n" -"ugha y duck están trabajando en el código de C/JNI, y el código java " -"actual se usa ya con varios parches con mejoras cuando es posible. Los " -"resultados preliminares parecen fantásticos - ejecutando el ruter con el " -"modPos GMP nativo proporciona mas del 800% s de velocidad en el " -"rendimiento de los cifrados, y la carga de la CPU es ahora la mitad. Esto" -" es sólo en la máquina de un solo usuario, y esto no está ni siquiera " -"cerca de poder ser empaquetado y distribuído, todavía." #: i2p2www/pages/site/about/performance/history.html:32 msgid "Garlic wrapping a \"reply\" LeaseSet" @@ -2244,12 +2235,13 @@ msgstr "" "destinatario no necesita hacer la búsqueda en la base de datos de la red." #: i2p2www/pages/site/about/performance/history.html:54 -#, python-format +#, fuzzy msgid "" "For unpublished LeaseSets such as \"shared clients\", this is the only " "way to\n" "get the LeaseSet to Bob. Unfortunately this bundling every time adds\n" -"almost 100% overhead to a high-bandwidth connection, and much more to\n" +"almost 100% overhead to a high-bandwidth connection, and much more to" +"\n" "a connection with smaller messages." msgstr "" "Para los LeaseSets no publicados como en los \"clientes compartidos\", " diff --git a/i2p2www/translations/es/LC_MESSAGES/blog.po b/i2p2www/translations/es/LC_MESSAGES/blog.po index c8d9a192..e8e7d16c 100644 --- a/i2p2www/translations/es/LC_MESSAGES/blog.po +++ b/i2p2www/translations/es/LC_MESSAGES/blog.po @@ -13,7 +13,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-12 10:29+0000\n" +"POT-Creation-Date: 2013-08-15 21:25+0000\n" "PO-Revision-Date: 2013-08-12 10:32+0000\n" "Last-Translator: str4d \n" "Language-Team: Spanish " diff --git a/i2p2www/translations/es/LC_MESSAGES/comparison.po b/i2p2www/translations/es/LC_MESSAGES/comparison.po index 344ab01c..95dc679a 100644 --- a/i2p2www/translations/es/LC_MESSAGES/comparison.po +++ b/i2p2www/translations/es/LC_MESSAGES/comparison.po @@ -13,7 +13,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-12 10:29+0000\n" +"POT-Creation-Date: 2013-08-15 21:25+0000\n" "PO-Revision-Date: 2013-07-11 10:13+0000\n" "Last-Translator: trolly\n" "Language-Team: Spanish " diff --git a/i2p2www/translations/es/LC_MESSAGES/docs.po b/i2p2www/translations/es/LC_MESSAGES/docs.po index 48cd340c..c25fd90f 100644 --- a/i2p2www/translations/es/LC_MESSAGES/docs.po +++ b/i2p2www/translations/es/LC_MESSAGES/docs.po @@ -13,7 +13,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-12 10:29+0000\n" +"POT-Creation-Date: 2013-08-15 21:25+0000\n" "PO-Revision-Date: 2013-08-12 10:33+0000\n" "Last-Translator: str4d \n" "Language-Team: Spanish " @@ -2417,9 +2417,7 @@ msgstr "" #: i2p2www/pages/site/docs/api/i2ptunnel.html:43 #, python-format msgid "" -"The anonymous monotone" -"\n" +"The anonymous monotone\n" "sourcecode repository for I2P" msgstr "" @@ -3545,7 +3543,7 @@ msgstr "" msgid "" "While compact response support is optional for both clients and trackers," " it is highly\n" -"recommended as it reduces the nominal response size by over 90%." +"recommended as it reduces the nominal response size by over 90%." msgstr "" #: i2p2www/pages/site/docs/applications/bittorrent.html:116 @@ -7598,9 +7596,9 @@ msgstr "" "trabajos, etc) antes de que se active automáticamente como un floodfill." #: i2p2www/pages/site/docs/how/network-database.html:281 -#, python-format +#, fuzzy msgid "" -"With the current rules for automatic opt-in, approximately 6% of\n" +"With the current rules for automatic opt-in, approximately 6% of\n" "the routers in the network are floodfill routers." msgstr "" "Con las normas actuales para llegar a ser floodfill automáticamente, " @@ -8472,7 +8470,7 @@ msgid "" "further investigation.\n" "The floodfill routers are in a position to observe queries and gather " "information.\n" -"Certainly, at a level of f = 0.2 (20%% malicious nodes, as " +"Certainly, at a level of f = 0.2 (20% malicious nodes, as " "specifed in the paper)\n" "we expect that many of the Sybil threats we describe\n" "(here,\n" @@ -8853,10 +8851,9 @@ msgid "Two peers from the same /16 IP space may not be in the same tunnel." msgstr "" #: i2p2www/pages/site/docs/how/peer-selection.html:239 -#, python-format msgid "" -"A peer may participate in a maximum of 33% of all tunnels created by the " -"router." +"A peer may participate in a maximum of 33% of all tunnels created by " +"the router." msgstr "" #: i2p2www/pages/site/docs/how/peer-selection.html:242 @@ -12193,12 +12190,12 @@ msgstr "" " defensa contra este ataque es:" #: i2p2www/pages/site/docs/how/threat-model.html:311 -#, python-format +#, fuzzy, python-format msgid "" "Set defaults so that most users provide resources to the network.\n" "In I2P, users route traffic by default. In sharp distinction to\n" "other networks,\n" -"over 95%% of I2P users relay traffic for others." +"over 95% of I2P users relay traffic for others." msgstr "" "Configurar por defecto para que la mayoría de los usuarios compartan " "recursos con la red. En I2P los usuarios rutean tráfico por defecto. A " @@ -12785,14 +12782,14 @@ msgstr "" "Obfuscation" #: i2p2www/pages/site/docs/how/threat-model.html:584 -#, python-format +#, fuzzy msgid "" "Sybil describes a category of attacks where the adversary creates " "arbitrarily\n" "large numbers of colluding nodes and uses the increased numbers to help \n" "mounting other attacks. For instance, if an attacker is in a network " "where peers\n" -"are selected randomly and they want an 80% chance to be one of those " +"are selected randomly and they want an 80% chance to be one of those " "peers, they\n" "simply create five times the number of nodes that are in the network and " "roll \n" @@ -12881,7 +12878,7 @@ msgstr "" "Lookup Sección 5.2)" #: i2p2www/pages/site/docs/how/threat-model.html:634 -#, python-format +#, fuzzy, python-format msgid "" "By refusing to accept or forward tunnel build requests, except to a " "colluding peer, a router could ensure\n" @@ -12894,7 +12891,7 @@ msgid "" "the performance\n" "of peers.\n" "However, this is a powerful attack as the number of routers approaches\n" -"f = 0.2, or 20%% malicious nodes, as specifed in the paper.\n" +"f = 0.2, or 20% malicious nodes, as specifed in the paper.\n" "The malicous routers could also maintain connections to the target router" " and provide\n" "excellent forwarding bandwidth for traffic over those connections, in an " @@ -15094,8 +15091,8 @@ msgstr "" #: i2p2www/pages/site/docs/spec/blockfile.html:172 #, python-format msgid "" -"\"%%__INFO__%%\" is the master database skiplist with String/Properties " -"key/value entries containing only one entry:" +"%(INFO)s is the master database skiplist with String/Properties key/value" +" entries containing only one entry:" msgstr "" #: i2p2www/pages/site/docs/spec/blockfile.html:184 @@ -15105,8 +15102,8 @@ msgstr "" #: i2p2www/pages/site/docs/spec/blockfile.html:185 #, python-format msgid "" -"\"%%__REVERSE__%%\" is the reverse lookup skiplist with " -"Integer/Properties key/value entries\n" +"%(REVERSE)s is the reverse lookup skiplist with Integer/Properties " +"key/value entries\n" " (as of database version 2):" msgstr "" @@ -16033,7 +16030,7 @@ msgid "" "are transparently decompressed to a .jar or .war file.\n" "Update files containing .pack files are traditionally named with a '.su2'" " suffix.\n" -"Pack200 shrinks the update files by about 60%." +"Pack200 shrinks the update files by about 60%." msgstr "" #: i2p2www/pages/site/docs/spec/updates.html:105 @@ -17079,7 +17076,7 @@ msgstr "" #: i2p2www/pages/site/docs/transport/ssu.html:83 msgid "" -"For both MTU values, it is desirable that (MTU % 16) == 12, so that\n" +"For both MTU values, it is desirable that (MTU % 16) == 12, so that\n" "the payload portion after the 28-byte IP/UDP header is a multiple of\n" "16 bytes, for encryption purposes." msgstr "" @@ -17125,7 +17122,7 @@ msgstr "" #: i2p2www/pages/site/docs/transport/ssu.html:119 msgid "" "For IPv6, the minimum MTU is 1280. The IPv6 IP/UDP header is 48 bytes,\n" -"so we use an MTU where (MTN % 16 == 0), which is true for 1280." +"so we use an MTU where (MTN % 16 == 0), which is true for 1280." msgstr "" #: i2p2www/pages/site/docs/transport/ssu.html:124 diff --git a/i2p2www/translations/es/LC_MESSAGES/get-involved.po b/i2p2www/translations/es/LC_MESSAGES/get-involved.po index e57b449d..647e942c 100644 --- a/i2p2www/translations/es/LC_MESSAGES/get-involved.po +++ b/i2p2www/translations/es/LC_MESSAGES/get-involved.po @@ -13,7 +13,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-12 10:29+0000\n" +"POT-Creation-Date: 2013-08-15 21:25+0000\n" "PO-Revision-Date: 2013-07-11 10:13+0000\n" "Last-Translator: trolly\n" "Language-Team: Spanish " @@ -1953,10 +1953,9 @@ msgid "Streaming lib tests" msgstr "" #: i2p2www/pages/site/get-involved/bounties/unit-tests.html:94 -#, python-format msgid "" "To collect this bounty, a new set of unit tests must meet a \n" -"measured code coverage of 90% of the streaming lib \n" +"measured code coverage of 90% of the streaming lib \n" "(i2p/apps/ministreaming/ and i2p/apps/streaming/)." msgstr "" @@ -1966,7 +1965,7 @@ msgstr "" #: i2p2www/pages/site/get-involved/bounties/unit-tests.html:106 msgid "" -"To collect this bounty, all above unit tests must meet the 100%\n" +"To collect this bounty, all above unit tests must meet the 100%\n" "coverage marker (except for log statements)." msgstr "" diff --git a/i2p2www/translations/es/LC_MESSAGES/misc.po b/i2p2www/translations/es/LC_MESSAGES/misc.po index 6d877acc..38177de4 100644 --- a/i2p2www/translations/es/LC_MESSAGES/misc.po +++ b/i2p2www/translations/es/LC_MESSAGES/misc.po @@ -13,7 +13,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-12 10:29+0000\n" +"POT-Creation-Date: 2013-08-15 21:25+0000\n" "PO-Revision-Date: 2013-08-12 09:33+0000\n" "Last-Translator: trolly\n" "Language-Team: Spanish " diff --git a/i2p2www/translations/es/LC_MESSAGES/priority.po b/i2p2www/translations/es/LC_MESSAGES/priority.po index 82ddd7cf..69212742 100644 --- a/i2p2www/translations/es/LC_MESSAGES/priority.po +++ b/i2p2www/translations/es/LC_MESSAGES/priority.po @@ -13,7 +13,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-12 10:29+0000\n" +"POT-Creation-Date: 2013-08-15 21:25+0000\n" "PO-Revision-Date: 2013-08-12 10:34+0000\n" "Last-Translator: str4d \n" "Language-Team: Spanish " @@ -425,15 +425,15 @@ msgstr "" msgid "Download" msgstr "Descargas" -#: i2p2www/pages/downloads/list.html:4 +#: i2p2www/pages/downloads/list.html:9 msgid "Download I2P" msgstr "Descarga I2P" -#: i2p2www/pages/downloads/list.html:6 +#: i2p2www/pages/downloads/list.html:11 msgid "Dependency" msgstr "Dependencias" -#: i2p2www/pages/downloads/list.html:7 +#: i2p2www/pages/downloads/list.html:12 #, python-format msgid "" "\n" @@ -458,21 +458,21 @@ msgstr "" "Determine aquí su versión de java o ejecute java -version en" " la terminal.\n" -#: i2p2www/pages/downloads/list.html:20 +#: i2p2www/pages/downloads/list.html:25 msgid "Clean installs" msgstr "Instalación" -#: i2p2www/pages/downloads/list.html:27 i2p2www/pages/downloads/list.html:45 -#: i2p2www/pages/downloads/list.html:73 i2p2www/pages/downloads/list.html:135 +#: i2p2www/pages/downloads/list.html:32 i2p2www/pages/downloads/list.html:49 +#: i2p2www/pages/downloads/list.html:76 i2p2www/pages/downloads/list.html:136 #: i2p2www/pages/downloads/list.html:265 msgid "select alternate link" msgstr "seleccione un enlace alternativo" -#: i2p2www/pages/downloads/list.html:35 +#: i2p2www/pages/downloads/list.html:39 msgid "Download that file and run it." msgstr "Descargue este archivo y ejecútelo." -#: i2p2www/pages/downloads/list.html:53 +#: i2p2www/pages/downloads/list.html:56 #, python-format msgid "" "Download that file and double-click it (if that works) or\n" @@ -487,11 +487,11 @@ msgstr "" "terminal para iniciar el instalador. Puede ser que pueda pulsar botón " "derecho y seleccionar "Abrir con Java"." -#: i2p2www/pages/downloads/list.html:61 i2p2www/pages/downloads/list.html:89 +#: i2p2www/pages/downloads/list.html:64 i2p2www/pages/downloads/list.html:91 msgid "Command line (headless) install:" msgstr "Comando de instalación (headless):" -#: i2p2www/pages/downloads/list.html:62 +#: i2p2www/pages/downloads/list.html:65 #, python-format msgid "" "Download the %(i2pversion)s OSX graphical installer file above and\n" @@ -502,7 +502,7 @@ msgstr "" "java -jar i2pinstall_%(i2pversion)s.jar -console en la " "terminal." -#: i2p2www/pages/downloads/list.html:81 +#: i2p2www/pages/downloads/list.html:83 #, python-format msgid "" "Download that file and double-click it (if that works) or\n" @@ -520,7 +520,7 @@ msgstr "" "archivo y seleccionar\n" " "Abrir con Java"." -#: i2p2www/pages/downloads/list.html:90 +#: i2p2www/pages/downloads/list.html:92 #, python-format msgid "" "Download the graphical installer file above and\n" @@ -530,11 +530,11 @@ msgstr "" "Descargue el instalador gráfico y ejecute java -jar " "i2pinstall_%(i2pversion)s.jar -console en una terminal." -#: i2p2www/pages/downloads/list.html:100 +#: i2p2www/pages/downloads/list.html:102 msgid "Packages for Debian & Ubuntu are available." msgstr "Hay disponibles paquetes para Debian & Ubuntu." -#: i2p2www/pages/downloads/list.html:115 +#: i2p2www/pages/downloads/list.html:116 #, python-format msgid "" "The above file is the current release build.\n" @@ -544,7 +544,7 @@ msgid "" " scan or click the QR code." msgstr "" -#: i2p2www/pages/downloads/list.html:122 +#: i2p2www/pages/downloads/list.html:123 msgid "" "The release and dev versions of the I2P APK are not compatible, as they\n" " are signed by zzz and sponge respectively. Uninstall one before " @@ -557,7 +557,7 @@ msgstr "" "una antes de \n" " instalar la otra." -#: i2p2www/pages/downloads/list.html:132 +#: i2p2www/pages/downloads/list.html:133 msgid "Source package" msgstr "Archivo con el código fuente " @@ -770,7 +770,7 @@ msgstr "De otra forma puede usar el método manual especificado mas abajo." msgid "Manual updates" msgstr "Actualizaciones manuales" -#: i2p2www/pages/downloads/list.html:275 +#: i2p2www/pages/downloads/list.html:274 msgid "" "Download that file to your I2P\n" " installation directory and rename as i2pupdate.zip.\n" @@ -786,17 +786,17 @@ msgstr "" "archivo resultante i2pupdate.zip a la carpeta de instalación de I2P). NO" " necesita descomprimir este archivo .zip." -#: i2p2www/pages/downloads/list.html:284 +#: i2p2www/pages/downloads/list.html:283 msgid "Click \"Restart\"" msgstr "" "Pulse \"Reiniciar\"" -#: i2p2www/pages/downloads/list.html:289 +#: i2p2www/pages/downloads/list.html:288 msgid "Grab a cup of coffee and come back in 11 minutes" msgstr "Vaya a por una taza de horchata/café/mate y vuelva en 11 minutos." -#: i2p2www/pages/downloads/list.html:297 +#: i2p2www/pages/downloads/list.html:296 #, python-format msgid "" "The file is signed by zzz,\n" @@ -805,11 +805,11 @@ msgstr "" "El archivo está firmado por zzz,\n" "cuya clave está aquí." -#: i2p2www/pages/downloads/list.html:302 +#: i2p2www/pages/downloads/list.html:301 msgid "Previous Releases" msgstr "Versiones Anteriores" -#: i2p2www/pages/downloads/list.html:304 +#: i2p2www/pages/downloads/list.html:303 #, python-format msgid "" "Previous releases are available on wrapper.config." #: i2p2www/pages/site/faq.html:161 -#, python-format +#, fuzzy msgid "" "Is the CPU usage simply higher than you would like, or is it pegged at " -"100% for a long time?\n" +"100% for a long time?\n" "If it's pegged, this could be a bug. Look in the logs for clues." msgstr "" "¿El uso de l aCPU es mayor de lo que le gustaría o está fijo al 100%f por" @@ -1889,7 +1889,7 @@ msgstr "" "costes.Pero respondamos su pregunta en tres partes:" #: i2p2www/pages/site/faq.html:199 -#, python-format +#, fuzzy msgid "" "Distribution - All traffic on I2P is encrypted in multiple layers." " You don't know\n" @@ -1901,7 +1901,7 @@ msgid "" "participating tunnels to 0 (see above).\n" "It would be nice if you didn't do this, you should help the network by " "routing traffic for others.\n" -"Over 95% of users route traffic for others." +"Over 95% of users route traffic for others." msgstr "" "Distribución - Todo el tráfico en I2P es cifrado en varias capas. " "Usted no puede conocer el contenido, origen o destinación de un mensaje. " diff --git a/i2p2www/translations/es/LC_MESSAGES/research.po b/i2p2www/translations/es/LC_MESSAGES/research.po index 88d174ab..893cd0a9 100644 --- a/i2p2www/translations/es/LC_MESSAGES/research.po +++ b/i2p2www/translations/es/LC_MESSAGES/research.po @@ -13,7 +13,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-12 10:29+0000\n" +"POT-Creation-Date: 2013-08-15 21:25+0000\n" "PO-Revision-Date: 2013-07-25 09:42+0000\n" "Last-Translator: trolly\n" "Language-Team: Spanish " diff --git a/i2p2www/translations/fr/LC_MESSAGES/about.po b/i2p2www/translations/fr/LC_MESSAGES/about.po index 39ae984a..13314d16 100644 --- a/i2p2www/translations/fr/LC_MESSAGES/about.po +++ b/i2p2www/translations/fr/LC_MESSAGES/about.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-12 10:29+0000\n" +"POT-Creation-Date: 2013-08-15 21:25+0000\n" "PO-Revision-Date: 2013-08-11 16:29+0000\n" "Last-Translator: Boxoa590\n" "Language-Team: French " @@ -1895,7 +1895,6 @@ msgid "" msgstr "" #: i2p2www/pages/site/about/performance/history.html:23 -#, python-format msgid "" "\n" "ugha and duck are working on the C/JNI glue code, and the existing java " @@ -1904,8 +1903,8 @@ msgid "" "results\n" "look fantastic - running the router with the native GMP modPow is " "providing over\n" -"a 800% speedup in encryption performance, and the load was cut in half. " -"This\n" +"a 800% speedup in encryption performance, and the load was cut in " +"half. This\n" "was just on one user's machine, and things are nowhere near ready for " "packaging\n" "and deployment, yet." @@ -1956,12 +1955,12 @@ msgid "" msgstr "" #: i2p2www/pages/site/about/performance/history.html:54 -#, python-format msgid "" "For unpublished LeaseSets such as \"shared clients\", this is the only " "way to\n" "get the LeaseSet to Bob. Unfortunately this bundling every time adds\n" -"almost 100% overhead to a high-bandwidth connection, and much more to\n" +"almost 100% overhead to a high-bandwidth connection, and much more to" +"\n" "a connection with smaller messages." msgstr "" diff --git a/i2p2www/translations/fr/LC_MESSAGES/blog.po b/i2p2www/translations/fr/LC_MESSAGES/blog.po index 53512fc5..b753f370 100644 --- a/i2p2www/translations/fr/LC_MESSAGES/blog.po +++ b/i2p2www/translations/fr/LC_MESSAGES/blog.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-12 10:29+0000\n" +"POT-Creation-Date: 2013-08-15 21:25+0000\n" "PO-Revision-Date: 2013-08-12 10:32+0000\n" "Last-Translator: str4d \n" "Language-Team: French " diff --git a/i2p2www/translations/fr/LC_MESSAGES/comparison.po b/i2p2www/translations/fr/LC_MESSAGES/comparison.po index 8eecb7e0..089ba83d 100644 --- a/i2p2www/translations/fr/LC_MESSAGES/comparison.po +++ b/i2p2www/translations/fr/LC_MESSAGES/comparison.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-12 10:29+0000\n" +"POT-Creation-Date: 2013-08-15 21:25+0000\n" "PO-Revision-Date: 2013-06-29 11:32+0000\n" "Last-Translator: Boxoa590\n" "Language-Team: French " diff --git a/i2p2www/translations/fr/LC_MESSAGES/docs.po b/i2p2www/translations/fr/LC_MESSAGES/docs.po index 8bbd531a..e533ed4e 100644 --- a/i2p2www/translations/fr/LC_MESSAGES/docs.po +++ b/i2p2www/translations/fr/LC_MESSAGES/docs.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-12 10:29+0000\n" +"POT-Creation-Date: 2013-08-15 21:25+0000\n" "PO-Revision-Date: 2013-08-12 10:33+0000\n" "Last-Translator: str4d \n" "Language-Team: French " @@ -2417,9 +2417,7 @@ msgstr "" #: i2p2www/pages/site/docs/api/i2ptunnel.html:43 #, python-format msgid "" -"The anonymous monotone" -"\n" +"The anonymous monotone\n" "sourcecode repository for I2P" msgstr "" @@ -3545,7 +3543,7 @@ msgstr "" msgid "" "While compact response support is optional for both clients and trackers," " it is highly\n" -"recommended as it reduces the nominal response size by over 90%." +"recommended as it reduces the nominal response size by over 90%." msgstr "" #: i2p2www/pages/site/docs/applications/bittorrent.html:116 @@ -7112,9 +7110,8 @@ msgid "" msgstr "" #: i2p2www/pages/site/docs/how/network-database.html:281 -#, python-format msgid "" -"With the current rules for automatic opt-in, approximately 6% of\n" +"With the current rules for automatic opt-in, approximately 6% of\n" "the routers in the network are floodfill routers." msgstr "" @@ -7940,7 +7937,7 @@ msgid "" "further investigation.\n" "The floodfill routers are in a position to observe queries and gather " "information.\n" -"Certainly, at a level of f = 0.2 (20%% malicious nodes, as " +"Certainly, at a level of f = 0.2 (20% malicious nodes, as " "specifed in the paper)\n" "we expect that many of the Sybil threats we describe\n" "(here,\n" @@ -8321,10 +8318,9 @@ msgid "Two peers from the same /16 IP space may not be in the same tunnel." msgstr "" #: i2p2www/pages/site/docs/how/peer-selection.html:239 -#, python-format msgid "" -"A peer may participate in a maximum of 33% of all tunnels created by the " -"router." +"A peer may participate in a maximum of 33% of all tunnels created by " +"the router." msgstr "" #: i2p2www/pages/site/docs/how/peer-selection.html:242 @@ -10695,7 +10691,7 @@ msgid "" "Set defaults so that most users provide resources to the network.\n" "In I2P, users route traffic by default. In sharp distinction to\n" "other networks,\n" -"over 95%% of I2P users relay traffic for others." +"over 95% of I2P users relay traffic for others." msgstr "" #: i2p2www/pages/site/docs/how/threat-model.html:317 @@ -11097,14 +11093,13 @@ msgid "" msgstr "" #: i2p2www/pages/site/docs/how/threat-model.html:584 -#, python-format msgid "" "Sybil describes a category of attacks where the adversary creates " "arbitrarily\n" "large numbers of colluding nodes and uses the increased numbers to help \n" "mounting other attacks. For instance, if an attacker is in a network " "where peers\n" -"are selected randomly and they want an 80% chance to be one of those " +"are selected randomly and they want an 80% chance to be one of those " "peers, they\n" "simply create five times the number of nodes that are in the network and " "roll \n" @@ -11181,7 +11176,7 @@ msgid "" "the performance\n" "of peers.\n" "However, this is a powerful attack as the number of routers approaches\n" -"f = 0.2, or 20%% malicious nodes, as specifed in the paper.\n" +"f = 0.2, or 20% malicious nodes, as specifed in the paper.\n" "The malicous routers could also maintain connections to the target router" " and provide\n" "excellent forwarding bandwidth for traffic over those connections, in an " @@ -13203,8 +13198,8 @@ msgstr "" #: i2p2www/pages/site/docs/spec/blockfile.html:172 #, python-format msgid "" -"\"%%__INFO__%%\" is the master database skiplist with String/Properties " -"key/value entries containing only one entry:" +"%(INFO)s is the master database skiplist with String/Properties key/value" +" entries containing only one entry:" msgstr "" #: i2p2www/pages/site/docs/spec/blockfile.html:184 @@ -13214,8 +13209,8 @@ msgstr "" #: i2p2www/pages/site/docs/spec/blockfile.html:185 #, python-format msgid "" -"\"%%__REVERSE__%%\" is the reverse lookup skiplist with " -"Integer/Properties key/value entries\n" +"%(REVERSE)s is the reverse lookup skiplist with Integer/Properties " +"key/value entries\n" " (as of database version 2):" msgstr "" @@ -14142,7 +14137,7 @@ msgid "" "are transparently decompressed to a .jar or .war file.\n" "Update files containing .pack files are traditionally named with a '.su2'" " suffix.\n" -"Pack200 shrinks the update files by about 60%." +"Pack200 shrinks the update files by about 60%." msgstr "" #: i2p2www/pages/site/docs/spec/updates.html:105 @@ -15188,7 +15183,7 @@ msgstr "" #: i2p2www/pages/site/docs/transport/ssu.html:83 msgid "" -"For both MTU values, it is desirable that (MTU % 16) == 12, so that\n" +"For both MTU values, it is desirable that (MTU % 16) == 12, so that\n" "the payload portion after the 28-byte IP/UDP header is a multiple of\n" "16 bytes, for encryption purposes." msgstr "" @@ -15234,7 +15229,7 @@ msgstr "" #: i2p2www/pages/site/docs/transport/ssu.html:119 msgid "" "For IPv6, the minimum MTU is 1280. The IPv6 IP/UDP header is 48 bytes,\n" -"so we use an MTU where (MTN % 16 == 0), which is true for 1280." +"so we use an MTU where (MTN % 16 == 0), which is true for 1280." msgstr "" #: i2p2www/pages/site/docs/transport/ssu.html:124 diff --git a/i2p2www/translations/fr/LC_MESSAGES/get-involved.po b/i2p2www/translations/fr/LC_MESSAGES/get-involved.po index 286fe934..6595eda2 100644 --- a/i2p2www/translations/fr/LC_MESSAGES/get-involved.po +++ b/i2p2www/translations/fr/LC_MESSAGES/get-involved.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-12 10:29+0000\n" +"POT-Creation-Date: 2013-08-15 21:25+0000\n" "PO-Revision-Date: 2013-08-11 15:29+0000\n" "Last-Translator: Boxoa590\n" "Language-Team: French " @@ -1602,10 +1602,9 @@ msgid "Streaming lib tests" msgstr "" #: i2p2www/pages/site/get-involved/bounties/unit-tests.html:94 -#, python-format msgid "" "To collect this bounty, a new set of unit tests must meet a \n" -"measured code coverage of 90% of the streaming lib \n" +"measured code coverage of 90% of the streaming lib \n" "(i2p/apps/ministreaming/ and i2p/apps/streaming/)." msgstr "" @@ -1615,7 +1614,7 @@ msgstr "" #: i2p2www/pages/site/get-involved/bounties/unit-tests.html:106 msgid "" -"To collect this bounty, all above unit tests must meet the 100%\n" +"To collect this bounty, all above unit tests must meet the 100%\n" "coverage marker (except for log statements)." msgstr "" diff --git a/i2p2www/translations/fr/LC_MESSAGES/misc.po b/i2p2www/translations/fr/LC_MESSAGES/misc.po index cc36b42a..f8a26f63 100644 --- a/i2p2www/translations/fr/LC_MESSAGES/misc.po +++ b/i2p2www/translations/fr/LC_MESSAGES/misc.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-12 10:29+0000\n" +"POT-Creation-Date: 2013-08-15 21:25+0000\n" "PO-Revision-Date: 2013-06-29 11:32+0000\n" "Last-Translator: Boxoa590\n" "Language-Team: French " diff --git a/i2p2www/translations/fr/LC_MESSAGES/priority.po b/i2p2www/translations/fr/LC_MESSAGES/priority.po index da474b1e..736b46f8 100644 --- a/i2p2www/translations/fr/LC_MESSAGES/priority.po +++ b/i2p2www/translations/fr/LC_MESSAGES/priority.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-12 10:29+0000\n" +"POT-Creation-Date: 2013-08-15 21:25+0000\n" "PO-Revision-Date: 2013-08-12 10:34+0000\n" "Last-Translator: str4d \n" "Language-Team: French " @@ -420,15 +420,15 @@ msgstr "" msgid "Download" msgstr "Télécharger" -#: i2p2www/pages/downloads/list.html:4 +#: i2p2www/pages/downloads/list.html:9 msgid "Download I2P" msgstr "Télécharger I2P" -#: i2p2www/pages/downloads/list.html:6 +#: i2p2www/pages/downloads/list.html:11 msgid "Dependency" msgstr "Dépendance" -#: i2p2www/pages/downloads/list.html:7 +#: i2p2www/pages/downloads/list.html:12 #, python-format msgid "" "\n" @@ -455,21 +455,21 @@ msgstr "" " içi la version de votre Java installé⏎\n" " ou tapez java -version à votre invite de commande.\n" -#: i2p2www/pages/downloads/list.html:20 +#: i2p2www/pages/downloads/list.html:25 msgid "Clean installs" msgstr "Installations propres" -#: i2p2www/pages/downloads/list.html:27 i2p2www/pages/downloads/list.html:45 -#: i2p2www/pages/downloads/list.html:73 i2p2www/pages/downloads/list.html:135 +#: i2p2www/pages/downloads/list.html:32 i2p2www/pages/downloads/list.html:49 +#: i2p2www/pages/downloads/list.html:76 i2p2www/pages/downloads/list.html:136 #: i2p2www/pages/downloads/list.html:265 msgid "select alternate link" msgstr "" -#: i2p2www/pages/downloads/list.html:35 +#: i2p2www/pages/downloads/list.html:39 msgid "Download that file and run it." msgstr "Télécharger ce fichier et l'exécuter." -#: i2p2www/pages/downloads/list.html:53 +#: i2p2www/pages/downloads/list.html:56 #, python-format msgid "" "Download that file and double-click it (if that works) or\n" @@ -480,11 +480,11 @@ msgid "" " "Open with Java"." msgstr "" -#: i2p2www/pages/downloads/list.html:61 i2p2www/pages/downloads/list.html:89 +#: i2p2www/pages/downloads/list.html:64 i2p2www/pages/downloads/list.html:91 msgid "Command line (headless) install:" msgstr "Installation en ligne de commande (headless) :" -#: i2p2www/pages/downloads/list.html:62 +#: i2p2www/pages/downloads/list.html:65 #, python-format msgid "" "Download the %(i2pversion)s OSX graphical installer file above and\n" @@ -492,7 +492,7 @@ msgid "" "from the command line." msgstr "" -#: i2p2www/pages/downloads/list.html:81 +#: i2p2www/pages/downloads/list.html:83 #, python-format msgid "" "Download that file and double-click it (if that works) or\n" @@ -510,7 +510,7 @@ msgstr "" "sélectionner⏎\n" " "Open with Java"." -#: i2p2www/pages/downloads/list.html:90 +#: i2p2www/pages/downloads/list.html:92 #, python-format msgid "" "Download the graphical installer file above and\n" @@ -521,11 +521,11 @@ msgstr "" "lancez java -jar i2pinstall_%(i2pversion)s.jar -console " "depuis la ligne de commande." -#: i2p2www/pages/downloads/list.html:100 +#: i2p2www/pages/downloads/list.html:102 msgid "Packages for Debian & Ubuntu are available." msgstr "Des packages pour Debian & Ubuntu sont disponibles." -#: i2p2www/pages/downloads/list.html:115 +#: i2p2www/pages/downloads/list.html:116 #, python-format msgid "" "The above file is the current release build.\n" @@ -535,7 +535,7 @@ msgid "" " scan or click the QR code." msgstr "" -#: i2p2www/pages/downloads/list.html:122 +#: i2p2www/pages/downloads/list.html:123 msgid "" "The release and dev versions of the I2P APK are not compatible, as they\n" " are signed by zzz and sponge respectively. Uninstall one before " @@ -548,7 +548,7 @@ msgstr "" "d'installer⏎\n" "l'autre." -#: i2p2www/pages/downloads/list.html:132 +#: i2p2www/pages/downloads/list.html:133 msgid "Source package" msgstr "À partir des sources:" @@ -757,7 +757,7 @@ msgstr "" msgid "Manual updates" msgstr "Mises à jour manuelles" -#: i2p2www/pages/downloads/list.html:275 +#: i2p2www/pages/downloads/list.html:274 msgid "" "Download that file to your I2P\n" " installation directory and rename as i2pupdate.zip.\n" @@ -768,17 +768,17 @@ msgid "" " NOT need to unzip that file." msgstr "" -#: i2p2www/pages/downloads/list.html:284 +#: i2p2www/pages/downloads/list.html:283 msgid "Click \"Restart\"" msgstr "" "Cliquez \"Redémarrer\"" -#: i2p2www/pages/downloads/list.html:289 +#: i2p2www/pages/downloads/list.html:288 msgid "Grab a cup of coffee and come back in 11 minutes" msgstr "Prenez une tasse de café et revenez dans 11 minutes" -#: i2p2www/pages/downloads/list.html:297 +#: i2p2www/pages/downloads/list.html:296 #, python-format msgid "" "The file is signed by zzz,\n" @@ -787,11 +787,11 @@ msgstr "" "Le fichier est signé par zzz,⏎\n" "dont la clé est içi." -#: i2p2www/pages/downloads/list.html:302 +#: i2p2www/pages/downloads/list.html:301 msgid "Previous Releases" msgstr "Précédentes releases" -#: i2p2www/pages/downloads/list.html:304 +#: i2p2www/pages/downloads/list.html:303 #, python-format msgid "" "Previous releases are available on wrapper.java.maxmemory dans wrapper.config ." #: i2p2www/pages/site/faq.html:161 -#, python-format msgid "" "Is the CPU usage simply higher than you would like, or is it pegged at " -"100% for a long time?\n" +"100% for a long time?\n" "If it's pegged, this could be a bug. Look in the logs for clues." msgstr "" @@ -1905,7 +1904,6 @@ msgstr "" "Mais nous allons répondre à votre question en trois parties :" #: i2p2www/pages/site/faq.html:199 -#, python-format msgid "" "Distribution - All traffic on I2P is encrypted in multiple layers." " You don't know\n" @@ -1917,7 +1915,7 @@ msgid "" "participating tunnels to 0 (see above).\n" "It would be nice if you didn't do this, you should help the network by " "routing traffic for others.\n" -"Over 95% of users route traffic for others." +"Over 95% of users route traffic for others." msgstr "" #: i2p2www/pages/site/faq.html:210 diff --git a/i2p2www/translations/fr/LC_MESSAGES/research.po b/i2p2www/translations/fr/LC_MESSAGES/research.po index b693b1ed..8b5b1c9a 100644 --- a/i2p2www/translations/fr/LC_MESSAGES/research.po +++ b/i2p2www/translations/fr/LC_MESSAGES/research.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-12 10:29+0000\n" +"POT-Creation-Date: 2013-08-15 21:25+0000\n" "PO-Revision-Date: 2013-08-11 14:55+0000\n" "Last-Translator: Boxoa590\n" "Language-Team: French " diff --git a/i2p2www/translations/pt/LC_MESSAGES/priority.po b/i2p2www/translations/pt/LC_MESSAGES/priority.po index 9ec913eb..a8323b61 100644 --- a/i2p2www/translations/pt/LC_MESSAGES/priority.po +++ b/i2p2www/translations/pt/LC_MESSAGES/priority.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-12 10:29+0000\n" +"POT-Creation-Date: 2013-08-15 21:25+0000\n" "PO-Revision-Date: 2013-08-12 10:34+0000\n" "Last-Translator: str4d \n" "Language-Team: Portuguese " @@ -413,15 +413,15 @@ msgstr "" msgid "Download" msgstr "Baixar" -#: i2p2www/pages/downloads/list.html:4 +#: i2p2www/pages/downloads/list.html:9 msgid "Download I2P" msgstr "Baixar I2P" -#: i2p2www/pages/downloads/list.html:6 +#: i2p2www/pages/downloads/list.html:11 msgid "Dependency" msgstr "Dependências" -#: i2p2www/pages/downloads/list.html:7 +#: i2p2www/pages/downloads/list.html:12 #, python-format msgid "" "\n" @@ -437,21 +437,21 @@ msgid "" "or type java -version at your command prompt.\n" msgstr "" -#: i2p2www/pages/downloads/list.html:20 +#: i2p2www/pages/downloads/list.html:25 msgid "Clean installs" msgstr "Instalações feitas a partir do zero" -#: i2p2www/pages/downloads/list.html:27 i2p2www/pages/downloads/list.html:45 -#: i2p2www/pages/downloads/list.html:73 i2p2www/pages/downloads/list.html:135 +#: i2p2www/pages/downloads/list.html:32 i2p2www/pages/downloads/list.html:49 +#: i2p2www/pages/downloads/list.html:76 i2p2www/pages/downloads/list.html:136 #: i2p2www/pages/downloads/list.html:265 msgid "select alternate link" msgstr "" -#: i2p2www/pages/downloads/list.html:35 +#: i2p2www/pages/downloads/list.html:39 msgid "Download that file and run it." msgstr "Baixe o arquivo e rode-o." -#: i2p2www/pages/downloads/list.html:53 +#: i2p2www/pages/downloads/list.html:56 #, python-format msgid "" "Download that file and double-click it (if that works) or\n" @@ -462,11 +462,11 @@ msgid "" " "Open with Java"." msgstr "" -#: i2p2www/pages/downloads/list.html:61 i2p2www/pages/downloads/list.html:89 +#: i2p2www/pages/downloads/list.html:64 i2p2www/pages/downloads/list.html:91 msgid "Command line (headless) install:" msgstr "Instalação pelo prompt de comando:" -#: i2p2www/pages/downloads/list.html:62 +#: i2p2www/pages/downloads/list.html:65 #, python-format msgid "" "Download the %(i2pversion)s OSX graphical installer file above and\n" @@ -474,7 +474,7 @@ msgid "" "from the command line." msgstr "" -#: i2p2www/pages/downloads/list.html:81 +#: i2p2www/pages/downloads/list.html:83 #, python-format msgid "" "Download that file and double-click it (if that works) or\n" @@ -492,7 +492,7 @@ msgstr "" " e selecionando\n" " "Abrir com Java"." -#: i2p2www/pages/downloads/list.html:90 +#: i2p2www/pages/downloads/list.html:92 #, python-format msgid "" "Download the graphical installer file above and\n" @@ -503,11 +503,11 @@ msgstr "" " rode java -jar i2pinstall_%(i2pversion)s.jar -console " "pela linha de comando." -#: i2p2www/pages/downloads/list.html:100 +#: i2p2www/pages/downloads/list.html:102 msgid "Packages for Debian & Ubuntu are available." msgstr "Pacotes para Debian & Ubuntu estão disponíveis." -#: i2p2www/pages/downloads/list.html:115 +#: i2p2www/pages/downloads/list.html:116 #, python-format msgid "" "The above file is the current release build.\n" @@ -517,7 +517,7 @@ msgid "" " scan or click the QR code." msgstr "" -#: i2p2www/pages/downloads/list.html:122 +#: i2p2www/pages/downloads/list.html:123 msgid "" "The release and dev versions of the I2P APK are not compatible, as they\n" " are signed by zzz and sponge respectively. Uninstall one before " @@ -530,7 +530,7 @@ msgstr "" "uma antes de instalar\n" " outra." -#: i2p2www/pages/downloads/list.html:132 +#: i2p2www/pages/downloads/list.html:133 msgid "Source package" msgstr "Pacote originário" @@ -740,7 +740,7 @@ msgstr "Alternativamente, você pode usar o método manual explicado abaixo." msgid "Manual updates" msgstr "Atualizações manuais" -#: i2p2www/pages/downloads/list.html:275 +#: i2p2www/pages/downloads/list.html:274 msgid "" "Download that file to your I2P\n" " installation directory and rename as i2pupdate.zip.\n" @@ -758,17 +758,17 @@ msgstr "" "Você NÃO \n" " precisa descompactar esse arquivo." -#: i2p2www/pages/downloads/list.html:284 +#: i2p2www/pages/downloads/list.html:283 msgid "Click \"Restart\"" msgstr "" "Clique em \"Reiniciar\"" -#: i2p2www/pages/downloads/list.html:289 +#: i2p2www/pages/downloads/list.html:288 msgid "Grab a cup of coffee and come back in 11 minutes" msgstr "Pegue um copo de café e volte em 11 minutos" -#: i2p2www/pages/downloads/list.html:297 +#: i2p2www/pages/downloads/list.html:296 #, python-format msgid "" "The file is signed by zzz,\n" @@ -777,11 +777,11 @@ msgstr "" "O arquivo é assinado pelo zzz,\n" "cuja chave está aqui." -#: i2p2www/pages/downloads/list.html:302 +#: i2p2www/pages/downloads/list.html:301 msgid "Previous Releases" msgstr "Versões anteriores" -#: i2p2www/pages/downloads/list.html:304 +#: i2p2www/pages/downloads/list.html:303 #, python-format msgid "" "Previous releases are available on Distribution - All traffic on I2P is encrypted in multiple layers." " You don't know\n" @@ -1748,7 +1746,7 @@ msgid "" "participating tunnels to 0 (see above).\n" "It would be nice if you didn't do this, you should help the network by " "routing traffic for others.\n" -"Over 95% of users route traffic for others." +"Over 95% of users route traffic for others." msgstr "" #: i2p2www/pages/site/faq.html:210 diff --git a/i2p2www/translations/sv_SE/LC_MESSAGES/about.po b/i2p2www/translations/sv_SE/LC_MESSAGES/about.po index f39fe658..9f774840 100644 --- a/i2p2www/translations/sv_SE/LC_MESSAGES/about.po +++ b/i2p2www/translations/sv_SE/LC_MESSAGES/about.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-12 10:29+0000\n" +"POT-Creation-Date: 2013-08-15 21:25+0000\n" "PO-Revision-Date: 2013-04-27 23:10+0000\n" "Last-Translator: Martin Svensson \n" "Language-Team: Swedish (Sweden) " @@ -1813,7 +1813,6 @@ msgid "" msgstr "" #: i2p2www/pages/site/about/performance/history.html:23 -#, python-format msgid "" "\n" "ugha and duck are working on the C/JNI glue code, and the existing java " @@ -1822,8 +1821,8 @@ msgid "" "results\n" "look fantastic - running the router with the native GMP modPow is " "providing over\n" -"a 800% speedup in encryption performance, and the load was cut in half. " -"This\n" +"a 800% speedup in encryption performance, and the load was cut in " +"half. This\n" "was just on one user's machine, and things are nowhere near ready for " "packaging\n" "and deployment, yet." @@ -1874,12 +1873,12 @@ msgid "" msgstr "" #: i2p2www/pages/site/about/performance/history.html:54 -#, python-format msgid "" "For unpublished LeaseSets such as \"shared clients\", this is the only " "way to\n" "get the LeaseSet to Bob. Unfortunately this bundling every time adds\n" -"almost 100% overhead to a high-bandwidth connection, and much more to\n" +"almost 100% overhead to a high-bandwidth connection, and much more to" +"\n" "a connection with smaller messages." msgstr "" diff --git a/i2p2www/translations/sv_SE/LC_MESSAGES/blog.po b/i2p2www/translations/sv_SE/LC_MESSAGES/blog.po index 716d6aeb..1519e530 100644 --- a/i2p2www/translations/sv_SE/LC_MESSAGES/blog.po +++ b/i2p2www/translations/sv_SE/LC_MESSAGES/blog.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-12 10:29+0000\n" +"POT-Creation-Date: 2013-08-15 21:25+0000\n" "PO-Revision-Date: 2013-08-12 10:32+0000\n" "Last-Translator: str4d \n" "Language-Team: Swedish (Sweden) " diff --git a/i2p2www/translations/sv_SE/LC_MESSAGES/comparison.po b/i2p2www/translations/sv_SE/LC_MESSAGES/comparison.po index 3d83e640..582c8e1d 100644 --- a/i2p2www/translations/sv_SE/LC_MESSAGES/comparison.po +++ b/i2p2www/translations/sv_SE/LC_MESSAGES/comparison.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-12 10:29+0000\n" +"POT-Creation-Date: 2013-08-15 21:25+0000\n" "PO-Revision-Date: 2013-04-27 23:10+0000\n" "Last-Translator: Martin Svensson \n" "Language-Team: Swedish (Sweden) " diff --git a/i2p2www/translations/sv_SE/LC_MESSAGES/docs.po b/i2p2www/translations/sv_SE/LC_MESSAGES/docs.po index 6e9ad41f..85c17a86 100644 --- a/i2p2www/translations/sv_SE/LC_MESSAGES/docs.po +++ b/i2p2www/translations/sv_SE/LC_MESSAGES/docs.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-12 10:29+0000\n" +"POT-Creation-Date: 2013-08-15 21:25+0000\n" "PO-Revision-Date: 2013-04-27 23:10+0000\n" "Last-Translator: Martin Svensson \n" "Language-Team: Swedish (Sweden) " @@ -2413,9 +2413,7 @@ msgstr "" #: i2p2www/pages/site/docs/api/i2ptunnel.html:43 #, python-format msgid "" -"The anonymous monotone" -"\n" +"The anonymous monotone\n" "sourcecode repository for I2P" msgstr "" @@ -3541,7 +3539,7 @@ msgstr "" msgid "" "While compact response support is optional for both clients and trackers," " it is highly\n" -"recommended as it reduces the nominal response size by over 90%." +"recommended as it reduces the nominal response size by over 90%." msgstr "" #: i2p2www/pages/site/docs/applications/bittorrent.html:116 @@ -6913,9 +6911,8 @@ msgid "" msgstr "" #: i2p2www/pages/site/docs/how/network-database.html:281 -#, python-format msgid "" -"With the current rules for automatic opt-in, approximately 6% of\n" +"With the current rules for automatic opt-in, approximately 6% of\n" "the routers in the network are floodfill routers." msgstr "" @@ -7741,7 +7738,7 @@ msgid "" "further investigation.\n" "The floodfill routers are in a position to observe queries and gather " "information.\n" -"Certainly, at a level of f = 0.2 (20%% malicious nodes, as " +"Certainly, at a level of f = 0.2 (20% malicious nodes, as " "specifed in the paper)\n" "we expect that many of the Sybil threats we describe\n" "(here,\n" @@ -8122,10 +8119,9 @@ msgid "Two peers from the same /16 IP space may not be in the same tunnel." msgstr "" #: i2p2www/pages/site/docs/how/peer-selection.html:239 -#, python-format msgid "" -"A peer may participate in a maximum of 33% of all tunnels created by the " -"router." +"A peer may participate in a maximum of 33% of all tunnels created by " +"the router." msgstr "" #: i2p2www/pages/site/docs/how/peer-selection.html:242 @@ -10496,7 +10492,7 @@ msgid "" "Set defaults so that most users provide resources to the network.\n" "In I2P, users route traffic by default. In sharp distinction to\n" "other networks,\n" -"over 95%% of I2P users relay traffic for others." +"over 95% of I2P users relay traffic for others." msgstr "" #: i2p2www/pages/site/docs/how/threat-model.html:317 @@ -10898,14 +10894,13 @@ msgid "" msgstr "" #: i2p2www/pages/site/docs/how/threat-model.html:584 -#, python-format msgid "" "Sybil describes a category of attacks where the adversary creates " "arbitrarily\n" "large numbers of colluding nodes and uses the increased numbers to help \n" "mounting other attacks. For instance, if an attacker is in a network " "where peers\n" -"are selected randomly and they want an 80% chance to be one of those " +"are selected randomly and they want an 80% chance to be one of those " "peers, they\n" "simply create five times the number of nodes that are in the network and " "roll \n" @@ -10982,7 +10977,7 @@ msgid "" "the performance\n" "of peers.\n" "However, this is a powerful attack as the number of routers approaches\n" -"f = 0.2, or 20%% malicious nodes, as specifed in the paper.\n" +"f = 0.2, or 20% malicious nodes, as specifed in the paper.\n" "The malicous routers could also maintain connections to the target router" " and provide\n" "excellent forwarding bandwidth for traffic over those connections, in an " @@ -13004,8 +12999,8 @@ msgstr "" #: i2p2www/pages/site/docs/spec/blockfile.html:172 #, python-format msgid "" -"\"%%__INFO__%%\" is the master database skiplist with String/Properties " -"key/value entries containing only one entry:" +"%(INFO)s is the master database skiplist with String/Properties key/value" +" entries containing only one entry:" msgstr "" #: i2p2www/pages/site/docs/spec/blockfile.html:184 @@ -13015,8 +13010,8 @@ msgstr "" #: i2p2www/pages/site/docs/spec/blockfile.html:185 #, python-format msgid "" -"\"%%__REVERSE__%%\" is the reverse lookup skiplist with " -"Integer/Properties key/value entries\n" +"%(REVERSE)s is the reverse lookup skiplist with Integer/Properties " +"key/value entries\n" " (as of database version 2):" msgstr "" @@ -13943,7 +13938,7 @@ msgid "" "are transparently decompressed to a .jar or .war file.\n" "Update files containing .pack files are traditionally named with a '.su2'" " suffix.\n" -"Pack200 shrinks the update files by about 60%." +"Pack200 shrinks the update files by about 60%." msgstr "" #: i2p2www/pages/site/docs/spec/updates.html:105 @@ -14989,7 +14984,7 @@ msgstr "" #: i2p2www/pages/site/docs/transport/ssu.html:83 msgid "" -"For both MTU values, it is desirable that (MTU % 16) == 12, so that\n" +"For both MTU values, it is desirable that (MTU % 16) == 12, so that\n" "the payload portion after the 28-byte IP/UDP header is a multiple of\n" "16 bytes, for encryption purposes." msgstr "" @@ -15035,7 +15030,7 @@ msgstr "" #: i2p2www/pages/site/docs/transport/ssu.html:119 msgid "" "For IPv6, the minimum MTU is 1280. The IPv6 IP/UDP header is 48 bytes,\n" -"so we use an MTU where (MTN % 16 == 0), which is true for 1280." +"so we use an MTU where (MTN % 16 == 0), which is true for 1280." msgstr "" #: i2p2www/pages/site/docs/transport/ssu.html:124 diff --git a/i2p2www/translations/sv_SE/LC_MESSAGES/get-involved.po b/i2p2www/translations/sv_SE/LC_MESSAGES/get-involved.po index c3a974d7..68776511 100644 --- a/i2p2www/translations/sv_SE/LC_MESSAGES/get-involved.po +++ b/i2p2www/translations/sv_SE/LC_MESSAGES/get-involved.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-12 10:29+0000\n" +"POT-Creation-Date: 2013-08-15 21:25+0000\n" "PO-Revision-Date: 2013-04-27 23:10+0000\n" "Last-Translator: Martin Svensson \n" "Language-Team: Swedish (Sweden) " @@ -1560,10 +1560,9 @@ msgid "Streaming lib tests" msgstr "" #: i2p2www/pages/site/get-involved/bounties/unit-tests.html:94 -#, python-format msgid "" "To collect this bounty, a new set of unit tests must meet a \n" -"measured code coverage of 90% of the streaming lib \n" +"measured code coverage of 90% of the streaming lib \n" "(i2p/apps/ministreaming/ and i2p/apps/streaming/)." msgstr "" @@ -1573,7 +1572,7 @@ msgstr "" #: i2p2www/pages/site/get-involved/bounties/unit-tests.html:106 msgid "" -"To collect this bounty, all above unit tests must meet the 100%\n" +"To collect this bounty, all above unit tests must meet the 100%\n" "coverage marker (except for log statements)." msgstr "" diff --git a/i2p2www/translations/sv_SE/LC_MESSAGES/misc.po b/i2p2www/translations/sv_SE/LC_MESSAGES/misc.po index c95ccae7..2c9cdb12 100644 --- a/i2p2www/translations/sv_SE/LC_MESSAGES/misc.po +++ b/i2p2www/translations/sv_SE/LC_MESSAGES/misc.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-12 10:29+0000\n" +"POT-Creation-Date: 2013-08-15 21:25+0000\n" "PO-Revision-Date: 2013-04-27 23:10+0000\n" "Last-Translator: Martin Svensson \n" "Language-Team: Swedish (Sweden) " diff --git a/i2p2www/translations/sv_SE/LC_MESSAGES/priority.po b/i2p2www/translations/sv_SE/LC_MESSAGES/priority.po index e036416a..aaab33fd 100644 --- a/i2p2www/translations/sv_SE/LC_MESSAGES/priority.po +++ b/i2p2www/translations/sv_SE/LC_MESSAGES/priority.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-12 10:29+0000\n" +"POT-Creation-Date: 2013-08-15 21:25+0000\n" "PO-Revision-Date: 2013-04-27 23:10+0000\n" "Last-Translator: Martin Svensson \n" "Language-Team: Swedish (Sweden) " @@ -334,15 +334,15 @@ msgstr "" msgid "Download" msgstr "" -#: i2p2www/pages/downloads/list.html:4 +#: i2p2www/pages/downloads/list.html:9 msgid "Download I2P" msgstr "" -#: i2p2www/pages/downloads/list.html:6 +#: i2p2www/pages/downloads/list.html:11 msgid "Dependency" msgstr "" -#: i2p2www/pages/downloads/list.html:7 +#: i2p2www/pages/downloads/list.html:12 #, python-format msgid "" "\n" @@ -358,21 +358,21 @@ msgid "" "or type java -version at your command prompt.\n" msgstr "" -#: i2p2www/pages/downloads/list.html:20 +#: i2p2www/pages/downloads/list.html:25 msgid "Clean installs" msgstr "" -#: i2p2www/pages/downloads/list.html:27 i2p2www/pages/downloads/list.html:45 -#: i2p2www/pages/downloads/list.html:73 i2p2www/pages/downloads/list.html:135 +#: i2p2www/pages/downloads/list.html:32 i2p2www/pages/downloads/list.html:49 +#: i2p2www/pages/downloads/list.html:76 i2p2www/pages/downloads/list.html:136 #: i2p2www/pages/downloads/list.html:265 msgid "select alternate link" msgstr "" -#: i2p2www/pages/downloads/list.html:35 +#: i2p2www/pages/downloads/list.html:39 msgid "Download that file and run it." msgstr "" -#: i2p2www/pages/downloads/list.html:53 +#: i2p2www/pages/downloads/list.html:56 #, python-format msgid "" "Download that file and double-click it (if that works) or\n" @@ -383,11 +383,11 @@ msgid "" " "Open with Java"." msgstr "" -#: i2p2www/pages/downloads/list.html:61 i2p2www/pages/downloads/list.html:89 +#: i2p2www/pages/downloads/list.html:64 i2p2www/pages/downloads/list.html:91 msgid "Command line (headless) install:" msgstr "" -#: i2p2www/pages/downloads/list.html:62 +#: i2p2www/pages/downloads/list.html:65 #, python-format msgid "" "Download the %(i2pversion)s OSX graphical installer file above and\n" @@ -395,7 +395,7 @@ msgid "" "from the command line." msgstr "" -#: i2p2www/pages/downloads/list.html:81 +#: i2p2www/pages/downloads/list.html:83 #, python-format msgid "" "Download that file and double-click it (if that works) or\n" @@ -406,7 +406,7 @@ msgid "" " "Open with Java"." msgstr "" -#: i2p2www/pages/downloads/list.html:90 +#: i2p2www/pages/downloads/list.html:92 #, python-format msgid "" "Download the graphical installer file above and\n" @@ -414,11 +414,11 @@ msgid "" "from the command line." msgstr "" -#: i2p2www/pages/downloads/list.html:100 +#: i2p2www/pages/downloads/list.html:102 msgid "Packages for Debian & Ubuntu are available." msgstr "" -#: i2p2www/pages/downloads/list.html:115 +#: i2p2www/pages/downloads/list.html:116 #, python-format msgid "" "The above file is the current release build.\n" @@ -428,7 +428,7 @@ msgid "" " scan or click the QR code." msgstr "" -#: i2p2www/pages/downloads/list.html:122 +#: i2p2www/pages/downloads/list.html:123 msgid "" "The release and dev versions of the I2P APK are not compatible, as they\n" " are signed by zzz and sponge respectively. Uninstall one before " @@ -436,7 +436,7 @@ msgid "" " the other." msgstr "" -#: i2p2www/pages/downloads/list.html:132 +#: i2p2www/pages/downloads/list.html:133 msgid "Source package" msgstr "" @@ -582,7 +582,7 @@ msgstr "" msgid "Manual updates" msgstr "" -#: i2p2www/pages/downloads/list.html:275 +#: i2p2www/pages/downloads/list.html:274 msgid "" "Download that file to your I2P\n" " installation directory and rename as i2pupdate.zip.\n" @@ -593,26 +593,26 @@ msgid "" " NOT need to unzip that file." msgstr "" -#: i2p2www/pages/downloads/list.html:284 +#: i2p2www/pages/downloads/list.html:283 msgid "Click \"Restart\"" msgstr "" -#: i2p2www/pages/downloads/list.html:289 +#: i2p2www/pages/downloads/list.html:288 msgid "Grab a cup of coffee and come back in 11 minutes" msgstr "" -#: i2p2www/pages/downloads/list.html:297 +#: i2p2www/pages/downloads/list.html:296 #, python-format msgid "" "The file is signed by zzz,\n" "whose key is here." msgstr "" -#: i2p2www/pages/downloads/list.html:302 +#: i2p2www/pages/downloads/list.html:301 msgid "Previous Releases" msgstr "" -#: i2p2www/pages/downloads/list.html:304 +#: i2p2www/pages/downloads/list.html:303 #, python-format msgid "" "Previous releases are available on Distribution - All traffic on I2P is encrypted in multiple layers." " You don't know\n" @@ -1570,7 +1568,7 @@ msgid "" "participating tunnels to 0 (see above).\n" "It would be nice if you didn't do this, you should help the network by " "routing traffic for others.\n" -"Over 95% of users route traffic for others." +"Over 95% of users route traffic for others." msgstr "" #: i2p2www/pages/site/faq.html:210 diff --git a/i2p2www/translations/sv_SE/LC_MESSAGES/research.po b/i2p2www/translations/sv_SE/LC_MESSAGES/research.po index f8b60273..4fc3402a 100644 --- a/i2p2www/translations/sv_SE/LC_MESSAGES/research.po +++ b/i2p2www/translations/sv_SE/LC_MESSAGES/research.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-12 10:29+0000\n" +"POT-Creation-Date: 2013-08-15 21:25+0000\n" "PO-Revision-Date: 2013-04-27 23:10+0000\n" "Last-Translator: Martin Svensson \n" "Language-Team: Swedish (Sweden) " From 56a95a731ebb7a0aa384e23c7260914dc766f20b Mon Sep 17 00:00:00 2001 From: str4d Date: Fri, 23 Aug 2013 12:36:46 +0000 Subject: [PATCH 543/650] Fixed typos --- i2p2www/pages/site/get-involved/guides/monotone.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/i2p2www/pages/site/get-involved/guides/monotone.html b/i2p2www/pages/site/get-involved/guides/monotone.html index 362b62f1..075598a4 100644 --- a/i2p2www/pages/site/get-involved/guides/monotone.html +++ b/i2p2www/pages/site/get-involved/guides/monotone.html @@ -228,7 +228,7 @@

    {% trans -%} - The default Monotone trust policy is way too lax for our requirements: every comitter is trusted by default. + The default Monotone trust policy is way too lax for our requirements: every committer is trusted by default. That is not acceptable for I2P development. {%- endtrans %}

    @@ -349,7 +349,7 @@ directory where i2p.mtn was created and attempt a checkout of the I {% trans -%} If you are satisfied with results, restore the backup of monotonerc that was created above. If you didn't create a backup - as advised, re-read
    Setting up trust evaluation hools. + as advised, re-read Setting up trust evaluation hooks. {%- endtrans %}

    From 25153150d44d92532c22513a256e42e221567be9 Mon Sep 17 00:00:00 2001 From: str4d Date: Fri, 23 Aug 2013 12:40:40 +0000 Subject: [PATCH 544/650] Updated translations for typos --- i2p2www/translations/de/LC_MESSAGES/get-involved.po | 6 +++--- i2p2www/translations/es/LC_MESSAGES/get-involved.po | 6 +++--- i2p2www/translations/fr/LC_MESSAGES/get-involved.po | 6 +++--- i2p2www/translations/sv_SE/LC_MESSAGES/get-involved.po | 6 +++--- 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/i2p2www/translations/de/LC_MESSAGES/get-involved.po b/i2p2www/translations/de/LC_MESSAGES/get-involved.po index 124f85fc..ec00f1ff 100644 --- a/i2p2www/translations/de/LC_MESSAGES/get-involved.po +++ b/i2p2www/translations/de/LC_MESSAGES/get-involved.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-15 21:25+0000\n" +"POT-Creation-Date: 2013-08-23 12:28+0000\n" "PO-Revision-Date: 2013-07-04 16:33+0000\n" "Last-Translator: D.A. Loader\n" "Language-Team: German " @@ -3232,7 +3232,7 @@ msgstr "" #: i2p2www/pages/site/get-involved/guides/monotone.html:230 msgid "" "The default Monotone trust policy is way too lax for our requirements: " -"every comitter is trusted by default.\n" +"every committer is trusted by default.\n" " That is not acceptable for I2P development." msgstr "" @@ -3336,7 +3336,7 @@ msgid "" " monotonerc that was created above. If you didn't create a " "backup\n" " as advised, re-read Setting up trust evaluation hools." +"hooks\">Setting up trust evaluation hooks." msgstr "" #: i2p2www/pages/site/get-involved/guides/monotone.html:360 diff --git a/i2p2www/translations/es/LC_MESSAGES/get-involved.po b/i2p2www/translations/es/LC_MESSAGES/get-involved.po index 647e942c..2e3cdf5c 100644 --- a/i2p2www/translations/es/LC_MESSAGES/get-involved.po +++ b/i2p2www/translations/es/LC_MESSAGES/get-involved.po @@ -13,7 +13,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-15 21:25+0000\n" +"POT-Creation-Date: 2013-08-23 12:28+0000\n" "PO-Revision-Date: 2013-07-11 10:13+0000\n" "Last-Translator: trolly\n" "Language-Team: Spanish " @@ -3800,7 +3800,7 @@ msgstr "" #: i2p2www/pages/site/get-involved/guides/monotone.html:230 msgid "" "The default Monotone trust policy is way too lax for our requirements: " -"every comitter is trusted by default.\n" +"every committer is trusted by default.\n" " That is not acceptable for I2P development." msgstr "" @@ -3904,7 +3904,7 @@ msgid "" " monotonerc that was created above. If you didn't create a " "backup\n" " as advised, re-read Setting up trust evaluation hools." +"hooks\">Setting up trust evaluation hooks." msgstr "" #: i2p2www/pages/site/get-involved/guides/monotone.html:360 diff --git a/i2p2www/translations/fr/LC_MESSAGES/get-involved.po b/i2p2www/translations/fr/LC_MESSAGES/get-involved.po index 6595eda2..ae951495 100644 --- a/i2p2www/translations/fr/LC_MESSAGES/get-involved.po +++ b/i2p2www/translations/fr/LC_MESSAGES/get-involved.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-15 21:25+0000\n" +"POT-Creation-Date: 2013-08-23 12:28+0000\n" "PO-Revision-Date: 2013-08-11 15:29+0000\n" "Last-Translator: Boxoa590\n" "Language-Team: French " @@ -3272,7 +3272,7 @@ msgstr "" #: i2p2www/pages/site/get-involved/guides/monotone.html:230 msgid "" "The default Monotone trust policy is way too lax for our requirements: " -"every comitter is trusted by default.\n" +"every committer is trusted by default.\n" " That is not acceptable for I2P development." msgstr "" @@ -3376,7 +3376,7 @@ msgid "" " monotonerc that was created above. If you didn't create a " "backup\n" " as advised, re-read Setting up trust evaluation hools." +"hooks\">Setting up trust evaluation hooks." msgstr "" #: i2p2www/pages/site/get-involved/guides/monotone.html:360 diff --git a/i2p2www/translations/sv_SE/LC_MESSAGES/get-involved.po b/i2p2www/translations/sv_SE/LC_MESSAGES/get-involved.po index 68776511..0b5e7955 100644 --- a/i2p2www/translations/sv_SE/LC_MESSAGES/get-involved.po +++ b/i2p2www/translations/sv_SE/LC_MESSAGES/get-involved.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-15 21:25+0000\n" +"POT-Creation-Date: 2013-08-23 12:28+0000\n" "PO-Revision-Date: 2013-04-27 23:10+0000\n" "Last-Translator: Martin Svensson \n" "Language-Team: Swedish (Sweden) " @@ -3230,7 +3230,7 @@ msgstr "" #: i2p2www/pages/site/get-involved/guides/monotone.html:230 msgid "" "The default Monotone trust policy is way too lax for our requirements: " -"every comitter is trusted by default.\n" +"every committer is trusted by default.\n" " That is not acceptable for I2P development." msgstr "" @@ -3334,7 +3334,7 @@ msgid "" " monotonerc that was created above. If you didn't create a " "backup\n" " as advised, re-read Setting up trust evaluation hools." +"hooks\">Setting up trust evaluation hooks." msgstr "" #: i2p2www/pages/site/get-involved/guides/monotone.html:360 From 97ea744206e8a73ddaa78a400e090c41d651de10 Mon Sep 17 00:00:00 2001 From: str4d Date: Fri, 23 Aug 2013 12:49:49 +0000 Subject: [PATCH 545/650] Added zh_CN translation --- i2p2www/__init__.py | 2 +- i2p2www/pages/global/lang.html | 3 ++- i2p2www/static/images/flags/{zh.png => zh_CN.png} | Bin 3 files changed, 3 insertions(+), 2 deletions(-) rename i2p2www/static/images/flags/{zh.png => zh_CN.png} (100%) diff --git a/i2p2www/__init__.py b/i2p2www/__init__.py index 6d150a5e..a2263f7e 100644 --- a/i2p2www/__init__.py +++ b/i2p2www/__init__.py @@ -20,7 +20,7 @@ MEETINGS_PER_PAGE = 20 SUPPORTED_LANGS = [ 'en', 'es', -# 'zh', + 'zh_CN', 'de', 'fr', # 'it', diff --git a/i2p2www/pages/global/lang.html b/i2p2www/pages/global/lang.html index 529f99c2..dd83130a 100644 --- a/i2p2www/pages/global/lang.html +++ b/i2p2www/pages/global/lang.html @@ -1,8 +1,9 @@
    • +
    • -
    • +
    diff --git a/i2p2www/static/images/flags/zh.png b/i2p2www/static/images/flags/zh_CN.png similarity index 100% rename from i2p2www/static/images/flags/zh.png rename to i2p2www/static/images/flags/zh_CN.png From 2e12ed870364c38cade1538f020b482d2bb15112 Mon Sep 17 00:00:00 2001 From: str4d Date: Wed, 28 Aug 2013 02:40:38 +0000 Subject: [PATCH 546/650] Compile translations on adding and dropping --- site-updater.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/site-updater.sh b/site-updater.sh index 448f3aeb..63851662 100755 --- a/site-updater.sh +++ b/site-updater.sh @@ -3,7 +3,7 @@ TMP=tmp mtn update 2>&1 | tee $TMP -cat $TMP | grep "^mtn: updating 'i2p2www/translations/" >/dev/null +cat $TMP | grep "^mtn: adding 'i2p2www/translations/\|^mtn: dropping 'i2p2www/translations/\|^mtn: updating 'i2p2www/translations/" >/dev/null if [ $? -eq 0 ]; then echo "Translations updated, compiling messages" ./compile-messages.sh From e1dbe683acd0094869edf55102351c47a8678018 Mon Sep 17 00:00:00 2001 From: dev Date: Wed, 28 Aug 2013 23:11:03 +0000 Subject: [PATCH 547/650] there.. done --- compile-messages-i2hq.sh | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100755 compile-messages-i2hq.sh diff --git a/compile-messages-i2hq.sh b/compile-messages-i2hq.sh new file mode 100755 index 00000000..a087a40a --- /dev/null +++ b/compile-messages-i2hq.sh @@ -0,0 +1,11 @@ +#!/bin/sh +. ./etc/translation.vars + +if [ $# -ge 1 ] +then + TZ=UTC pybabel compile -D $1 -d $TRANSDIR +else + for domain in $(ls $BABELCFG); do + TZ=UTC pybabel compile -D $domain -d $TRANSDIR + done +fi From 93bd9dfcb2686dff64fae2b8dc9f1d282a1531ad Mon Sep 17 00:00:00 2001 From: dev Date: Wed, 28 Aug 2013 23:13:27 +0000 Subject: [PATCH 548/650] oops.. forgot that file --- site-updater-i2hq.sh | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100755 site-updater-i2hq.sh diff --git a/site-updater-i2hq.sh b/site-updater-i2hq.sh new file mode 100755 index 00000000..51b9357e --- /dev/null +++ b/site-updater-i2hq.sh @@ -0,0 +1,18 @@ +#!/bin/sh +TMP=tmp + +mtn update 2>&1 | tee $TMP + +cat $TMP | grep "^mtn: adding 'i2p2www/translations/\|^mtn: dropping 'i2p2www/translations/\|^mtn: updating 'i2p2www/translations/" >/dev/null +if [ $? -eq 0 ]; then + echo "Translations updated, compiling messages" + ./compile-messages-i2hq.sh +fi + +cat $TMP | grep "^mtn: updating 'i2p2www/.*/.*\.py" >/dev/null +if [ $? -eq 0 ]; then + echo "Python files changed, restarting server" + touch /tmp/2fcd2f17-c293-4f77-b4c9-9b266ba70daa +fi + +rm $TMP From 1229cf8ff32d56d7530502866b25f3f23968aaf5 Mon Sep 17 00:00:00 2001 From: str4d Date: Thu, 29 Aug 2013 01:30:17 +0000 Subject: [PATCH 549/650] Fixed legacy status --- i2p2www/legacy.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/i2p2www/legacy.py b/i2p2www/legacy.py index cbd778b5..e61f04ac 100644 --- a/i2p2www/legacy.py +++ b/i2p2www/legacy.py @@ -135,4 +135,4 @@ def legacy_meeting(id): return redirect(url_for('meetings_show', id=id, lang='en')) def legacy_status(year, month, day): - return redirect(url_for('blog_post', lang='en', slug=('%s/%s/%s/status' % (year, month, day)))) + return redirect(url_for('blog_post', lang='en', slug=('%d/%02d/%02d/status' % (year, month, day)))) From c84414b925d436528acffb61e1c29ff936bf39ac Mon Sep 17 00:00:00 2001 From: str4d Date: Thu, 29 Aug 2013 01:30:32 +0000 Subject: [PATCH 550/650] Fixed legacy *.txt --- i2p2www/urls.py | 1 + 1 file changed, 1 insertion(+) diff --git a/i2p2www/urls.py b/i2p2www/urls.py index 91dfdae0..b7282ef7 100644 --- a/i2p2www/urls.py +++ b/i2p2www/urls.py @@ -75,6 +75,7 @@ url('/_', 'legacy.legacy_show') url('/_.html', 'legacy.legacy_show') url('//', 'legacy.legacy_show') url('/.html', 'legacy.legacy_show') +url('/.txt', 'legacy.legacy_show') url('/hosts.txt', 'views.hosts') url('/robots.txt', 'views.robots') From 94815e5d43134ae8ff8a91a2dbf669c3a25eb5b6 Mon Sep 17 00:00:00 2001 From: str4d Date: Thu, 29 Aug 2013 04:28:03 +0000 Subject: [PATCH 551/650] Fixed legacy mappings --- i2p2www/legacy.py | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/i2p2www/legacy.py b/i2p2www/legacy.py index e61f04ac..a6fa08a0 100644 --- a/i2p2www/legacy.py +++ b/i2p2www/legacy.py @@ -6,12 +6,15 @@ from flask import g, redirect, url_for LEGACY_FUNCTIONS_MAP={ 'announcements': {'function': 'blog_index', 'params': {}}, - 'debian': {'function': 'downloads_select', 'params': {'file': 'debian'}}, + 'debian': {'function': 'downloads_debian', 'params': {}}, 'download': {'function': 'downloads_list', 'params': {}}, + 'installation': {'function': 'downloads_list', 'params': {}}, + 'meetings': {'function': 'meetings_index', 'params': {}}, 'statusnotes': {'function': 'blog_index', 'params': {}}, } LEGACY_PAGES_MAP={ + 'api': 'docs', 'applications': 'get-involved/develop/applications', 'benchmarks': 'misc/benchmarks', 'bittorrent': 'docs/applications/bittorrent', @@ -33,28 +36,27 @@ LEGACY_PAGES_MAP={ 'clt': 'misc/clt', 'common_structures_spec': 'docs/spec/common-structures', 'configuration': 'docs/spec/configuration', - 'contact': 'about/contact', + 'contact': 'contact', 'cvs': 'misc/cvs', 'datagrams': 'docs/api/datagrams', 'dev-guidelines': 'get-involved/guides/dev-guidelines', 'developerskeys': 'get-involved/develop/developers-keys', 'donate': 'get-involved/donate', - 'faq': 'support/faq', 'getinvolved': 'get-involved', 'geoip': 'docs/spec/geoip', - 'glossary': 'support/glossary', + 'glossary': 'about/glossary', 'halloffame': 'about/hall-of-fame', 'how': 'docs', 'how_cryptography': 'docs/how/cryptography', 'how_elgamalaes': 'docs/how/elgamal-aes', 'how_garlicrouting': 'docs/how/garlic-routing', 'how_intro': 'docs/how/intro', - 'how_networkcomparisons': 'about/comparison', + 'how_networkcomparisons': 'comparison', 'how_networkdatabase': 'docs/how/network-database', 'how_peerselection': 'docs/how/peer-selection', 'how_threatmodel': 'docs/how/threat-model', 'how_tunnelrouting': 'docs/how/tunnel-routing', - 'htproxyports': 'support/browser-config', + 'htproxyports': 'about/browser-config', 'i2cp': 'docs/protocol/i2cp', 'i2cp_spec': 'docs/spec/i2cp', 'i2np': 'docs/protocol/i2np', @@ -83,10 +85,10 @@ LEGACY_PAGES_MAP={ 'newtranslators': 'get-involved/guides/new-translators', 'ntcp': 'docs/transport/ntcp', 'ntcp_discussion': 'docs/discussions/ntcp', - 'othernetworks': 'about/comparison/other-networks', + 'othernetworks': 'comparison/other-networks', 'papers': 'research/papers', - 'performance-history': 'support/performance/history', - 'performance': 'support/performance/future', + 'performance-history': 'about/performance/history', + 'performance': 'about/performance/future', 'plugin_spec': 'docs/spec/plugin', 'plugins': 'docs/plugins', 'ports': 'docs/ports', From 3d94ee24eaca05cf5e03ac1af3a12c9e5f42aac9 Mon Sep 17 00:00:00 2001 From: str4d Date: Thu, 29 Aug 2013 05:18:36 +0000 Subject: [PATCH 552/650] Set up legacy mappings of release-* pages and other blog posts --- i2p2www/legacy.py | 71 ++++++++++++++++++++++++++++++++++++++++++++++- i2p2www/urls.py | 4 +++ 2 files changed, 74 insertions(+), 1 deletion(-) diff --git a/i2p2www/legacy.py b/i2p2www/legacy.py index a6fa08a0..c81fbb29 100644 --- a/i2p2www/legacy.py +++ b/i2p2www/legacy.py @@ -122,6 +122,61 @@ LEGACY_PAGES_MAP={ 'upgrade-0.6.1.30': 'misc/upgrade-0.6.1.30', } +LEGACY_BLOG_POSTS_MAP={ + 'statnotes0108': {'date': (2008, 2, 1), 'title': 'status'}, + 'summerofcode-2011': {'date': (2011, 6, 6), 'title': 'Ipredator-SoC'}, + 'summerofcode-2011-end': {'date': (2011, 9, 3), 'title': 'Ipredator-SoC-itoopie-released'}, +} + +LEGACY_RELEASES_MAP={ + '0.6.1.30': (2007, 10, 7), + '0.6.1.31': (2008, 2, 10), + '0.6.1.32': (2008, 3, 9), + '0.6.1.33': (2008, 4, 26), + '0.6.2': (2008, 6, 7), + '0.6.3': (2008, 8, 26), + '0.6.4': (2008, 10, 6), + '0.6.5': (2008, 12, 1), + '0.7': (2009, 1, 25), + '0.7.1': (2009, 3, 29), + '0.7.2': (2009, 4, 19), + '0.7.3': (2009, 5, 18), + '0.7.4': (2009, 6, 13), + '0.7.5': (2009, 6, 29), + '0.7.6': (2009, 7, 31), + '0.7.7': (2009, 10, 12), + '0.7.8': (2009, 12, 8), + '0.7.9': (2010, 1, 12), + '0.7.10': (2010, 1, 22), + '0.7.11': (2010, 2, 15), + '0.7.12': (2010, 3, 15), + '0.7.13': (2010, 4, 27), + '0.7.14': (2010, 6, 7), + '0.8': (2010, 7, 12), + '0.8.1': (2010, 11, 15), + '0.8.2': (2010, 12, 22), + '0.8.3': (2011, 1, 24), + '0.8.4': (2011, 3, 2), + '0.8.5': (2011, 4, 18), + '0.8.6': (2011, 5, 16), + '0.8.7': (2011, 6, 27), + '0.8.8': (2011, 8, 23), + '0.8.9': (2011, 10, 11), + '0.8.10': (2011, 10, 20), + '0.8.11': (2011, 11, 8), + '0.8.12': (2012, 1, 6), + '0.8.13': (2012, 2, 27), + '0.9': (2012, 5, 2), + '0.9.1': (2012, 7, 30), + '0.9.2': (2012, 9, 21), + '0.9.3': (2012, 10, 27), + '0.9.4': (2012, 12, 17), + '0.9.5': (2013, 3, 8), + '0.9.6': (2013, 5, 28), + '0.9.7': (2013, 7, 15), + '0.9.7.1': (2013, 8, 10), +} + def legacy_show(f): lang = 'en' if hasattr(g, 'lang') and g.lang: @@ -130,6 +185,8 @@ def legacy_show(f): return redirect(url_for(LEGACY_FUNCTIONS_MAP[f]['function'], lang=lang, **LEGACY_FUNCTIONS_MAP[f]['params'])) elif f in LEGACY_PAGES_MAP: return redirect(url_for('site_show', lang=lang, page=LEGACY_PAGES_MAP[f])) + elif f in LEGACY_BLOG_POSTS_MAP: + return legacy_blog(lang, LEGACY_BLOG_POSTS_MAP[f]['date'], LEGACY_BLOG_POSTS_MAP[f]['title']) else: return redirect(url_for('site_show', lang=lang, page=f)) @@ -137,4 +194,16 @@ def legacy_meeting(id): return redirect(url_for('meetings_show', id=id, lang='en')) def legacy_status(year, month, day): - return redirect(url_for('blog_post', lang='en', slug=('%d/%02d/%02d/status' % (year, month, day)))) + return legacy_blog('en', (year, month, day), 'status') + +def legacy_release(version): + lang = 'en' + if hasattr(g, 'lang') and g.lang: + lang = g.lang + if version in LEGACY_RELEASES_MAP: + return legacy_blog(lang, LEGACY_RELEASES_MAP[version], '%s-Release' % version) + else: + return legacy_show('release-%s' % version) + +def legacy_blog(lang, (year, month, day), title): + return redirect(url_for('blog_post', lang=lang, slug=('%d/%02d/%02d/%s' % (year, month, day, title)))) diff --git a/i2p2www/urls.py b/i2p2www/urls.py index b7282ef7..5d81101e 100644 --- a/i2p2www/urls.py +++ b/i2p2www/urls.py @@ -71,6 +71,10 @@ url('/meeting', 'legacy.legacy_meeting') url('/meeting.html', 'legacy.legacy_meeting') url('/status---', 'legacy.legacy_status') url('/status---.html', 'legacy.legacy_status') +url('/release-_', 'legacy.legacy_release') +url('/release-_.html', 'legacy.legacy_release') +url('/release-/', 'legacy.legacy_release') +url('/release-.html', 'legacy.legacy_release') url('/_', 'legacy.legacy_show') url('/_.html', 'legacy.legacy_show') url('//', 'legacy.legacy_show') From 2e67ae0e5d3ce62da837a91a98d297303b2b3335 Mon Sep 17 00:00:00 2001 From: str4d Date: Thu, 29 Aug 2013 05:30:35 +0000 Subject: [PATCH 553/650] Fixed 500 error --- i2p2www/pages/site/misc/ticket919.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/i2p2www/pages/site/misc/ticket919.html b/i2p2www/pages/site/misc/ticket919.html index 98b64760..882ba99b 100644 --- a/i2p2www/pages/site/misc/ticket919.html +++ b/i2p2www/pages/site/misc/ticket919.html @@ -5,7 +5,7 @@

    The issue described on this page only affects Windows systems that originally installed I2P with version 0.9.5. Other operating systems are not affected.

    -

    This issue has been corrected as of the 0.9.5-win1 release.

    +

    This issue has been corrected as of the 0.9.5-win1 release.

    From 6c1ad24c3f7dabdaf8b68f21f91f9f2ca0e33c7d Mon Sep 17 00:00:00 2001 From: str4d Date: Thu, 29 Aug 2013 06:46:41 +0000 Subject: [PATCH 554/650] Added note about other MUAs (thanks RN) --- i2p2www/pages/site/docs/applications/supported.html | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/i2p2www/pages/site/docs/applications/supported.html b/i2p2www/pages/site/docs/applications/supported.html index f454e644..465489fe 100644 --- a/i2p2www/pages/site/docs/applications/supported.html +++ b/i2p2www/pages/site/docs/applications/supported.html @@ -310,6 +310,19 @@ email service by default. {%- endtrans %} [{{ _('bundled') }}]

    + +
  • +

    Sylpheed Claws, Thunderbird, other MUAs — +{% trans reviews='http://'+i2pconv('hq.postman.i2p')+'/?page_id=9', +smtp='http://'+i2pconv('hq.postman.i2p')+'/?page_id=10', +pop3='http://'+i2pconv('hq.postman.i2p')+'/?page_id=11' -%} +Can be configured to use Postman's email service. See +this comparison of MUAs, +and configuration settings for +SMTP and POP3. +{%- endtrans %} + [{{ _('standalone') }}]

    +
  • {% trans %}File Sharing{% endtrans %}

    From 9d299b357d076477b5451483711a562f11eabecf Mon Sep 17 00:00:00 2001 From: str4d Date: Thu, 29 Aug 2013 06:49:03 +0000 Subject: [PATCH 555/650] Updated translation strings --- i2p2www/translations/de/LC_MESSAGES/about.po | 186 +++++++-------- i2p2www/translations/de/LC_MESSAGES/blog.po | 2 +- .../translations/de/LC_MESSAGES/comparison.po | 2 +- i2p2www/translations/de/LC_MESSAGES/docs.po | 222 +++++++++--------- .../de/LC_MESSAGES/get-involved.po | 2 +- i2p2www/translations/de/LC_MESSAGES/misc.po | 2 +- .../translations/de/LC_MESSAGES/priority.po | 2 +- .../translations/de/LC_MESSAGES/research.po | 2 +- i2p2www/translations/es/LC_MESSAGES/about.po | 186 +++++++-------- i2p2www/translations/es/LC_MESSAGES/blog.po | 2 +- .../translations/es/LC_MESSAGES/comparison.po | 2 +- i2p2www/translations/es/LC_MESSAGES/docs.po | 222 +++++++++--------- .../es/LC_MESSAGES/get-involved.po | 2 +- i2p2www/translations/es/LC_MESSAGES/misc.po | 2 +- .../translations/es/LC_MESSAGES/priority.po | 2 +- .../translations/es/LC_MESSAGES/research.po | 2 +- i2p2www/translations/fr/LC_MESSAGES/about.po | 186 +++++++-------- i2p2www/translations/fr/LC_MESSAGES/blog.po | 2 +- .../translations/fr/LC_MESSAGES/comparison.po | 2 +- i2p2www/translations/fr/LC_MESSAGES/docs.po | 222 +++++++++--------- .../fr/LC_MESSAGES/get-involved.po | 2 +- i2p2www/translations/fr/LC_MESSAGES/misc.po | 2 +- .../translations/fr/LC_MESSAGES/priority.po | 2 +- .../translations/fr/LC_MESSAGES/research.po | 2 +- .../translations/pt/LC_MESSAGES/priority.po | 2 +- .../translations/sv_SE/LC_MESSAGES/about.po | 186 +++++++-------- .../translations/sv_SE/LC_MESSAGES/blog.po | 2 +- .../sv_SE/LC_MESSAGES/comparison.po | 2 +- .../translations/sv_SE/LC_MESSAGES/docs.po | 222 +++++++++--------- .../sv_SE/LC_MESSAGES/get-involved.po | 2 +- .../translations/sv_SE/LC_MESSAGES/misc.po | 2 +- .../sv_SE/LC_MESSAGES/priority.po | 2 +- .../sv_SE/LC_MESSAGES/research.po | 2 +- 33 files changed, 853 insertions(+), 829 deletions(-) diff --git a/i2p2www/translations/de/LC_MESSAGES/about.po b/i2p2www/translations/de/LC_MESSAGES/about.po index 1a68b0b1..d92e57b1 100644 --- a/i2p2www/translations/de/LC_MESSAGES/about.po +++ b/i2p2www/translations/de/LC_MESSAGES/about.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-15 21:25+0000\n" +"POT-Creation-Date: 2013-08-29 06:46+0000\n" "PO-Revision-Date: 2013-07-04 16:33+0000\n" "Last-Translator: D.A. Loader\n" "Language-Team: German " @@ -215,52 +215,24 @@ msgstr "" #: i2p2www/pages/site/about/hall-of-fame.html:9 #: i2p2www/pages/site/about/hall-of-fame.html:47 -#: i2p2www/pages/site/about/hall-of-fame.html:137 -#: i2p2www/pages/site/about/hall-of-fame.html:138 -#: i2p2www/pages/site/about/hall-of-fame.html:139 -#: i2p2www/pages/site/about/hall-of-fame.html:140 -#: i2p2www/pages/site/about/hall-of-fame.html:142 -#: i2p2www/pages/site/about/hall-of-fame.html:143 -#: i2p2www/pages/site/about/hall-of-fame.html:144 -#: i2p2www/pages/site/about/hall-of-fame.html:147 -#: i2p2www/pages/site/about/hall-of-fame.html:148 -#: i2p2www/pages/site/about/hall-of-fame.html:149 -#: i2p2www/pages/site/about/hall-of-fame.html:152 -#: i2p2www/pages/site/about/hall-of-fame.html:153 -#: i2p2www/pages/site/about/hall-of-fame.html:154 -#: i2p2www/pages/site/about/hall-of-fame.html:155 -#: i2p2www/pages/site/about/hall-of-fame.html:156 -#: i2p2www/pages/site/about/hall-of-fame.html:157 -#: i2p2www/pages/site/about/hall-of-fame.html:158 -#: i2p2www/pages/site/about/hall-of-fame.html:159 -#: i2p2www/pages/site/about/hall-of-fame.html:160 -#: i2p2www/pages/site/about/hall-of-fame.html:161 -#: i2p2www/pages/site/about/hall-of-fame.html:162 -#: i2p2www/pages/site/about/hall-of-fame.html:163 -#: i2p2www/pages/site/about/hall-of-fame.html:164 -#: i2p2www/pages/site/about/hall-of-fame.html:167 -#: i2p2www/pages/site/about/hall-of-fame.html:168 -#: i2p2www/pages/site/about/hall-of-fame.html:169 -#: i2p2www/pages/site/about/hall-of-fame.html:170 -#: i2p2www/pages/site/about/hall-of-fame.html:171 -#: i2p2www/pages/site/about/hall-of-fame.html:172 +#: i2p2www/pages/site/about/hall-of-fame.html:173 #: i2p2www/pages/site/about/hall-of-fame.html:174 #: i2p2www/pages/site/about/hall-of-fame.html:175 +#: i2p2www/pages/site/about/hall-of-fame.html:176 #: i2p2www/pages/site/about/hall-of-fame.html:178 #: i2p2www/pages/site/about/hall-of-fame.html:179 #: i2p2www/pages/site/about/hall-of-fame.html:180 -#: i2p2www/pages/site/about/hall-of-fame.html:181 -#: i2p2www/pages/site/about/hall-of-fame.html:182 +#: i2p2www/pages/site/about/hall-of-fame.html:183 #: i2p2www/pages/site/about/hall-of-fame.html:184 #: i2p2www/pages/site/about/hall-of-fame.html:185 -#: i2p2www/pages/site/about/hall-of-fame.html:186 -#: i2p2www/pages/site/about/hall-of-fame.html:187 #: i2p2www/pages/site/about/hall-of-fame.html:188 #: i2p2www/pages/site/about/hall-of-fame.html:189 +#: i2p2www/pages/site/about/hall-of-fame.html:190 #: i2p2www/pages/site/about/hall-of-fame.html:191 #: i2p2www/pages/site/about/hall-of-fame.html:192 #: i2p2www/pages/site/about/hall-of-fame.html:193 #: i2p2www/pages/site/about/hall-of-fame.html:194 +#: i2p2www/pages/site/about/hall-of-fame.html:195 #: i2p2www/pages/site/about/hall-of-fame.html:196 #: i2p2www/pages/site/about/hall-of-fame.html:197 #: i2p2www/pages/site/about/hall-of-fame.html:198 @@ -270,53 +242,55 @@ msgstr "" #: i2p2www/pages/site/about/hall-of-fame.html:204 #: i2p2www/pages/site/about/hall-of-fame.html:205 #: i2p2www/pages/site/about/hall-of-fame.html:206 +#: i2p2www/pages/site/about/hall-of-fame.html:207 #: i2p2www/pages/site/about/hall-of-fame.html:208 -#: i2p2www/pages/site/about/hall-of-fame.html:209 #: i2p2www/pages/site/about/hall-of-fame.html:210 -#: i2p2www/pages/site/about/hall-of-fame.html:212 -#: i2p2www/pages/site/about/hall-of-fame.html:213 +#: i2p2www/pages/site/about/hall-of-fame.html:211 #: i2p2www/pages/site/about/hall-of-fame.html:214 #: i2p2www/pages/site/about/hall-of-fame.html:215 +#: i2p2www/pages/site/about/hall-of-fame.html:216 #: i2p2www/pages/site/about/hall-of-fame.html:217 #: i2p2www/pages/site/about/hall-of-fame.html:218 -#: i2p2www/pages/site/about/hall-of-fame.html:219 #: i2p2www/pages/site/about/hall-of-fame.html:220 #: i2p2www/pages/site/about/hall-of-fame.html:221 +#: i2p2www/pages/site/about/hall-of-fame.html:222 +#: i2p2www/pages/site/about/hall-of-fame.html:223 +#: i2p2www/pages/site/about/hall-of-fame.html:224 +#: i2p2www/pages/site/about/hall-of-fame.html:225 #: i2p2www/pages/site/about/hall-of-fame.html:227 +#: i2p2www/pages/site/about/hall-of-fame.html:228 +#: i2p2www/pages/site/about/hall-of-fame.html:229 #: i2p2www/pages/site/about/hall-of-fame.html:230 -#: i2p2www/pages/site/about/hall-of-fame.html:231 #: i2p2www/pages/site/about/hall-of-fame.html:232 #: i2p2www/pages/site/about/hall-of-fame.html:233 #: i2p2www/pages/site/about/hall-of-fame.html:234 +#: i2p2www/pages/site/about/hall-of-fame.html:235 #: i2p2www/pages/site/about/hall-of-fame.html:236 -#: i2p2www/pages/site/about/hall-of-fame.html:237 -#: i2p2www/pages/site/about/hall-of-fame.html:238 -#: i2p2www/pages/site/about/hall-of-fame.html:243 +#: i2p2www/pages/site/about/hall-of-fame.html:239 +#: i2p2www/pages/site/about/hall-of-fame.html:240 +#: i2p2www/pages/site/about/hall-of-fame.html:241 +#: i2p2www/pages/site/about/hall-of-fame.html:242 #: i2p2www/pages/site/about/hall-of-fame.html:244 #: i2p2www/pages/site/about/hall-of-fame.html:245 #: i2p2www/pages/site/about/hall-of-fame.html:246 -#: i2p2www/pages/site/about/hall-of-fame.html:247 #: i2p2www/pages/site/about/hall-of-fame.html:248 #: i2p2www/pages/site/about/hall-of-fame.html:249 #: i2p2www/pages/site/about/hall-of-fame.html:250 #: i2p2www/pages/site/about/hall-of-fame.html:251 -#: i2p2www/pages/site/about/hall-of-fame.html:252 +#: i2p2www/pages/site/about/hall-of-fame.html:253 #: i2p2www/pages/site/about/hall-of-fame.html:254 #: i2p2www/pages/site/about/hall-of-fame.html:255 -#: i2p2www/pages/site/about/hall-of-fame.html:265 +#: i2p2www/pages/site/about/hall-of-fame.html:256 +#: i2p2www/pages/site/about/hall-of-fame.html:257 +#: i2p2www/pages/site/about/hall-of-fame.html:263 #: i2p2www/pages/site/about/hall-of-fame.html:266 #: i2p2www/pages/site/about/hall-of-fame.html:267 #: i2p2www/pages/site/about/hall-of-fame.html:268 #: i2p2www/pages/site/about/hall-of-fame.html:269 #: i2p2www/pages/site/about/hall-of-fame.html:270 -#: i2p2www/pages/site/about/hall-of-fame.html:271 #: i2p2www/pages/site/about/hall-of-fame.html:272 #: i2p2www/pages/site/about/hall-of-fame.html:273 #: i2p2www/pages/site/about/hall-of-fame.html:274 -#: i2p2www/pages/site/about/hall-of-fame.html:275 -#: i2p2www/pages/site/about/hall-of-fame.html:276 -#: i2p2www/pages/site/about/hall-of-fame.html:277 -#: i2p2www/pages/site/about/hall-of-fame.html:278 #: i2p2www/pages/site/about/hall-of-fame.html:279 #: i2p2www/pages/site/about/hall-of-fame.html:280 #: i2p2www/pages/site/about/hall-of-fame.html:281 @@ -324,36 +298,32 @@ msgstr "" #: i2p2www/pages/site/about/hall-of-fame.html:283 #: i2p2www/pages/site/about/hall-of-fame.html:284 #: i2p2www/pages/site/about/hall-of-fame.html:285 -#: i2p2www/pages/site/about/hall-of-fame.html:289 +#: i2p2www/pages/site/about/hall-of-fame.html:286 +#: i2p2www/pages/site/about/hall-of-fame.html:287 +#: i2p2www/pages/site/about/hall-of-fame.html:288 #: i2p2www/pages/site/about/hall-of-fame.html:290 #: i2p2www/pages/site/about/hall-of-fame.html:291 -#: i2p2www/pages/site/about/hall-of-fame.html:292 -#: i2p2www/pages/site/about/hall-of-fame.html:293 -#: i2p2www/pages/site/about/hall-of-fame.html:294 -#: i2p2www/pages/site/about/hall-of-fame.html:295 -#: i2p2www/pages/site/about/hall-of-fame.html:297 -#: i2p2www/pages/site/about/hall-of-fame.html:298 -#: i2p2www/pages/site/about/hall-of-fame.html:299 -#: i2p2www/pages/site/about/hall-of-fame.html:300 #: i2p2www/pages/site/about/hall-of-fame.html:301 #: i2p2www/pages/site/about/hall-of-fame.html:302 #: i2p2www/pages/site/about/hall-of-fame.html:303 #: i2p2www/pages/site/about/hall-of-fame.html:304 #: i2p2www/pages/site/about/hall-of-fame.html:305 +#: i2p2www/pages/site/about/hall-of-fame.html:306 +#: i2p2www/pages/site/about/hall-of-fame.html:307 #: i2p2www/pages/site/about/hall-of-fame.html:308 #: i2p2www/pages/site/about/hall-of-fame.html:309 #: i2p2www/pages/site/about/hall-of-fame.html:310 #: i2p2www/pages/site/about/hall-of-fame.html:311 #: i2p2www/pages/site/about/hall-of-fame.html:312 +#: i2p2www/pages/site/about/hall-of-fame.html:313 #: i2p2www/pages/site/about/hall-of-fame.html:314 +#: i2p2www/pages/site/about/hall-of-fame.html:315 #: i2p2www/pages/site/about/hall-of-fame.html:316 #: i2p2www/pages/site/about/hall-of-fame.html:317 #: i2p2www/pages/site/about/hall-of-fame.html:318 #: i2p2www/pages/site/about/hall-of-fame.html:319 #: i2p2www/pages/site/about/hall-of-fame.html:320 #: i2p2www/pages/site/about/hall-of-fame.html:321 -#: i2p2www/pages/site/about/hall-of-fame.html:322 -#: i2p2www/pages/site/about/hall-of-fame.html:324 #: i2p2www/pages/site/about/hall-of-fame.html:325 #: i2p2www/pages/site/about/hall-of-fame.html:326 #: i2p2www/pages/site/about/hall-of-fame.html:327 @@ -361,21 +331,33 @@ msgstr "" #: i2p2www/pages/site/about/hall-of-fame.html:329 #: i2p2www/pages/site/about/hall-of-fame.html:330 #: i2p2www/pages/site/about/hall-of-fame.html:331 -#: i2p2www/pages/site/about/hall-of-fame.html:332 #: i2p2www/pages/site/about/hall-of-fame.html:333 #: i2p2www/pages/site/about/hall-of-fame.html:334 #: i2p2www/pages/site/about/hall-of-fame.html:335 #: i2p2www/pages/site/about/hall-of-fame.html:336 #: i2p2www/pages/site/about/hall-of-fame.html:337 +#: i2p2www/pages/site/about/hall-of-fame.html:338 #: i2p2www/pages/site/about/hall-of-fame.html:339 #: i2p2www/pages/site/about/hall-of-fame.html:340 #: i2p2www/pages/site/about/hall-of-fame.html:341 #: i2p2www/pages/site/about/hall-of-fame.html:344 #: i2p2www/pages/site/about/hall-of-fame.html:345 +#: i2p2www/pages/site/about/hall-of-fame.html:346 +#: i2p2www/pages/site/about/hall-of-fame.html:347 #: i2p2www/pages/site/about/hall-of-fame.html:348 -#: i2p2www/pages/site/about/hall-of-fame.html:349 -#: i2p2www/pages/site/about/hall-of-fame.html:351 +#: i2p2www/pages/site/about/hall-of-fame.html:350 #: i2p2www/pages/site/about/hall-of-fame.html:352 +#: i2p2www/pages/site/about/hall-of-fame.html:353 +#: i2p2www/pages/site/about/hall-of-fame.html:354 +#: i2p2www/pages/site/about/hall-of-fame.html:355 +#: i2p2www/pages/site/about/hall-of-fame.html:356 +#: i2p2www/pages/site/about/hall-of-fame.html:357 +#: i2p2www/pages/site/about/hall-of-fame.html:358 +#: i2p2www/pages/site/about/hall-of-fame.html:360 +#: i2p2www/pages/site/about/hall-of-fame.html:361 +#: i2p2www/pages/site/about/hall-of-fame.html:362 +#: i2p2www/pages/site/about/hall-of-fame.html:363 +#: i2p2www/pages/site/about/hall-of-fame.html:364 #: i2p2www/pages/site/about/hall-of-fame.html:365 #: i2p2www/pages/site/about/hall-of-fame.html:366 #: i2p2www/pages/site/about/hall-of-fame.html:367 @@ -385,32 +367,15 @@ msgstr "" #: i2p2www/pages/site/about/hall-of-fame.html:371 #: i2p2www/pages/site/about/hall-of-fame.html:372 #: i2p2www/pages/site/about/hall-of-fame.html:373 -#: i2p2www/pages/site/about/hall-of-fame.html:374 #: i2p2www/pages/site/about/hall-of-fame.html:375 #: i2p2www/pages/site/about/hall-of-fame.html:376 #: i2p2www/pages/site/about/hall-of-fame.html:377 -#: i2p2www/pages/site/about/hall-of-fame.html:378 -#: i2p2www/pages/site/about/hall-of-fame.html:379 #: i2p2www/pages/site/about/hall-of-fame.html:380 #: i2p2www/pages/site/about/hall-of-fame.html:381 -#: i2p2www/pages/site/about/hall-of-fame.html:382 -#: i2p2www/pages/site/about/hall-of-fame.html:383 #: i2p2www/pages/site/about/hall-of-fame.html:384 #: i2p2www/pages/site/about/hall-of-fame.html:385 -#: i2p2www/pages/site/about/hall-of-fame.html:386 #: i2p2www/pages/site/about/hall-of-fame.html:387 #: i2p2www/pages/site/about/hall-of-fame.html:388 -#: i2p2www/pages/site/about/hall-of-fame.html:389 -#: i2p2www/pages/site/about/hall-of-fame.html:390 -#: i2p2www/pages/site/about/hall-of-fame.html:391 -#: i2p2www/pages/site/about/hall-of-fame.html:392 -#: i2p2www/pages/site/about/hall-of-fame.html:393 -#: i2p2www/pages/site/about/hall-of-fame.html:394 -#: i2p2www/pages/site/about/hall-of-fame.html:395 -#: i2p2www/pages/site/about/hall-of-fame.html:396 -#: i2p2www/pages/site/about/hall-of-fame.html:397 -#: i2p2www/pages/site/about/hall-of-fame.html:398 -#: i2p2www/pages/site/about/hall-of-fame.html:399 #: i2p2www/pages/site/about/hall-of-fame.html:401 #: i2p2www/pages/site/about/hall-of-fame.html:402 #: i2p2www/pages/site/about/hall-of-fame.html:403 @@ -419,15 +384,20 @@ msgstr "" #: i2p2www/pages/site/about/hall-of-fame.html:406 #: i2p2www/pages/site/about/hall-of-fame.html:407 #: i2p2www/pages/site/about/hall-of-fame.html:408 +#: i2p2www/pages/site/about/hall-of-fame.html:409 #: i2p2www/pages/site/about/hall-of-fame.html:410 #: i2p2www/pages/site/about/hall-of-fame.html:411 #: i2p2www/pages/site/about/hall-of-fame.html:412 +#: i2p2www/pages/site/about/hall-of-fame.html:413 #: i2p2www/pages/site/about/hall-of-fame.html:414 #: i2p2www/pages/site/about/hall-of-fame.html:415 #: i2p2www/pages/site/about/hall-of-fame.html:416 #: i2p2www/pages/site/about/hall-of-fame.html:417 #: i2p2www/pages/site/about/hall-of-fame.html:418 +#: i2p2www/pages/site/about/hall-of-fame.html:419 #: i2p2www/pages/site/about/hall-of-fame.html:420 +#: i2p2www/pages/site/about/hall-of-fame.html:421 +#: i2p2www/pages/site/about/hall-of-fame.html:422 #: i2p2www/pages/site/about/hall-of-fame.html:423 #: i2p2www/pages/site/about/hall-of-fame.html:424 #: i2p2www/pages/site/about/hall-of-fame.html:425 @@ -441,39 +411,70 @@ msgstr "" #: i2p2www/pages/site/about/hall-of-fame.html:433 #: i2p2www/pages/site/about/hall-of-fame.html:434 #: i2p2www/pages/site/about/hall-of-fame.html:435 -#: i2p2www/pages/site/about/hall-of-fame.html:436 +#: i2p2www/pages/site/about/hall-of-fame.html:437 #: i2p2www/pages/site/about/hall-of-fame.html:438 #: i2p2www/pages/site/about/hall-of-fame.html:439 #: i2p2www/pages/site/about/hall-of-fame.html:440 +#: i2p2www/pages/site/about/hall-of-fame.html:441 #: i2p2www/pages/site/about/hall-of-fame.html:442 -#: i2p2www/pages/site/about/hall-of-fame.html:445 +#: i2p2www/pages/site/about/hall-of-fame.html:443 +#: i2p2www/pages/site/about/hall-of-fame.html:444 #: i2p2www/pages/site/about/hall-of-fame.html:446 #: i2p2www/pages/site/about/hall-of-fame.html:447 #: i2p2www/pages/site/about/hall-of-fame.html:448 -#: i2p2www/pages/site/about/hall-of-fame.html:449 #: i2p2www/pages/site/about/hall-of-fame.html:450 #: i2p2www/pages/site/about/hall-of-fame.html:451 #: i2p2www/pages/site/about/hall-of-fame.html:452 #: i2p2www/pages/site/about/hall-of-fame.html:453 #: i2p2www/pages/site/about/hall-of-fame.html:454 -#: i2p2www/pages/site/about/hall-of-fame.html:455 #: i2p2www/pages/site/about/hall-of-fame.html:456 -#: i2p2www/pages/site/about/hall-of-fame.html:457 -#: i2p2www/pages/site/about/hall-of-fame.html:458 #: i2p2www/pages/site/about/hall-of-fame.html:459 #: i2p2www/pages/site/about/hall-of-fame.html:460 #: i2p2www/pages/site/about/hall-of-fame.html:461 #: i2p2www/pages/site/about/hall-of-fame.html:462 #: i2p2www/pages/site/about/hall-of-fame.html:463 +#: i2p2www/pages/site/about/hall-of-fame.html:464 #: i2p2www/pages/site/about/hall-of-fame.html:465 #: i2p2www/pages/site/about/hall-of-fame.html:466 #: i2p2www/pages/site/about/hall-of-fame.html:467 +#: i2p2www/pages/site/about/hall-of-fame.html:468 +#: i2p2www/pages/site/about/hall-of-fame.html:469 +#: i2p2www/pages/site/about/hall-of-fame.html:470 +#: i2p2www/pages/site/about/hall-of-fame.html:471 +#: i2p2www/pages/site/about/hall-of-fame.html:472 +#: i2p2www/pages/site/about/hall-of-fame.html:474 +#: i2p2www/pages/site/about/hall-of-fame.html:475 +#: i2p2www/pages/site/about/hall-of-fame.html:476 +#: i2p2www/pages/site/about/hall-of-fame.html:478 +#: i2p2www/pages/site/about/hall-of-fame.html:481 +#: i2p2www/pages/site/about/hall-of-fame.html:482 +#: i2p2www/pages/site/about/hall-of-fame.html:483 +#: i2p2www/pages/site/about/hall-of-fame.html:484 +#: i2p2www/pages/site/about/hall-of-fame.html:485 +#: i2p2www/pages/site/about/hall-of-fame.html:486 +#: i2p2www/pages/site/about/hall-of-fame.html:487 +#: i2p2www/pages/site/about/hall-of-fame.html:488 +#: i2p2www/pages/site/about/hall-of-fame.html:489 +#: i2p2www/pages/site/about/hall-of-fame.html:490 +#: i2p2www/pages/site/about/hall-of-fame.html:491 +#: i2p2www/pages/site/about/hall-of-fame.html:492 +#: i2p2www/pages/site/about/hall-of-fame.html:493 +#: i2p2www/pages/site/about/hall-of-fame.html:494 +#: i2p2www/pages/site/about/hall-of-fame.html:495 +#: i2p2www/pages/site/about/hall-of-fame.html:496 +#: i2p2www/pages/site/about/hall-of-fame.html:497 +#: i2p2www/pages/site/about/hall-of-fame.html:498 +#: i2p2www/pages/site/about/hall-of-fame.html:499 +#: i2p2www/pages/site/about/hall-of-fame.html:501 +#: i2p2www/pages/site/about/hall-of-fame.html:502 +#: i2p2www/pages/site/about/hall-of-fame.html:503 msgid "General fund" msgstr "" #: i2p2www/pages/site/about/hall-of-fame.html:10 #: i2p2www/pages/site/about/hall-of-fame.html:12 #: i2p2www/pages/site/about/hall-of-fame.html:14 +#: i2p2www/pages/site/about/hall-of-fame.html:20 #, python-format msgid "%(euroval)s € and %(btcval)s BTC" msgstr "" @@ -505,11 +506,6 @@ msgstr "" msgid "Bitcoin client for I2P" msgstr "" -#: i2p2www/pages/site/about/hall-of-fame.html:20 -#, python-format -msgid "%(btcval)s BTC" -msgstr "" - #: i2p2www/pages/site/about/hall-of-fame.html:21 msgid "Unit Tests for I2P router" msgstr "" @@ -550,15 +546,15 @@ msgstr "" msgid "2013 donations and costs:" msgstr "" -#: i2p2www/pages/site/about/hall-of-fame.html:134 +#: i2p2www/pages/site/about/hall-of-fame.html:170 msgid "2012 donations and costs:" msgstr "" -#: i2p2www/pages/site/about/hall-of-fame.html:262 +#: i2p2www/pages/site/about/hall-of-fame.html:298 msgid "2011 donations and costs:" msgstr "" -#: i2p2www/pages/site/about/hall-of-fame.html:363 +#: i2p2www/pages/site/about/hall-of-fame.html:399 msgid "Previous to 2011 donations:" msgstr "" diff --git a/i2p2www/translations/de/LC_MESSAGES/blog.po b/i2p2www/translations/de/LC_MESSAGES/blog.po index 44057ff2..846027fd 100644 --- a/i2p2www/translations/de/LC_MESSAGES/blog.po +++ b/i2p2www/translations/de/LC_MESSAGES/blog.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-15 21:25+0000\n" +"POT-Creation-Date: 2013-08-29 06:46+0000\n" "PO-Revision-Date: 2013-08-12 10:32+0000\n" "Last-Translator: str4d \n" "Language-Team: German " diff --git a/i2p2www/translations/de/LC_MESSAGES/comparison.po b/i2p2www/translations/de/LC_MESSAGES/comparison.po index 90835920..0537c2a1 100644 --- a/i2p2www/translations/de/LC_MESSAGES/comparison.po +++ b/i2p2www/translations/de/LC_MESSAGES/comparison.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-15 21:25+0000\n" +"POT-Creation-Date: 2013-08-29 06:46+0000\n" "PO-Revision-Date: 2013-07-04 16:33+0000\n" "Last-Translator: D.A. Loader\n" "Language-Team: German " diff --git a/i2p2www/translations/de/LC_MESSAGES/docs.po b/i2p2www/translations/de/LC_MESSAGES/docs.po index 10d75411..100db2c8 100644 --- a/i2p2www/translations/de/LC_MESSAGES/docs.po +++ b/i2p2www/translations/de/LC_MESSAGES/docs.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-15 21:25+0000\n" +"POT-Creation-Date: 2013-08-29 06:46+0000\n" "PO-Revision-Date: 2013-08-12 10:33+0000\n" "Last-Translator: str4d \n" "Language-Team: German " @@ -3834,82 +3834,82 @@ msgid "Email" msgstr "" #: i2p2www/pages/site/docs/applications/supported.html:26 -#: i2p2www/pages/site/docs/applications/supported.html:315 +#: i2p2www/pages/site/docs/applications/supported.html:328 msgid "File Sharing" msgstr "" #: i2p2www/pages/site/docs/applications/supported.html:29 -#: i2p2www/pages/site/docs/applications/supported.html:317 +#: i2p2www/pages/site/docs/applications/supported.html:330 msgid "BitTorrent clients" msgstr "" #: i2p2www/pages/site/docs/applications/supported.html:31 -#: i2p2www/pages/site/docs/applications/supported.html:359 +#: i2p2www/pages/site/docs/applications/supported.html:372 msgid "BitTorrent trackers and indexers" msgstr "" #: i2p2www/pages/site/docs/applications/supported.html:40 -#: i2p2www/pages/site/docs/applications/supported.html:426 +#: i2p2www/pages/site/docs/applications/supported.html:439 msgid "Network Administration" msgstr "" #: i2p2www/pages/site/docs/applications/supported.html:43 -#: i2p2www/pages/site/docs/applications/supported.html:428 +#: i2p2www/pages/site/docs/applications/supported.html:441 msgid "General-purpose socket utilities" msgstr "" #: i2p2www/pages/site/docs/applications/supported.html:50 -#: i2p2www/pages/site/docs/applications/supported.html:469 +#: i2p2www/pages/site/docs/applications/supported.html:482 msgid "Real-time Chat" msgstr "" #: i2p2www/pages/site/docs/applications/supported.html:53 -#: i2p2www/pages/site/docs/applications/supported.html:471 +#: i2p2www/pages/site/docs/applications/supported.html:484 msgid "Instant messaging clients" msgstr "" #: i2p2www/pages/site/docs/applications/supported.html:55 -#: i2p2www/pages/site/docs/applications/supported.html:481 +#: i2p2www/pages/site/docs/applications/supported.html:494 msgid "IRC clients" msgstr "" #: i2p2www/pages/site/docs/applications/supported.html:57 -#: i2p2www/pages/site/docs/applications/supported.html:532 +#: i2p2www/pages/site/docs/applications/supported.html:545 msgid "IRC servers" msgstr "" #: i2p2www/pages/site/docs/applications/supported.html:62 -#: i2p2www/pages/site/docs/applications/supported.html:548 +#: i2p2www/pages/site/docs/applications/supported.html:561 msgid "Web Browsing" msgstr "" #: i2p2www/pages/site/docs/applications/supported.html:65 -#: i2p2www/pages/site/docs/applications/supported.html:550 +#: i2p2www/pages/site/docs/applications/supported.html:563 msgid "Anonymous websites" msgstr "" #: i2p2www/pages/site/docs/applications/supported.html:67 -#: i2p2www/pages/site/docs/applications/supported.html:599 +#: i2p2www/pages/site/docs/applications/supported.html:612 msgid "Proxy software" msgstr "" #: i2p2www/pages/site/docs/applications/supported.html:69 -#: i2p2www/pages/site/docs/applications/supported.html:624 +#: i2p2www/pages/site/docs/applications/supported.html:637 msgid "Inproxies" msgstr "" #: i2p2www/pages/site/docs/applications/supported.html:71 -#: i2p2www/pages/site/docs/applications/supported.html:640 +#: i2p2www/pages/site/docs/applications/supported.html:653 msgid "Outproxies" msgstr "" #: i2p2www/pages/site/docs/applications/supported.html:76 -#: i2p2www/pages/site/docs/applications/supported.html:654 +#: i2p2www/pages/site/docs/applications/supported.html:667 msgid "Website Hosting" msgstr "" #: i2p2www/pages/site/docs/applications/supported.html:79 -#: i2p2www/pages/site/docs/applications/supported.html:669 +#: i2p2www/pages/site/docs/applications/supported.html:682 msgid "Web servers" msgstr "" @@ -3932,8 +3932,8 @@ msgstr "" #: i2p2www/pages/site/docs/applications/supported.html:97 #: i2p2www/pages/site/docs/applications/supported.html:279 #: i2p2www/pages/site/docs/applications/supported.html:311 -#: i2p2www/pages/site/docs/applications/supported.html:323 -#: i2p2www/pages/site/docs/applications/supported.html:666 +#: i2p2www/pages/site/docs/applications/supported.html:336 +#: i2p2www/pages/site/docs/applications/supported.html:679 msgid "bundled" msgstr "" @@ -3951,10 +3951,10 @@ msgstr "" #: i2p2www/pages/site/docs/applications/supported.html:228 #: i2p2www/pages/site/docs/applications/supported.html:241 #: i2p2www/pages/site/docs/applications/supported.html:292 -#: i2p2www/pages/site/docs/applications/supported.html:391 -#: i2p2www/pages/site/docs/applications/supported.html:413 -#: i2p2www/pages/site/docs/applications/supported.html:422 -#: i2p2www/pages/site/docs/applications/supported.html:510 +#: i2p2www/pages/site/docs/applications/supported.html:404 +#: i2p2www/pages/site/docs/applications/supported.html:426 +#: i2p2www/pages/site/docs/applications/supported.html:435 +#: i2p2www/pages/site/docs/applications/supported.html:523 msgid "plugin" msgstr "" @@ -3974,30 +3974,31 @@ msgstr "" #: i2p2www/pages/site/docs/applications/supported.html:241 #: i2p2www/pages/site/docs/applications/supported.html:252 #: i2p2www/pages/site/docs/applications/supported.html:261 -#: i2p2www/pages/site/docs/applications/supported.html:329 -#: i2p2www/pages/site/docs/applications/supported.html:340 -#: i2p2www/pages/site/docs/applications/supported.html:355 -#: i2p2www/pages/site/docs/applications/supported.html:401 -#: i2p2www/pages/site/docs/applications/supported.html:413 -#: i2p2www/pages/site/docs/applications/supported.html:422 -#: i2p2www/pages/site/docs/applications/supported.html:437 -#: i2p2www/pages/site/docs/applications/supported.html:443 -#: i2p2www/pages/site/docs/applications/supported.html:449 -#: i2p2www/pages/site/docs/applications/supported.html:459 -#: i2p2www/pages/site/docs/applications/supported.html:465 -#: i2p2www/pages/site/docs/applications/supported.html:477 -#: i2p2www/pages/site/docs/applications/supported.html:510 -#: i2p2www/pages/site/docs/applications/supported.html:516 -#: i2p2www/pages/site/docs/applications/supported.html:522 -#: i2p2www/pages/site/docs/applications/supported.html:528 -#: i2p2www/pages/site/docs/applications/supported.html:605 -#: i2p2www/pages/site/docs/applications/supported.html:614 -#: i2p2www/pages/site/docs/applications/supported.html:620 -#: i2p2www/pages/site/docs/applications/supported.html:666 -#: i2p2www/pages/site/docs/applications/supported.html:681 -#: i2p2www/pages/site/docs/applications/supported.html:687 -#: i2p2www/pages/site/docs/applications/supported.html:693 -#: i2p2www/pages/site/docs/applications/supported.html:699 +#: i2p2www/pages/site/docs/applications/supported.html:324 +#: i2p2www/pages/site/docs/applications/supported.html:342 +#: i2p2www/pages/site/docs/applications/supported.html:353 +#: i2p2www/pages/site/docs/applications/supported.html:368 +#: i2p2www/pages/site/docs/applications/supported.html:414 +#: i2p2www/pages/site/docs/applications/supported.html:426 +#: i2p2www/pages/site/docs/applications/supported.html:435 +#: i2p2www/pages/site/docs/applications/supported.html:450 +#: i2p2www/pages/site/docs/applications/supported.html:456 +#: i2p2www/pages/site/docs/applications/supported.html:462 +#: i2p2www/pages/site/docs/applications/supported.html:472 +#: i2p2www/pages/site/docs/applications/supported.html:478 +#: i2p2www/pages/site/docs/applications/supported.html:490 +#: i2p2www/pages/site/docs/applications/supported.html:523 +#: i2p2www/pages/site/docs/applications/supported.html:529 +#: i2p2www/pages/site/docs/applications/supported.html:535 +#: i2p2www/pages/site/docs/applications/supported.html:541 +#: i2p2www/pages/site/docs/applications/supported.html:618 +#: i2p2www/pages/site/docs/applications/supported.html:627 +#: i2p2www/pages/site/docs/applications/supported.html:633 +#: i2p2www/pages/site/docs/applications/supported.html:679 +#: i2p2www/pages/site/docs/applications/supported.html:694 +#: i2p2www/pages/site/docs/applications/supported.html:700 +#: i2p2www/pages/site/docs/applications/supported.html:706 +#: i2p2www/pages/site/docs/applications/supported.html:712 msgid "standalone" msgstr "" @@ -4006,11 +4007,11 @@ msgstr "" #: i2p2www/pages/site/docs/applications/supported.html:202 #: i2p2www/pages/site/docs/applications/supported.html:208 #: i2p2www/pages/site/docs/applications/supported.html:214 -#: i2p2www/pages/site/docs/applications/supported.html:349 -#: i2p2www/pages/site/docs/applications/supported.html:373 -#: i2p2www/pages/site/docs/applications/supported.html:382 -#: i2p2www/pages/site/docs/applications/supported.html:538 -#: i2p2www/pages/site/docs/applications/supported.html:544 +#: i2p2www/pages/site/docs/applications/supported.html:362 +#: i2p2www/pages/site/docs/applications/supported.html:386 +#: i2p2www/pages/site/docs/applications/supported.html:395 +#: i2p2www/pages/site/docs/applications/supported.html:551 +#: i2p2www/pages/site/docs/applications/supported.html:557 msgid "standalone/mod" msgstr "" @@ -4027,14 +4028,14 @@ msgstr "" #: i2p2www/pages/site/docs/applications/supported.html:135 #: i2p2www/pages/site/docs/applications/supported.html:302 -#: i2p2www/pages/site/docs/applications/supported.html:558 -#: i2p2www/pages/site/docs/applications/supported.html:568 -#: i2p2www/pages/site/docs/applications/supported.html:577 -#: i2p2www/pages/site/docs/applications/supported.html:583 -#: i2p2www/pages/site/docs/applications/supported.html:589 -#: i2p2www/pages/site/docs/applications/supported.html:595 -#: i2p2www/pages/site/docs/applications/supported.html:636 -#: i2p2www/pages/site/docs/applications/supported.html:650 +#: i2p2www/pages/site/docs/applications/supported.html:571 +#: i2p2www/pages/site/docs/applications/supported.html:581 +#: i2p2www/pages/site/docs/applications/supported.html:590 +#: i2p2www/pages/site/docs/applications/supported.html:596 +#: i2p2www/pages/site/docs/applications/supported.html:602 +#: i2p2www/pages/site/docs/applications/supported.html:608 +#: i2p2www/pages/site/docs/applications/supported.html:649 +#: i2p2www/pages/site/docs/applications/supported.html:663 msgid "service" msgstr "" @@ -4050,7 +4051,7 @@ msgstr "" #: i2p2www/pages/site/docs/applications/supported.html:148 #: i2p2www/pages/site/docs/applications/supported.html:220 -#: i2p2www/pages/site/docs/applications/supported.html:355 +#: i2p2www/pages/site/docs/applications/supported.html:368 msgid "unmaintained" msgstr "" @@ -4178,15 +4179,24 @@ msgid "" "email service by default." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:322 +#: i2p2www/pages/site/docs/applications/supported.html:316 +#, python-format +msgid "" +"Can be configured to use Postman's email service. See\n" +"this comparison of MUAs,\n" +"and configuration settings for\n" +"SMTP and POP3." +msgstr "" + +#: i2p2www/pages/site/docs/applications/supported.html:335 msgid "I2P's integrated BitTorrent client." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:328 +#: i2p2www/pages/site/docs/applications/supported.html:341 msgid "Modified version of I2PSnark." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:334 +#: i2p2www/pages/site/docs/applications/supported.html:347 msgid "" "\n" "A fork of rufus that uses the Basic Open Bridge (BOB) and has many\n" @@ -4195,49 +4205,49 @@ msgid "" "magnet-link like fetching of torrents within I2P.\n" msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:345 +#: i2p2www/pages/site/docs/applications/supported.html:358 msgid "" "Clean, full-featured cross-platform BitTorrent client with official\n" "ports for several GUI toolkits." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:354 +#: i2p2www/pages/site/docs/applications/supported.html:367 msgid "Has a plugin providing I2P support." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:361 +#: i2p2www/pages/site/docs/applications/supported.html:374 #, python-format msgid "" "For a detailed feature comparison of I2P-enabled trackers/indexers, see\n" "here." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:369 +#: i2p2www/pages/site/docs/applications/supported.html:382 msgid "" "The code that powered one of the first major tracker/indexer sites on the" "\n" "Internet. Patched for I2P." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:378 +#: i2p2www/pages/site/docs/applications/supported.html:391 #, python-format msgid "" "Lightweight tracker/indexer. I2P mod available in the i2p.opentracker\n" "branch of the I2P Monotone repository." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:387 +#: i2p2www/pages/site/docs/applications/supported.html:400 #, python-format msgid "" "zzz's Java-based open tracker. More info\n" "here." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:400 +#: i2p2www/pages/site/docs/applications/supported.html:413 msgid "I2P port of the aMule ED2K client." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:409 +#: i2p2www/pages/site/docs/applications/supported.html:422 #, python-format msgid "" "Port of the Phex Gnutella " @@ -4245,44 +4255,44 @@ msgid "" "for plugin version here." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:418 +#: i2p2www/pages/site/docs/applications/supported.html:431 #, python-format msgid "" "Cache for Gnutella peers on I2P. Website for plugin version\n" "here." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:433 +#: i2p2www/pages/site/docs/applications/supported.html:446 msgid "" "Unix standard tool for socket relaying. Several clones, ports, and forks\n" "have appeared over the years." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:442 +#: i2p2www/pages/site/docs/applications/supported.html:455 msgid "Like netcat but more powerful." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:448 +#: i2p2www/pages/site/docs/applications/supported.html:461 msgid "" "Proxy providing simple, transparent SOCKS-ification of network " "applications." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:458 +#: i2p2www/pages/site/docs/applications/supported.html:471 msgid "" "Most popular implementation of the Secure Shell (SSH) protocol and " "related tools." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:464 +#: i2p2www/pages/site/docs/applications/supported.html:477 msgid "Open source Secure Shell (SSH) client for Windows." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:476 +#: i2p2www/pages/site/docs/applications/supported.html:489 msgid "IM client with multiple incarnations." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:483 +#: i2p2www/pages/site/docs/applications/supported.html:496 msgid "" "Many IRC clients leak identifying information to servers or other\n" "clients, so I2P's IRC and SOCKS IRC client tunnels filter certain inbound" @@ -4299,7 +4309,7 @@ msgid "" "/me command) which isn't inherently dangerous." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:494 +#: i2p2www/pages/site/docs/applications/supported.html:507 msgid "" "I2P's IRC filtering may not cover every possible leak — users should also" "\n" @@ -4312,100 +4322,100 @@ msgid "" "developers; they may be able to solve it via additional filtering." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:506 +#: i2p2www/pages/site/docs/applications/supported.html:519 #, python-format msgid "" "Small Java-based IRC client. Plugin available here." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:515 +#: i2p2www/pages/site/docs/applications/supported.html:528 msgid "Cross-platform graphical IRC client." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:521 +#: i2p2www/pages/site/docs/applications/supported.html:534 msgid "Unixy terminal-based IRC client." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:527 +#: i2p2www/pages/site/docs/applications/supported.html:540 msgid "Another Unixy terminal-based IRC client." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:537 +#: i2p2www/pages/site/docs/applications/supported.html:550 msgid "IRC server developed from scratch." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:543 +#: i2p2www/pages/site/docs/applications/supported.html:556 msgid "Most popular IRC server." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:555 +#: i2p2www/pages/site/docs/applications/supported.html:568 msgid "" "Any website hosted anonymously on I2P, reachable through the I2P router's" " HTTP proxy." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:563 +#: i2p2www/pages/site/docs/applications/supported.html:576 msgid "" "Distributed anonymous websites hosted\n" "using Tahoe-LAFS-I2P, currently only reachable with Tahoe-LAFS-I2P\n" "clients or through the Tahoe-LAFS-I2P HTTP proxy." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:573 +#: i2p2www/pages/site/docs/applications/supported.html:586 #, python-format msgid "" "Website for sponge's jump service.\n" "Source code available." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:582 +#: i2p2www/pages/site/docs/applications/supported.html:595 msgid "Another jump service." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:588 +#: i2p2www/pages/site/docs/applications/supported.html:601 msgid "Dynamically updated eepsite index." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:594 +#: i2p2www/pages/site/docs/applications/supported.html:607 #, python-format msgid "Website for zzz's jump service." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:604 +#: i2p2www/pages/site/docs/applications/supported.html:617 msgid "SOCKS-enabled caching web proxy with basic filtering capabilities." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:610 +#: i2p2www/pages/site/docs/applications/supported.html:623 msgid "" "Privacy-focused non-caching web proxy with advanced filtering\n" "capabilities. Excels at removing ads and other junk." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:619 +#: i2p2www/pages/site/docs/applications/supported.html:632 msgid "Venerable caching web proxy." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:626 +#: i2p2www/pages/site/docs/applications/supported.html:639 msgid "Gateways allowing users on the public Internet to access eepsites." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:633 +#: i2p2www/pages/site/docs/applications/supported.html:646 #, python-format msgid "tino's inproxy on the public Internet." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:642 +#: i2p2www/pages/site/docs/applications/supported.html:655 msgid "" "Gateways allowing I2P users to access content hosted on the public " "Internet." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:649 +#: i2p2www/pages/site/docs/applications/supported.html:662 msgid "Publicly advertised outproxy running Squid, located in Germany." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:659 +#: i2p2www/pages/site/docs/applications/supported.html:672 msgid "" "Lightweight web server and Java servlet container. I2P is tightly\n" "integrated with a bundled copy of Jetty which by default is configured to" @@ -4417,26 +4427,26 @@ msgid "" "I2P." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:671 +#: i2p2www/pages/site/docs/applications/supported.html:684 msgid "" "In addition to Jetty, any web server should function over I2P without\n" "modification so long as it's HTTP-compliant. Some web servers known to\n" "currently serve content on the I2P network are:" msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:680 +#: i2p2www/pages/site/docs/applications/supported.html:693 msgid "Most popular web server on the public WWW." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:686 +#: i2p2www/pages/site/docs/applications/supported.html:699 msgid "Web server and Java servlet container. More features than Jetty." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:692 +#: i2p2www/pages/site/docs/applications/supported.html:705 msgid "Fast lightweight web server." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:698 +#: i2p2www/pages/site/docs/applications/supported.html:711 msgid "High-performance lightweight web server." msgstr "" diff --git a/i2p2www/translations/de/LC_MESSAGES/get-involved.po b/i2p2www/translations/de/LC_MESSAGES/get-involved.po index ec00f1ff..3427f421 100644 --- a/i2p2www/translations/de/LC_MESSAGES/get-involved.po +++ b/i2p2www/translations/de/LC_MESSAGES/get-involved.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-23 12:28+0000\n" +"POT-Creation-Date: 2013-08-29 06:47+0000\n" "PO-Revision-Date: 2013-07-04 16:33+0000\n" "Last-Translator: D.A. Loader\n" "Language-Team: German " diff --git a/i2p2www/translations/de/LC_MESSAGES/misc.po b/i2p2www/translations/de/LC_MESSAGES/misc.po index 7fadee6c..0f6e68c3 100644 --- a/i2p2www/translations/de/LC_MESSAGES/misc.po +++ b/i2p2www/translations/de/LC_MESSAGES/misc.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-15 21:25+0000\n" +"POT-Creation-Date: 2013-08-29 06:47+0000\n" "PO-Revision-Date: 2013-07-04 16:33+0000\n" "Last-Translator: D.A. Loader\n" "Language-Team: German " diff --git a/i2p2www/translations/de/LC_MESSAGES/priority.po b/i2p2www/translations/de/LC_MESSAGES/priority.po index d4ab9dbe..d12020e8 100644 --- a/i2p2www/translations/de/LC_MESSAGES/priority.po +++ b/i2p2www/translations/de/LC_MESSAGES/priority.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-15 21:25+0000\n" +"POT-Creation-Date: 2013-08-29 06:47+0000\n" "PO-Revision-Date: 2013-08-12 10:34+0000\n" "Last-Translator: str4d \n" "Language-Team: German " diff --git a/i2p2www/translations/de/LC_MESSAGES/research.po b/i2p2www/translations/de/LC_MESSAGES/research.po index ea13f166..79c3ff1d 100644 --- a/i2p2www/translations/de/LC_MESSAGES/research.po +++ b/i2p2www/translations/de/LC_MESSAGES/research.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-15 21:25+0000\n" +"POT-Creation-Date: 2013-08-29 06:47+0000\n" "PO-Revision-Date: 2013-07-04 16:33+0000\n" "Last-Translator: D.A. Loader\n" "Language-Team: German " diff --git a/i2p2www/translations/es/LC_MESSAGES/about.po b/i2p2www/translations/es/LC_MESSAGES/about.po index 5c79c99a..aed98e18 100644 --- a/i2p2www/translations/es/LC_MESSAGES/about.po +++ b/i2p2www/translations/es/LC_MESSAGES/about.po @@ -13,7 +13,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-15 21:25+0000\n" +"POT-Creation-Date: 2013-08-29 06:46+0000\n" "PO-Revision-Date: 2013-07-22 10:38+0000\n" "Last-Translator: trolly\n" "Language-Team: Spanish " @@ -271,52 +271,24 @@ msgstr "Balance actual a día %(date)s" #: i2p2www/pages/site/about/hall-of-fame.html:9 #: i2p2www/pages/site/about/hall-of-fame.html:47 -#: i2p2www/pages/site/about/hall-of-fame.html:137 -#: i2p2www/pages/site/about/hall-of-fame.html:138 -#: i2p2www/pages/site/about/hall-of-fame.html:139 -#: i2p2www/pages/site/about/hall-of-fame.html:140 -#: i2p2www/pages/site/about/hall-of-fame.html:142 -#: i2p2www/pages/site/about/hall-of-fame.html:143 -#: i2p2www/pages/site/about/hall-of-fame.html:144 -#: i2p2www/pages/site/about/hall-of-fame.html:147 -#: i2p2www/pages/site/about/hall-of-fame.html:148 -#: i2p2www/pages/site/about/hall-of-fame.html:149 -#: i2p2www/pages/site/about/hall-of-fame.html:152 -#: i2p2www/pages/site/about/hall-of-fame.html:153 -#: i2p2www/pages/site/about/hall-of-fame.html:154 -#: i2p2www/pages/site/about/hall-of-fame.html:155 -#: i2p2www/pages/site/about/hall-of-fame.html:156 -#: i2p2www/pages/site/about/hall-of-fame.html:157 -#: i2p2www/pages/site/about/hall-of-fame.html:158 -#: i2p2www/pages/site/about/hall-of-fame.html:159 -#: i2p2www/pages/site/about/hall-of-fame.html:160 -#: i2p2www/pages/site/about/hall-of-fame.html:161 -#: i2p2www/pages/site/about/hall-of-fame.html:162 -#: i2p2www/pages/site/about/hall-of-fame.html:163 -#: i2p2www/pages/site/about/hall-of-fame.html:164 -#: i2p2www/pages/site/about/hall-of-fame.html:167 -#: i2p2www/pages/site/about/hall-of-fame.html:168 -#: i2p2www/pages/site/about/hall-of-fame.html:169 -#: i2p2www/pages/site/about/hall-of-fame.html:170 -#: i2p2www/pages/site/about/hall-of-fame.html:171 -#: i2p2www/pages/site/about/hall-of-fame.html:172 +#: i2p2www/pages/site/about/hall-of-fame.html:173 #: i2p2www/pages/site/about/hall-of-fame.html:174 #: i2p2www/pages/site/about/hall-of-fame.html:175 +#: i2p2www/pages/site/about/hall-of-fame.html:176 #: i2p2www/pages/site/about/hall-of-fame.html:178 #: i2p2www/pages/site/about/hall-of-fame.html:179 #: i2p2www/pages/site/about/hall-of-fame.html:180 -#: i2p2www/pages/site/about/hall-of-fame.html:181 -#: i2p2www/pages/site/about/hall-of-fame.html:182 +#: i2p2www/pages/site/about/hall-of-fame.html:183 #: i2p2www/pages/site/about/hall-of-fame.html:184 #: i2p2www/pages/site/about/hall-of-fame.html:185 -#: i2p2www/pages/site/about/hall-of-fame.html:186 -#: i2p2www/pages/site/about/hall-of-fame.html:187 #: i2p2www/pages/site/about/hall-of-fame.html:188 #: i2p2www/pages/site/about/hall-of-fame.html:189 +#: i2p2www/pages/site/about/hall-of-fame.html:190 #: i2p2www/pages/site/about/hall-of-fame.html:191 #: i2p2www/pages/site/about/hall-of-fame.html:192 #: i2p2www/pages/site/about/hall-of-fame.html:193 #: i2p2www/pages/site/about/hall-of-fame.html:194 +#: i2p2www/pages/site/about/hall-of-fame.html:195 #: i2p2www/pages/site/about/hall-of-fame.html:196 #: i2p2www/pages/site/about/hall-of-fame.html:197 #: i2p2www/pages/site/about/hall-of-fame.html:198 @@ -326,53 +298,55 @@ msgstr "Balance actual a día %(date)s" #: i2p2www/pages/site/about/hall-of-fame.html:204 #: i2p2www/pages/site/about/hall-of-fame.html:205 #: i2p2www/pages/site/about/hall-of-fame.html:206 +#: i2p2www/pages/site/about/hall-of-fame.html:207 #: i2p2www/pages/site/about/hall-of-fame.html:208 -#: i2p2www/pages/site/about/hall-of-fame.html:209 #: i2p2www/pages/site/about/hall-of-fame.html:210 -#: i2p2www/pages/site/about/hall-of-fame.html:212 -#: i2p2www/pages/site/about/hall-of-fame.html:213 +#: i2p2www/pages/site/about/hall-of-fame.html:211 #: i2p2www/pages/site/about/hall-of-fame.html:214 #: i2p2www/pages/site/about/hall-of-fame.html:215 +#: i2p2www/pages/site/about/hall-of-fame.html:216 #: i2p2www/pages/site/about/hall-of-fame.html:217 #: i2p2www/pages/site/about/hall-of-fame.html:218 -#: i2p2www/pages/site/about/hall-of-fame.html:219 #: i2p2www/pages/site/about/hall-of-fame.html:220 #: i2p2www/pages/site/about/hall-of-fame.html:221 +#: i2p2www/pages/site/about/hall-of-fame.html:222 +#: i2p2www/pages/site/about/hall-of-fame.html:223 +#: i2p2www/pages/site/about/hall-of-fame.html:224 +#: i2p2www/pages/site/about/hall-of-fame.html:225 #: i2p2www/pages/site/about/hall-of-fame.html:227 +#: i2p2www/pages/site/about/hall-of-fame.html:228 +#: i2p2www/pages/site/about/hall-of-fame.html:229 #: i2p2www/pages/site/about/hall-of-fame.html:230 -#: i2p2www/pages/site/about/hall-of-fame.html:231 #: i2p2www/pages/site/about/hall-of-fame.html:232 #: i2p2www/pages/site/about/hall-of-fame.html:233 #: i2p2www/pages/site/about/hall-of-fame.html:234 +#: i2p2www/pages/site/about/hall-of-fame.html:235 #: i2p2www/pages/site/about/hall-of-fame.html:236 -#: i2p2www/pages/site/about/hall-of-fame.html:237 -#: i2p2www/pages/site/about/hall-of-fame.html:238 -#: i2p2www/pages/site/about/hall-of-fame.html:243 +#: i2p2www/pages/site/about/hall-of-fame.html:239 +#: i2p2www/pages/site/about/hall-of-fame.html:240 +#: i2p2www/pages/site/about/hall-of-fame.html:241 +#: i2p2www/pages/site/about/hall-of-fame.html:242 #: i2p2www/pages/site/about/hall-of-fame.html:244 #: i2p2www/pages/site/about/hall-of-fame.html:245 #: i2p2www/pages/site/about/hall-of-fame.html:246 -#: i2p2www/pages/site/about/hall-of-fame.html:247 #: i2p2www/pages/site/about/hall-of-fame.html:248 #: i2p2www/pages/site/about/hall-of-fame.html:249 #: i2p2www/pages/site/about/hall-of-fame.html:250 #: i2p2www/pages/site/about/hall-of-fame.html:251 -#: i2p2www/pages/site/about/hall-of-fame.html:252 +#: i2p2www/pages/site/about/hall-of-fame.html:253 #: i2p2www/pages/site/about/hall-of-fame.html:254 #: i2p2www/pages/site/about/hall-of-fame.html:255 -#: i2p2www/pages/site/about/hall-of-fame.html:265 +#: i2p2www/pages/site/about/hall-of-fame.html:256 +#: i2p2www/pages/site/about/hall-of-fame.html:257 +#: i2p2www/pages/site/about/hall-of-fame.html:263 #: i2p2www/pages/site/about/hall-of-fame.html:266 #: i2p2www/pages/site/about/hall-of-fame.html:267 #: i2p2www/pages/site/about/hall-of-fame.html:268 #: i2p2www/pages/site/about/hall-of-fame.html:269 #: i2p2www/pages/site/about/hall-of-fame.html:270 -#: i2p2www/pages/site/about/hall-of-fame.html:271 #: i2p2www/pages/site/about/hall-of-fame.html:272 #: i2p2www/pages/site/about/hall-of-fame.html:273 #: i2p2www/pages/site/about/hall-of-fame.html:274 -#: i2p2www/pages/site/about/hall-of-fame.html:275 -#: i2p2www/pages/site/about/hall-of-fame.html:276 -#: i2p2www/pages/site/about/hall-of-fame.html:277 -#: i2p2www/pages/site/about/hall-of-fame.html:278 #: i2p2www/pages/site/about/hall-of-fame.html:279 #: i2p2www/pages/site/about/hall-of-fame.html:280 #: i2p2www/pages/site/about/hall-of-fame.html:281 @@ -380,36 +354,32 @@ msgstr "Balance actual a día %(date)s" #: i2p2www/pages/site/about/hall-of-fame.html:283 #: i2p2www/pages/site/about/hall-of-fame.html:284 #: i2p2www/pages/site/about/hall-of-fame.html:285 -#: i2p2www/pages/site/about/hall-of-fame.html:289 +#: i2p2www/pages/site/about/hall-of-fame.html:286 +#: i2p2www/pages/site/about/hall-of-fame.html:287 +#: i2p2www/pages/site/about/hall-of-fame.html:288 #: i2p2www/pages/site/about/hall-of-fame.html:290 #: i2p2www/pages/site/about/hall-of-fame.html:291 -#: i2p2www/pages/site/about/hall-of-fame.html:292 -#: i2p2www/pages/site/about/hall-of-fame.html:293 -#: i2p2www/pages/site/about/hall-of-fame.html:294 -#: i2p2www/pages/site/about/hall-of-fame.html:295 -#: i2p2www/pages/site/about/hall-of-fame.html:297 -#: i2p2www/pages/site/about/hall-of-fame.html:298 -#: i2p2www/pages/site/about/hall-of-fame.html:299 -#: i2p2www/pages/site/about/hall-of-fame.html:300 #: i2p2www/pages/site/about/hall-of-fame.html:301 #: i2p2www/pages/site/about/hall-of-fame.html:302 #: i2p2www/pages/site/about/hall-of-fame.html:303 #: i2p2www/pages/site/about/hall-of-fame.html:304 #: i2p2www/pages/site/about/hall-of-fame.html:305 +#: i2p2www/pages/site/about/hall-of-fame.html:306 +#: i2p2www/pages/site/about/hall-of-fame.html:307 #: i2p2www/pages/site/about/hall-of-fame.html:308 #: i2p2www/pages/site/about/hall-of-fame.html:309 #: i2p2www/pages/site/about/hall-of-fame.html:310 #: i2p2www/pages/site/about/hall-of-fame.html:311 #: i2p2www/pages/site/about/hall-of-fame.html:312 +#: i2p2www/pages/site/about/hall-of-fame.html:313 #: i2p2www/pages/site/about/hall-of-fame.html:314 +#: i2p2www/pages/site/about/hall-of-fame.html:315 #: i2p2www/pages/site/about/hall-of-fame.html:316 #: i2p2www/pages/site/about/hall-of-fame.html:317 #: i2p2www/pages/site/about/hall-of-fame.html:318 #: i2p2www/pages/site/about/hall-of-fame.html:319 #: i2p2www/pages/site/about/hall-of-fame.html:320 #: i2p2www/pages/site/about/hall-of-fame.html:321 -#: i2p2www/pages/site/about/hall-of-fame.html:322 -#: i2p2www/pages/site/about/hall-of-fame.html:324 #: i2p2www/pages/site/about/hall-of-fame.html:325 #: i2p2www/pages/site/about/hall-of-fame.html:326 #: i2p2www/pages/site/about/hall-of-fame.html:327 @@ -417,21 +387,33 @@ msgstr "Balance actual a día %(date)s" #: i2p2www/pages/site/about/hall-of-fame.html:329 #: i2p2www/pages/site/about/hall-of-fame.html:330 #: i2p2www/pages/site/about/hall-of-fame.html:331 -#: i2p2www/pages/site/about/hall-of-fame.html:332 #: i2p2www/pages/site/about/hall-of-fame.html:333 #: i2p2www/pages/site/about/hall-of-fame.html:334 #: i2p2www/pages/site/about/hall-of-fame.html:335 #: i2p2www/pages/site/about/hall-of-fame.html:336 #: i2p2www/pages/site/about/hall-of-fame.html:337 +#: i2p2www/pages/site/about/hall-of-fame.html:338 #: i2p2www/pages/site/about/hall-of-fame.html:339 #: i2p2www/pages/site/about/hall-of-fame.html:340 #: i2p2www/pages/site/about/hall-of-fame.html:341 #: i2p2www/pages/site/about/hall-of-fame.html:344 #: i2p2www/pages/site/about/hall-of-fame.html:345 +#: i2p2www/pages/site/about/hall-of-fame.html:346 +#: i2p2www/pages/site/about/hall-of-fame.html:347 #: i2p2www/pages/site/about/hall-of-fame.html:348 -#: i2p2www/pages/site/about/hall-of-fame.html:349 -#: i2p2www/pages/site/about/hall-of-fame.html:351 +#: i2p2www/pages/site/about/hall-of-fame.html:350 #: i2p2www/pages/site/about/hall-of-fame.html:352 +#: i2p2www/pages/site/about/hall-of-fame.html:353 +#: i2p2www/pages/site/about/hall-of-fame.html:354 +#: i2p2www/pages/site/about/hall-of-fame.html:355 +#: i2p2www/pages/site/about/hall-of-fame.html:356 +#: i2p2www/pages/site/about/hall-of-fame.html:357 +#: i2p2www/pages/site/about/hall-of-fame.html:358 +#: i2p2www/pages/site/about/hall-of-fame.html:360 +#: i2p2www/pages/site/about/hall-of-fame.html:361 +#: i2p2www/pages/site/about/hall-of-fame.html:362 +#: i2p2www/pages/site/about/hall-of-fame.html:363 +#: i2p2www/pages/site/about/hall-of-fame.html:364 #: i2p2www/pages/site/about/hall-of-fame.html:365 #: i2p2www/pages/site/about/hall-of-fame.html:366 #: i2p2www/pages/site/about/hall-of-fame.html:367 @@ -441,32 +423,15 @@ msgstr "Balance actual a día %(date)s" #: i2p2www/pages/site/about/hall-of-fame.html:371 #: i2p2www/pages/site/about/hall-of-fame.html:372 #: i2p2www/pages/site/about/hall-of-fame.html:373 -#: i2p2www/pages/site/about/hall-of-fame.html:374 #: i2p2www/pages/site/about/hall-of-fame.html:375 #: i2p2www/pages/site/about/hall-of-fame.html:376 #: i2p2www/pages/site/about/hall-of-fame.html:377 -#: i2p2www/pages/site/about/hall-of-fame.html:378 -#: i2p2www/pages/site/about/hall-of-fame.html:379 #: i2p2www/pages/site/about/hall-of-fame.html:380 #: i2p2www/pages/site/about/hall-of-fame.html:381 -#: i2p2www/pages/site/about/hall-of-fame.html:382 -#: i2p2www/pages/site/about/hall-of-fame.html:383 #: i2p2www/pages/site/about/hall-of-fame.html:384 #: i2p2www/pages/site/about/hall-of-fame.html:385 -#: i2p2www/pages/site/about/hall-of-fame.html:386 #: i2p2www/pages/site/about/hall-of-fame.html:387 #: i2p2www/pages/site/about/hall-of-fame.html:388 -#: i2p2www/pages/site/about/hall-of-fame.html:389 -#: i2p2www/pages/site/about/hall-of-fame.html:390 -#: i2p2www/pages/site/about/hall-of-fame.html:391 -#: i2p2www/pages/site/about/hall-of-fame.html:392 -#: i2p2www/pages/site/about/hall-of-fame.html:393 -#: i2p2www/pages/site/about/hall-of-fame.html:394 -#: i2p2www/pages/site/about/hall-of-fame.html:395 -#: i2p2www/pages/site/about/hall-of-fame.html:396 -#: i2p2www/pages/site/about/hall-of-fame.html:397 -#: i2p2www/pages/site/about/hall-of-fame.html:398 -#: i2p2www/pages/site/about/hall-of-fame.html:399 #: i2p2www/pages/site/about/hall-of-fame.html:401 #: i2p2www/pages/site/about/hall-of-fame.html:402 #: i2p2www/pages/site/about/hall-of-fame.html:403 @@ -475,15 +440,20 @@ msgstr "Balance actual a día %(date)s" #: i2p2www/pages/site/about/hall-of-fame.html:406 #: i2p2www/pages/site/about/hall-of-fame.html:407 #: i2p2www/pages/site/about/hall-of-fame.html:408 +#: i2p2www/pages/site/about/hall-of-fame.html:409 #: i2p2www/pages/site/about/hall-of-fame.html:410 #: i2p2www/pages/site/about/hall-of-fame.html:411 #: i2p2www/pages/site/about/hall-of-fame.html:412 +#: i2p2www/pages/site/about/hall-of-fame.html:413 #: i2p2www/pages/site/about/hall-of-fame.html:414 #: i2p2www/pages/site/about/hall-of-fame.html:415 #: i2p2www/pages/site/about/hall-of-fame.html:416 #: i2p2www/pages/site/about/hall-of-fame.html:417 #: i2p2www/pages/site/about/hall-of-fame.html:418 +#: i2p2www/pages/site/about/hall-of-fame.html:419 #: i2p2www/pages/site/about/hall-of-fame.html:420 +#: i2p2www/pages/site/about/hall-of-fame.html:421 +#: i2p2www/pages/site/about/hall-of-fame.html:422 #: i2p2www/pages/site/about/hall-of-fame.html:423 #: i2p2www/pages/site/about/hall-of-fame.html:424 #: i2p2www/pages/site/about/hall-of-fame.html:425 @@ -497,39 +467,70 @@ msgstr "Balance actual a día %(date)s" #: i2p2www/pages/site/about/hall-of-fame.html:433 #: i2p2www/pages/site/about/hall-of-fame.html:434 #: i2p2www/pages/site/about/hall-of-fame.html:435 -#: i2p2www/pages/site/about/hall-of-fame.html:436 +#: i2p2www/pages/site/about/hall-of-fame.html:437 #: i2p2www/pages/site/about/hall-of-fame.html:438 #: i2p2www/pages/site/about/hall-of-fame.html:439 #: i2p2www/pages/site/about/hall-of-fame.html:440 +#: i2p2www/pages/site/about/hall-of-fame.html:441 #: i2p2www/pages/site/about/hall-of-fame.html:442 -#: i2p2www/pages/site/about/hall-of-fame.html:445 +#: i2p2www/pages/site/about/hall-of-fame.html:443 +#: i2p2www/pages/site/about/hall-of-fame.html:444 #: i2p2www/pages/site/about/hall-of-fame.html:446 #: i2p2www/pages/site/about/hall-of-fame.html:447 #: i2p2www/pages/site/about/hall-of-fame.html:448 -#: i2p2www/pages/site/about/hall-of-fame.html:449 #: i2p2www/pages/site/about/hall-of-fame.html:450 #: i2p2www/pages/site/about/hall-of-fame.html:451 #: i2p2www/pages/site/about/hall-of-fame.html:452 #: i2p2www/pages/site/about/hall-of-fame.html:453 #: i2p2www/pages/site/about/hall-of-fame.html:454 -#: i2p2www/pages/site/about/hall-of-fame.html:455 #: i2p2www/pages/site/about/hall-of-fame.html:456 -#: i2p2www/pages/site/about/hall-of-fame.html:457 -#: i2p2www/pages/site/about/hall-of-fame.html:458 #: i2p2www/pages/site/about/hall-of-fame.html:459 #: i2p2www/pages/site/about/hall-of-fame.html:460 #: i2p2www/pages/site/about/hall-of-fame.html:461 #: i2p2www/pages/site/about/hall-of-fame.html:462 #: i2p2www/pages/site/about/hall-of-fame.html:463 +#: i2p2www/pages/site/about/hall-of-fame.html:464 #: i2p2www/pages/site/about/hall-of-fame.html:465 #: i2p2www/pages/site/about/hall-of-fame.html:466 #: i2p2www/pages/site/about/hall-of-fame.html:467 +#: i2p2www/pages/site/about/hall-of-fame.html:468 +#: i2p2www/pages/site/about/hall-of-fame.html:469 +#: i2p2www/pages/site/about/hall-of-fame.html:470 +#: i2p2www/pages/site/about/hall-of-fame.html:471 +#: i2p2www/pages/site/about/hall-of-fame.html:472 +#: i2p2www/pages/site/about/hall-of-fame.html:474 +#: i2p2www/pages/site/about/hall-of-fame.html:475 +#: i2p2www/pages/site/about/hall-of-fame.html:476 +#: i2p2www/pages/site/about/hall-of-fame.html:478 +#: i2p2www/pages/site/about/hall-of-fame.html:481 +#: i2p2www/pages/site/about/hall-of-fame.html:482 +#: i2p2www/pages/site/about/hall-of-fame.html:483 +#: i2p2www/pages/site/about/hall-of-fame.html:484 +#: i2p2www/pages/site/about/hall-of-fame.html:485 +#: i2p2www/pages/site/about/hall-of-fame.html:486 +#: i2p2www/pages/site/about/hall-of-fame.html:487 +#: i2p2www/pages/site/about/hall-of-fame.html:488 +#: i2p2www/pages/site/about/hall-of-fame.html:489 +#: i2p2www/pages/site/about/hall-of-fame.html:490 +#: i2p2www/pages/site/about/hall-of-fame.html:491 +#: i2p2www/pages/site/about/hall-of-fame.html:492 +#: i2p2www/pages/site/about/hall-of-fame.html:493 +#: i2p2www/pages/site/about/hall-of-fame.html:494 +#: i2p2www/pages/site/about/hall-of-fame.html:495 +#: i2p2www/pages/site/about/hall-of-fame.html:496 +#: i2p2www/pages/site/about/hall-of-fame.html:497 +#: i2p2www/pages/site/about/hall-of-fame.html:498 +#: i2p2www/pages/site/about/hall-of-fame.html:499 +#: i2p2www/pages/site/about/hall-of-fame.html:501 +#: i2p2www/pages/site/about/hall-of-fame.html:502 +#: i2p2www/pages/site/about/hall-of-fame.html:503 msgid "General fund" msgstr "Caja total" #: i2p2www/pages/site/about/hall-of-fame.html:10 #: i2p2www/pages/site/about/hall-of-fame.html:12 #: i2p2www/pages/site/about/hall-of-fame.html:14 +#: i2p2www/pages/site/about/hall-of-fame.html:20 #, python-format msgid "%(euroval)s € and %(btcval)s BTC" msgstr "%(euroval)s € y %(btcval)s BTC" @@ -561,11 +562,6 @@ msgstr "Mirros de Debian para I2P" msgid "Bitcoin client for I2P" msgstr "Cliente Bitcoin para I2P" -#: i2p2www/pages/site/about/hall-of-fame.html:20 -#, python-format -msgid "%(btcval)s BTC" -msgstr "%(btcval)s BTC" - #: i2p2www/pages/site/about/hall-of-fame.html:21 msgid "Unit Tests for I2P router" msgstr "Unit Tests para el ruter I2P" @@ -609,15 +605,15 @@ msgstr "Subscripciones mensuales actuales:" msgid "2013 donations and costs:" msgstr "Donaciones y coste en el 2013:" -#: i2p2www/pages/site/about/hall-of-fame.html:134 +#: i2p2www/pages/site/about/hall-of-fame.html:170 msgid "2012 donations and costs:" msgstr "Donaciones y coste en el 2012:" -#: i2p2www/pages/site/about/hall-of-fame.html:262 +#: i2p2www/pages/site/about/hall-of-fame.html:298 msgid "2011 donations and costs:" msgstr "Donaciones y coste en el 2011:" -#: i2p2www/pages/site/about/hall-of-fame.html:363 +#: i2p2www/pages/site/about/hall-of-fame.html:399 msgid "Previous to 2011 donations:" msgstr "Donaciones previas al 2011:" diff --git a/i2p2www/translations/es/LC_MESSAGES/blog.po b/i2p2www/translations/es/LC_MESSAGES/blog.po index e8e7d16c..2653147e 100644 --- a/i2p2www/translations/es/LC_MESSAGES/blog.po +++ b/i2p2www/translations/es/LC_MESSAGES/blog.po @@ -13,7 +13,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-15 21:25+0000\n" +"POT-Creation-Date: 2013-08-29 06:46+0000\n" "PO-Revision-Date: 2013-08-12 10:32+0000\n" "Last-Translator: str4d \n" "Language-Team: Spanish " diff --git a/i2p2www/translations/es/LC_MESSAGES/comparison.po b/i2p2www/translations/es/LC_MESSAGES/comparison.po index 95dc679a..7099fd58 100644 --- a/i2p2www/translations/es/LC_MESSAGES/comparison.po +++ b/i2p2www/translations/es/LC_MESSAGES/comparison.po @@ -13,7 +13,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-15 21:25+0000\n" +"POT-Creation-Date: 2013-08-29 06:46+0000\n" "PO-Revision-Date: 2013-07-11 10:13+0000\n" "Last-Translator: trolly\n" "Language-Team: Spanish " diff --git a/i2p2www/translations/es/LC_MESSAGES/docs.po b/i2p2www/translations/es/LC_MESSAGES/docs.po index c25fd90f..b279dce7 100644 --- a/i2p2www/translations/es/LC_MESSAGES/docs.po +++ b/i2p2www/translations/es/LC_MESSAGES/docs.po @@ -13,7 +13,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-15 21:25+0000\n" +"POT-Creation-Date: 2013-08-29 06:46+0000\n" "PO-Revision-Date: 2013-08-12 10:33+0000\n" "Last-Translator: str4d \n" "Language-Team: Spanish " @@ -3836,82 +3836,82 @@ msgid "Email" msgstr "Correo-e" #: i2p2www/pages/site/docs/applications/supported.html:26 -#: i2p2www/pages/site/docs/applications/supported.html:315 +#: i2p2www/pages/site/docs/applications/supported.html:328 msgid "File Sharing" msgstr "Compartición de archivos" #: i2p2www/pages/site/docs/applications/supported.html:29 -#: i2p2www/pages/site/docs/applications/supported.html:317 +#: i2p2www/pages/site/docs/applications/supported.html:330 msgid "BitTorrent clients" msgstr "Clientes de BitTorrent" #: i2p2www/pages/site/docs/applications/supported.html:31 -#: i2p2www/pages/site/docs/applications/supported.html:359 +#: i2p2www/pages/site/docs/applications/supported.html:372 msgid "BitTorrent trackers and indexers" msgstr "Trackers e indexadores de BitTorrent" #: i2p2www/pages/site/docs/applications/supported.html:40 -#: i2p2www/pages/site/docs/applications/supported.html:426 +#: i2p2www/pages/site/docs/applications/supported.html:439 msgid "Network Administration" msgstr "Administración de red" #: i2p2www/pages/site/docs/applications/supported.html:43 -#: i2p2www/pages/site/docs/applications/supported.html:428 +#: i2p2www/pages/site/docs/applications/supported.html:441 msgid "General-purpose socket utilities" msgstr "Utilidades para sockets de uso general" #: i2p2www/pages/site/docs/applications/supported.html:50 -#: i2p2www/pages/site/docs/applications/supported.html:469 +#: i2p2www/pages/site/docs/applications/supported.html:482 msgid "Real-time Chat" msgstr "Chat en tiempo real" #: i2p2www/pages/site/docs/applications/supported.html:53 -#: i2p2www/pages/site/docs/applications/supported.html:471 +#: i2p2www/pages/site/docs/applications/supported.html:484 msgid "Instant messaging clients" msgstr "Clientes de mensajería instatánea" #: i2p2www/pages/site/docs/applications/supported.html:55 -#: i2p2www/pages/site/docs/applications/supported.html:481 +#: i2p2www/pages/site/docs/applications/supported.html:494 msgid "IRC clients" msgstr "Clientes iRC" #: i2p2www/pages/site/docs/applications/supported.html:57 -#: i2p2www/pages/site/docs/applications/supported.html:532 +#: i2p2www/pages/site/docs/applications/supported.html:545 msgid "IRC servers" msgstr "Servidores iRC" #: i2p2www/pages/site/docs/applications/supported.html:62 -#: i2p2www/pages/site/docs/applications/supported.html:548 +#: i2p2www/pages/site/docs/applications/supported.html:561 msgid "Web Browsing" msgstr "Navegación web" #: i2p2www/pages/site/docs/applications/supported.html:65 -#: i2p2www/pages/site/docs/applications/supported.html:550 +#: i2p2www/pages/site/docs/applications/supported.html:563 msgid "Anonymous websites" msgstr "Webs anónimas" #: i2p2www/pages/site/docs/applications/supported.html:67 -#: i2p2www/pages/site/docs/applications/supported.html:599 +#: i2p2www/pages/site/docs/applications/supported.html:612 msgid "Proxy software" msgstr "Aplicaciones de Proxy" #: i2p2www/pages/site/docs/applications/supported.html:69 -#: i2p2www/pages/site/docs/applications/supported.html:624 +#: i2p2www/pages/site/docs/applications/supported.html:637 msgid "Inproxies" msgstr "Proxies de entrada" #: i2p2www/pages/site/docs/applications/supported.html:71 -#: i2p2www/pages/site/docs/applications/supported.html:640 +#: i2p2www/pages/site/docs/applications/supported.html:653 msgid "Outproxies" msgstr "Proxies de salida" #: i2p2www/pages/site/docs/applications/supported.html:76 -#: i2p2www/pages/site/docs/applications/supported.html:654 +#: i2p2www/pages/site/docs/applications/supported.html:667 msgid "Website Hosting" msgstr "Alojamiento web" #: i2p2www/pages/site/docs/applications/supported.html:79 -#: i2p2www/pages/site/docs/applications/supported.html:669 +#: i2p2www/pages/site/docs/applications/supported.html:682 msgid "Web servers" msgstr "Servidores web" @@ -3940,8 +3940,8 @@ msgstr "" #: i2p2www/pages/site/docs/applications/supported.html:97 #: i2p2www/pages/site/docs/applications/supported.html:279 #: i2p2www/pages/site/docs/applications/supported.html:311 -#: i2p2www/pages/site/docs/applications/supported.html:323 -#: i2p2www/pages/site/docs/applications/supported.html:666 +#: i2p2www/pages/site/docs/applications/supported.html:336 +#: i2p2www/pages/site/docs/applications/supported.html:679 msgid "bundled" msgstr "incluida" @@ -3962,10 +3962,10 @@ msgstr "" #: i2p2www/pages/site/docs/applications/supported.html:228 #: i2p2www/pages/site/docs/applications/supported.html:241 #: i2p2www/pages/site/docs/applications/supported.html:292 -#: i2p2www/pages/site/docs/applications/supported.html:391 -#: i2p2www/pages/site/docs/applications/supported.html:413 -#: i2p2www/pages/site/docs/applications/supported.html:422 -#: i2p2www/pages/site/docs/applications/supported.html:510 +#: i2p2www/pages/site/docs/applications/supported.html:404 +#: i2p2www/pages/site/docs/applications/supported.html:426 +#: i2p2www/pages/site/docs/applications/supported.html:435 +#: i2p2www/pages/site/docs/applications/supported.html:523 msgid "plugin" msgstr "pluguin" @@ -3990,30 +3990,31 @@ msgstr "" #: i2p2www/pages/site/docs/applications/supported.html:241 #: i2p2www/pages/site/docs/applications/supported.html:252 #: i2p2www/pages/site/docs/applications/supported.html:261 -#: i2p2www/pages/site/docs/applications/supported.html:329 -#: i2p2www/pages/site/docs/applications/supported.html:340 -#: i2p2www/pages/site/docs/applications/supported.html:355 -#: i2p2www/pages/site/docs/applications/supported.html:401 -#: i2p2www/pages/site/docs/applications/supported.html:413 -#: i2p2www/pages/site/docs/applications/supported.html:422 -#: i2p2www/pages/site/docs/applications/supported.html:437 -#: i2p2www/pages/site/docs/applications/supported.html:443 -#: i2p2www/pages/site/docs/applications/supported.html:449 -#: i2p2www/pages/site/docs/applications/supported.html:459 -#: i2p2www/pages/site/docs/applications/supported.html:465 -#: i2p2www/pages/site/docs/applications/supported.html:477 -#: i2p2www/pages/site/docs/applications/supported.html:510 -#: i2p2www/pages/site/docs/applications/supported.html:516 -#: i2p2www/pages/site/docs/applications/supported.html:522 -#: i2p2www/pages/site/docs/applications/supported.html:528 -#: i2p2www/pages/site/docs/applications/supported.html:605 -#: i2p2www/pages/site/docs/applications/supported.html:614 -#: i2p2www/pages/site/docs/applications/supported.html:620 -#: i2p2www/pages/site/docs/applications/supported.html:666 -#: i2p2www/pages/site/docs/applications/supported.html:681 -#: i2p2www/pages/site/docs/applications/supported.html:687 -#: i2p2www/pages/site/docs/applications/supported.html:693 -#: i2p2www/pages/site/docs/applications/supported.html:699 +#: i2p2www/pages/site/docs/applications/supported.html:324 +#: i2p2www/pages/site/docs/applications/supported.html:342 +#: i2p2www/pages/site/docs/applications/supported.html:353 +#: i2p2www/pages/site/docs/applications/supported.html:368 +#: i2p2www/pages/site/docs/applications/supported.html:414 +#: i2p2www/pages/site/docs/applications/supported.html:426 +#: i2p2www/pages/site/docs/applications/supported.html:435 +#: i2p2www/pages/site/docs/applications/supported.html:450 +#: i2p2www/pages/site/docs/applications/supported.html:456 +#: i2p2www/pages/site/docs/applications/supported.html:462 +#: i2p2www/pages/site/docs/applications/supported.html:472 +#: i2p2www/pages/site/docs/applications/supported.html:478 +#: i2p2www/pages/site/docs/applications/supported.html:490 +#: i2p2www/pages/site/docs/applications/supported.html:523 +#: i2p2www/pages/site/docs/applications/supported.html:529 +#: i2p2www/pages/site/docs/applications/supported.html:535 +#: i2p2www/pages/site/docs/applications/supported.html:541 +#: i2p2www/pages/site/docs/applications/supported.html:618 +#: i2p2www/pages/site/docs/applications/supported.html:627 +#: i2p2www/pages/site/docs/applications/supported.html:633 +#: i2p2www/pages/site/docs/applications/supported.html:679 +#: i2p2www/pages/site/docs/applications/supported.html:694 +#: i2p2www/pages/site/docs/applications/supported.html:700 +#: i2p2www/pages/site/docs/applications/supported.html:706 +#: i2p2www/pages/site/docs/applications/supported.html:712 msgid "standalone" msgstr "independiente" @@ -4022,11 +4023,11 @@ msgstr "independiente" #: i2p2www/pages/site/docs/applications/supported.html:202 #: i2p2www/pages/site/docs/applications/supported.html:208 #: i2p2www/pages/site/docs/applications/supported.html:214 -#: i2p2www/pages/site/docs/applications/supported.html:349 -#: i2p2www/pages/site/docs/applications/supported.html:373 -#: i2p2www/pages/site/docs/applications/supported.html:382 -#: i2p2www/pages/site/docs/applications/supported.html:538 -#: i2p2www/pages/site/docs/applications/supported.html:544 +#: i2p2www/pages/site/docs/applications/supported.html:362 +#: i2p2www/pages/site/docs/applications/supported.html:386 +#: i2p2www/pages/site/docs/applications/supported.html:395 +#: i2p2www/pages/site/docs/applications/supported.html:551 +#: i2p2www/pages/site/docs/applications/supported.html:557 msgid "standalone/mod" msgstr "independiente/mod" @@ -4050,14 +4051,14 @@ msgstr "" #: i2p2www/pages/site/docs/applications/supported.html:135 #: i2p2www/pages/site/docs/applications/supported.html:302 -#: i2p2www/pages/site/docs/applications/supported.html:558 -#: i2p2www/pages/site/docs/applications/supported.html:568 -#: i2p2www/pages/site/docs/applications/supported.html:577 -#: i2p2www/pages/site/docs/applications/supported.html:583 -#: i2p2www/pages/site/docs/applications/supported.html:589 -#: i2p2www/pages/site/docs/applications/supported.html:595 -#: i2p2www/pages/site/docs/applications/supported.html:636 -#: i2p2www/pages/site/docs/applications/supported.html:650 +#: i2p2www/pages/site/docs/applications/supported.html:571 +#: i2p2www/pages/site/docs/applications/supported.html:581 +#: i2p2www/pages/site/docs/applications/supported.html:590 +#: i2p2www/pages/site/docs/applications/supported.html:596 +#: i2p2www/pages/site/docs/applications/supported.html:602 +#: i2p2www/pages/site/docs/applications/supported.html:608 +#: i2p2www/pages/site/docs/applications/supported.html:649 +#: i2p2www/pages/site/docs/applications/supported.html:663 msgid "service" msgstr "servicio" @@ -4080,7 +4081,7 @@ msgstr "" #: i2p2www/pages/site/docs/applications/supported.html:148 #: i2p2www/pages/site/docs/applications/supported.html:220 -#: i2p2www/pages/site/docs/applications/supported.html:355 +#: i2p2www/pages/site/docs/applications/supported.html:368 msgid "unmaintained" msgstr "sin mantenimiento" @@ -4257,15 +4258,24 @@ msgstr "" "Interfaz web simple para emails. Configurado por defecto para usar el " "servidor de email Postman." -#: i2p2www/pages/site/docs/applications/supported.html:322 +#: i2p2www/pages/site/docs/applications/supported.html:316 +#, python-format +msgid "" +"Can be configured to use Postman's email service. See\n" +"this comparison of MUAs,\n" +"and configuration settings for\n" +"SMTP and POP3." +msgstr "" + +#: i2p2www/pages/site/docs/applications/supported.html:335 msgid "I2P's integrated BitTorrent client." msgstr "Cliente de BitTorrent de I2P integrado." -#: i2p2www/pages/site/docs/applications/supported.html:328 +#: i2p2www/pages/site/docs/applications/supported.html:341 msgid "Modified version of I2PSnark." msgstr "Versión modificada de I2PSnark." -#: i2p2www/pages/site/docs/applications/supported.html:334 +#: i2p2www/pages/site/docs/applications/supported.html:347 msgid "" "\n" "A fork of rufus that uses the Basic Open Bridge (BOB) and has many\n" @@ -4280,7 +4290,7 @@ msgstr "" "instalado, para los torrents sin tracker, y el uso de anlaces imán, " "magnet-link, para torrents dentro de I2P.\n" -#: i2p2www/pages/site/docs/applications/supported.html:345 +#: i2p2www/pages/site/docs/applications/supported.html:358 msgid "" "Clean, full-featured cross-platform BitTorrent client with official\n" "ports for several GUI toolkits." @@ -4288,11 +4298,11 @@ msgstr "" "Cliente de BitTorrent completo multi plataforma con varios ports para " "varios GUIs diferentes." -#: i2p2www/pages/site/docs/applications/supported.html:354 +#: i2p2www/pages/site/docs/applications/supported.html:367 msgid "Has a plugin providing I2P support." msgstr "Contiene un pluguin para usarse con I2P." -#: i2p2www/pages/site/docs/applications/supported.html:361 +#: i2p2www/pages/site/docs/applications/supported.html:374 #, python-format msgid "" "For a detailed feature comparison of I2P-enabled trackers/indexers, see\n" @@ -4301,7 +4311,7 @@ msgstr "" "Para una comparación detallada entre trackers/indexadores en I2P, mire aquí." -#: i2p2www/pages/site/docs/applications/supported.html:369 +#: i2p2www/pages/site/docs/applications/supported.html:382 msgid "" "The code that powered one of the first major tracker/indexer sites on the" "\n" @@ -4310,7 +4320,7 @@ msgstr "" "El código que que hace funcionar uno de las mayores webs trackers en " "Internet. Parcheado para I2P." -#: i2p2www/pages/site/docs/applications/supported.html:378 +#: i2p2www/pages/site/docs/applications/supported.html:391 #, python-format msgid "" "Lightweight tracker/indexer. I2P mod available in the i2p.opentracker\n" @@ -4320,7 +4330,7 @@ msgstr "" "i2p.opentracker del repositorio Monotone de " "I2P." -#: i2p2www/pages/site/docs/applications/supported.html:387 +#: i2p2www/pages/site/docs/applications/supported.html:400 #, python-format msgid "" "zzz's Java-based open tracker. More info\n" @@ -4329,11 +4339,11 @@ msgstr "" "zzz's Tracker libre basado en Java. Más " "información aquí." -#: i2p2www/pages/site/docs/applications/supported.html:400 +#: i2p2www/pages/site/docs/applications/supported.html:413 msgid "I2P port of the aMule ED2K client." msgstr "Port para I2P del cliente aMule ED2K." -#: i2p2www/pages/site/docs/applications/supported.html:409 +#: i2p2www/pages/site/docs/applications/supported.html:422 #, python-format msgid "" "Port of the Phex Gnutella " @@ -4344,7 +4354,7 @@ msgstr "" "href=\"http://www.phex.org/mambo/\">Phex. La web del pluguin aquí." -#: i2p2www/pages/site/docs/applications/supported.html:418 +#: i2p2www/pages/site/docs/applications/supported.html:431 #, python-format msgid "" "Cache for Gnutella peers on I2P. Website for plugin version\n" @@ -4353,7 +4363,7 @@ msgstr "" "Caché de los pares de Gnutella en I2P. Web del pluguin aquí." -#: i2p2www/pages/site/docs/applications/supported.html:433 +#: i2p2www/pages/site/docs/applications/supported.html:446 msgid "" "Unix standard tool for socket relaying. Several clones, ports, and forks\n" "have appeared over the years." @@ -4361,11 +4371,11 @@ msgstr "" "Herramienta estándar Unix para la manipulación de sockets. Durante los " "años han aparecido varios clons, ports y forks." -#: i2p2www/pages/site/docs/applications/supported.html:442 +#: i2p2www/pages/site/docs/applications/supported.html:455 msgid "Like netcat but more powerful." msgstr "Igual que netcat pero más potente." -#: i2p2www/pages/site/docs/applications/supported.html:448 +#: i2p2www/pages/site/docs/applications/supported.html:461 msgid "" "Proxy providing simple, transparent SOCKS-ification of network " "applications." @@ -4373,7 +4383,7 @@ msgstr "" "Proxy que proporciona el uso transparente de SOCKS de las palicaciones de" " la red." -#: i2p2www/pages/site/docs/applications/supported.html:458 +#: i2p2www/pages/site/docs/applications/supported.html:471 msgid "" "Most popular implementation of the Secure Shell (SSH) protocol and " "related tools." @@ -4381,15 +4391,15 @@ msgstr "" "La implementación más popular del protocolo Secure Shell (SSH) y varias " "herramientas relacionadas." -#: i2p2www/pages/site/docs/applications/supported.html:464 +#: i2p2www/pages/site/docs/applications/supported.html:477 msgid "Open source Secure Shell (SSH) client for Windows." msgstr "Cliente para Windows de Secure Shell (SSH) de código libre." -#: i2p2www/pages/site/docs/applications/supported.html:476 +#: i2p2www/pages/site/docs/applications/supported.html:489 msgid "IM client with multiple incarnations." msgstr "Cliente de mensajería, IM, con múltiples encarnaciones." -#: i2p2www/pages/site/docs/applications/supported.html:483 +#: i2p2www/pages/site/docs/applications/supported.html:496 msgid "" "Many IRC clients leak identifying information to servers or other\n" "clients, so I2P's IRC and SOCKS IRC client tunnels filter certain inbound" @@ -4415,7 +4425,7 @@ msgstr "" "completamente bloqueados, excepto para CTCP ACTION (el mensaje emitido " "por el comando /me) que nos peligroso por sí mismo." -#: i2p2www/pages/site/docs/applications/supported.html:494 +#: i2p2www/pages/site/docs/applications/supported.html:507 msgid "" "I2P's IRC filtering may not cover every possible leak — users should also" "\n" @@ -4436,7 +4446,7 @@ msgstr "" "los desarrolladores de I2P, podrían ser capaces de arreglarlo añadiendo " "algún filtro adicional." -#: i2p2www/pages/site/docs/applications/supported.html:506 +#: i2p2www/pages/site/docs/applications/supported.html:519 #, python-format msgid "" "Small Java-based IRC client. Plugin available aquí." -#: i2p2www/pages/site/docs/applications/supported.html:515 +#: i2p2www/pages/site/docs/applications/supported.html:528 msgid "Cross-platform graphical IRC client." msgstr "Cliente de IRC gráfico multi plataforma." -#: i2p2www/pages/site/docs/applications/supported.html:521 +#: i2p2www/pages/site/docs/applications/supported.html:534 msgid "Unixy terminal-based IRC client." msgstr "Cliente de IRC Unix para terminal." -#: i2p2www/pages/site/docs/applications/supported.html:527 +#: i2p2www/pages/site/docs/applications/supported.html:540 msgid "Another Unixy terminal-based IRC client." msgstr "Otro cliente de IRC Unix para terminal." -#: i2p2www/pages/site/docs/applications/supported.html:537 +#: i2p2www/pages/site/docs/applications/supported.html:550 msgid "IRC server developed from scratch." msgstr "Servidor IRC desarrollado desde cero." -#: i2p2www/pages/site/docs/applications/supported.html:543 +#: i2p2www/pages/site/docs/applications/supported.html:556 msgid "Most popular IRC server." msgstr "El servidor IRC más popular." -#: i2p2www/pages/site/docs/applications/supported.html:555 +#: i2p2www/pages/site/docs/applications/supported.html:568 msgid "" "Any website hosted anonymously on I2P, reachable through the I2P router's" " HTTP proxy." @@ -4473,7 +4483,7 @@ msgstr "" "Cualquier web alojada anónimamente en I2P, accesible desde el proxy HTTP " "del ruter de I2P." -#: i2p2www/pages/site/docs/applications/supported.html:563 +#: i2p2www/pages/site/docs/applications/supported.html:576 msgid "" "Distributed anonymous websites hosted\n" "using Tahoe-LAFS-I2P, currently only reachable with Tahoe-LAFS-I2P\n" @@ -4483,7 +4493,7 @@ msgstr "" "sólo accesibles con clientes Tahoe-LAFS-I2P o a través del proxy HTTP " "Tahoe-LAFS-I2P." -#: i2p2www/pages/site/docs/applications/supported.html:573 +#: i2p2www/pages/site/docs/applications/supported.html:586 #, python-format msgid "" "Website for sponge's jump service.\n" @@ -4492,24 +4502,24 @@ msgstr "" "Web para el servicio de saltos de sponge. Con el código fuente desponible." -#: i2p2www/pages/site/docs/applications/supported.html:582 +#: i2p2www/pages/site/docs/applications/supported.html:595 msgid "Another jump service." msgstr "Otro servicio de saltos." -#: i2p2www/pages/site/docs/applications/supported.html:588 +#: i2p2www/pages/site/docs/applications/supported.html:601 msgid "Dynamically updated eepsite index." msgstr "Índice de eepsites actualizado dinámicamente." -#: i2p2www/pages/site/docs/applications/supported.html:594 +#: i2p2www/pages/site/docs/applications/supported.html:607 #, python-format msgid "Website for zzz's jump service." msgstr "Web para el servicio de saltos de zzz" -#: i2p2www/pages/site/docs/applications/supported.html:604 +#: i2p2www/pages/site/docs/applications/supported.html:617 msgid "SOCKS-enabled caching web proxy with basic filtering capabilities." msgstr "Web proxy con cacheo activo SOCKS con la capacidad de filtrado básico." -#: i2p2www/pages/site/docs/applications/supported.html:610 +#: i2p2www/pages/site/docs/applications/supported.html:623 msgid "" "Privacy-focused non-caching web proxy with advanced filtering\n" "capabilities. Excels at removing ads and other junk." @@ -4517,24 +4527,24 @@ msgstr "" "Web proxy sin cacheo enfocado a la privacidad con capacidad de filtrado " "avanzado. Excelente a la hora de eliminar anuncios y otras mierdas." -#: i2p2www/pages/site/docs/applications/supported.html:619 +#: i2p2www/pages/site/docs/applications/supported.html:632 msgid "Venerable caching web proxy." msgstr "Venerable web proxy con caché." -#: i2p2www/pages/site/docs/applications/supported.html:626 +#: i2p2www/pages/site/docs/applications/supported.html:639 msgid "Gateways allowing users on the public Internet to access eepsites." msgstr "" "Salidas que permiten a los usuarios en el Internet público acceder a las " "eepsites en I2P." -#: i2p2www/pages/site/docs/applications/supported.html:633 +#: i2p2www/pages/site/docs/applications/supported.html:646 #, python-format msgid "tino's inproxy on the public Internet." msgstr "" "Proxy de entrada de tino en el Internet " "público." -#: i2p2www/pages/site/docs/applications/supported.html:642 +#: i2p2www/pages/site/docs/applications/supported.html:655 msgid "" "Gateways allowing I2P users to access content hosted on the public " "Internet." @@ -4542,13 +4552,13 @@ msgstr "" "Salidas que permiten a los usuarios de I2P acceder al contenido en el " "Internet público." -#: i2p2www/pages/site/docs/applications/supported.html:649 +#: i2p2www/pages/site/docs/applications/supported.html:662 msgid "Publicly advertised outproxy running Squid, located in Germany." msgstr "" "Proxy de salida públicamente anunciado que usa Squid, localizado en " "Alemania." -#: i2p2www/pages/site/docs/applications/supported.html:659 +#: i2p2www/pages/site/docs/applications/supported.html:672 msgid "" "Lightweight web server and Java servlet container. I2P is tightly\n" "integrated with a bundled copy of Jetty which by default is configured to" @@ -4566,7 +4576,7 @@ msgstr "" "Jetty incluida también sirve la consola del ruter de I2P y las " "palicaciones web incluidas con I2P." -#: i2p2www/pages/site/docs/applications/supported.html:671 +#: i2p2www/pages/site/docs/applications/supported.html:684 msgid "" "In addition to Jetty, any web server should function over I2P without\n" "modification so long as it's HTTP-compliant. Some web servers known to\n" @@ -4576,19 +4586,19 @@ msgstr "" "modificaciones mientras sea compatible con HTTP. Algunos servidores web " "usados actualmente para servir contenido en I2P son:" -#: i2p2www/pages/site/docs/applications/supported.html:680 +#: i2p2www/pages/site/docs/applications/supported.html:693 msgid "Most popular web server on the public WWW." msgstr "El servidor web más popular en la WWW pública." -#: i2p2www/pages/site/docs/applications/supported.html:686 +#: i2p2www/pages/site/docs/applications/supported.html:699 msgid "Web server and Java servlet container. More features than Jetty." msgstr "Servidor web en Java servlet container. Con mas funciones que Jetty." -#: i2p2www/pages/site/docs/applications/supported.html:692 +#: i2p2www/pages/site/docs/applications/supported.html:705 msgid "Fast lightweight web server." msgstr "Servidor web rápido y ligero" -#: i2p2www/pages/site/docs/applications/supported.html:698 +#: i2p2www/pages/site/docs/applications/supported.html:711 msgid "High-performance lightweight web server." msgstr "Servidor web ligero de alto rendimiento." diff --git a/i2p2www/translations/es/LC_MESSAGES/get-involved.po b/i2p2www/translations/es/LC_MESSAGES/get-involved.po index 2e3cdf5c..b9b5dc46 100644 --- a/i2p2www/translations/es/LC_MESSAGES/get-involved.po +++ b/i2p2www/translations/es/LC_MESSAGES/get-involved.po @@ -13,7 +13,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-23 12:28+0000\n" +"POT-Creation-Date: 2013-08-29 06:47+0000\n" "PO-Revision-Date: 2013-07-11 10:13+0000\n" "Last-Translator: trolly\n" "Language-Team: Spanish " diff --git a/i2p2www/translations/es/LC_MESSAGES/misc.po b/i2p2www/translations/es/LC_MESSAGES/misc.po index 38177de4..95f38eb6 100644 --- a/i2p2www/translations/es/LC_MESSAGES/misc.po +++ b/i2p2www/translations/es/LC_MESSAGES/misc.po @@ -13,7 +13,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-15 21:25+0000\n" +"POT-Creation-Date: 2013-08-29 06:47+0000\n" "PO-Revision-Date: 2013-08-12 09:33+0000\n" "Last-Translator: trolly\n" "Language-Team: Spanish " diff --git a/i2p2www/translations/es/LC_MESSAGES/priority.po b/i2p2www/translations/es/LC_MESSAGES/priority.po index 69212742..d27d8aa6 100644 --- a/i2p2www/translations/es/LC_MESSAGES/priority.po +++ b/i2p2www/translations/es/LC_MESSAGES/priority.po @@ -13,7 +13,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-15 21:25+0000\n" +"POT-Creation-Date: 2013-08-29 06:47+0000\n" "PO-Revision-Date: 2013-08-12 10:34+0000\n" "Last-Translator: str4d \n" "Language-Team: Spanish " diff --git a/i2p2www/translations/es/LC_MESSAGES/research.po b/i2p2www/translations/es/LC_MESSAGES/research.po index 893cd0a9..f55e9587 100644 --- a/i2p2www/translations/es/LC_MESSAGES/research.po +++ b/i2p2www/translations/es/LC_MESSAGES/research.po @@ -13,7 +13,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-15 21:25+0000\n" +"POT-Creation-Date: 2013-08-29 06:47+0000\n" "PO-Revision-Date: 2013-07-25 09:42+0000\n" "Last-Translator: trolly\n" "Language-Team: Spanish " diff --git a/i2p2www/translations/fr/LC_MESSAGES/about.po b/i2p2www/translations/fr/LC_MESSAGES/about.po index 13314d16..c27ce70c 100644 --- a/i2p2www/translations/fr/LC_MESSAGES/about.po +++ b/i2p2www/translations/fr/LC_MESSAGES/about.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-15 21:25+0000\n" +"POT-Creation-Date: 2013-08-29 06:46+0000\n" "PO-Revision-Date: 2013-08-11 16:29+0000\n" "Last-Translator: Boxoa590\n" "Language-Team: French " @@ -291,52 +291,24 @@ msgstr "Balance actuelle : en date de %(date)s" #: i2p2www/pages/site/about/hall-of-fame.html:9 #: i2p2www/pages/site/about/hall-of-fame.html:47 -#: i2p2www/pages/site/about/hall-of-fame.html:137 -#: i2p2www/pages/site/about/hall-of-fame.html:138 -#: i2p2www/pages/site/about/hall-of-fame.html:139 -#: i2p2www/pages/site/about/hall-of-fame.html:140 -#: i2p2www/pages/site/about/hall-of-fame.html:142 -#: i2p2www/pages/site/about/hall-of-fame.html:143 -#: i2p2www/pages/site/about/hall-of-fame.html:144 -#: i2p2www/pages/site/about/hall-of-fame.html:147 -#: i2p2www/pages/site/about/hall-of-fame.html:148 -#: i2p2www/pages/site/about/hall-of-fame.html:149 -#: i2p2www/pages/site/about/hall-of-fame.html:152 -#: i2p2www/pages/site/about/hall-of-fame.html:153 -#: i2p2www/pages/site/about/hall-of-fame.html:154 -#: i2p2www/pages/site/about/hall-of-fame.html:155 -#: i2p2www/pages/site/about/hall-of-fame.html:156 -#: i2p2www/pages/site/about/hall-of-fame.html:157 -#: i2p2www/pages/site/about/hall-of-fame.html:158 -#: i2p2www/pages/site/about/hall-of-fame.html:159 -#: i2p2www/pages/site/about/hall-of-fame.html:160 -#: i2p2www/pages/site/about/hall-of-fame.html:161 -#: i2p2www/pages/site/about/hall-of-fame.html:162 -#: i2p2www/pages/site/about/hall-of-fame.html:163 -#: i2p2www/pages/site/about/hall-of-fame.html:164 -#: i2p2www/pages/site/about/hall-of-fame.html:167 -#: i2p2www/pages/site/about/hall-of-fame.html:168 -#: i2p2www/pages/site/about/hall-of-fame.html:169 -#: i2p2www/pages/site/about/hall-of-fame.html:170 -#: i2p2www/pages/site/about/hall-of-fame.html:171 -#: i2p2www/pages/site/about/hall-of-fame.html:172 +#: i2p2www/pages/site/about/hall-of-fame.html:173 #: i2p2www/pages/site/about/hall-of-fame.html:174 #: i2p2www/pages/site/about/hall-of-fame.html:175 +#: i2p2www/pages/site/about/hall-of-fame.html:176 #: i2p2www/pages/site/about/hall-of-fame.html:178 #: i2p2www/pages/site/about/hall-of-fame.html:179 #: i2p2www/pages/site/about/hall-of-fame.html:180 -#: i2p2www/pages/site/about/hall-of-fame.html:181 -#: i2p2www/pages/site/about/hall-of-fame.html:182 +#: i2p2www/pages/site/about/hall-of-fame.html:183 #: i2p2www/pages/site/about/hall-of-fame.html:184 #: i2p2www/pages/site/about/hall-of-fame.html:185 -#: i2p2www/pages/site/about/hall-of-fame.html:186 -#: i2p2www/pages/site/about/hall-of-fame.html:187 #: i2p2www/pages/site/about/hall-of-fame.html:188 #: i2p2www/pages/site/about/hall-of-fame.html:189 +#: i2p2www/pages/site/about/hall-of-fame.html:190 #: i2p2www/pages/site/about/hall-of-fame.html:191 #: i2p2www/pages/site/about/hall-of-fame.html:192 #: i2p2www/pages/site/about/hall-of-fame.html:193 #: i2p2www/pages/site/about/hall-of-fame.html:194 +#: i2p2www/pages/site/about/hall-of-fame.html:195 #: i2p2www/pages/site/about/hall-of-fame.html:196 #: i2p2www/pages/site/about/hall-of-fame.html:197 #: i2p2www/pages/site/about/hall-of-fame.html:198 @@ -346,53 +318,55 @@ msgstr "Balance actuelle : en date de %(date)s" #: i2p2www/pages/site/about/hall-of-fame.html:204 #: i2p2www/pages/site/about/hall-of-fame.html:205 #: i2p2www/pages/site/about/hall-of-fame.html:206 +#: i2p2www/pages/site/about/hall-of-fame.html:207 #: i2p2www/pages/site/about/hall-of-fame.html:208 -#: i2p2www/pages/site/about/hall-of-fame.html:209 #: i2p2www/pages/site/about/hall-of-fame.html:210 -#: i2p2www/pages/site/about/hall-of-fame.html:212 -#: i2p2www/pages/site/about/hall-of-fame.html:213 +#: i2p2www/pages/site/about/hall-of-fame.html:211 #: i2p2www/pages/site/about/hall-of-fame.html:214 #: i2p2www/pages/site/about/hall-of-fame.html:215 +#: i2p2www/pages/site/about/hall-of-fame.html:216 #: i2p2www/pages/site/about/hall-of-fame.html:217 #: i2p2www/pages/site/about/hall-of-fame.html:218 -#: i2p2www/pages/site/about/hall-of-fame.html:219 #: i2p2www/pages/site/about/hall-of-fame.html:220 #: i2p2www/pages/site/about/hall-of-fame.html:221 +#: i2p2www/pages/site/about/hall-of-fame.html:222 +#: i2p2www/pages/site/about/hall-of-fame.html:223 +#: i2p2www/pages/site/about/hall-of-fame.html:224 +#: i2p2www/pages/site/about/hall-of-fame.html:225 #: i2p2www/pages/site/about/hall-of-fame.html:227 +#: i2p2www/pages/site/about/hall-of-fame.html:228 +#: i2p2www/pages/site/about/hall-of-fame.html:229 #: i2p2www/pages/site/about/hall-of-fame.html:230 -#: i2p2www/pages/site/about/hall-of-fame.html:231 #: i2p2www/pages/site/about/hall-of-fame.html:232 #: i2p2www/pages/site/about/hall-of-fame.html:233 #: i2p2www/pages/site/about/hall-of-fame.html:234 +#: i2p2www/pages/site/about/hall-of-fame.html:235 #: i2p2www/pages/site/about/hall-of-fame.html:236 -#: i2p2www/pages/site/about/hall-of-fame.html:237 -#: i2p2www/pages/site/about/hall-of-fame.html:238 -#: i2p2www/pages/site/about/hall-of-fame.html:243 +#: i2p2www/pages/site/about/hall-of-fame.html:239 +#: i2p2www/pages/site/about/hall-of-fame.html:240 +#: i2p2www/pages/site/about/hall-of-fame.html:241 +#: i2p2www/pages/site/about/hall-of-fame.html:242 #: i2p2www/pages/site/about/hall-of-fame.html:244 #: i2p2www/pages/site/about/hall-of-fame.html:245 #: i2p2www/pages/site/about/hall-of-fame.html:246 -#: i2p2www/pages/site/about/hall-of-fame.html:247 #: i2p2www/pages/site/about/hall-of-fame.html:248 #: i2p2www/pages/site/about/hall-of-fame.html:249 #: i2p2www/pages/site/about/hall-of-fame.html:250 #: i2p2www/pages/site/about/hall-of-fame.html:251 -#: i2p2www/pages/site/about/hall-of-fame.html:252 +#: i2p2www/pages/site/about/hall-of-fame.html:253 #: i2p2www/pages/site/about/hall-of-fame.html:254 #: i2p2www/pages/site/about/hall-of-fame.html:255 -#: i2p2www/pages/site/about/hall-of-fame.html:265 +#: i2p2www/pages/site/about/hall-of-fame.html:256 +#: i2p2www/pages/site/about/hall-of-fame.html:257 +#: i2p2www/pages/site/about/hall-of-fame.html:263 #: i2p2www/pages/site/about/hall-of-fame.html:266 #: i2p2www/pages/site/about/hall-of-fame.html:267 #: i2p2www/pages/site/about/hall-of-fame.html:268 #: i2p2www/pages/site/about/hall-of-fame.html:269 #: i2p2www/pages/site/about/hall-of-fame.html:270 -#: i2p2www/pages/site/about/hall-of-fame.html:271 #: i2p2www/pages/site/about/hall-of-fame.html:272 #: i2p2www/pages/site/about/hall-of-fame.html:273 #: i2p2www/pages/site/about/hall-of-fame.html:274 -#: i2p2www/pages/site/about/hall-of-fame.html:275 -#: i2p2www/pages/site/about/hall-of-fame.html:276 -#: i2p2www/pages/site/about/hall-of-fame.html:277 -#: i2p2www/pages/site/about/hall-of-fame.html:278 #: i2p2www/pages/site/about/hall-of-fame.html:279 #: i2p2www/pages/site/about/hall-of-fame.html:280 #: i2p2www/pages/site/about/hall-of-fame.html:281 @@ -400,36 +374,32 @@ msgstr "Balance actuelle : en date de %(date)s" #: i2p2www/pages/site/about/hall-of-fame.html:283 #: i2p2www/pages/site/about/hall-of-fame.html:284 #: i2p2www/pages/site/about/hall-of-fame.html:285 -#: i2p2www/pages/site/about/hall-of-fame.html:289 +#: i2p2www/pages/site/about/hall-of-fame.html:286 +#: i2p2www/pages/site/about/hall-of-fame.html:287 +#: i2p2www/pages/site/about/hall-of-fame.html:288 #: i2p2www/pages/site/about/hall-of-fame.html:290 #: i2p2www/pages/site/about/hall-of-fame.html:291 -#: i2p2www/pages/site/about/hall-of-fame.html:292 -#: i2p2www/pages/site/about/hall-of-fame.html:293 -#: i2p2www/pages/site/about/hall-of-fame.html:294 -#: i2p2www/pages/site/about/hall-of-fame.html:295 -#: i2p2www/pages/site/about/hall-of-fame.html:297 -#: i2p2www/pages/site/about/hall-of-fame.html:298 -#: i2p2www/pages/site/about/hall-of-fame.html:299 -#: i2p2www/pages/site/about/hall-of-fame.html:300 #: i2p2www/pages/site/about/hall-of-fame.html:301 #: i2p2www/pages/site/about/hall-of-fame.html:302 #: i2p2www/pages/site/about/hall-of-fame.html:303 #: i2p2www/pages/site/about/hall-of-fame.html:304 #: i2p2www/pages/site/about/hall-of-fame.html:305 +#: i2p2www/pages/site/about/hall-of-fame.html:306 +#: i2p2www/pages/site/about/hall-of-fame.html:307 #: i2p2www/pages/site/about/hall-of-fame.html:308 #: i2p2www/pages/site/about/hall-of-fame.html:309 #: i2p2www/pages/site/about/hall-of-fame.html:310 #: i2p2www/pages/site/about/hall-of-fame.html:311 #: i2p2www/pages/site/about/hall-of-fame.html:312 +#: i2p2www/pages/site/about/hall-of-fame.html:313 #: i2p2www/pages/site/about/hall-of-fame.html:314 +#: i2p2www/pages/site/about/hall-of-fame.html:315 #: i2p2www/pages/site/about/hall-of-fame.html:316 #: i2p2www/pages/site/about/hall-of-fame.html:317 #: i2p2www/pages/site/about/hall-of-fame.html:318 #: i2p2www/pages/site/about/hall-of-fame.html:319 #: i2p2www/pages/site/about/hall-of-fame.html:320 #: i2p2www/pages/site/about/hall-of-fame.html:321 -#: i2p2www/pages/site/about/hall-of-fame.html:322 -#: i2p2www/pages/site/about/hall-of-fame.html:324 #: i2p2www/pages/site/about/hall-of-fame.html:325 #: i2p2www/pages/site/about/hall-of-fame.html:326 #: i2p2www/pages/site/about/hall-of-fame.html:327 @@ -437,21 +407,33 @@ msgstr "Balance actuelle : en date de %(date)s" #: i2p2www/pages/site/about/hall-of-fame.html:329 #: i2p2www/pages/site/about/hall-of-fame.html:330 #: i2p2www/pages/site/about/hall-of-fame.html:331 -#: i2p2www/pages/site/about/hall-of-fame.html:332 #: i2p2www/pages/site/about/hall-of-fame.html:333 #: i2p2www/pages/site/about/hall-of-fame.html:334 #: i2p2www/pages/site/about/hall-of-fame.html:335 #: i2p2www/pages/site/about/hall-of-fame.html:336 #: i2p2www/pages/site/about/hall-of-fame.html:337 +#: i2p2www/pages/site/about/hall-of-fame.html:338 #: i2p2www/pages/site/about/hall-of-fame.html:339 #: i2p2www/pages/site/about/hall-of-fame.html:340 #: i2p2www/pages/site/about/hall-of-fame.html:341 #: i2p2www/pages/site/about/hall-of-fame.html:344 #: i2p2www/pages/site/about/hall-of-fame.html:345 +#: i2p2www/pages/site/about/hall-of-fame.html:346 +#: i2p2www/pages/site/about/hall-of-fame.html:347 #: i2p2www/pages/site/about/hall-of-fame.html:348 -#: i2p2www/pages/site/about/hall-of-fame.html:349 -#: i2p2www/pages/site/about/hall-of-fame.html:351 +#: i2p2www/pages/site/about/hall-of-fame.html:350 #: i2p2www/pages/site/about/hall-of-fame.html:352 +#: i2p2www/pages/site/about/hall-of-fame.html:353 +#: i2p2www/pages/site/about/hall-of-fame.html:354 +#: i2p2www/pages/site/about/hall-of-fame.html:355 +#: i2p2www/pages/site/about/hall-of-fame.html:356 +#: i2p2www/pages/site/about/hall-of-fame.html:357 +#: i2p2www/pages/site/about/hall-of-fame.html:358 +#: i2p2www/pages/site/about/hall-of-fame.html:360 +#: i2p2www/pages/site/about/hall-of-fame.html:361 +#: i2p2www/pages/site/about/hall-of-fame.html:362 +#: i2p2www/pages/site/about/hall-of-fame.html:363 +#: i2p2www/pages/site/about/hall-of-fame.html:364 #: i2p2www/pages/site/about/hall-of-fame.html:365 #: i2p2www/pages/site/about/hall-of-fame.html:366 #: i2p2www/pages/site/about/hall-of-fame.html:367 @@ -461,32 +443,15 @@ msgstr "Balance actuelle : en date de %(date)s" #: i2p2www/pages/site/about/hall-of-fame.html:371 #: i2p2www/pages/site/about/hall-of-fame.html:372 #: i2p2www/pages/site/about/hall-of-fame.html:373 -#: i2p2www/pages/site/about/hall-of-fame.html:374 #: i2p2www/pages/site/about/hall-of-fame.html:375 #: i2p2www/pages/site/about/hall-of-fame.html:376 #: i2p2www/pages/site/about/hall-of-fame.html:377 -#: i2p2www/pages/site/about/hall-of-fame.html:378 -#: i2p2www/pages/site/about/hall-of-fame.html:379 #: i2p2www/pages/site/about/hall-of-fame.html:380 #: i2p2www/pages/site/about/hall-of-fame.html:381 -#: i2p2www/pages/site/about/hall-of-fame.html:382 -#: i2p2www/pages/site/about/hall-of-fame.html:383 #: i2p2www/pages/site/about/hall-of-fame.html:384 #: i2p2www/pages/site/about/hall-of-fame.html:385 -#: i2p2www/pages/site/about/hall-of-fame.html:386 #: i2p2www/pages/site/about/hall-of-fame.html:387 #: i2p2www/pages/site/about/hall-of-fame.html:388 -#: i2p2www/pages/site/about/hall-of-fame.html:389 -#: i2p2www/pages/site/about/hall-of-fame.html:390 -#: i2p2www/pages/site/about/hall-of-fame.html:391 -#: i2p2www/pages/site/about/hall-of-fame.html:392 -#: i2p2www/pages/site/about/hall-of-fame.html:393 -#: i2p2www/pages/site/about/hall-of-fame.html:394 -#: i2p2www/pages/site/about/hall-of-fame.html:395 -#: i2p2www/pages/site/about/hall-of-fame.html:396 -#: i2p2www/pages/site/about/hall-of-fame.html:397 -#: i2p2www/pages/site/about/hall-of-fame.html:398 -#: i2p2www/pages/site/about/hall-of-fame.html:399 #: i2p2www/pages/site/about/hall-of-fame.html:401 #: i2p2www/pages/site/about/hall-of-fame.html:402 #: i2p2www/pages/site/about/hall-of-fame.html:403 @@ -495,15 +460,20 @@ msgstr "Balance actuelle : en date de %(date)s" #: i2p2www/pages/site/about/hall-of-fame.html:406 #: i2p2www/pages/site/about/hall-of-fame.html:407 #: i2p2www/pages/site/about/hall-of-fame.html:408 +#: i2p2www/pages/site/about/hall-of-fame.html:409 #: i2p2www/pages/site/about/hall-of-fame.html:410 #: i2p2www/pages/site/about/hall-of-fame.html:411 #: i2p2www/pages/site/about/hall-of-fame.html:412 +#: i2p2www/pages/site/about/hall-of-fame.html:413 #: i2p2www/pages/site/about/hall-of-fame.html:414 #: i2p2www/pages/site/about/hall-of-fame.html:415 #: i2p2www/pages/site/about/hall-of-fame.html:416 #: i2p2www/pages/site/about/hall-of-fame.html:417 #: i2p2www/pages/site/about/hall-of-fame.html:418 +#: i2p2www/pages/site/about/hall-of-fame.html:419 #: i2p2www/pages/site/about/hall-of-fame.html:420 +#: i2p2www/pages/site/about/hall-of-fame.html:421 +#: i2p2www/pages/site/about/hall-of-fame.html:422 #: i2p2www/pages/site/about/hall-of-fame.html:423 #: i2p2www/pages/site/about/hall-of-fame.html:424 #: i2p2www/pages/site/about/hall-of-fame.html:425 @@ -517,39 +487,70 @@ msgstr "Balance actuelle : en date de %(date)s" #: i2p2www/pages/site/about/hall-of-fame.html:433 #: i2p2www/pages/site/about/hall-of-fame.html:434 #: i2p2www/pages/site/about/hall-of-fame.html:435 -#: i2p2www/pages/site/about/hall-of-fame.html:436 +#: i2p2www/pages/site/about/hall-of-fame.html:437 #: i2p2www/pages/site/about/hall-of-fame.html:438 #: i2p2www/pages/site/about/hall-of-fame.html:439 #: i2p2www/pages/site/about/hall-of-fame.html:440 +#: i2p2www/pages/site/about/hall-of-fame.html:441 #: i2p2www/pages/site/about/hall-of-fame.html:442 -#: i2p2www/pages/site/about/hall-of-fame.html:445 +#: i2p2www/pages/site/about/hall-of-fame.html:443 +#: i2p2www/pages/site/about/hall-of-fame.html:444 #: i2p2www/pages/site/about/hall-of-fame.html:446 #: i2p2www/pages/site/about/hall-of-fame.html:447 #: i2p2www/pages/site/about/hall-of-fame.html:448 -#: i2p2www/pages/site/about/hall-of-fame.html:449 #: i2p2www/pages/site/about/hall-of-fame.html:450 #: i2p2www/pages/site/about/hall-of-fame.html:451 #: i2p2www/pages/site/about/hall-of-fame.html:452 #: i2p2www/pages/site/about/hall-of-fame.html:453 #: i2p2www/pages/site/about/hall-of-fame.html:454 -#: i2p2www/pages/site/about/hall-of-fame.html:455 #: i2p2www/pages/site/about/hall-of-fame.html:456 -#: i2p2www/pages/site/about/hall-of-fame.html:457 -#: i2p2www/pages/site/about/hall-of-fame.html:458 #: i2p2www/pages/site/about/hall-of-fame.html:459 #: i2p2www/pages/site/about/hall-of-fame.html:460 #: i2p2www/pages/site/about/hall-of-fame.html:461 #: i2p2www/pages/site/about/hall-of-fame.html:462 #: i2p2www/pages/site/about/hall-of-fame.html:463 +#: i2p2www/pages/site/about/hall-of-fame.html:464 #: i2p2www/pages/site/about/hall-of-fame.html:465 #: i2p2www/pages/site/about/hall-of-fame.html:466 #: i2p2www/pages/site/about/hall-of-fame.html:467 +#: i2p2www/pages/site/about/hall-of-fame.html:468 +#: i2p2www/pages/site/about/hall-of-fame.html:469 +#: i2p2www/pages/site/about/hall-of-fame.html:470 +#: i2p2www/pages/site/about/hall-of-fame.html:471 +#: i2p2www/pages/site/about/hall-of-fame.html:472 +#: i2p2www/pages/site/about/hall-of-fame.html:474 +#: i2p2www/pages/site/about/hall-of-fame.html:475 +#: i2p2www/pages/site/about/hall-of-fame.html:476 +#: i2p2www/pages/site/about/hall-of-fame.html:478 +#: i2p2www/pages/site/about/hall-of-fame.html:481 +#: i2p2www/pages/site/about/hall-of-fame.html:482 +#: i2p2www/pages/site/about/hall-of-fame.html:483 +#: i2p2www/pages/site/about/hall-of-fame.html:484 +#: i2p2www/pages/site/about/hall-of-fame.html:485 +#: i2p2www/pages/site/about/hall-of-fame.html:486 +#: i2p2www/pages/site/about/hall-of-fame.html:487 +#: i2p2www/pages/site/about/hall-of-fame.html:488 +#: i2p2www/pages/site/about/hall-of-fame.html:489 +#: i2p2www/pages/site/about/hall-of-fame.html:490 +#: i2p2www/pages/site/about/hall-of-fame.html:491 +#: i2p2www/pages/site/about/hall-of-fame.html:492 +#: i2p2www/pages/site/about/hall-of-fame.html:493 +#: i2p2www/pages/site/about/hall-of-fame.html:494 +#: i2p2www/pages/site/about/hall-of-fame.html:495 +#: i2p2www/pages/site/about/hall-of-fame.html:496 +#: i2p2www/pages/site/about/hall-of-fame.html:497 +#: i2p2www/pages/site/about/hall-of-fame.html:498 +#: i2p2www/pages/site/about/hall-of-fame.html:499 +#: i2p2www/pages/site/about/hall-of-fame.html:501 +#: i2p2www/pages/site/about/hall-of-fame.html:502 +#: i2p2www/pages/site/about/hall-of-fame.html:503 msgid "General fund" msgstr "Fond général" #: i2p2www/pages/site/about/hall-of-fame.html:10 #: i2p2www/pages/site/about/hall-of-fame.html:12 #: i2p2www/pages/site/about/hall-of-fame.html:14 +#: i2p2www/pages/site/about/hall-of-fame.html:20 #, python-format msgid "%(euroval)s € and %(btcval)s BTC" msgstr "%(euroval)s € and %(btcval)s BTC" @@ -581,11 +582,6 @@ msgstr "I2P dans les miroirs debian" msgid "Bitcoin client for I2P" msgstr "Client Bitcoin pour I2P" -#: i2p2www/pages/site/about/hall-of-fame.html:20 -#, python-format -msgid "%(btcval)s BTC" -msgstr "%(btcval)s BTC" - #: i2p2www/pages/site/about/hall-of-fame.html:21 msgid "Unit Tests for I2P router" msgstr "" @@ -630,15 +626,15 @@ msgstr "Abonnements mensuels actuels :" msgid "2013 donations and costs:" msgstr "2013 dons et coûts :" -#: i2p2www/pages/site/about/hall-of-fame.html:134 +#: i2p2www/pages/site/about/hall-of-fame.html:170 msgid "2012 donations and costs:" msgstr "2012 dons et coûts :" -#: i2p2www/pages/site/about/hall-of-fame.html:262 +#: i2p2www/pages/site/about/hall-of-fame.html:298 msgid "2011 donations and costs:" msgstr "2011 dons et coûts :" -#: i2p2www/pages/site/about/hall-of-fame.html:363 +#: i2p2www/pages/site/about/hall-of-fame.html:399 msgid "Previous to 2011 donations:" msgstr "Donations précédentes à 2011 :" diff --git a/i2p2www/translations/fr/LC_MESSAGES/blog.po b/i2p2www/translations/fr/LC_MESSAGES/blog.po index b753f370..ba16f204 100644 --- a/i2p2www/translations/fr/LC_MESSAGES/blog.po +++ b/i2p2www/translations/fr/LC_MESSAGES/blog.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-15 21:25+0000\n" +"POT-Creation-Date: 2013-08-29 06:46+0000\n" "PO-Revision-Date: 2013-08-12 10:32+0000\n" "Last-Translator: str4d \n" "Language-Team: French " diff --git a/i2p2www/translations/fr/LC_MESSAGES/comparison.po b/i2p2www/translations/fr/LC_MESSAGES/comparison.po index 089ba83d..036c137e 100644 --- a/i2p2www/translations/fr/LC_MESSAGES/comparison.po +++ b/i2p2www/translations/fr/LC_MESSAGES/comparison.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-15 21:25+0000\n" +"POT-Creation-Date: 2013-08-29 06:46+0000\n" "PO-Revision-Date: 2013-06-29 11:32+0000\n" "Last-Translator: Boxoa590\n" "Language-Team: French " diff --git a/i2p2www/translations/fr/LC_MESSAGES/docs.po b/i2p2www/translations/fr/LC_MESSAGES/docs.po index e533ed4e..25e52e0e 100644 --- a/i2p2www/translations/fr/LC_MESSAGES/docs.po +++ b/i2p2www/translations/fr/LC_MESSAGES/docs.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-15 21:25+0000\n" +"POT-Creation-Date: 2013-08-29 06:46+0000\n" "PO-Revision-Date: 2013-08-12 10:33+0000\n" "Last-Translator: str4d \n" "Language-Team: French " @@ -3836,82 +3836,82 @@ msgid "Email" msgstr "" #: i2p2www/pages/site/docs/applications/supported.html:26 -#: i2p2www/pages/site/docs/applications/supported.html:315 +#: i2p2www/pages/site/docs/applications/supported.html:328 msgid "File Sharing" msgstr "" #: i2p2www/pages/site/docs/applications/supported.html:29 -#: i2p2www/pages/site/docs/applications/supported.html:317 +#: i2p2www/pages/site/docs/applications/supported.html:330 msgid "BitTorrent clients" msgstr "" #: i2p2www/pages/site/docs/applications/supported.html:31 -#: i2p2www/pages/site/docs/applications/supported.html:359 +#: i2p2www/pages/site/docs/applications/supported.html:372 msgid "BitTorrent trackers and indexers" msgstr "" #: i2p2www/pages/site/docs/applications/supported.html:40 -#: i2p2www/pages/site/docs/applications/supported.html:426 +#: i2p2www/pages/site/docs/applications/supported.html:439 msgid "Network Administration" msgstr "" #: i2p2www/pages/site/docs/applications/supported.html:43 -#: i2p2www/pages/site/docs/applications/supported.html:428 +#: i2p2www/pages/site/docs/applications/supported.html:441 msgid "General-purpose socket utilities" msgstr "" #: i2p2www/pages/site/docs/applications/supported.html:50 -#: i2p2www/pages/site/docs/applications/supported.html:469 +#: i2p2www/pages/site/docs/applications/supported.html:482 msgid "Real-time Chat" msgstr "" #: i2p2www/pages/site/docs/applications/supported.html:53 -#: i2p2www/pages/site/docs/applications/supported.html:471 +#: i2p2www/pages/site/docs/applications/supported.html:484 msgid "Instant messaging clients" msgstr "" #: i2p2www/pages/site/docs/applications/supported.html:55 -#: i2p2www/pages/site/docs/applications/supported.html:481 +#: i2p2www/pages/site/docs/applications/supported.html:494 msgid "IRC clients" msgstr "" #: i2p2www/pages/site/docs/applications/supported.html:57 -#: i2p2www/pages/site/docs/applications/supported.html:532 +#: i2p2www/pages/site/docs/applications/supported.html:545 msgid "IRC servers" msgstr "" #: i2p2www/pages/site/docs/applications/supported.html:62 -#: i2p2www/pages/site/docs/applications/supported.html:548 +#: i2p2www/pages/site/docs/applications/supported.html:561 msgid "Web Browsing" msgstr "" #: i2p2www/pages/site/docs/applications/supported.html:65 -#: i2p2www/pages/site/docs/applications/supported.html:550 +#: i2p2www/pages/site/docs/applications/supported.html:563 msgid "Anonymous websites" msgstr "" #: i2p2www/pages/site/docs/applications/supported.html:67 -#: i2p2www/pages/site/docs/applications/supported.html:599 +#: i2p2www/pages/site/docs/applications/supported.html:612 msgid "Proxy software" msgstr "" #: i2p2www/pages/site/docs/applications/supported.html:69 -#: i2p2www/pages/site/docs/applications/supported.html:624 +#: i2p2www/pages/site/docs/applications/supported.html:637 msgid "Inproxies" msgstr "" #: i2p2www/pages/site/docs/applications/supported.html:71 -#: i2p2www/pages/site/docs/applications/supported.html:640 +#: i2p2www/pages/site/docs/applications/supported.html:653 msgid "Outproxies" msgstr "" #: i2p2www/pages/site/docs/applications/supported.html:76 -#: i2p2www/pages/site/docs/applications/supported.html:654 +#: i2p2www/pages/site/docs/applications/supported.html:667 msgid "Website Hosting" msgstr "" #: i2p2www/pages/site/docs/applications/supported.html:79 -#: i2p2www/pages/site/docs/applications/supported.html:669 +#: i2p2www/pages/site/docs/applications/supported.html:682 msgid "Web servers" msgstr "" @@ -3934,8 +3934,8 @@ msgstr "" #: i2p2www/pages/site/docs/applications/supported.html:97 #: i2p2www/pages/site/docs/applications/supported.html:279 #: i2p2www/pages/site/docs/applications/supported.html:311 -#: i2p2www/pages/site/docs/applications/supported.html:323 -#: i2p2www/pages/site/docs/applications/supported.html:666 +#: i2p2www/pages/site/docs/applications/supported.html:336 +#: i2p2www/pages/site/docs/applications/supported.html:679 msgid "bundled" msgstr "" @@ -3953,10 +3953,10 @@ msgstr "" #: i2p2www/pages/site/docs/applications/supported.html:228 #: i2p2www/pages/site/docs/applications/supported.html:241 #: i2p2www/pages/site/docs/applications/supported.html:292 -#: i2p2www/pages/site/docs/applications/supported.html:391 -#: i2p2www/pages/site/docs/applications/supported.html:413 -#: i2p2www/pages/site/docs/applications/supported.html:422 -#: i2p2www/pages/site/docs/applications/supported.html:510 +#: i2p2www/pages/site/docs/applications/supported.html:404 +#: i2p2www/pages/site/docs/applications/supported.html:426 +#: i2p2www/pages/site/docs/applications/supported.html:435 +#: i2p2www/pages/site/docs/applications/supported.html:523 msgid "plugin" msgstr "" @@ -3976,30 +3976,31 @@ msgstr "" #: i2p2www/pages/site/docs/applications/supported.html:241 #: i2p2www/pages/site/docs/applications/supported.html:252 #: i2p2www/pages/site/docs/applications/supported.html:261 -#: i2p2www/pages/site/docs/applications/supported.html:329 -#: i2p2www/pages/site/docs/applications/supported.html:340 -#: i2p2www/pages/site/docs/applications/supported.html:355 -#: i2p2www/pages/site/docs/applications/supported.html:401 -#: i2p2www/pages/site/docs/applications/supported.html:413 -#: i2p2www/pages/site/docs/applications/supported.html:422 -#: i2p2www/pages/site/docs/applications/supported.html:437 -#: i2p2www/pages/site/docs/applications/supported.html:443 -#: i2p2www/pages/site/docs/applications/supported.html:449 -#: i2p2www/pages/site/docs/applications/supported.html:459 -#: i2p2www/pages/site/docs/applications/supported.html:465 -#: i2p2www/pages/site/docs/applications/supported.html:477 -#: i2p2www/pages/site/docs/applications/supported.html:510 -#: i2p2www/pages/site/docs/applications/supported.html:516 -#: i2p2www/pages/site/docs/applications/supported.html:522 -#: i2p2www/pages/site/docs/applications/supported.html:528 -#: i2p2www/pages/site/docs/applications/supported.html:605 -#: i2p2www/pages/site/docs/applications/supported.html:614 -#: i2p2www/pages/site/docs/applications/supported.html:620 -#: i2p2www/pages/site/docs/applications/supported.html:666 -#: i2p2www/pages/site/docs/applications/supported.html:681 -#: i2p2www/pages/site/docs/applications/supported.html:687 -#: i2p2www/pages/site/docs/applications/supported.html:693 -#: i2p2www/pages/site/docs/applications/supported.html:699 +#: i2p2www/pages/site/docs/applications/supported.html:324 +#: i2p2www/pages/site/docs/applications/supported.html:342 +#: i2p2www/pages/site/docs/applications/supported.html:353 +#: i2p2www/pages/site/docs/applications/supported.html:368 +#: i2p2www/pages/site/docs/applications/supported.html:414 +#: i2p2www/pages/site/docs/applications/supported.html:426 +#: i2p2www/pages/site/docs/applications/supported.html:435 +#: i2p2www/pages/site/docs/applications/supported.html:450 +#: i2p2www/pages/site/docs/applications/supported.html:456 +#: i2p2www/pages/site/docs/applications/supported.html:462 +#: i2p2www/pages/site/docs/applications/supported.html:472 +#: i2p2www/pages/site/docs/applications/supported.html:478 +#: i2p2www/pages/site/docs/applications/supported.html:490 +#: i2p2www/pages/site/docs/applications/supported.html:523 +#: i2p2www/pages/site/docs/applications/supported.html:529 +#: i2p2www/pages/site/docs/applications/supported.html:535 +#: i2p2www/pages/site/docs/applications/supported.html:541 +#: i2p2www/pages/site/docs/applications/supported.html:618 +#: i2p2www/pages/site/docs/applications/supported.html:627 +#: i2p2www/pages/site/docs/applications/supported.html:633 +#: i2p2www/pages/site/docs/applications/supported.html:679 +#: i2p2www/pages/site/docs/applications/supported.html:694 +#: i2p2www/pages/site/docs/applications/supported.html:700 +#: i2p2www/pages/site/docs/applications/supported.html:706 +#: i2p2www/pages/site/docs/applications/supported.html:712 msgid "standalone" msgstr "" @@ -4008,11 +4009,11 @@ msgstr "" #: i2p2www/pages/site/docs/applications/supported.html:202 #: i2p2www/pages/site/docs/applications/supported.html:208 #: i2p2www/pages/site/docs/applications/supported.html:214 -#: i2p2www/pages/site/docs/applications/supported.html:349 -#: i2p2www/pages/site/docs/applications/supported.html:373 -#: i2p2www/pages/site/docs/applications/supported.html:382 -#: i2p2www/pages/site/docs/applications/supported.html:538 -#: i2p2www/pages/site/docs/applications/supported.html:544 +#: i2p2www/pages/site/docs/applications/supported.html:362 +#: i2p2www/pages/site/docs/applications/supported.html:386 +#: i2p2www/pages/site/docs/applications/supported.html:395 +#: i2p2www/pages/site/docs/applications/supported.html:551 +#: i2p2www/pages/site/docs/applications/supported.html:557 msgid "standalone/mod" msgstr "" @@ -4029,14 +4030,14 @@ msgstr "" #: i2p2www/pages/site/docs/applications/supported.html:135 #: i2p2www/pages/site/docs/applications/supported.html:302 -#: i2p2www/pages/site/docs/applications/supported.html:558 -#: i2p2www/pages/site/docs/applications/supported.html:568 -#: i2p2www/pages/site/docs/applications/supported.html:577 -#: i2p2www/pages/site/docs/applications/supported.html:583 -#: i2p2www/pages/site/docs/applications/supported.html:589 -#: i2p2www/pages/site/docs/applications/supported.html:595 -#: i2p2www/pages/site/docs/applications/supported.html:636 -#: i2p2www/pages/site/docs/applications/supported.html:650 +#: i2p2www/pages/site/docs/applications/supported.html:571 +#: i2p2www/pages/site/docs/applications/supported.html:581 +#: i2p2www/pages/site/docs/applications/supported.html:590 +#: i2p2www/pages/site/docs/applications/supported.html:596 +#: i2p2www/pages/site/docs/applications/supported.html:602 +#: i2p2www/pages/site/docs/applications/supported.html:608 +#: i2p2www/pages/site/docs/applications/supported.html:649 +#: i2p2www/pages/site/docs/applications/supported.html:663 msgid "service" msgstr "" @@ -4052,7 +4053,7 @@ msgstr "" #: i2p2www/pages/site/docs/applications/supported.html:148 #: i2p2www/pages/site/docs/applications/supported.html:220 -#: i2p2www/pages/site/docs/applications/supported.html:355 +#: i2p2www/pages/site/docs/applications/supported.html:368 msgid "unmaintained" msgstr "" @@ -4180,15 +4181,24 @@ msgid "" "email service by default." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:322 +#: i2p2www/pages/site/docs/applications/supported.html:316 +#, python-format +msgid "" +"Can be configured to use Postman's email service. See\n" +"this comparison of MUAs,\n" +"and configuration settings for\n" +"SMTP and POP3." +msgstr "" + +#: i2p2www/pages/site/docs/applications/supported.html:335 msgid "I2P's integrated BitTorrent client." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:328 +#: i2p2www/pages/site/docs/applications/supported.html:341 msgid "Modified version of I2PSnark." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:334 +#: i2p2www/pages/site/docs/applications/supported.html:347 msgid "" "\n" "A fork of rufus that uses the Basic Open Bridge (BOB) and has many\n" @@ -4197,49 +4207,49 @@ msgid "" "magnet-link like fetching of torrents within I2P.\n" msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:345 +#: i2p2www/pages/site/docs/applications/supported.html:358 msgid "" "Clean, full-featured cross-platform BitTorrent client with official\n" "ports for several GUI toolkits." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:354 +#: i2p2www/pages/site/docs/applications/supported.html:367 msgid "Has a plugin providing I2P support." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:361 +#: i2p2www/pages/site/docs/applications/supported.html:374 #, python-format msgid "" "For a detailed feature comparison of I2P-enabled trackers/indexers, see\n" "here." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:369 +#: i2p2www/pages/site/docs/applications/supported.html:382 msgid "" "The code that powered one of the first major tracker/indexer sites on the" "\n" "Internet. Patched for I2P." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:378 +#: i2p2www/pages/site/docs/applications/supported.html:391 #, python-format msgid "" "Lightweight tracker/indexer. I2P mod available in the i2p.opentracker\n" "branch of the I2P Monotone repository." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:387 +#: i2p2www/pages/site/docs/applications/supported.html:400 #, python-format msgid "" "zzz's Java-based open tracker. More info\n" "here." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:400 +#: i2p2www/pages/site/docs/applications/supported.html:413 msgid "I2P port of the aMule ED2K client." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:409 +#: i2p2www/pages/site/docs/applications/supported.html:422 #, python-format msgid "" "Port of the Phex Gnutella " @@ -4247,44 +4257,44 @@ msgid "" "for plugin version here." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:418 +#: i2p2www/pages/site/docs/applications/supported.html:431 #, python-format msgid "" "Cache for Gnutella peers on I2P. Website for plugin version\n" "here." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:433 +#: i2p2www/pages/site/docs/applications/supported.html:446 msgid "" "Unix standard tool for socket relaying. Several clones, ports, and forks\n" "have appeared over the years." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:442 +#: i2p2www/pages/site/docs/applications/supported.html:455 msgid "Like netcat but more powerful." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:448 +#: i2p2www/pages/site/docs/applications/supported.html:461 msgid "" "Proxy providing simple, transparent SOCKS-ification of network " "applications." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:458 +#: i2p2www/pages/site/docs/applications/supported.html:471 msgid "" "Most popular implementation of the Secure Shell (SSH) protocol and " "related tools." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:464 +#: i2p2www/pages/site/docs/applications/supported.html:477 msgid "Open source Secure Shell (SSH) client for Windows." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:476 +#: i2p2www/pages/site/docs/applications/supported.html:489 msgid "IM client with multiple incarnations." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:483 +#: i2p2www/pages/site/docs/applications/supported.html:496 msgid "" "Many IRC clients leak identifying information to servers or other\n" "clients, so I2P's IRC and SOCKS IRC client tunnels filter certain inbound" @@ -4301,7 +4311,7 @@ msgid "" "/me command) which isn't inherently dangerous." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:494 +#: i2p2www/pages/site/docs/applications/supported.html:507 msgid "" "I2P's IRC filtering may not cover every possible leak — users should also" "\n" @@ -4314,100 +4324,100 @@ msgid "" "developers; they may be able to solve it via additional filtering." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:506 +#: i2p2www/pages/site/docs/applications/supported.html:519 #, python-format msgid "" "Small Java-based IRC client. Plugin available here." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:515 +#: i2p2www/pages/site/docs/applications/supported.html:528 msgid "Cross-platform graphical IRC client." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:521 +#: i2p2www/pages/site/docs/applications/supported.html:534 msgid "Unixy terminal-based IRC client." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:527 +#: i2p2www/pages/site/docs/applications/supported.html:540 msgid "Another Unixy terminal-based IRC client." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:537 +#: i2p2www/pages/site/docs/applications/supported.html:550 msgid "IRC server developed from scratch." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:543 +#: i2p2www/pages/site/docs/applications/supported.html:556 msgid "Most popular IRC server." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:555 +#: i2p2www/pages/site/docs/applications/supported.html:568 msgid "" "Any website hosted anonymously on I2P, reachable through the I2P router's" " HTTP proxy." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:563 +#: i2p2www/pages/site/docs/applications/supported.html:576 msgid "" "Distributed anonymous websites hosted\n" "using Tahoe-LAFS-I2P, currently only reachable with Tahoe-LAFS-I2P\n" "clients or through the Tahoe-LAFS-I2P HTTP proxy." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:573 +#: i2p2www/pages/site/docs/applications/supported.html:586 #, python-format msgid "" "Website for sponge's jump service.\n" "Source code available." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:582 +#: i2p2www/pages/site/docs/applications/supported.html:595 msgid "Another jump service." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:588 +#: i2p2www/pages/site/docs/applications/supported.html:601 msgid "Dynamically updated eepsite index." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:594 +#: i2p2www/pages/site/docs/applications/supported.html:607 #, python-format msgid "Website for zzz's jump service." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:604 +#: i2p2www/pages/site/docs/applications/supported.html:617 msgid "SOCKS-enabled caching web proxy with basic filtering capabilities." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:610 +#: i2p2www/pages/site/docs/applications/supported.html:623 msgid "" "Privacy-focused non-caching web proxy with advanced filtering\n" "capabilities. Excels at removing ads and other junk." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:619 +#: i2p2www/pages/site/docs/applications/supported.html:632 msgid "Venerable caching web proxy." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:626 +#: i2p2www/pages/site/docs/applications/supported.html:639 msgid "Gateways allowing users on the public Internet to access eepsites." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:633 +#: i2p2www/pages/site/docs/applications/supported.html:646 #, python-format msgid "tino's inproxy on the public Internet." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:642 +#: i2p2www/pages/site/docs/applications/supported.html:655 msgid "" "Gateways allowing I2P users to access content hosted on the public " "Internet." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:649 +#: i2p2www/pages/site/docs/applications/supported.html:662 msgid "Publicly advertised outproxy running Squid, located in Germany." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:659 +#: i2p2www/pages/site/docs/applications/supported.html:672 msgid "" "Lightweight web server and Java servlet container. I2P is tightly\n" "integrated with a bundled copy of Jetty which by default is configured to" @@ -4419,26 +4429,26 @@ msgid "" "I2P." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:671 +#: i2p2www/pages/site/docs/applications/supported.html:684 msgid "" "In addition to Jetty, any web server should function over I2P without\n" "modification so long as it's HTTP-compliant. Some web servers known to\n" "currently serve content on the I2P network are:" msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:680 +#: i2p2www/pages/site/docs/applications/supported.html:693 msgid "Most popular web server on the public WWW." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:686 +#: i2p2www/pages/site/docs/applications/supported.html:699 msgid "Web server and Java servlet container. More features than Jetty." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:692 +#: i2p2www/pages/site/docs/applications/supported.html:705 msgid "Fast lightweight web server." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:698 +#: i2p2www/pages/site/docs/applications/supported.html:711 msgid "High-performance lightweight web server." msgstr "" diff --git a/i2p2www/translations/fr/LC_MESSAGES/get-involved.po b/i2p2www/translations/fr/LC_MESSAGES/get-involved.po index ae951495..7f49a58c 100644 --- a/i2p2www/translations/fr/LC_MESSAGES/get-involved.po +++ b/i2p2www/translations/fr/LC_MESSAGES/get-involved.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-23 12:28+0000\n" +"POT-Creation-Date: 2013-08-29 06:47+0000\n" "PO-Revision-Date: 2013-08-11 15:29+0000\n" "Last-Translator: Boxoa590\n" "Language-Team: French " diff --git a/i2p2www/translations/fr/LC_MESSAGES/misc.po b/i2p2www/translations/fr/LC_MESSAGES/misc.po index f8a26f63..4c349904 100644 --- a/i2p2www/translations/fr/LC_MESSAGES/misc.po +++ b/i2p2www/translations/fr/LC_MESSAGES/misc.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-15 21:25+0000\n" +"POT-Creation-Date: 2013-08-29 06:47+0000\n" "PO-Revision-Date: 2013-06-29 11:32+0000\n" "Last-Translator: Boxoa590\n" "Language-Team: French " diff --git a/i2p2www/translations/fr/LC_MESSAGES/priority.po b/i2p2www/translations/fr/LC_MESSAGES/priority.po index 736b46f8..e516e56b 100644 --- a/i2p2www/translations/fr/LC_MESSAGES/priority.po +++ b/i2p2www/translations/fr/LC_MESSAGES/priority.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-15 21:25+0000\n" +"POT-Creation-Date: 2013-08-29 06:47+0000\n" "PO-Revision-Date: 2013-08-12 10:34+0000\n" "Last-Translator: str4d \n" "Language-Team: French " diff --git a/i2p2www/translations/fr/LC_MESSAGES/research.po b/i2p2www/translations/fr/LC_MESSAGES/research.po index 8b5b1c9a..a3d81781 100644 --- a/i2p2www/translations/fr/LC_MESSAGES/research.po +++ b/i2p2www/translations/fr/LC_MESSAGES/research.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-15 21:25+0000\n" +"POT-Creation-Date: 2013-08-29 06:47+0000\n" "PO-Revision-Date: 2013-08-11 14:55+0000\n" "Last-Translator: Boxoa590\n" "Language-Team: French " diff --git a/i2p2www/translations/pt/LC_MESSAGES/priority.po b/i2p2www/translations/pt/LC_MESSAGES/priority.po index a8323b61..6e4d2653 100644 --- a/i2p2www/translations/pt/LC_MESSAGES/priority.po +++ b/i2p2www/translations/pt/LC_MESSAGES/priority.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-15 21:25+0000\n" +"POT-Creation-Date: 2013-08-29 06:47+0000\n" "PO-Revision-Date: 2013-08-12 10:34+0000\n" "Last-Translator: str4d \n" "Language-Team: Portuguese " diff --git a/i2p2www/translations/sv_SE/LC_MESSAGES/about.po b/i2p2www/translations/sv_SE/LC_MESSAGES/about.po index 9f774840..91024200 100644 --- a/i2p2www/translations/sv_SE/LC_MESSAGES/about.po +++ b/i2p2www/translations/sv_SE/LC_MESSAGES/about.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-15 21:25+0000\n" +"POT-Creation-Date: 2013-08-29 06:46+0000\n" "PO-Revision-Date: 2013-04-27 23:10+0000\n" "Last-Translator: Martin Svensson \n" "Language-Team: Swedish (Sweden) " @@ -213,52 +213,24 @@ msgstr "" #: i2p2www/pages/site/about/hall-of-fame.html:9 #: i2p2www/pages/site/about/hall-of-fame.html:47 -#: i2p2www/pages/site/about/hall-of-fame.html:137 -#: i2p2www/pages/site/about/hall-of-fame.html:138 -#: i2p2www/pages/site/about/hall-of-fame.html:139 -#: i2p2www/pages/site/about/hall-of-fame.html:140 -#: i2p2www/pages/site/about/hall-of-fame.html:142 -#: i2p2www/pages/site/about/hall-of-fame.html:143 -#: i2p2www/pages/site/about/hall-of-fame.html:144 -#: i2p2www/pages/site/about/hall-of-fame.html:147 -#: i2p2www/pages/site/about/hall-of-fame.html:148 -#: i2p2www/pages/site/about/hall-of-fame.html:149 -#: i2p2www/pages/site/about/hall-of-fame.html:152 -#: i2p2www/pages/site/about/hall-of-fame.html:153 -#: i2p2www/pages/site/about/hall-of-fame.html:154 -#: i2p2www/pages/site/about/hall-of-fame.html:155 -#: i2p2www/pages/site/about/hall-of-fame.html:156 -#: i2p2www/pages/site/about/hall-of-fame.html:157 -#: i2p2www/pages/site/about/hall-of-fame.html:158 -#: i2p2www/pages/site/about/hall-of-fame.html:159 -#: i2p2www/pages/site/about/hall-of-fame.html:160 -#: i2p2www/pages/site/about/hall-of-fame.html:161 -#: i2p2www/pages/site/about/hall-of-fame.html:162 -#: i2p2www/pages/site/about/hall-of-fame.html:163 -#: i2p2www/pages/site/about/hall-of-fame.html:164 -#: i2p2www/pages/site/about/hall-of-fame.html:167 -#: i2p2www/pages/site/about/hall-of-fame.html:168 -#: i2p2www/pages/site/about/hall-of-fame.html:169 -#: i2p2www/pages/site/about/hall-of-fame.html:170 -#: i2p2www/pages/site/about/hall-of-fame.html:171 -#: i2p2www/pages/site/about/hall-of-fame.html:172 +#: i2p2www/pages/site/about/hall-of-fame.html:173 #: i2p2www/pages/site/about/hall-of-fame.html:174 #: i2p2www/pages/site/about/hall-of-fame.html:175 +#: i2p2www/pages/site/about/hall-of-fame.html:176 #: i2p2www/pages/site/about/hall-of-fame.html:178 #: i2p2www/pages/site/about/hall-of-fame.html:179 #: i2p2www/pages/site/about/hall-of-fame.html:180 -#: i2p2www/pages/site/about/hall-of-fame.html:181 -#: i2p2www/pages/site/about/hall-of-fame.html:182 +#: i2p2www/pages/site/about/hall-of-fame.html:183 #: i2p2www/pages/site/about/hall-of-fame.html:184 #: i2p2www/pages/site/about/hall-of-fame.html:185 -#: i2p2www/pages/site/about/hall-of-fame.html:186 -#: i2p2www/pages/site/about/hall-of-fame.html:187 #: i2p2www/pages/site/about/hall-of-fame.html:188 #: i2p2www/pages/site/about/hall-of-fame.html:189 +#: i2p2www/pages/site/about/hall-of-fame.html:190 #: i2p2www/pages/site/about/hall-of-fame.html:191 #: i2p2www/pages/site/about/hall-of-fame.html:192 #: i2p2www/pages/site/about/hall-of-fame.html:193 #: i2p2www/pages/site/about/hall-of-fame.html:194 +#: i2p2www/pages/site/about/hall-of-fame.html:195 #: i2p2www/pages/site/about/hall-of-fame.html:196 #: i2p2www/pages/site/about/hall-of-fame.html:197 #: i2p2www/pages/site/about/hall-of-fame.html:198 @@ -268,53 +240,55 @@ msgstr "" #: i2p2www/pages/site/about/hall-of-fame.html:204 #: i2p2www/pages/site/about/hall-of-fame.html:205 #: i2p2www/pages/site/about/hall-of-fame.html:206 +#: i2p2www/pages/site/about/hall-of-fame.html:207 #: i2p2www/pages/site/about/hall-of-fame.html:208 -#: i2p2www/pages/site/about/hall-of-fame.html:209 #: i2p2www/pages/site/about/hall-of-fame.html:210 -#: i2p2www/pages/site/about/hall-of-fame.html:212 -#: i2p2www/pages/site/about/hall-of-fame.html:213 +#: i2p2www/pages/site/about/hall-of-fame.html:211 #: i2p2www/pages/site/about/hall-of-fame.html:214 #: i2p2www/pages/site/about/hall-of-fame.html:215 +#: i2p2www/pages/site/about/hall-of-fame.html:216 #: i2p2www/pages/site/about/hall-of-fame.html:217 #: i2p2www/pages/site/about/hall-of-fame.html:218 -#: i2p2www/pages/site/about/hall-of-fame.html:219 #: i2p2www/pages/site/about/hall-of-fame.html:220 #: i2p2www/pages/site/about/hall-of-fame.html:221 +#: i2p2www/pages/site/about/hall-of-fame.html:222 +#: i2p2www/pages/site/about/hall-of-fame.html:223 +#: i2p2www/pages/site/about/hall-of-fame.html:224 +#: i2p2www/pages/site/about/hall-of-fame.html:225 #: i2p2www/pages/site/about/hall-of-fame.html:227 +#: i2p2www/pages/site/about/hall-of-fame.html:228 +#: i2p2www/pages/site/about/hall-of-fame.html:229 #: i2p2www/pages/site/about/hall-of-fame.html:230 -#: i2p2www/pages/site/about/hall-of-fame.html:231 #: i2p2www/pages/site/about/hall-of-fame.html:232 #: i2p2www/pages/site/about/hall-of-fame.html:233 #: i2p2www/pages/site/about/hall-of-fame.html:234 +#: i2p2www/pages/site/about/hall-of-fame.html:235 #: i2p2www/pages/site/about/hall-of-fame.html:236 -#: i2p2www/pages/site/about/hall-of-fame.html:237 -#: i2p2www/pages/site/about/hall-of-fame.html:238 -#: i2p2www/pages/site/about/hall-of-fame.html:243 +#: i2p2www/pages/site/about/hall-of-fame.html:239 +#: i2p2www/pages/site/about/hall-of-fame.html:240 +#: i2p2www/pages/site/about/hall-of-fame.html:241 +#: i2p2www/pages/site/about/hall-of-fame.html:242 #: i2p2www/pages/site/about/hall-of-fame.html:244 #: i2p2www/pages/site/about/hall-of-fame.html:245 #: i2p2www/pages/site/about/hall-of-fame.html:246 -#: i2p2www/pages/site/about/hall-of-fame.html:247 #: i2p2www/pages/site/about/hall-of-fame.html:248 #: i2p2www/pages/site/about/hall-of-fame.html:249 #: i2p2www/pages/site/about/hall-of-fame.html:250 #: i2p2www/pages/site/about/hall-of-fame.html:251 -#: i2p2www/pages/site/about/hall-of-fame.html:252 +#: i2p2www/pages/site/about/hall-of-fame.html:253 #: i2p2www/pages/site/about/hall-of-fame.html:254 #: i2p2www/pages/site/about/hall-of-fame.html:255 -#: i2p2www/pages/site/about/hall-of-fame.html:265 +#: i2p2www/pages/site/about/hall-of-fame.html:256 +#: i2p2www/pages/site/about/hall-of-fame.html:257 +#: i2p2www/pages/site/about/hall-of-fame.html:263 #: i2p2www/pages/site/about/hall-of-fame.html:266 #: i2p2www/pages/site/about/hall-of-fame.html:267 #: i2p2www/pages/site/about/hall-of-fame.html:268 #: i2p2www/pages/site/about/hall-of-fame.html:269 #: i2p2www/pages/site/about/hall-of-fame.html:270 -#: i2p2www/pages/site/about/hall-of-fame.html:271 #: i2p2www/pages/site/about/hall-of-fame.html:272 #: i2p2www/pages/site/about/hall-of-fame.html:273 #: i2p2www/pages/site/about/hall-of-fame.html:274 -#: i2p2www/pages/site/about/hall-of-fame.html:275 -#: i2p2www/pages/site/about/hall-of-fame.html:276 -#: i2p2www/pages/site/about/hall-of-fame.html:277 -#: i2p2www/pages/site/about/hall-of-fame.html:278 #: i2p2www/pages/site/about/hall-of-fame.html:279 #: i2p2www/pages/site/about/hall-of-fame.html:280 #: i2p2www/pages/site/about/hall-of-fame.html:281 @@ -322,36 +296,32 @@ msgstr "" #: i2p2www/pages/site/about/hall-of-fame.html:283 #: i2p2www/pages/site/about/hall-of-fame.html:284 #: i2p2www/pages/site/about/hall-of-fame.html:285 -#: i2p2www/pages/site/about/hall-of-fame.html:289 +#: i2p2www/pages/site/about/hall-of-fame.html:286 +#: i2p2www/pages/site/about/hall-of-fame.html:287 +#: i2p2www/pages/site/about/hall-of-fame.html:288 #: i2p2www/pages/site/about/hall-of-fame.html:290 #: i2p2www/pages/site/about/hall-of-fame.html:291 -#: i2p2www/pages/site/about/hall-of-fame.html:292 -#: i2p2www/pages/site/about/hall-of-fame.html:293 -#: i2p2www/pages/site/about/hall-of-fame.html:294 -#: i2p2www/pages/site/about/hall-of-fame.html:295 -#: i2p2www/pages/site/about/hall-of-fame.html:297 -#: i2p2www/pages/site/about/hall-of-fame.html:298 -#: i2p2www/pages/site/about/hall-of-fame.html:299 -#: i2p2www/pages/site/about/hall-of-fame.html:300 #: i2p2www/pages/site/about/hall-of-fame.html:301 #: i2p2www/pages/site/about/hall-of-fame.html:302 #: i2p2www/pages/site/about/hall-of-fame.html:303 #: i2p2www/pages/site/about/hall-of-fame.html:304 #: i2p2www/pages/site/about/hall-of-fame.html:305 +#: i2p2www/pages/site/about/hall-of-fame.html:306 +#: i2p2www/pages/site/about/hall-of-fame.html:307 #: i2p2www/pages/site/about/hall-of-fame.html:308 #: i2p2www/pages/site/about/hall-of-fame.html:309 #: i2p2www/pages/site/about/hall-of-fame.html:310 #: i2p2www/pages/site/about/hall-of-fame.html:311 #: i2p2www/pages/site/about/hall-of-fame.html:312 +#: i2p2www/pages/site/about/hall-of-fame.html:313 #: i2p2www/pages/site/about/hall-of-fame.html:314 +#: i2p2www/pages/site/about/hall-of-fame.html:315 #: i2p2www/pages/site/about/hall-of-fame.html:316 #: i2p2www/pages/site/about/hall-of-fame.html:317 #: i2p2www/pages/site/about/hall-of-fame.html:318 #: i2p2www/pages/site/about/hall-of-fame.html:319 #: i2p2www/pages/site/about/hall-of-fame.html:320 #: i2p2www/pages/site/about/hall-of-fame.html:321 -#: i2p2www/pages/site/about/hall-of-fame.html:322 -#: i2p2www/pages/site/about/hall-of-fame.html:324 #: i2p2www/pages/site/about/hall-of-fame.html:325 #: i2p2www/pages/site/about/hall-of-fame.html:326 #: i2p2www/pages/site/about/hall-of-fame.html:327 @@ -359,21 +329,33 @@ msgstr "" #: i2p2www/pages/site/about/hall-of-fame.html:329 #: i2p2www/pages/site/about/hall-of-fame.html:330 #: i2p2www/pages/site/about/hall-of-fame.html:331 -#: i2p2www/pages/site/about/hall-of-fame.html:332 #: i2p2www/pages/site/about/hall-of-fame.html:333 #: i2p2www/pages/site/about/hall-of-fame.html:334 #: i2p2www/pages/site/about/hall-of-fame.html:335 #: i2p2www/pages/site/about/hall-of-fame.html:336 #: i2p2www/pages/site/about/hall-of-fame.html:337 +#: i2p2www/pages/site/about/hall-of-fame.html:338 #: i2p2www/pages/site/about/hall-of-fame.html:339 #: i2p2www/pages/site/about/hall-of-fame.html:340 #: i2p2www/pages/site/about/hall-of-fame.html:341 #: i2p2www/pages/site/about/hall-of-fame.html:344 #: i2p2www/pages/site/about/hall-of-fame.html:345 +#: i2p2www/pages/site/about/hall-of-fame.html:346 +#: i2p2www/pages/site/about/hall-of-fame.html:347 #: i2p2www/pages/site/about/hall-of-fame.html:348 -#: i2p2www/pages/site/about/hall-of-fame.html:349 -#: i2p2www/pages/site/about/hall-of-fame.html:351 +#: i2p2www/pages/site/about/hall-of-fame.html:350 #: i2p2www/pages/site/about/hall-of-fame.html:352 +#: i2p2www/pages/site/about/hall-of-fame.html:353 +#: i2p2www/pages/site/about/hall-of-fame.html:354 +#: i2p2www/pages/site/about/hall-of-fame.html:355 +#: i2p2www/pages/site/about/hall-of-fame.html:356 +#: i2p2www/pages/site/about/hall-of-fame.html:357 +#: i2p2www/pages/site/about/hall-of-fame.html:358 +#: i2p2www/pages/site/about/hall-of-fame.html:360 +#: i2p2www/pages/site/about/hall-of-fame.html:361 +#: i2p2www/pages/site/about/hall-of-fame.html:362 +#: i2p2www/pages/site/about/hall-of-fame.html:363 +#: i2p2www/pages/site/about/hall-of-fame.html:364 #: i2p2www/pages/site/about/hall-of-fame.html:365 #: i2p2www/pages/site/about/hall-of-fame.html:366 #: i2p2www/pages/site/about/hall-of-fame.html:367 @@ -383,32 +365,15 @@ msgstr "" #: i2p2www/pages/site/about/hall-of-fame.html:371 #: i2p2www/pages/site/about/hall-of-fame.html:372 #: i2p2www/pages/site/about/hall-of-fame.html:373 -#: i2p2www/pages/site/about/hall-of-fame.html:374 #: i2p2www/pages/site/about/hall-of-fame.html:375 #: i2p2www/pages/site/about/hall-of-fame.html:376 #: i2p2www/pages/site/about/hall-of-fame.html:377 -#: i2p2www/pages/site/about/hall-of-fame.html:378 -#: i2p2www/pages/site/about/hall-of-fame.html:379 #: i2p2www/pages/site/about/hall-of-fame.html:380 #: i2p2www/pages/site/about/hall-of-fame.html:381 -#: i2p2www/pages/site/about/hall-of-fame.html:382 -#: i2p2www/pages/site/about/hall-of-fame.html:383 #: i2p2www/pages/site/about/hall-of-fame.html:384 #: i2p2www/pages/site/about/hall-of-fame.html:385 -#: i2p2www/pages/site/about/hall-of-fame.html:386 #: i2p2www/pages/site/about/hall-of-fame.html:387 #: i2p2www/pages/site/about/hall-of-fame.html:388 -#: i2p2www/pages/site/about/hall-of-fame.html:389 -#: i2p2www/pages/site/about/hall-of-fame.html:390 -#: i2p2www/pages/site/about/hall-of-fame.html:391 -#: i2p2www/pages/site/about/hall-of-fame.html:392 -#: i2p2www/pages/site/about/hall-of-fame.html:393 -#: i2p2www/pages/site/about/hall-of-fame.html:394 -#: i2p2www/pages/site/about/hall-of-fame.html:395 -#: i2p2www/pages/site/about/hall-of-fame.html:396 -#: i2p2www/pages/site/about/hall-of-fame.html:397 -#: i2p2www/pages/site/about/hall-of-fame.html:398 -#: i2p2www/pages/site/about/hall-of-fame.html:399 #: i2p2www/pages/site/about/hall-of-fame.html:401 #: i2p2www/pages/site/about/hall-of-fame.html:402 #: i2p2www/pages/site/about/hall-of-fame.html:403 @@ -417,15 +382,20 @@ msgstr "" #: i2p2www/pages/site/about/hall-of-fame.html:406 #: i2p2www/pages/site/about/hall-of-fame.html:407 #: i2p2www/pages/site/about/hall-of-fame.html:408 +#: i2p2www/pages/site/about/hall-of-fame.html:409 #: i2p2www/pages/site/about/hall-of-fame.html:410 #: i2p2www/pages/site/about/hall-of-fame.html:411 #: i2p2www/pages/site/about/hall-of-fame.html:412 +#: i2p2www/pages/site/about/hall-of-fame.html:413 #: i2p2www/pages/site/about/hall-of-fame.html:414 #: i2p2www/pages/site/about/hall-of-fame.html:415 #: i2p2www/pages/site/about/hall-of-fame.html:416 #: i2p2www/pages/site/about/hall-of-fame.html:417 #: i2p2www/pages/site/about/hall-of-fame.html:418 +#: i2p2www/pages/site/about/hall-of-fame.html:419 #: i2p2www/pages/site/about/hall-of-fame.html:420 +#: i2p2www/pages/site/about/hall-of-fame.html:421 +#: i2p2www/pages/site/about/hall-of-fame.html:422 #: i2p2www/pages/site/about/hall-of-fame.html:423 #: i2p2www/pages/site/about/hall-of-fame.html:424 #: i2p2www/pages/site/about/hall-of-fame.html:425 @@ -439,39 +409,70 @@ msgstr "" #: i2p2www/pages/site/about/hall-of-fame.html:433 #: i2p2www/pages/site/about/hall-of-fame.html:434 #: i2p2www/pages/site/about/hall-of-fame.html:435 -#: i2p2www/pages/site/about/hall-of-fame.html:436 +#: i2p2www/pages/site/about/hall-of-fame.html:437 #: i2p2www/pages/site/about/hall-of-fame.html:438 #: i2p2www/pages/site/about/hall-of-fame.html:439 #: i2p2www/pages/site/about/hall-of-fame.html:440 +#: i2p2www/pages/site/about/hall-of-fame.html:441 #: i2p2www/pages/site/about/hall-of-fame.html:442 -#: i2p2www/pages/site/about/hall-of-fame.html:445 +#: i2p2www/pages/site/about/hall-of-fame.html:443 +#: i2p2www/pages/site/about/hall-of-fame.html:444 #: i2p2www/pages/site/about/hall-of-fame.html:446 #: i2p2www/pages/site/about/hall-of-fame.html:447 #: i2p2www/pages/site/about/hall-of-fame.html:448 -#: i2p2www/pages/site/about/hall-of-fame.html:449 #: i2p2www/pages/site/about/hall-of-fame.html:450 #: i2p2www/pages/site/about/hall-of-fame.html:451 #: i2p2www/pages/site/about/hall-of-fame.html:452 #: i2p2www/pages/site/about/hall-of-fame.html:453 #: i2p2www/pages/site/about/hall-of-fame.html:454 -#: i2p2www/pages/site/about/hall-of-fame.html:455 #: i2p2www/pages/site/about/hall-of-fame.html:456 -#: i2p2www/pages/site/about/hall-of-fame.html:457 -#: i2p2www/pages/site/about/hall-of-fame.html:458 #: i2p2www/pages/site/about/hall-of-fame.html:459 #: i2p2www/pages/site/about/hall-of-fame.html:460 #: i2p2www/pages/site/about/hall-of-fame.html:461 #: i2p2www/pages/site/about/hall-of-fame.html:462 #: i2p2www/pages/site/about/hall-of-fame.html:463 +#: i2p2www/pages/site/about/hall-of-fame.html:464 #: i2p2www/pages/site/about/hall-of-fame.html:465 #: i2p2www/pages/site/about/hall-of-fame.html:466 #: i2p2www/pages/site/about/hall-of-fame.html:467 +#: i2p2www/pages/site/about/hall-of-fame.html:468 +#: i2p2www/pages/site/about/hall-of-fame.html:469 +#: i2p2www/pages/site/about/hall-of-fame.html:470 +#: i2p2www/pages/site/about/hall-of-fame.html:471 +#: i2p2www/pages/site/about/hall-of-fame.html:472 +#: i2p2www/pages/site/about/hall-of-fame.html:474 +#: i2p2www/pages/site/about/hall-of-fame.html:475 +#: i2p2www/pages/site/about/hall-of-fame.html:476 +#: i2p2www/pages/site/about/hall-of-fame.html:478 +#: i2p2www/pages/site/about/hall-of-fame.html:481 +#: i2p2www/pages/site/about/hall-of-fame.html:482 +#: i2p2www/pages/site/about/hall-of-fame.html:483 +#: i2p2www/pages/site/about/hall-of-fame.html:484 +#: i2p2www/pages/site/about/hall-of-fame.html:485 +#: i2p2www/pages/site/about/hall-of-fame.html:486 +#: i2p2www/pages/site/about/hall-of-fame.html:487 +#: i2p2www/pages/site/about/hall-of-fame.html:488 +#: i2p2www/pages/site/about/hall-of-fame.html:489 +#: i2p2www/pages/site/about/hall-of-fame.html:490 +#: i2p2www/pages/site/about/hall-of-fame.html:491 +#: i2p2www/pages/site/about/hall-of-fame.html:492 +#: i2p2www/pages/site/about/hall-of-fame.html:493 +#: i2p2www/pages/site/about/hall-of-fame.html:494 +#: i2p2www/pages/site/about/hall-of-fame.html:495 +#: i2p2www/pages/site/about/hall-of-fame.html:496 +#: i2p2www/pages/site/about/hall-of-fame.html:497 +#: i2p2www/pages/site/about/hall-of-fame.html:498 +#: i2p2www/pages/site/about/hall-of-fame.html:499 +#: i2p2www/pages/site/about/hall-of-fame.html:501 +#: i2p2www/pages/site/about/hall-of-fame.html:502 +#: i2p2www/pages/site/about/hall-of-fame.html:503 msgid "General fund" msgstr "" #: i2p2www/pages/site/about/hall-of-fame.html:10 #: i2p2www/pages/site/about/hall-of-fame.html:12 #: i2p2www/pages/site/about/hall-of-fame.html:14 +#: i2p2www/pages/site/about/hall-of-fame.html:20 #, python-format msgid "%(euroval)s € and %(btcval)s BTC" msgstr "" @@ -503,11 +504,6 @@ msgstr "" msgid "Bitcoin client for I2P" msgstr "" -#: i2p2www/pages/site/about/hall-of-fame.html:20 -#, python-format -msgid "%(btcval)s BTC" -msgstr "" - #: i2p2www/pages/site/about/hall-of-fame.html:21 msgid "Unit Tests for I2P router" msgstr "" @@ -548,15 +544,15 @@ msgstr "" msgid "2013 donations and costs:" msgstr "" -#: i2p2www/pages/site/about/hall-of-fame.html:134 +#: i2p2www/pages/site/about/hall-of-fame.html:170 msgid "2012 donations and costs:" msgstr "" -#: i2p2www/pages/site/about/hall-of-fame.html:262 +#: i2p2www/pages/site/about/hall-of-fame.html:298 msgid "2011 donations and costs:" msgstr "" -#: i2p2www/pages/site/about/hall-of-fame.html:363 +#: i2p2www/pages/site/about/hall-of-fame.html:399 msgid "Previous to 2011 donations:" msgstr "" diff --git a/i2p2www/translations/sv_SE/LC_MESSAGES/blog.po b/i2p2www/translations/sv_SE/LC_MESSAGES/blog.po index 1519e530..cd14753d 100644 --- a/i2p2www/translations/sv_SE/LC_MESSAGES/blog.po +++ b/i2p2www/translations/sv_SE/LC_MESSAGES/blog.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-15 21:25+0000\n" +"POT-Creation-Date: 2013-08-29 06:46+0000\n" "PO-Revision-Date: 2013-08-12 10:32+0000\n" "Last-Translator: str4d \n" "Language-Team: Swedish (Sweden) " diff --git a/i2p2www/translations/sv_SE/LC_MESSAGES/comparison.po b/i2p2www/translations/sv_SE/LC_MESSAGES/comparison.po index 582c8e1d..64f6ac54 100644 --- a/i2p2www/translations/sv_SE/LC_MESSAGES/comparison.po +++ b/i2p2www/translations/sv_SE/LC_MESSAGES/comparison.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-15 21:25+0000\n" +"POT-Creation-Date: 2013-08-29 06:46+0000\n" "PO-Revision-Date: 2013-04-27 23:10+0000\n" "Last-Translator: Martin Svensson \n" "Language-Team: Swedish (Sweden) " diff --git a/i2p2www/translations/sv_SE/LC_MESSAGES/docs.po b/i2p2www/translations/sv_SE/LC_MESSAGES/docs.po index 85c17a86..c881cc84 100644 --- a/i2p2www/translations/sv_SE/LC_MESSAGES/docs.po +++ b/i2p2www/translations/sv_SE/LC_MESSAGES/docs.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-15 21:25+0000\n" +"POT-Creation-Date: 2013-08-29 06:46+0000\n" "PO-Revision-Date: 2013-04-27 23:10+0000\n" "Last-Translator: Martin Svensson \n" "Language-Team: Swedish (Sweden) " @@ -3832,82 +3832,82 @@ msgid "Email" msgstr "" #: i2p2www/pages/site/docs/applications/supported.html:26 -#: i2p2www/pages/site/docs/applications/supported.html:315 +#: i2p2www/pages/site/docs/applications/supported.html:328 msgid "File Sharing" msgstr "" #: i2p2www/pages/site/docs/applications/supported.html:29 -#: i2p2www/pages/site/docs/applications/supported.html:317 +#: i2p2www/pages/site/docs/applications/supported.html:330 msgid "BitTorrent clients" msgstr "" #: i2p2www/pages/site/docs/applications/supported.html:31 -#: i2p2www/pages/site/docs/applications/supported.html:359 +#: i2p2www/pages/site/docs/applications/supported.html:372 msgid "BitTorrent trackers and indexers" msgstr "" #: i2p2www/pages/site/docs/applications/supported.html:40 -#: i2p2www/pages/site/docs/applications/supported.html:426 +#: i2p2www/pages/site/docs/applications/supported.html:439 msgid "Network Administration" msgstr "" #: i2p2www/pages/site/docs/applications/supported.html:43 -#: i2p2www/pages/site/docs/applications/supported.html:428 +#: i2p2www/pages/site/docs/applications/supported.html:441 msgid "General-purpose socket utilities" msgstr "" #: i2p2www/pages/site/docs/applications/supported.html:50 -#: i2p2www/pages/site/docs/applications/supported.html:469 +#: i2p2www/pages/site/docs/applications/supported.html:482 msgid "Real-time Chat" msgstr "" #: i2p2www/pages/site/docs/applications/supported.html:53 -#: i2p2www/pages/site/docs/applications/supported.html:471 +#: i2p2www/pages/site/docs/applications/supported.html:484 msgid "Instant messaging clients" msgstr "" #: i2p2www/pages/site/docs/applications/supported.html:55 -#: i2p2www/pages/site/docs/applications/supported.html:481 +#: i2p2www/pages/site/docs/applications/supported.html:494 msgid "IRC clients" msgstr "" #: i2p2www/pages/site/docs/applications/supported.html:57 -#: i2p2www/pages/site/docs/applications/supported.html:532 +#: i2p2www/pages/site/docs/applications/supported.html:545 msgid "IRC servers" msgstr "" #: i2p2www/pages/site/docs/applications/supported.html:62 -#: i2p2www/pages/site/docs/applications/supported.html:548 +#: i2p2www/pages/site/docs/applications/supported.html:561 msgid "Web Browsing" msgstr "" #: i2p2www/pages/site/docs/applications/supported.html:65 -#: i2p2www/pages/site/docs/applications/supported.html:550 +#: i2p2www/pages/site/docs/applications/supported.html:563 msgid "Anonymous websites" msgstr "" #: i2p2www/pages/site/docs/applications/supported.html:67 -#: i2p2www/pages/site/docs/applications/supported.html:599 +#: i2p2www/pages/site/docs/applications/supported.html:612 msgid "Proxy software" msgstr "" #: i2p2www/pages/site/docs/applications/supported.html:69 -#: i2p2www/pages/site/docs/applications/supported.html:624 +#: i2p2www/pages/site/docs/applications/supported.html:637 msgid "Inproxies" msgstr "" #: i2p2www/pages/site/docs/applications/supported.html:71 -#: i2p2www/pages/site/docs/applications/supported.html:640 +#: i2p2www/pages/site/docs/applications/supported.html:653 msgid "Outproxies" msgstr "" #: i2p2www/pages/site/docs/applications/supported.html:76 -#: i2p2www/pages/site/docs/applications/supported.html:654 +#: i2p2www/pages/site/docs/applications/supported.html:667 msgid "Website Hosting" msgstr "" #: i2p2www/pages/site/docs/applications/supported.html:79 -#: i2p2www/pages/site/docs/applications/supported.html:669 +#: i2p2www/pages/site/docs/applications/supported.html:682 msgid "Web servers" msgstr "" @@ -3930,8 +3930,8 @@ msgstr "" #: i2p2www/pages/site/docs/applications/supported.html:97 #: i2p2www/pages/site/docs/applications/supported.html:279 #: i2p2www/pages/site/docs/applications/supported.html:311 -#: i2p2www/pages/site/docs/applications/supported.html:323 -#: i2p2www/pages/site/docs/applications/supported.html:666 +#: i2p2www/pages/site/docs/applications/supported.html:336 +#: i2p2www/pages/site/docs/applications/supported.html:679 msgid "bundled" msgstr "" @@ -3949,10 +3949,10 @@ msgstr "" #: i2p2www/pages/site/docs/applications/supported.html:228 #: i2p2www/pages/site/docs/applications/supported.html:241 #: i2p2www/pages/site/docs/applications/supported.html:292 -#: i2p2www/pages/site/docs/applications/supported.html:391 -#: i2p2www/pages/site/docs/applications/supported.html:413 -#: i2p2www/pages/site/docs/applications/supported.html:422 -#: i2p2www/pages/site/docs/applications/supported.html:510 +#: i2p2www/pages/site/docs/applications/supported.html:404 +#: i2p2www/pages/site/docs/applications/supported.html:426 +#: i2p2www/pages/site/docs/applications/supported.html:435 +#: i2p2www/pages/site/docs/applications/supported.html:523 msgid "plugin" msgstr "" @@ -3972,30 +3972,31 @@ msgstr "" #: i2p2www/pages/site/docs/applications/supported.html:241 #: i2p2www/pages/site/docs/applications/supported.html:252 #: i2p2www/pages/site/docs/applications/supported.html:261 -#: i2p2www/pages/site/docs/applications/supported.html:329 -#: i2p2www/pages/site/docs/applications/supported.html:340 -#: i2p2www/pages/site/docs/applications/supported.html:355 -#: i2p2www/pages/site/docs/applications/supported.html:401 -#: i2p2www/pages/site/docs/applications/supported.html:413 -#: i2p2www/pages/site/docs/applications/supported.html:422 -#: i2p2www/pages/site/docs/applications/supported.html:437 -#: i2p2www/pages/site/docs/applications/supported.html:443 -#: i2p2www/pages/site/docs/applications/supported.html:449 -#: i2p2www/pages/site/docs/applications/supported.html:459 -#: i2p2www/pages/site/docs/applications/supported.html:465 -#: i2p2www/pages/site/docs/applications/supported.html:477 -#: i2p2www/pages/site/docs/applications/supported.html:510 -#: i2p2www/pages/site/docs/applications/supported.html:516 -#: i2p2www/pages/site/docs/applications/supported.html:522 -#: i2p2www/pages/site/docs/applications/supported.html:528 -#: i2p2www/pages/site/docs/applications/supported.html:605 -#: i2p2www/pages/site/docs/applications/supported.html:614 -#: i2p2www/pages/site/docs/applications/supported.html:620 -#: i2p2www/pages/site/docs/applications/supported.html:666 -#: i2p2www/pages/site/docs/applications/supported.html:681 -#: i2p2www/pages/site/docs/applications/supported.html:687 -#: i2p2www/pages/site/docs/applications/supported.html:693 -#: i2p2www/pages/site/docs/applications/supported.html:699 +#: i2p2www/pages/site/docs/applications/supported.html:324 +#: i2p2www/pages/site/docs/applications/supported.html:342 +#: i2p2www/pages/site/docs/applications/supported.html:353 +#: i2p2www/pages/site/docs/applications/supported.html:368 +#: i2p2www/pages/site/docs/applications/supported.html:414 +#: i2p2www/pages/site/docs/applications/supported.html:426 +#: i2p2www/pages/site/docs/applications/supported.html:435 +#: i2p2www/pages/site/docs/applications/supported.html:450 +#: i2p2www/pages/site/docs/applications/supported.html:456 +#: i2p2www/pages/site/docs/applications/supported.html:462 +#: i2p2www/pages/site/docs/applications/supported.html:472 +#: i2p2www/pages/site/docs/applications/supported.html:478 +#: i2p2www/pages/site/docs/applications/supported.html:490 +#: i2p2www/pages/site/docs/applications/supported.html:523 +#: i2p2www/pages/site/docs/applications/supported.html:529 +#: i2p2www/pages/site/docs/applications/supported.html:535 +#: i2p2www/pages/site/docs/applications/supported.html:541 +#: i2p2www/pages/site/docs/applications/supported.html:618 +#: i2p2www/pages/site/docs/applications/supported.html:627 +#: i2p2www/pages/site/docs/applications/supported.html:633 +#: i2p2www/pages/site/docs/applications/supported.html:679 +#: i2p2www/pages/site/docs/applications/supported.html:694 +#: i2p2www/pages/site/docs/applications/supported.html:700 +#: i2p2www/pages/site/docs/applications/supported.html:706 +#: i2p2www/pages/site/docs/applications/supported.html:712 msgid "standalone" msgstr "" @@ -4004,11 +4005,11 @@ msgstr "" #: i2p2www/pages/site/docs/applications/supported.html:202 #: i2p2www/pages/site/docs/applications/supported.html:208 #: i2p2www/pages/site/docs/applications/supported.html:214 -#: i2p2www/pages/site/docs/applications/supported.html:349 -#: i2p2www/pages/site/docs/applications/supported.html:373 -#: i2p2www/pages/site/docs/applications/supported.html:382 -#: i2p2www/pages/site/docs/applications/supported.html:538 -#: i2p2www/pages/site/docs/applications/supported.html:544 +#: i2p2www/pages/site/docs/applications/supported.html:362 +#: i2p2www/pages/site/docs/applications/supported.html:386 +#: i2p2www/pages/site/docs/applications/supported.html:395 +#: i2p2www/pages/site/docs/applications/supported.html:551 +#: i2p2www/pages/site/docs/applications/supported.html:557 msgid "standalone/mod" msgstr "" @@ -4025,14 +4026,14 @@ msgstr "" #: i2p2www/pages/site/docs/applications/supported.html:135 #: i2p2www/pages/site/docs/applications/supported.html:302 -#: i2p2www/pages/site/docs/applications/supported.html:558 -#: i2p2www/pages/site/docs/applications/supported.html:568 -#: i2p2www/pages/site/docs/applications/supported.html:577 -#: i2p2www/pages/site/docs/applications/supported.html:583 -#: i2p2www/pages/site/docs/applications/supported.html:589 -#: i2p2www/pages/site/docs/applications/supported.html:595 -#: i2p2www/pages/site/docs/applications/supported.html:636 -#: i2p2www/pages/site/docs/applications/supported.html:650 +#: i2p2www/pages/site/docs/applications/supported.html:571 +#: i2p2www/pages/site/docs/applications/supported.html:581 +#: i2p2www/pages/site/docs/applications/supported.html:590 +#: i2p2www/pages/site/docs/applications/supported.html:596 +#: i2p2www/pages/site/docs/applications/supported.html:602 +#: i2p2www/pages/site/docs/applications/supported.html:608 +#: i2p2www/pages/site/docs/applications/supported.html:649 +#: i2p2www/pages/site/docs/applications/supported.html:663 msgid "service" msgstr "" @@ -4048,7 +4049,7 @@ msgstr "" #: i2p2www/pages/site/docs/applications/supported.html:148 #: i2p2www/pages/site/docs/applications/supported.html:220 -#: i2p2www/pages/site/docs/applications/supported.html:355 +#: i2p2www/pages/site/docs/applications/supported.html:368 msgid "unmaintained" msgstr "" @@ -4176,15 +4177,24 @@ msgid "" "email service by default." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:322 +#: i2p2www/pages/site/docs/applications/supported.html:316 +#, python-format +msgid "" +"Can be configured to use Postman's email service. See\n" +"this comparison of MUAs,\n" +"and configuration settings for\n" +"SMTP and POP3." +msgstr "" + +#: i2p2www/pages/site/docs/applications/supported.html:335 msgid "I2P's integrated BitTorrent client." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:328 +#: i2p2www/pages/site/docs/applications/supported.html:341 msgid "Modified version of I2PSnark." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:334 +#: i2p2www/pages/site/docs/applications/supported.html:347 msgid "" "\n" "A fork of rufus that uses the Basic Open Bridge (BOB) and has many\n" @@ -4193,49 +4203,49 @@ msgid "" "magnet-link like fetching of torrents within I2P.\n" msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:345 +#: i2p2www/pages/site/docs/applications/supported.html:358 msgid "" "Clean, full-featured cross-platform BitTorrent client with official\n" "ports for several GUI toolkits." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:354 +#: i2p2www/pages/site/docs/applications/supported.html:367 msgid "Has a plugin providing I2P support." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:361 +#: i2p2www/pages/site/docs/applications/supported.html:374 #, python-format msgid "" "For a detailed feature comparison of I2P-enabled trackers/indexers, see\n" "here." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:369 +#: i2p2www/pages/site/docs/applications/supported.html:382 msgid "" "The code that powered one of the first major tracker/indexer sites on the" "\n" "Internet. Patched for I2P." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:378 +#: i2p2www/pages/site/docs/applications/supported.html:391 #, python-format msgid "" "Lightweight tracker/indexer. I2P mod available in the i2p.opentracker\n" "branch of the I2P Monotone repository." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:387 +#: i2p2www/pages/site/docs/applications/supported.html:400 #, python-format msgid "" "zzz's Java-based open tracker. More info\n" "here." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:400 +#: i2p2www/pages/site/docs/applications/supported.html:413 msgid "I2P port of the aMule ED2K client." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:409 +#: i2p2www/pages/site/docs/applications/supported.html:422 #, python-format msgid "" "Port of the Phex Gnutella " @@ -4243,44 +4253,44 @@ msgid "" "for plugin version here." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:418 +#: i2p2www/pages/site/docs/applications/supported.html:431 #, python-format msgid "" "Cache for Gnutella peers on I2P. Website for plugin version\n" "here." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:433 +#: i2p2www/pages/site/docs/applications/supported.html:446 msgid "" "Unix standard tool for socket relaying. Several clones, ports, and forks\n" "have appeared over the years." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:442 +#: i2p2www/pages/site/docs/applications/supported.html:455 msgid "Like netcat but more powerful." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:448 +#: i2p2www/pages/site/docs/applications/supported.html:461 msgid "" "Proxy providing simple, transparent SOCKS-ification of network " "applications." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:458 +#: i2p2www/pages/site/docs/applications/supported.html:471 msgid "" "Most popular implementation of the Secure Shell (SSH) protocol and " "related tools." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:464 +#: i2p2www/pages/site/docs/applications/supported.html:477 msgid "Open source Secure Shell (SSH) client for Windows." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:476 +#: i2p2www/pages/site/docs/applications/supported.html:489 msgid "IM client with multiple incarnations." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:483 +#: i2p2www/pages/site/docs/applications/supported.html:496 msgid "" "Many IRC clients leak identifying information to servers or other\n" "clients, so I2P's IRC and SOCKS IRC client tunnels filter certain inbound" @@ -4297,7 +4307,7 @@ msgid "" "/me command) which isn't inherently dangerous." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:494 +#: i2p2www/pages/site/docs/applications/supported.html:507 msgid "" "I2P's IRC filtering may not cover every possible leak — users should also" "\n" @@ -4310,100 +4320,100 @@ msgid "" "developers; they may be able to solve it via additional filtering." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:506 +#: i2p2www/pages/site/docs/applications/supported.html:519 #, python-format msgid "" "Small Java-based IRC client. Plugin available here." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:515 +#: i2p2www/pages/site/docs/applications/supported.html:528 msgid "Cross-platform graphical IRC client." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:521 +#: i2p2www/pages/site/docs/applications/supported.html:534 msgid "Unixy terminal-based IRC client." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:527 +#: i2p2www/pages/site/docs/applications/supported.html:540 msgid "Another Unixy terminal-based IRC client." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:537 +#: i2p2www/pages/site/docs/applications/supported.html:550 msgid "IRC server developed from scratch." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:543 +#: i2p2www/pages/site/docs/applications/supported.html:556 msgid "Most popular IRC server." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:555 +#: i2p2www/pages/site/docs/applications/supported.html:568 msgid "" "Any website hosted anonymously on I2P, reachable through the I2P router's" " HTTP proxy." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:563 +#: i2p2www/pages/site/docs/applications/supported.html:576 msgid "" "Distributed anonymous websites hosted\n" "using Tahoe-LAFS-I2P, currently only reachable with Tahoe-LAFS-I2P\n" "clients or through the Tahoe-LAFS-I2P HTTP proxy." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:573 +#: i2p2www/pages/site/docs/applications/supported.html:586 #, python-format msgid "" "Website for sponge's jump service.\n" "Source code available." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:582 +#: i2p2www/pages/site/docs/applications/supported.html:595 msgid "Another jump service." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:588 +#: i2p2www/pages/site/docs/applications/supported.html:601 msgid "Dynamically updated eepsite index." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:594 +#: i2p2www/pages/site/docs/applications/supported.html:607 #, python-format msgid "Website for zzz's jump service." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:604 +#: i2p2www/pages/site/docs/applications/supported.html:617 msgid "SOCKS-enabled caching web proxy with basic filtering capabilities." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:610 +#: i2p2www/pages/site/docs/applications/supported.html:623 msgid "" "Privacy-focused non-caching web proxy with advanced filtering\n" "capabilities. Excels at removing ads and other junk." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:619 +#: i2p2www/pages/site/docs/applications/supported.html:632 msgid "Venerable caching web proxy." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:626 +#: i2p2www/pages/site/docs/applications/supported.html:639 msgid "Gateways allowing users on the public Internet to access eepsites." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:633 +#: i2p2www/pages/site/docs/applications/supported.html:646 #, python-format msgid "tino's inproxy on the public Internet." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:642 +#: i2p2www/pages/site/docs/applications/supported.html:655 msgid "" "Gateways allowing I2P users to access content hosted on the public " "Internet." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:649 +#: i2p2www/pages/site/docs/applications/supported.html:662 msgid "Publicly advertised outproxy running Squid, located in Germany." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:659 +#: i2p2www/pages/site/docs/applications/supported.html:672 msgid "" "Lightweight web server and Java servlet container. I2P is tightly\n" "integrated with a bundled copy of Jetty which by default is configured to" @@ -4415,26 +4425,26 @@ msgid "" "I2P." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:671 +#: i2p2www/pages/site/docs/applications/supported.html:684 msgid "" "In addition to Jetty, any web server should function over I2P without\n" "modification so long as it's HTTP-compliant. Some web servers known to\n" "currently serve content on the I2P network are:" msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:680 +#: i2p2www/pages/site/docs/applications/supported.html:693 msgid "Most popular web server on the public WWW." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:686 +#: i2p2www/pages/site/docs/applications/supported.html:699 msgid "Web server and Java servlet container. More features than Jetty." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:692 +#: i2p2www/pages/site/docs/applications/supported.html:705 msgid "Fast lightweight web server." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:698 +#: i2p2www/pages/site/docs/applications/supported.html:711 msgid "High-performance lightweight web server." msgstr "" diff --git a/i2p2www/translations/sv_SE/LC_MESSAGES/get-involved.po b/i2p2www/translations/sv_SE/LC_MESSAGES/get-involved.po index 0b5e7955..25e61587 100644 --- a/i2p2www/translations/sv_SE/LC_MESSAGES/get-involved.po +++ b/i2p2www/translations/sv_SE/LC_MESSAGES/get-involved.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-23 12:28+0000\n" +"POT-Creation-Date: 2013-08-29 06:47+0000\n" "PO-Revision-Date: 2013-04-27 23:10+0000\n" "Last-Translator: Martin Svensson \n" "Language-Team: Swedish (Sweden) " diff --git a/i2p2www/translations/sv_SE/LC_MESSAGES/misc.po b/i2p2www/translations/sv_SE/LC_MESSAGES/misc.po index 2c9cdb12..9ece766e 100644 --- a/i2p2www/translations/sv_SE/LC_MESSAGES/misc.po +++ b/i2p2www/translations/sv_SE/LC_MESSAGES/misc.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-15 21:25+0000\n" +"POT-Creation-Date: 2013-08-29 06:47+0000\n" "PO-Revision-Date: 2013-04-27 23:10+0000\n" "Last-Translator: Martin Svensson \n" "Language-Team: Swedish (Sweden) " diff --git a/i2p2www/translations/sv_SE/LC_MESSAGES/priority.po b/i2p2www/translations/sv_SE/LC_MESSAGES/priority.po index aaab33fd..384991b4 100644 --- a/i2p2www/translations/sv_SE/LC_MESSAGES/priority.po +++ b/i2p2www/translations/sv_SE/LC_MESSAGES/priority.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-15 21:25+0000\n" +"POT-Creation-Date: 2013-08-29 06:47+0000\n" "PO-Revision-Date: 2013-04-27 23:10+0000\n" "Last-Translator: Martin Svensson \n" "Language-Team: Swedish (Sweden) " diff --git a/i2p2www/translations/sv_SE/LC_MESSAGES/research.po b/i2p2www/translations/sv_SE/LC_MESSAGES/research.po index 4fc3402a..bba8ea8f 100644 --- a/i2p2www/translations/sv_SE/LC_MESSAGES/research.po +++ b/i2p2www/translations/sv_SE/LC_MESSAGES/research.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-15 21:25+0000\n" +"POT-Creation-Date: 2013-08-29 06:47+0000\n" "PO-Revision-Date: 2013-04-27 23:10+0000\n" "Last-Translator: Martin Svensson \n" "Language-Team: Swedish (Sweden) " From b403e74fd590202582e9f99e30b0cd74486c8f4e Mon Sep 17 00:00:00 2001 From: str4d Date: Thu, 29 Aug 2013 06:57:23 +0000 Subject: [PATCH 556/650] Fixed detection of Python file changes --- site-updater-i2hq.sh | 2 +- site-updater.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/site-updater-i2hq.sh b/site-updater-i2hq.sh index 51b9357e..b12c2d23 100755 --- a/site-updater-i2hq.sh +++ b/site-updater-i2hq.sh @@ -9,7 +9,7 @@ if [ $? -eq 0 ]; then ./compile-messages-i2hq.sh fi -cat $TMP | grep "^mtn: updating 'i2p2www/.*/.*\.py" >/dev/null +cat $TMP | grep "^mtn: updating 'i2p2www/.*\.py\|^mtn: updating 'i2p2www/.*/.*\.py" >/dev/null if [ $? -eq 0 ]; then echo "Python files changed, restarting server" touch /tmp/2fcd2f17-c293-4f77-b4c9-9b266ba70daa diff --git a/site-updater.sh b/site-updater.sh index 63851662..d5366eaf 100755 --- a/site-updater.sh +++ b/site-updater.sh @@ -9,7 +9,7 @@ if [ $? -eq 0 ]; then ./compile-messages.sh fi -cat $TMP | grep "^mtn: updating 'i2p2www/.*/.*\.py" >/dev/null +cat $TMP | grep "^mtn: updating 'i2p2www/.*\.py\|^mtn: updating 'i2p2www/.*/.*\.py" >/dev/null if [ $? -eq 0 ]; then echo "Python files changed, restarting server" touch /tmp/2fcd2f17-c293-4f77-b4c9-9b266ba70daa From 04eaa3225beaba4d3792df2707bbca1b559ab780 Mon Sep 17 00:00:00 2001 From: str4d Date: Thu, 29 Aug 2013 07:02:37 +0000 Subject: [PATCH 557/650] Moved pressetext-0.7.html to /misc --- i2p2www/legacy.py | 1 + .../pages/site/misc}/pressetext-0.7.html | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) rename {www.i2p2/pages/translations => i2p2www/pages/site/misc}/pressetext-0.7.html (99%) diff --git a/i2p2www/legacy.py b/i2p2www/legacy.py index c81fbb29..6d89054c 100644 --- a/i2p2www/legacy.py +++ b/i2p2www/legacy.py @@ -92,6 +92,7 @@ LEGACY_PAGES_MAP={ 'plugin_spec': 'docs/spec/plugin', 'plugins': 'docs/plugins', 'ports': 'docs/ports', + 'pressetext-0.7': 'misc/pressetext-0.7', 'protocols': 'docs/protocol', 'ratestats': 'misc/ratestats', 'release-signing-key': 'get-involved/develop/release-signing-key', diff --git a/www.i2p2/pages/translations/pressetext-0.7.html b/i2p2www/pages/site/misc/pressetext-0.7.html similarity index 99% rename from www.i2p2/pages/translations/pressetext-0.7.html rename to i2p2www/pages/site/misc/pressetext-0.7.html index 02050ba6..c7dd6d80 100644 --- a/www.i2p2/pages/translations/pressetext-0.7.html +++ b/i2p2www/pages/site/misc/pressetext-0.7.html @@ -1,4 +1,4 @@ -{% extends "_layout.html" %} +{% extends "global/layout.html" %} {% block title %}0.7 Release{% endblock %} {% block content %}
    
    From f20c5e76f92209b9699637858f1abb114641a5a4 Mon Sep 17 00:00:00 2001
    From: str4d 
    Date: Fri, 30 Aug 2013 06:32:35 +0000
    Subject: [PATCH 558/650] Updated canonical domain for testing
    
    ---
     i2p2www/__init__.py | 2 +-
     1 file changed, 1 insertion(+), 1 deletion(-)
    
    diff --git a/i2p2www/__init__.py b/i2p2www/__init__.py
    index a2263f7e..5dbf0cc0 100644
    --- a/i2p2www/__init__.py
    +++ b/i2p2www/__init__.py
    @@ -11,7 +11,7 @@ import os
     
     CURRENT_I2P_VERSION = '0.9.7.1'
     
    -CANONICAL_DOMAIN = 'www.i2p2.de'
    +CANONICAL_DOMAIN = 'i2hq.srv.i2p2.de'
     
     BLOG_POSTS_PER_FEED = 10
     BLOG_POSTS_PER_PAGE = 10
    
    From 6a9a10669c118387d277b60b743918cbb9553fcf Mon Sep 17 00:00:00 2001
    From: str4d 
    Date: Fri, 30 Aug 2013 06:51:02 +0000
    Subject: [PATCH 559/650] Convert git.repo.i2p, don't convert forum.i2p
    
    ---
     i2p2www/pages/downloads/list.html | 2 +-
     i2p2www/templatevars.py           | 2 +-
     2 files changed, 2 insertions(+), 2 deletions(-)
    
    diff --git a/i2p2www/pages/downloads/list.html b/i2p2www/pages/downloads/list.html
    index 9b2bb6f5..a4631504 100644
    --- a/i2p2www/pages/downloads/list.html
    +++ b/i2p2www/pages/downloads/list.html
    @@ -141,7 +141,7 @@ or type java -version at your command prompt.
       
       
    {% trans monotoneurl=site_url('get-involved/guides/new-developers'), - gitrepo='http://git.repo.i2p/w/i2p.i2p.git', + gitrepo='http://'+i2pconv('git.repo.i2p')+'/w/i2p.i2p.git', github='https://github.com/i2p/i2p.i2p', i2pversion=ver() -%} Alternately, you can fetch the source from monotone diff --git a/i2p2www/templatevars.py b/i2p2www/templatevars.py index 896b8b01..0c6701e2 100644 --- a/i2p2www/templatevars.py +++ b/i2p2www/templatevars.py @@ -7,7 +7,7 @@ INPROXY = '.us' I2P_TO_CLEAR = { 'www.i2p2.i2p': 'www.i2p2.de', - #'forum.i2p': 'forum.i2p2.de', + 'forum.i2p': 'forum.i2p', # Don't convert forum.i2p, it is not accessible outside I2P 'trac.i2p2.i2p': 'trac.i2p2.de', 'mail.i2p': 'i2pmail.org', } From 519ac8ca23c6ecb361d099fcfb60e3634afa23ef Mon Sep 17 00:00:00 2001 From: str4d Date: Fri, 30 Aug 2013 07:00:33 +0000 Subject: [PATCH 560/650] PET Convention link -> archive.org --- i2p2www/pages/site/docs/how/peer-selection.html | 2 +- i2p2www/pages/site/misc/clt.html | 2 +- i2p2www/pages/site/research/papers.html | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/i2p2www/pages/site/docs/how/peer-selection.html b/i2p2www/pages/site/docs/how/peer-selection.html index 5922d8b4..d562e0b8 100644 --- a/i2p2www/pages/site/docs/how/peer-selection.html +++ b/i2p2www/pages/site/docs/how/peer-selection.html @@ -55,7 +55,7 @@ of client and exploratory tunnels, and a tunnel lifetime is only 10 minutes.

    {% trans %}Further Information{% endtrans %}

    {% trans pdf=url_for('static', filename='pdf/I2P-PET-CON-2009.1.pdf'), -url='http://www.pet-con.org/index.php/PET_Convention_2009.1' -%} +url='http://web.archive.org/web/20100413184504/http://www.pet-con.org/index.php/PET_Convention_2009.1' -%} For more information see the paper Peer Profiling and Selection in the I2P Anonymous Network presented at PET-CON 2009.1. diff --git a/i2p2www/pages/site/misc/clt.html b/i2p2www/pages/site/misc/clt.html index f3264513..ba330533 100644 --- a/i2p2www/pages/site/misc/clt.html +++ b/i2p2www/pages/site/misc/clt.html @@ -11,7 +11,7 @@ On 14th march of 2009 there will be a short talk about general introduction to I Echelon and some other members of the I2P family will attend to the Linux meeting the whole two days (Saturday and Sunday) and will be recognizable as I2P family members. Meet them, ask them your questions, show them your props! Show your support! {%- endtrans %}

    -

    {% trans petcon='http://www.pet-con.org/index.php/PET_Convention_2009.1' -%} +

    {% trans petcon='http://web.archive.org/web/20100413184504/http://www.pet-con.org/index.php/PET_Convention_2009.1' -%} Just 10 days later the Privacy and Data Security convention in Dresden will take place. Again, echelon will attend this event and hold a short talk about general introduction to I2P. Another talk about the profiling by the I2P clients will be held. {%- endtrans %}

    diff --git a/i2p2www/pages/site/research/papers.html b/i2p2www/pages/site/research/papers.html index c7c8c214..96471238 100644 --- a/i2p2www/pages/site/research/papers.html +++ b/i2p2www/pages/site/research/papers.html @@ -91,7 +91,7 @@ Master's Thesis, 2009. Jens Schomburg. Anonymity Techniques - Usability Tests of Major Anonymity Networks. Presented at -PET-CON 2009.1, +PET-CON 2009.1, Dresden, Germany, March 24-25, 2009. Available in the Proceedings @@ -103,7 +103,7 @@ Extended 20-page version also may be available. zzz, Lars Schimmer. Peer Profiling and Selection in the I2P Anonymous Network. Presented at -PET-CON 2009.1, +PET-CON 2009.1, Dresden, Germany, March 24-25, 2009. Also available in the Proceedings From 14fa1ec9ed84a644332f1efba037db787f21127b Mon Sep 17 00:00:00 2001 From: str4d Date: Fri, 30 Aug 2013 07:13:16 +0000 Subject: [PATCH 561/650] Don't link false.i2p --- i2p2www/pages/site/docs/applications/supported.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/i2p2www/pages/site/docs/applications/supported.html b/i2p2www/pages/site/docs/applications/supported.html index 465489fe..7420d198 100644 --- a/i2p2www/pages/site/docs/applications/supported.html +++ b/i2p2www/pages/site/docs/applications/supported.html @@ -658,7 +658,7 @@ Gateways allowing I2P users to access content hosted on the public Internet.
    • - {{ i2pconv('false.i2p') }} — + false.i2p — {% trans %}Publicly advertised outproxy running Squid, located in Germany.{% endtrans %} [{{ _('service') }}]
    • From f70379c44a1ed3a8561fc6dd6531b30d6b96e455 Mon Sep 17 00:00:00 2001 From: str4d Date: Fri, 30 Aug 2013 07:29:55 +0000 Subject: [PATCH 562/650] Broken link fixes --- i2p2www/pages/site/about/media.html | 4 +--- i2p2www/pages/site/docs/spec/common-structures.html | 2 +- i2p2www/pages/site/docs/spec/i2cp.html | 4 ++-- i2p2www/pages/site/get-involved/develop/applications.html | 6 +++--- 4 files changed, 7 insertions(+), 9 deletions(-) diff --git a/i2p2www/pages/site/about/media.html b/i2p2www/pages/site/about/media.html index 641326da..17b7a7b6 100644 --- a/i2p2www/pages/site/about/media.html +++ b/i2p2www/pages/site/about/media.html @@ -193,12 +193,10 @@ November 2007. {%- endtrans %}
    • {% trans link='http://www.gulli.com/news/i2p-an-anonymous-network-2009-03-09/', -german='http://www.gulli.com/news/i2p-anonymes-netzwerk-im-2009-03-09/', -russian='http://translated.by/you/i2p-an-anonymous-network-interrogated/into-ru/' -%} +german='http://www.gulli.com/news/i2p-anonymes-netzwerk-im-2009-03-09/' -%} zzz interviewed by gulli.com March 2009 German translation -Russian translation {%- endtrans %}
    • {% trans mp3='http://www.isdpodcast.com/podcasts/infosec-daily-podcast-episode-454.mp3' -%} diff --git a/i2p2www/pages/site/docs/spec/common-structures.html b/i2p2www/pages/site/docs/spec/common-structures.html index 2f8fd109..a68bb418 100644 --- a/i2p2www/pages/site/docs/spec/common-structures.html +++ b/i2p2www/pages/site/docs/spec/common-structures.html @@ -168,7 +168,7 @@ Defines an identifier that is unique to each router in a tunnel. 4 byte Integer {% endtrans %}

      -

      Javadoc

      +

      Javadoc

      Certificate

      {% trans %}Description{% endtrans %}

      diff --git a/i2p2www/pages/site/docs/spec/i2cp.html b/i2p2www/pages/site/docs/spec/i2cp.html index 070fa709..d6ed59ef 100644 --- a/i2p2www/pages/site/docs/spec/i2cp.html +++ b/i2p2www/pages/site/docs/spec/i2cp.html @@ -844,10 +844,10 @@ The client responds with a Create LeaseSet Message
      1. Session ID
      2. -1 byte Integer number of tunnels +1 byte Integer number of tunnels
      3. That many - Leases + Leases

      Notes

      diff --git a/i2p2www/pages/site/get-involved/develop/applications.html b/i2p2www/pages/site/get-involved/develop/applications.html index 79659d97..d23578d4 100644 --- a/i2p2www/pages/site/get-involved/develop/applications.html +++ b/i2p2www/pages/site/get-involved/develop/applications.html @@ -578,9 +578,9 @@ Contact us if you would like to contribute. I2Phex

    -See also all the plugins on plugins.i2p, -the applications and source code listed on echelon.i2p, -and the application code hosted on git.repo.i2p. +See also all the plugins on plugins.i2p, +the applications and source code listed on echelon.i2p, +and the application code hosted on git.repo.i2p.

    See also the bundled applications in the I2P distribution - SusiMail and I2PSnark.

    From ce87a9c7bae3f08444e5ec88aeeb57b55b591cfe Mon Sep 17 00:00:00 2001 From: str4d Date: Fri, 30 Aug 2013 07:35:20 +0000 Subject: [PATCH 563/650] Removed reference to inactive tpb.i2p --- i2p2www/pages/site/about/browser-config.html | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/i2p2www/pages/site/about/browser-config.html b/i2p2www/pages/site/about/browser-config.html index e3b56988..86ded1c6 100644 --- a/i2p2www/pages/site/about/browser-config.html +++ b/i2p2www/pages/site/about/browser-config.html @@ -91,10 +91,9 @@ that only set amount of accesses are allowed per client. Once the limit is reached, the client is blocked out for a timeframe of 1min/1h/1 day. Be respectful and do not overload these services with too many requests! {%- endtrans %}

    -

    {% trans tpb=i2pconv('tpb.i2p') -%} +

    {% trans -%} Filtering is active on these outproxies (for example, mibbit and torrent -tracker access is blocked). Note that even though the pirate bay is blocked -they host an official eepsite at {{ tpb }}. Eepsites +tracker access is blocked). Eepsites that are accessible via .i2p addresses are also not allowed via the outproxies. As a convenience, False.i2p blocks ad servers. {%- endtrans %}

    From cea834acfc929e220ab8c8e0bfcde4c37facadbd Mon Sep 17 00:00:00 2001 From: str4d Date: Fri, 30 Aug 2013 07:36:52 +0000 Subject: [PATCH 564/650] Updated /about/browser-config outproxies --- i2p2www/pages/site/about/browser-config.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/i2p2www/pages/site/about/browser-config.html b/i2p2www/pages/site/about/browser-config.html index 86ded1c6..70244ca4 100644 --- a/i2p2www/pages/site/about/browser-config.html +++ b/i2p2www/pages/site/about/browser-config.html @@ -82,7 +82,7 @@ unreachable at anytime. {%- endtrans %}

    {% trans -%} By default, I2P comes with two outproxies configured: false.i2p -(an HTTP-only proxy) and outproxyng.h2ik.i2p (an HTTPS proxy +(an HTTP-only proxy) and outproxy-tor.meeh.i2p (an HTTPS proxy routed through Tor. {%- endtrans %}

    {% trans -%} @@ -95,7 +95,7 @@ respectful and do not overload these services with too many requests! Filtering is active on these outproxies (for example, mibbit and torrent tracker access is blocked). Eepsites that are accessible via .i2p addresses are also not allowed via the outproxies. -As a convenience, False.i2p blocks ad servers. +As a convenience, false.i2p blocks ad servers. {%- endtrans %}

    {% trans -%} Tor is good application to use as an From 0b867e0a00de7ff0484bd294fe5289773bc83dea Mon Sep 17 00:00:00 2001 From: str4d Date: Fri, 30 Aug 2013 07:50:11 +0000 Subject: [PATCH 565/650] Fixed unparsable character --- i2p2www/meetings/logs/221.log | 2 +- i2p2www/meetings/logs/222.log | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/i2p2www/meetings/logs/221.log b/i2p2www/meetings/logs/221.log index 1e050604..d6a68c4d 100644 --- a/i2p2www/meetings/logs/221.log +++ b/i2p2www/meetings/logs/221.log @@ -59,7 +59,7 @@ 21:16:34 Bounty uptake IS slow, due to a lack of visibility/advertising/marketing/whatever, but the bounties are slowly getting taken. 21:16:41 I don't know if the bounties which are being fufilled are perhaps not being fufilled the way we want too. 21:17:03 But, of the claimed bounties, not a single developer is currently with I2P. -21:17:10 For example: "Datastore over I2P" - "CLAIMED for 700 " - "duck, smeghead" +21:17:10 For example: "Datastore over I2P" - "CLAIMED for 700 euro" - "duck, smeghead" 21:17:20 perhaps, change bounties to ..... and maintain your work for a reasonable time 21:17:23 to get actual continuous development going, a better model is one of project/stipends, where people donate to a project with stated goals, and the people running that project pay the money out continuously to people who are actively working to accomplish those goals 21:17:34 The solution was, IMO, hacky, the bountry $$$ was rather high for the hack and the two developers for that bounty are nowhere to be found. diff --git a/i2p2www/meetings/logs/222.log b/i2p2www/meetings/logs/222.log index f1211097..b5932209 100644 --- a/i2p2www/meetings/logs/222.log +++ b/i2p2www/meetings/logs/222.log @@ -237,7 +237,7 @@ 22:12:41 lillith: eche is currently sourcing the required money. 22:12:48 but there are other, non- bounty uses for money, for example purchasing ssl certificates 22:13:16 eche|on: any updates on the certificate situation? I haven't had to get "real "certs for a while and don't know how long the verification process takes nowadays. -22:13:19 kytv2: I am on the hunt for 3k and cert requests... +22:13:19 kytv2: I am on the hunt for 3k euro and cert requests... 22:13:29 so it's under control then? 22:13:36 and pushed.. 22:14:14 yes, it's being taken care of From 5611daf7be6263132cd716c24b73d54bc7523f09 Mon Sep 17 00:00:00 2001 From: str4d Date: Fri, 30 Aug 2013 08:12:00 +0000 Subject: [PATCH 566/650] Commented out dead links --- i2p2www/pages/site/links.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/i2p2www/pages/site/links.html b/i2p2www/pages/site/links.html index eb137ba3..d781d2b4 100644 --- a/i2p2www/pages/site/links.html +++ b/i2p2www/pages/site/links.html @@ -14,11 +14,11 @@ See also the page with

  • EFF
  • GNUnet
  • Ipredator
  • -
  • InfoSec Daily Podcast
  • +
  • Onioncat
  • Relakks
  • The Pegasus Project
  • -
  • The Pegasus Press
  • +
  • Telecomix
  • Tor
  • {{ _('More Projects and Documentation') }}

    From 6b1ac31c06758c6670ebee023d0cf4862d1f1c7c Mon Sep 17 00:00:00 2001 From: str4d Date: Fri, 30 Aug 2013 08:58:59 +0000 Subject: [PATCH 567/650] More archive.org link treatment --- i2p2www/pages/site/about/performance/history.html | 2 +- i2p2www/pages/site/docs/discussions/tunnel.html | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/i2p2www/pages/site/about/performance/history.html b/i2p2www/pages/site/about/performance/history.html index d919c51a..646f6440 100644 --- a/i2p2www/pages/site/about/performance/history.html +++ b/i2p2www/pages/site/about/performance/history.html @@ -140,7 +140,7 @@ message based, with the router providing delivery guarantees by garlic wrapping an "ACK" message in with the payload, so once the data gets to the target, the ACK message is forwarded back to us [through tunnels, of course]). {%- endtrans %}

    -

    {% trans link='http://dev.i2p.net/pipermail/i2p/2004-March/000167.html' -%} +

    {% trans link='http://web.archive.org/web/20070607220008/http://dev.i2p.net/pipermail/i2p/2004-March/000167.html' -%} As I've said, having I2PTunnel (and the ministreaming lib) go this route was the best thing that could be done, but more efficient mechanisms are available. When we rip out the diff --git a/i2p2www/pages/site/docs/discussions/tunnel.html b/i2p2www/pages/site/docs/discussions/tunnel.html index e8a3b5ce..bd8995b7 100644 --- a/i2p2www/pages/site/docs/discussions/tunnel.html +++ b/i2p2www/pages/site/docs/discussions/tunnel.html @@ -35,7 +35,7 @@ None of these are currently implemented.

    These padding strategies can be used on a variety of levels, addressing the exposure of message size information to different adversaries. After gathering -and reviewing some statistics +and reviewing some statistics from the 0.4 network, as well as exploring the anonymity tradeoffs, we're starting with a fixed tunnel message size of 1024 bytes. Within this however, the fragmented messages themselves are not padded by the tunnel at all (though for end to end From 92734bdd2012b9d2ed0a6d8cab8003a05ae3680d Mon Sep 17 00:00:00 2001 From: str4d Date: Fri, 30 Aug 2013 09:09:21 +0000 Subject: [PATCH 568/650] Fixed broken link --- i2p2www/pages/site/get-involved/bounties/netdb.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/i2p2www/pages/site/get-involved/bounties/netdb.html b/i2p2www/pages/site/get-involved/bounties/netdb.html index 2d0b1aed..2ab36cad 100644 --- a/i2p2www/pages/site/get-involved/bounties/netdb.html +++ b/i2p2www/pages/site/get-involved/bounties/netdb.html @@ -27,7 +27,7 @@ completed and should therefore be minimized.

    Attack resilience
    The solution should ideally be (or be extensible to be) resilient against -sybil and eclipse attacks. +sybil and eclipse attacks.
    Scalability
    From f6750f78f8500ac988e7d2fd4cf70372a7c241fe Mon Sep 17 00:00:00 2001 From: str4d Date: Fri, 30 Aug 2013 09:21:38 +0000 Subject: [PATCH 569/650] itoopie.net -> itoopie.i2p --- i2p2www/blog/2011/09/03/Ipredator-SoC-itoopie-released.rst | 6 ++---- i2p2www/pages/site/docs/api/i2pcontrol.html | 2 +- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/i2p2www/blog/2011/09/03/Ipredator-SoC-itoopie-released.rst b/i2p2www/blog/2011/09/03/Ipredator-SoC-itoopie-released.rst index 242a34d1..88fdb1cf 100644 --- a/i2p2www/blog/2011/09/03/Ipredator-SoC-itoopie-released.rst +++ b/i2p2www/blog/2011/09/03/Ipredator-SoC-itoopie-released.rst @@ -16,11 +16,9 @@ The aim of itoopie is to provide an interface that is simpler and has a lower lu I2PControl is an I2P plugin providing a JSONRPC interface for the I2P router. The interface supports setting basic settings (bandwidth, ports etc.), reading many stats and is provided over an SSL encrypted HTTP connection. -More information and instructions can be found at `itoopie.net`_, `itoopie.i2p.to`_ (via proxy)and `itoopie.i2p`_ (anonymously). +More information and instructions can be found at `{{ i2pconv('itoopie.i2p') }}`_. -.. _`itoopie.net`: http://itoopie.net -.. _`itoopie.i2p.to`: http://itoopie.i2p.to -.. _`itoopie.i2p`: http://itoopie.i2p +.. _`{{ i2pconv('itoopie.i2p') }}`: http://{{ i2pconv('itoopie.i2p') }} This project has been funded by the VPN services `Relakks`_ & `Ipredator`_ and was initiated by Jan-Erik Fiske and `Peter Sunde`_. diff --git a/i2p2www/pages/site/docs/api/i2pcontrol.html b/i2p2www/pages/site/docs/api/i2pcontrol.html index ec23b869..0faeecbe 100644 --- a/i2p2www/pages/site/docs/api/i2pcontrol.html +++ b/i2p2www/pages/site/docs/api/i2pcontrol.html @@ -2,7 +2,7 @@ {% block title %}I2PControl API{% endblock %} {% block content %}

    {% trans %}I2PControl - Remote Control Service{% endtrans %}

    -

    {% trans itoopie='http://itoopie.net/' -%} +

    {% trans itoopie='http://'+i2pconv('itoopie.i2p')+'/' -%} I2P enables a JSONRPC2 interface via the plugin I2PControl. The aim of the interface is to provide simple way to interface with a running I2P node. A client, itoopie, has been developed in parallel. The JSONRPC2 implementation for the client as well as the plugin is provided by the java libraries JSON-RPC 2.0. From 4e83bde435f851aab98c87a542e367f2c29084dc Mon Sep 17 00:00:00 2001 From: str4d Date: Fri, 30 Aug 2013 09:59:32 +0000 Subject: [PATCH 570/650] Extracted HTTP and HTTPS outproxies from string --- i2p2www/pages/site/about/browser-config.html | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/i2p2www/pages/site/about/browser-config.html b/i2p2www/pages/site/about/browser-config.html index 70244ca4..488c6d12 100644 --- a/i2p2www/pages/site/about/browser-config.html +++ b/i2p2www/pages/site/about/browser-config.html @@ -80,9 +80,9 @@ Instead, it is meant to be used as an internal network. services are run by by private volunteers and could be shut down or unreachable at anytime. {%- endtrans %}

    -

    {% trans -%} -By default, I2P comes with two outproxies configured: false.i2p -(an HTTP-only proxy) and outproxy-tor.meeh.i2p (an HTTPS proxy +

    {% trans http='false.i2p', https='outproxy-tor.meeh.i2p' -%} +By default, I2P comes with two outproxies configured: {{ http }} +(an HTTP-only proxy) and {{ https }} (an HTTPS proxy routed through Tor. {%- endtrans %}

    {% trans -%} From 52d1170aa9cbc4217fa740fc77835c52cc4816cc Mon Sep 17 00:00:00 2001 From: str4d Date: Fri, 30 Aug 2013 10:02:30 +0000 Subject: [PATCH 571/650] Updated translation strings --- i2p2www/translations/de/LC_MESSAGES/about.po | 27 ++++++-------- i2p2www/translations/de/LC_MESSAGES/blog.po | 2 +- .../translations/de/LC_MESSAGES/comparison.po | 2 +- i2p2www/translations/de/LC_MESSAGES/docs.po | 2 +- .../de/LC_MESSAGES/get-involved.po | 2 +- i2p2www/translations/de/LC_MESSAGES/misc.po | 2 +- .../translations/de/LC_MESSAGES/priority.po | 2 +- .../translations/de/LC_MESSAGES/research.po | 2 +- i2p2www/translations/es/LC_MESSAGES/about.po | 35 +++++++------------ i2p2www/translations/es/LC_MESSAGES/blog.po | 2 +- .../translations/es/LC_MESSAGES/comparison.po | 2 +- i2p2www/translations/es/LC_MESSAGES/docs.po | 2 +- .../es/LC_MESSAGES/get-involved.po | 2 +- i2p2www/translations/es/LC_MESSAGES/misc.po | 2 +- .../translations/es/LC_MESSAGES/priority.po | 2 +- .../translations/es/LC_MESSAGES/research.po | 2 +- i2p2www/translations/fr/LC_MESSAGES/about.po | 35 ++++++------------- i2p2www/translations/fr/LC_MESSAGES/blog.po | 2 +- .../translations/fr/LC_MESSAGES/comparison.po | 2 +- i2p2www/translations/fr/LC_MESSAGES/docs.po | 2 +- .../fr/LC_MESSAGES/get-involved.po | 2 +- i2p2www/translations/fr/LC_MESSAGES/misc.po | 2 +- .../translations/fr/LC_MESSAGES/priority.po | 2 +- .../translations/fr/LC_MESSAGES/research.po | 2 +- .../translations/pt/LC_MESSAGES/priority.po | 2 +- .../translations/sv_SE/LC_MESSAGES/about.po | 27 ++++++-------- .../translations/sv_SE/LC_MESSAGES/blog.po | 2 +- .../sv_SE/LC_MESSAGES/comparison.po | 2 +- .../translations/sv_SE/LC_MESSAGES/docs.po | 2 +- .../sv_SE/LC_MESSAGES/get-involved.po | 2 +- .../translations/sv_SE/LC_MESSAGES/misc.po | 2 +- .../sv_SE/LC_MESSAGES/priority.po | 2 +- .../sv_SE/LC_MESSAGES/research.po | 2 +- 33 files changed, 74 insertions(+), 108 deletions(-) diff --git a/i2p2www/translations/de/LC_MESSAGES/about.po b/i2p2www/translations/de/LC_MESSAGES/about.po index d92e57b1..d2d7e627 100644 --- a/i2p2www/translations/de/LC_MESSAGES/about.po +++ b/i2p2www/translations/de/LC_MESSAGES/about.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-29 06:46+0000\n" +"POT-Creation-Date: 2013-08-30 09:59+0000\n" "PO-Revision-Date: 2013-07-04 16:33+0000\n" "Last-Translator: D.A. Loader\n" "Language-Team: German " @@ -152,11 +152,11 @@ msgid "" msgstr "" #: i2p2www/pages/site/about/browser-config.html:83 +#, python-format msgid "" "By default, I2P comes with two outproxies configured: " -"false.i2p\n" -"(an HTTP-only proxy) and outproxyng.h2ik.i2p (an HTTPS proxy" -"\n" +"%(http)s\n" +"(an HTTP-only proxy) and %(https)s (an HTTPS proxy\n" "routed through Tor." msgstr "" @@ -171,19 +171,15 @@ msgid "" msgstr "" #: i2p2www/pages/site/about/browser-config.html:94 -#, python-format msgid "" "Filtering is active on these outproxies (for example, mibbit and torrent\n" -"tracker access is blocked). Note that even though the pirate bay is " -"blocked\n" -"they host an official eepsite at %(tpb)s. " -"Eepsites\n" +"tracker access is blocked). Eepsites\n" "that are accessible via .i2p addresses are also not allowed via the " "outproxies.\n" -"As a convenience, False.i2p blocks ad servers." +"As a convenience, false.i2p blocks ad servers." msgstr "" -#: i2p2www/pages/site/about/browser-config.html:101 +#: i2p2www/pages/site/about/browser-config.html:100 msgid "" "Tor is good application to use" " as an\n" @@ -995,11 +991,10 @@ msgstr "" msgid "" "zzz interviewed by gulli.com\n" "March 2009\n" -"German translation\n" -"Russian translation" +"German translation" msgstr "" -#: i2p2www/pages/site/about/media.html:204 +#: i2p2www/pages/site/about/media.html:202 #, python-format msgid "" "zzz interviewed on the InfoSec Daily Podcast Ep. 454 " @@ -1007,7 +1002,7 @@ msgid "" "August 18, 2011" msgstr "" -#: i2p2www/pages/site/about/media.html:209 +#: i2p2www/pages/site/about/media.html:207 #, python-format msgid "" "I2P - Anonymity for the Masses,\n" @@ -1015,7 +1010,7 @@ msgid "" "November 11, 2011." msgstr "" -#: i2p2www/pages/site/about/media.html:215 +#: i2p2www/pages/site/about/media.html:213 #, python-format msgid "" "zzz and Lance James interviewed on the InfoSec Daily " diff --git a/i2p2www/translations/de/LC_MESSAGES/blog.po b/i2p2www/translations/de/LC_MESSAGES/blog.po index 846027fd..cf0f53e1 100644 --- a/i2p2www/translations/de/LC_MESSAGES/blog.po +++ b/i2p2www/translations/de/LC_MESSAGES/blog.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-29 06:46+0000\n" +"POT-Creation-Date: 2013-08-30 09:59+0000\n" "PO-Revision-Date: 2013-08-12 10:32+0000\n" "Last-Translator: str4d \n" "Language-Team: German " diff --git a/i2p2www/translations/de/LC_MESSAGES/comparison.po b/i2p2www/translations/de/LC_MESSAGES/comparison.po index 0537c2a1..75a837f9 100644 --- a/i2p2www/translations/de/LC_MESSAGES/comparison.po +++ b/i2p2www/translations/de/LC_MESSAGES/comparison.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-29 06:46+0000\n" +"POT-Creation-Date: 2013-08-30 09:59+0000\n" "PO-Revision-Date: 2013-07-04 16:33+0000\n" "Last-Translator: D.A. Loader\n" "Language-Team: German " diff --git a/i2p2www/translations/de/LC_MESSAGES/docs.po b/i2p2www/translations/de/LC_MESSAGES/docs.po index 100db2c8..053be506 100644 --- a/i2p2www/translations/de/LC_MESSAGES/docs.po +++ b/i2p2www/translations/de/LC_MESSAGES/docs.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-29 06:46+0000\n" +"POT-Creation-Date: 2013-08-30 09:59+0000\n" "PO-Revision-Date: 2013-08-12 10:33+0000\n" "Last-Translator: str4d \n" "Language-Team: German " diff --git a/i2p2www/translations/de/LC_MESSAGES/get-involved.po b/i2p2www/translations/de/LC_MESSAGES/get-involved.po index 3427f421..e0fa8065 100644 --- a/i2p2www/translations/de/LC_MESSAGES/get-involved.po +++ b/i2p2www/translations/de/LC_MESSAGES/get-involved.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-29 06:47+0000\n" +"POT-Creation-Date: 2013-08-30 09:59+0000\n" "PO-Revision-Date: 2013-07-04 16:33+0000\n" "Last-Translator: D.A. Loader\n" "Language-Team: German " diff --git a/i2p2www/translations/de/LC_MESSAGES/misc.po b/i2p2www/translations/de/LC_MESSAGES/misc.po index 0f6e68c3..0af83f02 100644 --- a/i2p2www/translations/de/LC_MESSAGES/misc.po +++ b/i2p2www/translations/de/LC_MESSAGES/misc.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-29 06:47+0000\n" +"POT-Creation-Date: 2013-08-30 09:59+0000\n" "PO-Revision-Date: 2013-07-04 16:33+0000\n" "Last-Translator: D.A. Loader\n" "Language-Team: German " diff --git a/i2p2www/translations/de/LC_MESSAGES/priority.po b/i2p2www/translations/de/LC_MESSAGES/priority.po index d12020e8..0ac2f4a1 100644 --- a/i2p2www/translations/de/LC_MESSAGES/priority.po +++ b/i2p2www/translations/de/LC_MESSAGES/priority.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-29 06:47+0000\n" +"POT-Creation-Date: 2013-08-30 09:59+0000\n" "PO-Revision-Date: 2013-08-12 10:34+0000\n" "Last-Translator: str4d \n" "Language-Team: German " diff --git a/i2p2www/translations/de/LC_MESSAGES/research.po b/i2p2www/translations/de/LC_MESSAGES/research.po index 79c3ff1d..76284ef5 100644 --- a/i2p2www/translations/de/LC_MESSAGES/research.po +++ b/i2p2www/translations/de/LC_MESSAGES/research.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-29 06:47+0000\n" +"POT-Creation-Date: 2013-08-30 09:59+0000\n" "PO-Revision-Date: 2013-07-04 16:33+0000\n" "Last-Translator: D.A. Loader\n" "Language-Team: German " diff --git a/i2p2www/translations/es/LC_MESSAGES/about.po b/i2p2www/translations/es/LC_MESSAGES/about.po index aed98e18..8d7e2088 100644 --- a/i2p2www/translations/es/LC_MESSAGES/about.po +++ b/i2p2www/translations/es/LC_MESSAGES/about.po @@ -13,7 +13,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-29 06:46+0000\n" +"POT-Creation-Date: 2013-08-30 09:59+0000\n" "PO-Revision-Date: 2013-07-22 10:38+0000\n" "Last-Translator: trolly\n" "Language-Team: Spanish " @@ -190,11 +190,11 @@ msgstr "" "ser apagados o no estar accesibles en todo momento." #: i2p2www/pages/site/about/browser-config.html:83 +#, fuzzy, python-format msgid "" "By default, I2P comes with two outproxies configured: " -"false.i2p\n" -"(an HTTP-only proxy) and outproxyng.h2ik.i2p (an HTTPS proxy" -"\n" +"%(http)s\n" +"(an HTTP-only proxy) and %(https)s (an HTTPS proxy\n" "routed through Tor." msgstr "" "Por defecto I2P viene con 2 outproxies configurados: " @@ -217,25 +217,15 @@ msgstr "" "servicios con demasiadas peticiones." #: i2p2www/pages/site/about/browser-config.html:94 -#, python-format msgid "" "Filtering is active on these outproxies (for example, mibbit and torrent\n" -"tracker access is blocked). Note that even though the pirate bay is " -"blocked\n" -"they host an official eepsite at %(tpb)s. " -"Eepsites\n" +"tracker access is blocked). Eepsites\n" "that are accessible via .i2p addresses are also not allowed via the " "outproxies.\n" -"As a convenience, False.i2p blocks ad servers." +"As a convenience, false.i2p blocks ad servers." msgstr "" -"Hay filtros activos en estos outproxies (por ejemplo, el acceso a mibbit " -"y tracker torrents están bloqueados) Desde cuenta que hasta The Pirate " -"Bay está bloqueado, aunque hospedan una página eepisite en %(tpb)s. Las eepsites accesible en I2P " -"también están bloqueadas a través de los outproxies. Por comodidad, " -"False.i2p bloquea servidores de publicidad." -#: i2p2www/pages/site/about/browser-config.html:101 +#: i2p2www/pages/site/about/browser-config.html:100 msgid "" "Tor is good application to use" " as an\n" @@ -1205,18 +1195,17 @@ msgstr "" "anónimos en Internet (Alemán) Noviembre 2007." #: i2p2www/pages/site/about/media.html:195 -#, python-format +#, fuzzy, python-format msgid "" "zzz interviewed by gulli.com\n" "March 2009\n" -"German translation\n" -"Russian translation" +"German translation" msgstr "" "zzz entrevistado por gulli.com⏎ Marzo 2009⏎ traducción en alemán traducción en ruso" -#: i2p2www/pages/site/about/media.html:204 +#: i2p2www/pages/site/about/media.html:202 #, python-format msgid "" "zzz interviewed on the InfoSec Daily Podcast Ep. 454 " @@ -1226,7 +1215,7 @@ msgstr "" "zzz entrevistado en el podcast diario de InfoSec Ep." " 454 (mp3)⏎ Agosto 18, 2011" -#: i2p2www/pages/site/about/media.html:209 +#: i2p2www/pages/site/about/media.html:207 #, python-format msgid "" "I2P - Anonymity for the Masses,\n" @@ -1236,7 +1225,7 @@ msgstr "" "I2P - Anonymity for the Masses,⏎ Jonathan Cox,⏎ " "Noviembre 11, 2011." -#: i2p2www/pages/site/about/media.html:215 +#: i2p2www/pages/site/about/media.html:213 #, python-format msgid "" "zzz and Lance James interviewed on the InfoSec Daily " diff --git a/i2p2www/translations/es/LC_MESSAGES/blog.po b/i2p2www/translations/es/LC_MESSAGES/blog.po index 2653147e..7ebc52b6 100644 --- a/i2p2www/translations/es/LC_MESSAGES/blog.po +++ b/i2p2www/translations/es/LC_MESSAGES/blog.po @@ -13,7 +13,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-29 06:46+0000\n" +"POT-Creation-Date: 2013-08-30 09:59+0000\n" "PO-Revision-Date: 2013-08-12 10:32+0000\n" "Last-Translator: str4d \n" "Language-Team: Spanish " diff --git a/i2p2www/translations/es/LC_MESSAGES/comparison.po b/i2p2www/translations/es/LC_MESSAGES/comparison.po index 7099fd58..c4ba85fc 100644 --- a/i2p2www/translations/es/LC_MESSAGES/comparison.po +++ b/i2p2www/translations/es/LC_MESSAGES/comparison.po @@ -13,7 +13,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-29 06:46+0000\n" +"POT-Creation-Date: 2013-08-30 09:59+0000\n" "PO-Revision-Date: 2013-07-11 10:13+0000\n" "Last-Translator: trolly\n" "Language-Team: Spanish " diff --git a/i2p2www/translations/es/LC_MESSAGES/docs.po b/i2p2www/translations/es/LC_MESSAGES/docs.po index b279dce7..ba5d35e8 100644 --- a/i2p2www/translations/es/LC_MESSAGES/docs.po +++ b/i2p2www/translations/es/LC_MESSAGES/docs.po @@ -13,7 +13,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-29 06:46+0000\n" +"POT-Creation-Date: 2013-08-30 09:59+0000\n" "PO-Revision-Date: 2013-08-12 10:33+0000\n" "Last-Translator: str4d \n" "Language-Team: Spanish " diff --git a/i2p2www/translations/es/LC_MESSAGES/get-involved.po b/i2p2www/translations/es/LC_MESSAGES/get-involved.po index b9b5dc46..1196fec7 100644 --- a/i2p2www/translations/es/LC_MESSAGES/get-involved.po +++ b/i2p2www/translations/es/LC_MESSAGES/get-involved.po @@ -13,7 +13,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-29 06:47+0000\n" +"POT-Creation-Date: 2013-08-30 09:59+0000\n" "PO-Revision-Date: 2013-07-11 10:13+0000\n" "Last-Translator: trolly\n" "Language-Team: Spanish " diff --git a/i2p2www/translations/es/LC_MESSAGES/misc.po b/i2p2www/translations/es/LC_MESSAGES/misc.po index 95f38eb6..71980426 100644 --- a/i2p2www/translations/es/LC_MESSAGES/misc.po +++ b/i2p2www/translations/es/LC_MESSAGES/misc.po @@ -13,7 +13,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-29 06:47+0000\n" +"POT-Creation-Date: 2013-08-30 09:59+0000\n" "PO-Revision-Date: 2013-08-12 09:33+0000\n" "Last-Translator: trolly\n" "Language-Team: Spanish " diff --git a/i2p2www/translations/es/LC_MESSAGES/priority.po b/i2p2www/translations/es/LC_MESSAGES/priority.po index d27d8aa6..d3ba13b0 100644 --- a/i2p2www/translations/es/LC_MESSAGES/priority.po +++ b/i2p2www/translations/es/LC_MESSAGES/priority.po @@ -13,7 +13,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-29 06:47+0000\n" +"POT-Creation-Date: 2013-08-30 09:59+0000\n" "PO-Revision-Date: 2013-08-12 10:34+0000\n" "Last-Translator: str4d \n" "Language-Team: Spanish " diff --git a/i2p2www/translations/es/LC_MESSAGES/research.po b/i2p2www/translations/es/LC_MESSAGES/research.po index f55e9587..9cfd10b8 100644 --- a/i2p2www/translations/es/LC_MESSAGES/research.po +++ b/i2p2www/translations/es/LC_MESSAGES/research.po @@ -13,7 +13,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-29 06:47+0000\n" +"POT-Creation-Date: 2013-08-30 09:59+0000\n" "PO-Revision-Date: 2013-07-25 09:42+0000\n" "Last-Translator: trolly\n" "Language-Team: Spanish " diff --git a/i2p2www/translations/fr/LC_MESSAGES/about.po b/i2p2www/translations/fr/LC_MESSAGES/about.po index c27ce70c..f3f104a0 100644 --- a/i2p2www/translations/fr/LC_MESSAGES/about.po +++ b/i2p2www/translations/fr/LC_MESSAGES/about.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-29 06:46+0000\n" +"POT-Creation-Date: 2013-08-30 09:59+0000\n" "PO-Revision-Date: 2013-08-11 16:29+0000\n" "Last-Translator: Boxoa590\n" "Language-Team: French " @@ -204,11 +204,11 @@ msgstr "" "être inaccessibles à tout moment." #: i2p2www/pages/site/about/browser-config.html:83 +#, fuzzy, python-format msgid "" "By default, I2P comes with two outproxies configured: " -"false.i2p\n" -"(an HTTP-only proxy) and outproxyng.h2ik.i2p (an HTTPS proxy" -"\n" +"%(http)s\n" +"(an HTTP-only proxy) and %(https)s (an HTTPS proxy\n" "routed through Tor." msgstr "" "D'origine, I2P est livré avec deux outproxies configurés : " @@ -234,27 +234,15 @@ msgstr "" "respectueux et ne surchargez pas ces services avec trop de demandes !." #: i2p2www/pages/site/about/browser-config.html:94 -#, python-format msgid "" "Filtering is active on these outproxies (for example, mibbit and torrent\n" -"tracker access is blocked). Note that even though the pirate bay is " -"blocked\n" -"they host an official eepsite at %(tpb)s. " -"Eepsites\n" +"tracker access is blocked). Eepsites\n" "that are accessible via .i2p addresses are also not allowed via the " "outproxies.\n" -"As a convenience, False.i2p blocks ad servers." +"As a convenience, false.i2p blocks ad servers." msgstr "" -"Le filtrage est actif sur ces outproxies (par exemple, l'accès aux " -"trackers mibbit et torrent\n" -"est bloqué). Notez que même si The Pirate Bay est bloqué\n" -"ils accueillent un eepsite officiel à l'adresse %(tpb)s.\n" -"Les Eepsites qui sont accessibles via des adresses i2p ne sont pas " -"autorisés par les outproxies.\n" -"Par commodité, False.i2p bloque les serveurs publicitaires." -#: i2p2www/pages/site/about/browser-config.html:101 +#: i2p2www/pages/site/about/browser-config.html:100 msgid "" "Tor is good application to use" " as an\n" @@ -1075,11 +1063,10 @@ msgstr "" msgid "" "zzz interviewed by gulli.com\n" "March 2009\n" -"German translation\n" -"Russian translation" +"German translation" msgstr "" -#: i2p2www/pages/site/about/media.html:204 +#: i2p2www/pages/site/about/media.html:202 #, python-format msgid "" "zzz interviewed on the InfoSec Daily Podcast Ep. 454 " @@ -1087,7 +1074,7 @@ msgid "" "August 18, 2011" msgstr "" -#: i2p2www/pages/site/about/media.html:209 +#: i2p2www/pages/site/about/media.html:207 #, python-format msgid "" "I2P - Anonymity for the Masses,\n" @@ -1095,7 +1082,7 @@ msgid "" "November 11, 2011." msgstr "" -#: i2p2www/pages/site/about/media.html:215 +#: i2p2www/pages/site/about/media.html:213 #, python-format msgid "" "zzz and Lance James interviewed on the InfoSec Daily " diff --git a/i2p2www/translations/fr/LC_MESSAGES/blog.po b/i2p2www/translations/fr/LC_MESSAGES/blog.po index ba16f204..09c101d8 100644 --- a/i2p2www/translations/fr/LC_MESSAGES/blog.po +++ b/i2p2www/translations/fr/LC_MESSAGES/blog.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-29 06:46+0000\n" +"POT-Creation-Date: 2013-08-30 09:59+0000\n" "PO-Revision-Date: 2013-08-12 10:32+0000\n" "Last-Translator: str4d \n" "Language-Team: French " diff --git a/i2p2www/translations/fr/LC_MESSAGES/comparison.po b/i2p2www/translations/fr/LC_MESSAGES/comparison.po index 036c137e..d5d89758 100644 --- a/i2p2www/translations/fr/LC_MESSAGES/comparison.po +++ b/i2p2www/translations/fr/LC_MESSAGES/comparison.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-29 06:46+0000\n" +"POT-Creation-Date: 2013-08-30 09:59+0000\n" "PO-Revision-Date: 2013-06-29 11:32+0000\n" "Last-Translator: Boxoa590\n" "Language-Team: French " diff --git a/i2p2www/translations/fr/LC_MESSAGES/docs.po b/i2p2www/translations/fr/LC_MESSAGES/docs.po index 25e52e0e..d746b653 100644 --- a/i2p2www/translations/fr/LC_MESSAGES/docs.po +++ b/i2p2www/translations/fr/LC_MESSAGES/docs.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-29 06:46+0000\n" +"POT-Creation-Date: 2013-08-30 09:59+0000\n" "PO-Revision-Date: 2013-08-12 10:33+0000\n" "Last-Translator: str4d \n" "Language-Team: French " diff --git a/i2p2www/translations/fr/LC_MESSAGES/get-involved.po b/i2p2www/translations/fr/LC_MESSAGES/get-involved.po index 7f49a58c..4f3e5d56 100644 --- a/i2p2www/translations/fr/LC_MESSAGES/get-involved.po +++ b/i2p2www/translations/fr/LC_MESSAGES/get-involved.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-29 06:47+0000\n" +"POT-Creation-Date: 2013-08-30 09:59+0000\n" "PO-Revision-Date: 2013-08-11 15:29+0000\n" "Last-Translator: Boxoa590\n" "Language-Team: French " diff --git a/i2p2www/translations/fr/LC_MESSAGES/misc.po b/i2p2www/translations/fr/LC_MESSAGES/misc.po index 4c349904..48fa08ea 100644 --- a/i2p2www/translations/fr/LC_MESSAGES/misc.po +++ b/i2p2www/translations/fr/LC_MESSAGES/misc.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-29 06:47+0000\n" +"POT-Creation-Date: 2013-08-30 09:59+0000\n" "PO-Revision-Date: 2013-06-29 11:32+0000\n" "Last-Translator: Boxoa590\n" "Language-Team: French " diff --git a/i2p2www/translations/fr/LC_MESSAGES/priority.po b/i2p2www/translations/fr/LC_MESSAGES/priority.po index e516e56b..64a11abd 100644 --- a/i2p2www/translations/fr/LC_MESSAGES/priority.po +++ b/i2p2www/translations/fr/LC_MESSAGES/priority.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-29 06:47+0000\n" +"POT-Creation-Date: 2013-08-30 09:59+0000\n" "PO-Revision-Date: 2013-08-12 10:34+0000\n" "Last-Translator: str4d \n" "Language-Team: French " diff --git a/i2p2www/translations/fr/LC_MESSAGES/research.po b/i2p2www/translations/fr/LC_MESSAGES/research.po index a3d81781..25fff63a 100644 --- a/i2p2www/translations/fr/LC_MESSAGES/research.po +++ b/i2p2www/translations/fr/LC_MESSAGES/research.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-29 06:47+0000\n" +"POT-Creation-Date: 2013-08-30 09:59+0000\n" "PO-Revision-Date: 2013-08-11 14:55+0000\n" "Last-Translator: Boxoa590\n" "Language-Team: French " diff --git a/i2p2www/translations/pt/LC_MESSAGES/priority.po b/i2p2www/translations/pt/LC_MESSAGES/priority.po index 6e4d2653..0d634544 100644 --- a/i2p2www/translations/pt/LC_MESSAGES/priority.po +++ b/i2p2www/translations/pt/LC_MESSAGES/priority.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-29 06:47+0000\n" +"POT-Creation-Date: 2013-08-30 09:59+0000\n" "PO-Revision-Date: 2013-08-12 10:34+0000\n" "Last-Translator: str4d \n" "Language-Team: Portuguese " diff --git a/i2p2www/translations/sv_SE/LC_MESSAGES/about.po b/i2p2www/translations/sv_SE/LC_MESSAGES/about.po index 91024200..a9572d7b 100644 --- a/i2p2www/translations/sv_SE/LC_MESSAGES/about.po +++ b/i2p2www/translations/sv_SE/LC_MESSAGES/about.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-29 06:46+0000\n" +"POT-Creation-Date: 2013-08-30 09:59+0000\n" "PO-Revision-Date: 2013-04-27 23:10+0000\n" "Last-Translator: Martin Svensson \n" "Language-Team: Swedish (Sweden) " @@ -150,11 +150,11 @@ msgid "" msgstr "" #: i2p2www/pages/site/about/browser-config.html:83 +#, python-format msgid "" "By default, I2P comes with two outproxies configured: " -"false.i2p\n" -"(an HTTP-only proxy) and outproxyng.h2ik.i2p (an HTTPS proxy" -"\n" +"%(http)s\n" +"(an HTTP-only proxy) and %(https)s (an HTTPS proxy\n" "routed through Tor." msgstr "" @@ -169,19 +169,15 @@ msgid "" msgstr "" #: i2p2www/pages/site/about/browser-config.html:94 -#, python-format msgid "" "Filtering is active on these outproxies (for example, mibbit and torrent\n" -"tracker access is blocked). Note that even though the pirate bay is " -"blocked\n" -"they host an official eepsite at %(tpb)s. " -"Eepsites\n" +"tracker access is blocked). Eepsites\n" "that are accessible via .i2p addresses are also not allowed via the " "outproxies.\n" -"As a convenience, False.i2p blocks ad servers." +"As a convenience, false.i2p blocks ad servers." msgstr "" -#: i2p2www/pages/site/about/browser-config.html:101 +#: i2p2www/pages/site/about/browser-config.html:100 msgid "" "Tor is good application to use" " as an\n" @@ -993,11 +989,10 @@ msgstr "" msgid "" "zzz interviewed by gulli.com\n" "March 2009\n" -"German translation\n" -"Russian translation" +"German translation" msgstr "" -#: i2p2www/pages/site/about/media.html:204 +#: i2p2www/pages/site/about/media.html:202 #, python-format msgid "" "zzz interviewed on the InfoSec Daily Podcast Ep. 454 " @@ -1005,7 +1000,7 @@ msgid "" "August 18, 2011" msgstr "" -#: i2p2www/pages/site/about/media.html:209 +#: i2p2www/pages/site/about/media.html:207 #, python-format msgid "" "I2P - Anonymity for the Masses,\n" @@ -1013,7 +1008,7 @@ msgid "" "November 11, 2011." msgstr "" -#: i2p2www/pages/site/about/media.html:215 +#: i2p2www/pages/site/about/media.html:213 #, python-format msgid "" "zzz and Lance James interviewed on the InfoSec Daily " diff --git a/i2p2www/translations/sv_SE/LC_MESSAGES/blog.po b/i2p2www/translations/sv_SE/LC_MESSAGES/blog.po index cd14753d..39049d67 100644 --- a/i2p2www/translations/sv_SE/LC_MESSAGES/blog.po +++ b/i2p2www/translations/sv_SE/LC_MESSAGES/blog.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-29 06:46+0000\n" +"POT-Creation-Date: 2013-08-30 09:59+0000\n" "PO-Revision-Date: 2013-08-12 10:32+0000\n" "Last-Translator: str4d \n" "Language-Team: Swedish (Sweden) " diff --git a/i2p2www/translations/sv_SE/LC_MESSAGES/comparison.po b/i2p2www/translations/sv_SE/LC_MESSAGES/comparison.po index 64f6ac54..568d64db 100644 --- a/i2p2www/translations/sv_SE/LC_MESSAGES/comparison.po +++ b/i2p2www/translations/sv_SE/LC_MESSAGES/comparison.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-29 06:46+0000\n" +"POT-Creation-Date: 2013-08-30 09:59+0000\n" "PO-Revision-Date: 2013-04-27 23:10+0000\n" "Last-Translator: Martin Svensson \n" "Language-Team: Swedish (Sweden) " diff --git a/i2p2www/translations/sv_SE/LC_MESSAGES/docs.po b/i2p2www/translations/sv_SE/LC_MESSAGES/docs.po index c881cc84..790969de 100644 --- a/i2p2www/translations/sv_SE/LC_MESSAGES/docs.po +++ b/i2p2www/translations/sv_SE/LC_MESSAGES/docs.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-29 06:46+0000\n" +"POT-Creation-Date: 2013-08-30 09:59+0000\n" "PO-Revision-Date: 2013-04-27 23:10+0000\n" "Last-Translator: Martin Svensson \n" "Language-Team: Swedish (Sweden) " diff --git a/i2p2www/translations/sv_SE/LC_MESSAGES/get-involved.po b/i2p2www/translations/sv_SE/LC_MESSAGES/get-involved.po index 25e61587..38a342b2 100644 --- a/i2p2www/translations/sv_SE/LC_MESSAGES/get-involved.po +++ b/i2p2www/translations/sv_SE/LC_MESSAGES/get-involved.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-29 06:47+0000\n" +"POT-Creation-Date: 2013-08-30 09:59+0000\n" "PO-Revision-Date: 2013-04-27 23:10+0000\n" "Last-Translator: Martin Svensson \n" "Language-Team: Swedish (Sweden) " diff --git a/i2p2www/translations/sv_SE/LC_MESSAGES/misc.po b/i2p2www/translations/sv_SE/LC_MESSAGES/misc.po index 9ece766e..55902b64 100644 --- a/i2p2www/translations/sv_SE/LC_MESSAGES/misc.po +++ b/i2p2www/translations/sv_SE/LC_MESSAGES/misc.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-29 06:47+0000\n" +"POT-Creation-Date: 2013-08-30 09:59+0000\n" "PO-Revision-Date: 2013-04-27 23:10+0000\n" "Last-Translator: Martin Svensson \n" "Language-Team: Swedish (Sweden) " diff --git a/i2p2www/translations/sv_SE/LC_MESSAGES/priority.po b/i2p2www/translations/sv_SE/LC_MESSAGES/priority.po index 384991b4..c5e66c83 100644 --- a/i2p2www/translations/sv_SE/LC_MESSAGES/priority.po +++ b/i2p2www/translations/sv_SE/LC_MESSAGES/priority.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-29 06:47+0000\n" +"POT-Creation-Date: 2013-08-30 09:59+0000\n" "PO-Revision-Date: 2013-04-27 23:10+0000\n" "Last-Translator: Martin Svensson \n" "Language-Team: Swedish (Sweden) " diff --git a/i2p2www/translations/sv_SE/LC_MESSAGES/research.po b/i2p2www/translations/sv_SE/LC_MESSAGES/research.po index bba8ea8f..2192b423 100644 --- a/i2p2www/translations/sv_SE/LC_MESSAGES/research.po +++ b/i2p2www/translations/sv_SE/LC_MESSAGES/research.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-29 06:47+0000\n" +"POT-Creation-Date: 2013-08-30 09:59+0000\n" "PO-Revision-Date: 2013-04-27 23:10+0000\n" "Last-Translator: Martin Svensson \n" "Language-Team: Swedish (Sweden) " From 03f910fa20efaee14be93151273269358c2736a3 Mon Sep 17 00:00:00 2001 From: str4d Date: Fri, 30 Aug 2013 10:35:01 +0000 Subject: [PATCH 572/650] Temporarily disable translations for testing --- i2p2www/__init__.py | 12 ++++++------ i2p2www/pages/global/lang.html | 6 ------ 2 files changed, 6 insertions(+), 12 deletions(-) diff --git a/i2p2www/__init__.py b/i2p2www/__init__.py index 5dbf0cc0..747f6fa3 100644 --- a/i2p2www/__init__.py +++ b/i2p2www/__init__.py @@ -19,18 +19,18 @@ MEETINGS_PER_PAGE = 20 SUPPORTED_LANGS = [ 'en', - 'es', - 'zh_CN', - 'de', - 'fr', +# 'es', +# 'zh_CN', +# 'de', +# 'fr', # 'it', # 'nl', # 'ru', - 'sv_SE', +# 'sv_SE', # 'cs', # 'ar', # 'el', - 'pt', +# 'pt', ] DEFAULT_GETTEXT_DOMAIN = 'priority' diff --git a/i2p2www/pages/global/lang.html b/i2p2www/pages/global/lang.html index dd83130a..0094bad9 100644 --- a/i2p2www/pages/global/lang.html +++ b/i2p2www/pages/global/lang.html @@ -1,9 +1,3 @@

    • -
    • -
    • -
    • -
    • -
    • -
    From e4139998211a681b18224e52019803f863a29b2c Mon Sep 17 00:00:00 2001 From: str4d Date: Fri, 30 Aug 2013 11:01:52 +0000 Subject: [PATCH 573/650] Updated viewmtn link --- i2p2www/pages/site/docs/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/i2p2www/pages/site/docs/index.html b/i2p2www/pages/site/docs/index.html index 3a95ba2f..e7e9f263 100644 --- a/i2p2www/pages/site/docs/index.html +++ b/i2p2www/pages/site/docs/index.html @@ -222,7 +222,7 @@ Traditionally used only by Java applications and higher-level APIs.
  • {{ _('Bug tracker') }}
  • -{{ _('Viewmtn inside I2P') }}. +{{ _('Viewmtn inside I2P') }}.
  • {{ _('I2P Source exported to GitHub') }}
  • From 05708e6f9f1f067fad2d0fa1d00939f4274a2130 Mon Sep 17 00:00:00 2001 From: str4d Date: Fri, 30 Aug 2013 12:58:57 +0000 Subject: [PATCH 574/650] Removed skipnav link for testing --- i2p2www/pages/global/layout.html | 1 - 1 file changed, 1 deletion(-) diff --git a/i2p2www/pages/global/layout.html b/i2p2www/pages/global/layout.html index 8d91acb0..259b8881 100644 --- a/i2p2www/pages/global/layout.html +++ b/i2p2www/pages/global/layout.html @@ -26,7 +26,6 @@ {%- block headextra %}{% endblock %} -
    From dc6c987add13432e63469d601f8c4c0afa423ca5 Mon Sep 17 00:00:00 2001 From: str4d Date: Fri, 30 Aug 2013 13:27:39 +0000 Subject: [PATCH 575/650] Fixed 'any mirror' download redirect --- i2p2www/downloads.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/i2p2www/downloads.py b/i2p2www/downloads.py index 2a347745..7d40a4f6 100644 --- a/i2p2www/downloads.py +++ b/i2p2www/downloads.py @@ -73,4 +73,5 @@ def downloads_redirect(version, protocol, domain, file): if not domain in mirrors: abort(404) return redirect(mirrors[domain]['url'] % data) - return redirect(mirrors[randint(0, len(mirrors) - 1)]['url'] % data) + randomain = mirrors.keys()[randint(0, len(mirrors) - 1)] + return redirect(mirrors[randomain]['url'] % data) From dc40998e92a61370785cfe729c53854e7045b621 Mon Sep 17 00:00:00 2001 From: str4d Date: Fri, 30 Aug 2013 13:32:27 +0000 Subject: [PATCH 576/650] Updated mirror links for two servers with versioning --- i2p2www/pages/downloads/mirrors | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/i2p2www/pages/downloads/mirrors b/i2p2www/pages/downloads/mirrors index 84ca04ef..df33e6a9 100644 --- a/i2p2www/pages/downloads/mirrors +++ b/i2p2www/pages/downloads/mirrors @@ -2,6 +2,6 @@ {"protocol": "https", "domain": "i2p.googlecode.com", "path": "/files/%(file)s", "org": "Google Code", "org_url": "https://code.google.com", "country": "us"} {"protocol": "https", "domain": "launchpad.net", "path": "/i2p/trunk/%(version)s/+download/%(file)s", "org": "Launchpad", "org_url": "https://launchpad.net", "country": "us"} {"protocol": "http", "domain": "golden.mtveurope.org", "path": "/~yang/i2p_mirror/%(file)s", "org": "VServer.si", "org_url": "http://www.vserver.si", "country": "lu"} -{"protocol": "http", "domain": "a.mirror.geti2p.net", "path": "/releases/current/%(file)s", "org": "welterde", "country": "de"} -{"protocol": "http", "domain": "download.i2p2.no", "path": "/releases/current/%(file)s", "org": "meeh", "country": "no"} +{"protocol": "http", "domain": "a.mirror.geti2p.net", "path": "/releases/%(version)s/%(file)s", "org": "welterde", "country": "de"} +{"protocol": "http", "domain": "download.i2p2.no", "path": "/releases/%(version)s/%(file)s", "org": "meeh", "country": "no"} {"protocol": "https", "domain": "googledrive.com", "path": "/host/0B4jHEq5G7_EPWV9UeERwdGplZXc/%(version)s/%(file)s", "org": "Google Drive", "country": "us"} From 37c8008419a317a1deffa0518c7c29e9115ccb01 Mon Sep 17 00:00:00 2001 From: str4d Date: Fri, 30 Aug 2013 13:45:05 +0000 Subject: [PATCH 577/650] Updated links to Tor Project site to HTTPS --- i2p2www/pages/site/comparison/tor.html | 2 +- i2p2www/pages/site/docs/discussions/tunnel.html | 2 +- i2p2www/pages/site/docs/how/tech-intro.html | 2 +- i2p2www/pages/site/docs/how/threat-model.html | 2 +- i2p2www/pages/site/docs/tunnels/old-implementation.html | 2 +- i2p2www/pages/site/faq.html | 6 +++--- i2p2www/pages/site/links.html | 2 +- 7 files changed, 9 insertions(+), 9 deletions(-) diff --git a/i2p2www/pages/site/comparison/tor.html b/i2p2www/pages/site/comparison/tor.html index e1c15fd8..4b972f33 100644 --- a/i2p2www/pages/site/comparison/tor.html +++ b/i2p2www/pages/site/comparison/tor.html @@ -3,7 +3,7 @@ {% block content %}

    Tor / Onion Routing

    -[Tor] +[Tor] [Onion Routing]

    {% trans netdb=site_url('docs/how/network-database'), peerselection=site_url('docs/how/peer-selection') -%} Tor and Onion Routing are both anonymizing proxy networks, diff --git a/i2p2www/pages/site/docs/discussions/tunnel.html b/i2p2www/pages/site/docs/discussions/tunnel.html index bd8995b7..0a172038 100644 --- a/i2p2www/pages/site/docs/discussions/tunnel.html +++ b/i2p2www/pages/site/docs/discussions/tunnel.html @@ -165,7 +165,7 @@ vulnerability to predecessor attacks. While the endpoints and gateways of those tunnels will be randomly distributed across the network (perhaps even including the tunnel creator in that set), another alternative is to use the tunnel pathways themselves to pass along the request and response, as is done -in Tor. This, however, may lead to leaks +in Tor. This, however, may lead to leaks during tunnel creation, allowing peers to discover how many hops there are later on in the tunnel by monitoring the timing or packet count as diff --git a/i2p2www/pages/site/docs/how/tech-intro.html b/i2p2www/pages/site/docs/how/tech-intro.html index aa7fdc9e..72efb333 100644 --- a/i2p2www/pages/site/docs/how/tech-intro.html +++ b/i2p2www/pages/site/docs/how/tech-intro.html @@ -681,7 +681,7 @@ See also the Network Comparisons Page. {%- endtrans %}

    Tor

    -

    {% trans %}website{% endtrans %}

    +

    {% trans %}website{% endtrans %}

    {% trans -%} At first glance, Tor and I2P have many functional and anonymity related diff --git a/i2p2www/pages/site/docs/how/threat-model.html b/i2p2www/pages/site/docs/how/threat-model.html index 1fd3b026..5553f7ac 100644 --- a/i2p2www/pages/site/docs/how/threat-model.html +++ b/i2p2www/pages/site/docs/how/threat-model.html @@ -80,7 +80,7 @@ the current implementation does not. I2P design started in 2003, not long after the advent of [Onion Routing], [Freenet], and -[Tor]. +[Tor]. Our design benefits substantially from the research published around that time. I2P uses several onion routing techniques, so we continue to benefit from the significant academic interest in Tor. diff --git a/i2p2www/pages/site/docs/tunnels/old-implementation.html b/i2p2www/pages/site/docs/tunnels/old-implementation.html index 88c5c40d..456f0c25 100644 --- a/i2p2www/pages/site/docs/tunnels/old-implementation.html +++ b/i2p2www/pages/site/docs/tunnels/old-implementation.html @@ -492,7 +492,7 @@ vulnerability to predecessor attacks. While the endpoints and gateways of those tunnels will be randomly distributed across the network (perhaps even including the tunnel creator in that set), another alternative is to use the tunnel pathways themselves to pass along the request and response, as is done -in TOR. This, however, may lead to leaks +in TOR. This, however, may lead to leaks during tunnel creation, allowing peers to discover how many hops there are later on in the tunnel by monitoring the timing or packet count as the tunnel is built. Techniques could be used to minimize this issue, such as using each of diff --git a/i2p2www/pages/site/faq.html b/i2p2www/pages/site/faq.html index 3f9e727b..9fcdf1c8 100644 --- a/i2p2www/pages/site/faq.html +++ b/i2p2www/pages/site/faq.html @@ -272,7 +272,7 @@ The best way to stay "better-connected" to the network is to {% trans %}Is my router an "exit node" to the regular Internet? I don't want it to be.{% endtrans %} ({{ _('link') }})

    {% trans -%} -No. Unlike Tor, +No. Unlike Tor, "exit nodes" or "outproxies" are not an inherent part of the network. Only volunteers who set up and run separate applications will relay traffic to the regular Internet. There are very, very few of these. @@ -290,7 +290,7 @@ and set your outproxy list to 'false.i2p' (only). Then stop and restart the eepProxy. If it doesn't work, the outproxy is not up. It is not I2P's fault. If your primary reason to use an anonymous network is to anonymously access sites -on the regular Internet, you should probably try Tor. +on the regular Internet, you should probably try Tor. {%- endtrans %}

    {% trans %}I can't access https:// or ftp:// sites through I2P.{% endtrans %} @@ -368,7 +368,7 @@ There is additional discussion about this on Tor. +If this type of service is required, try Tor. {%- endtrans %}

    {% trans %}Most of the eepsites within I2P are down?{% endtrans %} diff --git a/i2p2www/pages/site/links.html b/i2p2www/pages/site/links.html index d781d2b4..7f48b857 100644 --- a/i2p2www/pages/site/links.html +++ b/i2p2www/pages/site/links.html @@ -20,7 +20,7 @@ See also the page with
  • The Pegasus Project
  • Telecomix
  • -
  • Tor
  • +
  • Tor
  • {{ _('More Projects and Documentation') }}

  • Freehaven's Anonymity Bibliography
  • GNUNet's related projects
  • From d543917b4d0570cccbea5cf6d2b7d10fdb343466 Mon Sep 17 00:00:00 2001 From: str4d Date: Fri, 30 Aug 2013 13:50:08 +0000 Subject: [PATCH 578/650] Different (accessible) link to hjelmvik_breaking.pdf --- i2p2www/pages/site/docs/how/threat-model.html | 2 +- i2p2www/pages/site/docs/transport/index.html | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/i2p2www/pages/site/docs/how/threat-model.html b/i2p2www/pages/site/docs/how/threat-model.html index 5553f7ac..4e544193 100644 --- a/i2p2www/pages/site/docs/how/threat-model.html +++ b/i2p2www/pages/site/docs/how/threat-model.html @@ -574,7 +574,7 @@ Working directly with DPI and obfuscation experts {%- endtrans %}
  • -

    {% trans pdf='http://www.cse.chalmers.se/%7Ejohnwolf/publications/hjelmvik_breaking.pdf' -%} +

    {% trans pdf='http://www.iis.se/docs/hjelmvik_breaking.pdf' -%} Reference: Breaking and Improving Protocol Obfuscation {%- endtrans %}

    diff --git a/i2p2www/pages/site/docs/transport/index.html b/i2p2www/pages/site/docs/transport/index.html index ab1b7b11..f43c5c74 100644 --- a/i2p2www/pages/site/docs/transport/index.html +++ b/i2p2www/pages/site/docs/transport/index.html @@ -159,7 +159,7 @@ However, as NTCP buffers are partially in the kernel and SSU buffers are on the that assumption is difficult to verify. {%- endtrans %}

    -

    {% trans pdf='http://www.cse.chalmers.se/%7Ejohnwolf/publications/hjelmvik_breaking.pdf' -%} +

    {% trans pdf='http://www.iis.se/docs/hjelmvik_breaking.pdf' -%} Analyze Breaking and Improving Protocol Obfuscation and see how transport-layer padding may improve things. {%- endtrans %}

    From 2d61524bd0fe96cfa9ac45765cf045538023c112 Mon Sep 17 00:00:00 2001 From: str4d Date: Fri, 30 Aug 2013 13:57:57 +0000 Subject: [PATCH 579/650] Linked to other known inproxies --- .../pages/site/docs/applications/supported.html | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/i2p2www/pages/site/docs/applications/supported.html b/i2p2www/pages/site/docs/applications/supported.html index 7420d198..2542d583 100644 --- a/i2p2www/pages/site/docs/applications/supported.html +++ b/i2p2www/pages/site/docs/applications/supported.html @@ -645,6 +645,22 @@ Gateways allowing users on the public Internet to access eepsites. i2p.to — {% trans tino=i2pconv('tino.i2p') -%} tino's inproxy on the public Internet. +{%- endtrans %} + [{{ _('service') }}] + + +
  • + i2p.us — +{% trans -%} +Another inproxy on the public Internet. +{%- endtrans %} + [{{ _('service') }}] +
  • + +
  • + i2p.me — +{% trans -%} +Another inproxy on the public Internet. {%- endtrans %} [{{ _('service') }}]
  • From 0eea04e1fbc1fdc73c1119ad6998578368121311 Mon Sep 17 00:00:00 2001 From: str4d Date: Fri, 30 Aug 2013 14:01:13 +0000 Subject: [PATCH 580/650] Fixed url of Irongeek presentation --- i2p2www/pages/papers/anonbib.bib | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/i2p2www/pages/papers/anonbib.bib b/i2p2www/pages/papers/anonbib.bib index 73b59b1e..da5f5e32 100644 --- a/i2p2www/pages/papers/anonbib.bib +++ b/i2p2www/pages/papers/anonbib.bib @@ -138,7 +138,7 @@ year = {2011}, month = {January}, location = {DC}, - www_pdf_url = {http://www.irongeek.com/downloads/Identifying\%20the\%20true\%20IP\%20of\%20I2P\%20service\%20hosts.pdf}, + www_pdf_url = {http://www.irongeek.com/downloads/Identifying%20the%20true%20IP%20of%20I2P%20service%20hosts.pdf}, www_section = traffic, } From d7dff2b7c525abdab259e785888572e1a9e37883 Mon Sep 17 00:00:00 2001 From: str4d Date: Fri, 30 Aug 2013 14:07:43 +0000 Subject: [PATCH 581/650] Commented out an unusable link (page requires authentication) --- i2p2www/pages/site/links.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/i2p2www/pages/site/links.html b/i2p2www/pages/site/links.html index 7f48b857..33abeda0 100644 --- a/i2p2www/pages/site/links.html +++ b/i2p2www/pages/site/links.html @@ -17,7 +17,7 @@ See also the page with
  • Onioncat
  • Relakks
  • -
  • The Pegasus Project
  • +
  • Telecomix
  • Tor
  • From a06aea316f6f97526cf8fe58152bf0e6efc76690 Mon Sep 17 00:00:00 2001 From: str4d Date: Fri, 30 Aug 2013 14:13:34 +0000 Subject: [PATCH 582/650] Domain conversion --- i2p2www/blog/2011/06/06/Ipredator-SoC.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/i2p2www/blog/2011/06/06/Ipredator-SoC.rst b/i2p2www/blog/2011/06/06/Ipredator-SoC.rst index 40c96634..870ff823 100644 --- a/i2p2www/blog/2011/06/06/Ipredator-SoC.rst +++ b/i2p2www/blog/2011/06/06/Ipredator-SoC.rst @@ -20,7 +20,7 @@ This work was the idea of Jan-Erik Fiske of `ViaEuropa`_ and Peter Sunde of `fla Current information can be found on `zzz's forum`_ and #i2p-dev on chat.freenode.net -.. _`zzz's forum`: http://zzz.i2p.to/topics/888 +.. _`zzz's forum`: http://{{ i2pconv('zzz.i2p') }}/topics/888 Cheers From 50cce2960c99da54f5e79a1f7214a95a44a833d4 Mon Sep 17 00:00:00 2001 From: str4d Date: Fri, 30 Aug 2013 14:21:35 +0000 Subject: [PATCH 583/650] Updated translation strings --- i2p2www/translations/de/LC_MESSAGES/about.po | 2 +- i2p2www/translations/de/LC_MESSAGES/blog.po | 2 +- .../translations/de/LC_MESSAGES/comparison.po | 2 +- i2p2www/translations/de/LC_MESSAGES/docs.po | 47 +++++++++-------- .../de/LC_MESSAGES/get-involved.po | 2 +- i2p2www/translations/de/LC_MESSAGES/misc.po | 2 +- .../translations/de/LC_MESSAGES/priority.po | 22 ++++---- .../translations/de/LC_MESSAGES/research.po | 2 +- i2p2www/translations/es/LC_MESSAGES/about.po | 2 +- i2p2www/translations/es/LC_MESSAGES/blog.po | 2 +- .../translations/es/LC_MESSAGES/comparison.po | 2 +- i2p2www/translations/es/LC_MESSAGES/docs.po | 51 +++++++++++-------- .../es/LC_MESSAGES/get-involved.po | 2 +- i2p2www/translations/es/LC_MESSAGES/misc.po | 2 +- .../translations/es/LC_MESSAGES/priority.po | 25 +++++---- .../translations/es/LC_MESSAGES/research.po | 2 +- i2p2www/translations/fr/LC_MESSAGES/about.po | 2 +- i2p2www/translations/fr/LC_MESSAGES/blog.po | 2 +- .../translations/fr/LC_MESSAGES/comparison.po | 2 +- i2p2www/translations/fr/LC_MESSAGES/docs.po | 47 +++++++++-------- .../fr/LC_MESSAGES/get-involved.po | 2 +- i2p2www/translations/fr/LC_MESSAGES/misc.po | 2 +- .../translations/fr/LC_MESSAGES/priority.po | 25 +++++---- .../translations/fr/LC_MESSAGES/research.po | 2 +- .../translations/pt/LC_MESSAGES/priority.po | 22 ++++---- .../translations/sv_SE/LC_MESSAGES/about.po | 2 +- .../translations/sv_SE/LC_MESSAGES/blog.po | 2 +- .../sv_SE/LC_MESSAGES/comparison.po | 2 +- .../translations/sv_SE/LC_MESSAGES/docs.po | 47 +++++++++-------- .../sv_SE/LC_MESSAGES/get-involved.po | 2 +- .../translations/sv_SE/LC_MESSAGES/misc.po | 2 +- .../sv_SE/LC_MESSAGES/priority.po | 22 ++++---- .../sv_SE/LC_MESSAGES/research.po | 2 +- 33 files changed, 187 insertions(+), 169 deletions(-) diff --git a/i2p2www/translations/de/LC_MESSAGES/about.po b/i2p2www/translations/de/LC_MESSAGES/about.po index d2d7e627..67817c5b 100644 --- a/i2p2www/translations/de/LC_MESSAGES/about.po +++ b/i2p2www/translations/de/LC_MESSAGES/about.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-30 09:59+0000\n" +"POT-Creation-Date: 2013-08-30 14:17+0000\n" "PO-Revision-Date: 2013-07-04 16:33+0000\n" "Last-Translator: D.A. Loader\n" "Language-Team: German " diff --git a/i2p2www/translations/de/LC_MESSAGES/blog.po b/i2p2www/translations/de/LC_MESSAGES/blog.po index cf0f53e1..b44fb4e3 100644 --- a/i2p2www/translations/de/LC_MESSAGES/blog.po +++ b/i2p2www/translations/de/LC_MESSAGES/blog.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-30 09:59+0000\n" +"POT-Creation-Date: 2013-08-30 14:17+0000\n" "PO-Revision-Date: 2013-08-12 10:32+0000\n" "Last-Translator: str4d \n" "Language-Team: German " diff --git a/i2p2www/translations/de/LC_MESSAGES/comparison.po b/i2p2www/translations/de/LC_MESSAGES/comparison.po index 75a837f9..ce683f33 100644 --- a/i2p2www/translations/de/LC_MESSAGES/comparison.po +++ b/i2p2www/translations/de/LC_MESSAGES/comparison.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-30 09:59+0000\n" +"POT-Creation-Date: 2013-08-30 14:17+0000\n" "PO-Revision-Date: 2013-07-04 16:33+0000\n" "Last-Translator: D.A. Loader\n" "Language-Team: German " diff --git a/i2p2www/translations/de/LC_MESSAGES/docs.po b/i2p2www/translations/de/LC_MESSAGES/docs.po index 053be506..bd5ea511 100644 --- a/i2p2www/translations/de/LC_MESSAGES/docs.po +++ b/i2p2www/translations/de/LC_MESSAGES/docs.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-30 09:59+0000\n" +"POT-Creation-Date: 2013-08-30 14:17+0000\n" "PO-Revision-Date: 2013-08-12 10:33+0000\n" "Last-Translator: str4d \n" "Language-Team: German " @@ -3899,17 +3899,17 @@ msgid "Inproxies" msgstr "" #: i2p2www/pages/site/docs/applications/supported.html:71 -#: i2p2www/pages/site/docs/applications/supported.html:653 +#: i2p2www/pages/site/docs/applications/supported.html:669 msgid "Outproxies" msgstr "" #: i2p2www/pages/site/docs/applications/supported.html:76 -#: i2p2www/pages/site/docs/applications/supported.html:667 +#: i2p2www/pages/site/docs/applications/supported.html:683 msgid "Website Hosting" msgstr "" #: i2p2www/pages/site/docs/applications/supported.html:79 -#: i2p2www/pages/site/docs/applications/supported.html:682 +#: i2p2www/pages/site/docs/applications/supported.html:698 msgid "Web servers" msgstr "" @@ -3933,7 +3933,7 @@ msgstr "" #: i2p2www/pages/site/docs/applications/supported.html:279 #: i2p2www/pages/site/docs/applications/supported.html:311 #: i2p2www/pages/site/docs/applications/supported.html:336 -#: i2p2www/pages/site/docs/applications/supported.html:679 +#: i2p2www/pages/site/docs/applications/supported.html:695 msgid "bundled" msgstr "" @@ -3994,11 +3994,11 @@ msgstr "" #: i2p2www/pages/site/docs/applications/supported.html:618 #: i2p2www/pages/site/docs/applications/supported.html:627 #: i2p2www/pages/site/docs/applications/supported.html:633 -#: i2p2www/pages/site/docs/applications/supported.html:679 -#: i2p2www/pages/site/docs/applications/supported.html:694 -#: i2p2www/pages/site/docs/applications/supported.html:700 -#: i2p2www/pages/site/docs/applications/supported.html:706 -#: i2p2www/pages/site/docs/applications/supported.html:712 +#: i2p2www/pages/site/docs/applications/supported.html:695 +#: i2p2www/pages/site/docs/applications/supported.html:710 +#: i2p2www/pages/site/docs/applications/supported.html:716 +#: i2p2www/pages/site/docs/applications/supported.html:722 +#: i2p2www/pages/site/docs/applications/supported.html:728 msgid "standalone" msgstr "" @@ -4035,7 +4035,9 @@ msgstr "" #: i2p2www/pages/site/docs/applications/supported.html:602 #: i2p2www/pages/site/docs/applications/supported.html:608 #: i2p2www/pages/site/docs/applications/supported.html:649 -#: i2p2www/pages/site/docs/applications/supported.html:663 +#: i2p2www/pages/site/docs/applications/supported.html:657 +#: i2p2www/pages/site/docs/applications/supported.html:665 +#: i2p2www/pages/site/docs/applications/supported.html:679 msgid "service" msgstr "" @@ -4405,17 +4407,22 @@ msgstr "" msgid "tino's inproxy on the public Internet." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:655 +#: i2p2www/pages/site/docs/applications/supported.html:654 +#: i2p2www/pages/site/docs/applications/supported.html:662 +msgid "Another inproxy on the public Internet." +msgstr "" + +#: i2p2www/pages/site/docs/applications/supported.html:671 msgid "" "Gateways allowing I2P users to access content hosted on the public " "Internet." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:662 +#: i2p2www/pages/site/docs/applications/supported.html:678 msgid "Publicly advertised outproxy running Squid, located in Germany." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:672 +#: i2p2www/pages/site/docs/applications/supported.html:688 msgid "" "Lightweight web server and Java servlet container. I2P is tightly\n" "integrated with a bundled copy of Jetty which by default is configured to" @@ -4427,26 +4434,26 @@ msgid "" "I2P." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:684 +#: i2p2www/pages/site/docs/applications/supported.html:700 msgid "" "In addition to Jetty, any web server should function over I2P without\n" "modification so long as it's HTTP-compliant. Some web servers known to\n" "currently serve content on the I2P network are:" msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:693 +#: i2p2www/pages/site/docs/applications/supported.html:709 msgid "Most popular web server on the public WWW." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:699 +#: i2p2www/pages/site/docs/applications/supported.html:715 msgid "Web server and Java servlet container. More features than Jetty." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:705 +#: i2p2www/pages/site/docs/applications/supported.html:721 msgid "Fast lightweight web server." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:711 +#: i2p2www/pages/site/docs/applications/supported.html:727 msgid "High-performance lightweight web server." msgstr "" @@ -10307,7 +10314,7 @@ msgid "" "I2P design started in 2003, not long after the advent of\n" "[Onion Routing],\n" "[Freenet], and\n" -"[Tor].\n" +"[Tor].\n" "Our design benefits substantially from the research published around that" " time.\n" "I2P uses several onion routing techniques, so we continue to benefit\n" diff --git a/i2p2www/translations/de/LC_MESSAGES/get-involved.po b/i2p2www/translations/de/LC_MESSAGES/get-involved.po index e0fa8065..52e1ce51 100644 --- a/i2p2www/translations/de/LC_MESSAGES/get-involved.po +++ b/i2p2www/translations/de/LC_MESSAGES/get-involved.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-30 09:59+0000\n" +"POT-Creation-Date: 2013-08-30 14:17+0000\n" "PO-Revision-Date: 2013-07-04 16:33+0000\n" "Last-Translator: D.A. Loader\n" "Language-Team: German " diff --git a/i2p2www/translations/de/LC_MESSAGES/misc.po b/i2p2www/translations/de/LC_MESSAGES/misc.po index 0af83f02..adf4d7f8 100644 --- a/i2p2www/translations/de/LC_MESSAGES/misc.po +++ b/i2p2www/translations/de/LC_MESSAGES/misc.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-30 09:59+0000\n" +"POT-Creation-Date: 2013-08-30 14:17+0000\n" "PO-Revision-Date: 2013-07-04 16:33+0000\n" "Last-Translator: D.A. Loader\n" "Language-Team: German " diff --git a/i2p2www/translations/de/LC_MESSAGES/priority.po b/i2p2www/translations/de/LC_MESSAGES/priority.po index 0ac2f4a1..f771bbb4 100644 --- a/i2p2www/translations/de/LC_MESSAGES/priority.po +++ b/i2p2www/translations/de/LC_MESSAGES/priority.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-30 09:59+0000\n" +"POT-Creation-Date: 2013-08-30 14:17+0000\n" "PO-Revision-Date: 2013-08-12 10:34+0000\n" "Last-Translator: str4d \n" "Language-Team: German " @@ -710,31 +710,27 @@ msgstr "USA" msgid "Donate" msgstr "Spenden" -#: i2p2www/pages/global/layout.html:29 -msgid "Skip navigation" -msgstr "Navigation überspringen" - -#: i2p2www/pages/global/layout.html:32 +#: i2p2www/pages/global/layout.html:31 msgid "I2P Logo" msgstr "I2P Logo" -#: i2p2www/pages/global/layout.html:32 i2p2www/pages/site/index.html:3 +#: i2p2www/pages/global/layout.html:31 i2p2www/pages/site/index.html:3 msgid "The Invisible Internet Project" msgstr "Das Invisible Internet Projekt" -#: i2p2www/pages/global/layout.html:56 +#: i2p2www/pages/global/layout.html:55 #, python-format msgid "" "This page was last updated in %(lastupdated)s and is accurate for router " "version %(accuratefor)s." msgstr "" -#: i2p2www/pages/global/layout.html:60 +#: i2p2www/pages/global/layout.html:59 #, python-format msgid "This page was last updated in %(lastupdated)s." msgstr "" -#: i2p2www/pages/global/layout.html:64 +#: i2p2www/pages/global/layout.html:63 #, python-format msgid "This page is accurate for router version %(accuratefor)s." msgstr "" @@ -1680,7 +1676,7 @@ msgstr "" #: i2p2www/pages/site/faq.html:274 msgid "" -"No. Unlike Tor,\n" +"No. Unlike Tor,\n" "\"exit nodes\" or \"outproxies\" are not an inherent part of the network." "\n" "Only volunteers who set up and run separate applications will relay " @@ -1705,7 +1701,7 @@ msgid "" "If your primary reason to use an anonymous network is to anonymously " "access sites\n" "on the regular Internet, you should probably try Tor." +"href=\"https://www.torproject.org/\">Tor." msgstr "" #: i2p2www/pages/site/faq.html:298 @@ -1826,7 +1822,7 @@ msgid "" "There are only three types of outproxies running right now: HTTP, HTTPS, " "and email. Note that there is not a SOCKS outproxy.\n" "If this type of service is required, try Tor." +"href=\"https://www.torproject.org/\">Tor." msgstr "" #: i2p2www/pages/site/faq.html:376 diff --git a/i2p2www/translations/de/LC_MESSAGES/research.po b/i2p2www/translations/de/LC_MESSAGES/research.po index 76284ef5..c940dd23 100644 --- a/i2p2www/translations/de/LC_MESSAGES/research.po +++ b/i2p2www/translations/de/LC_MESSAGES/research.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-30 09:59+0000\n" +"POT-Creation-Date: 2013-08-30 14:17+0000\n" "PO-Revision-Date: 2013-07-04 16:33+0000\n" "Last-Translator: D.A. Loader\n" "Language-Team: German " diff --git a/i2p2www/translations/es/LC_MESSAGES/about.po b/i2p2www/translations/es/LC_MESSAGES/about.po index 8d7e2088..248d6b3a 100644 --- a/i2p2www/translations/es/LC_MESSAGES/about.po +++ b/i2p2www/translations/es/LC_MESSAGES/about.po @@ -13,7 +13,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-30 09:59+0000\n" +"POT-Creation-Date: 2013-08-30 14:17+0000\n" "PO-Revision-Date: 2013-07-22 10:38+0000\n" "Last-Translator: trolly\n" "Language-Team: Spanish " diff --git a/i2p2www/translations/es/LC_MESSAGES/blog.po b/i2p2www/translations/es/LC_MESSAGES/blog.po index 7ebc52b6..27dbec6e 100644 --- a/i2p2www/translations/es/LC_MESSAGES/blog.po +++ b/i2p2www/translations/es/LC_MESSAGES/blog.po @@ -13,7 +13,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-30 09:59+0000\n" +"POT-Creation-Date: 2013-08-30 14:17+0000\n" "PO-Revision-Date: 2013-08-12 10:32+0000\n" "Last-Translator: str4d \n" "Language-Team: Spanish " diff --git a/i2p2www/translations/es/LC_MESSAGES/comparison.po b/i2p2www/translations/es/LC_MESSAGES/comparison.po index c4ba85fc..69647462 100644 --- a/i2p2www/translations/es/LC_MESSAGES/comparison.po +++ b/i2p2www/translations/es/LC_MESSAGES/comparison.po @@ -13,7 +13,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-30 09:59+0000\n" +"POT-Creation-Date: 2013-08-30 14:17+0000\n" "PO-Revision-Date: 2013-07-11 10:13+0000\n" "Last-Translator: trolly\n" "Language-Team: Spanish " diff --git a/i2p2www/translations/es/LC_MESSAGES/docs.po b/i2p2www/translations/es/LC_MESSAGES/docs.po index ba5d35e8..4affb3b7 100644 --- a/i2p2www/translations/es/LC_MESSAGES/docs.po +++ b/i2p2www/translations/es/LC_MESSAGES/docs.po @@ -13,7 +13,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-30 09:59+0000\n" +"POT-Creation-Date: 2013-08-30 14:17+0000\n" "PO-Revision-Date: 2013-08-12 10:33+0000\n" "Last-Translator: str4d \n" "Language-Team: Spanish " @@ -3901,17 +3901,17 @@ msgid "Inproxies" msgstr "Proxies de entrada" #: i2p2www/pages/site/docs/applications/supported.html:71 -#: i2p2www/pages/site/docs/applications/supported.html:653 +#: i2p2www/pages/site/docs/applications/supported.html:669 msgid "Outproxies" msgstr "Proxies de salida" #: i2p2www/pages/site/docs/applications/supported.html:76 -#: i2p2www/pages/site/docs/applications/supported.html:667 +#: i2p2www/pages/site/docs/applications/supported.html:683 msgid "Website Hosting" msgstr "Alojamiento web" #: i2p2www/pages/site/docs/applications/supported.html:79 -#: i2p2www/pages/site/docs/applications/supported.html:682 +#: i2p2www/pages/site/docs/applications/supported.html:698 msgid "Web servers" msgstr "Servidores web" @@ -3941,7 +3941,7 @@ msgstr "" #: i2p2www/pages/site/docs/applications/supported.html:279 #: i2p2www/pages/site/docs/applications/supported.html:311 #: i2p2www/pages/site/docs/applications/supported.html:336 -#: i2p2www/pages/site/docs/applications/supported.html:679 +#: i2p2www/pages/site/docs/applications/supported.html:695 msgid "bundled" msgstr "incluida" @@ -4010,11 +4010,11 @@ msgstr "" #: i2p2www/pages/site/docs/applications/supported.html:618 #: i2p2www/pages/site/docs/applications/supported.html:627 #: i2p2www/pages/site/docs/applications/supported.html:633 -#: i2p2www/pages/site/docs/applications/supported.html:679 -#: i2p2www/pages/site/docs/applications/supported.html:694 -#: i2p2www/pages/site/docs/applications/supported.html:700 -#: i2p2www/pages/site/docs/applications/supported.html:706 -#: i2p2www/pages/site/docs/applications/supported.html:712 +#: i2p2www/pages/site/docs/applications/supported.html:695 +#: i2p2www/pages/site/docs/applications/supported.html:710 +#: i2p2www/pages/site/docs/applications/supported.html:716 +#: i2p2www/pages/site/docs/applications/supported.html:722 +#: i2p2www/pages/site/docs/applications/supported.html:728 msgid "standalone" msgstr "independiente" @@ -4058,7 +4058,9 @@ msgstr "" #: i2p2www/pages/site/docs/applications/supported.html:602 #: i2p2www/pages/site/docs/applications/supported.html:608 #: i2p2www/pages/site/docs/applications/supported.html:649 -#: i2p2www/pages/site/docs/applications/supported.html:663 +#: i2p2www/pages/site/docs/applications/supported.html:657 +#: i2p2www/pages/site/docs/applications/supported.html:665 +#: i2p2www/pages/site/docs/applications/supported.html:679 msgid "service" msgstr "servicio" @@ -4544,7 +4546,15 @@ msgstr "" "Proxy de entrada de tino en el Internet " "público." -#: i2p2www/pages/site/docs/applications/supported.html:655 +#: i2p2www/pages/site/docs/applications/supported.html:654 +#: i2p2www/pages/site/docs/applications/supported.html:662 +#, fuzzy +msgid "Another inproxy on the public Internet." +msgstr "" +"Proxy de entrada de tino en el Internet " +"público." + +#: i2p2www/pages/site/docs/applications/supported.html:671 msgid "" "Gateways allowing I2P users to access content hosted on the public " "Internet." @@ -4552,13 +4562,13 @@ msgstr "" "Salidas que permiten a los usuarios de I2P acceder al contenido en el " "Internet público." -#: i2p2www/pages/site/docs/applications/supported.html:662 +#: i2p2www/pages/site/docs/applications/supported.html:678 msgid "Publicly advertised outproxy running Squid, located in Germany." msgstr "" "Proxy de salida públicamente anunciado que usa Squid, localizado en " "Alemania." -#: i2p2www/pages/site/docs/applications/supported.html:672 +#: i2p2www/pages/site/docs/applications/supported.html:688 msgid "" "Lightweight web server and Java servlet container. I2P is tightly\n" "integrated with a bundled copy of Jetty which by default is configured to" @@ -4576,7 +4586,7 @@ msgstr "" "Jetty incluida también sirve la consola del ruter de I2P y las " "palicaciones web incluidas con I2P." -#: i2p2www/pages/site/docs/applications/supported.html:684 +#: i2p2www/pages/site/docs/applications/supported.html:700 msgid "" "In addition to Jetty, any web server should function over I2P without\n" "modification so long as it's HTTP-compliant. Some web servers known to\n" @@ -4586,19 +4596,19 @@ msgstr "" "modificaciones mientras sea compatible con HTTP. Algunos servidores web " "usados actualmente para servir contenido en I2P son:" -#: i2p2www/pages/site/docs/applications/supported.html:693 +#: i2p2www/pages/site/docs/applications/supported.html:709 msgid "Most popular web server on the public WWW." msgstr "El servidor web más popular en la WWW pública." -#: i2p2www/pages/site/docs/applications/supported.html:699 +#: i2p2www/pages/site/docs/applications/supported.html:715 msgid "Web server and Java servlet container. More features than Jetty." msgstr "Servidor web en Java servlet container. Con mas funciones que Jetty." -#: i2p2www/pages/site/docs/applications/supported.html:705 +#: i2p2www/pages/site/docs/applications/supported.html:721 msgid "Fast lightweight web server." msgstr "Servidor web rápido y ligero" -#: i2p2www/pages/site/docs/applications/supported.html:711 +#: i2p2www/pages/site/docs/applications/supported.html:727 msgid "High-performance lightweight web server." msgstr "Servidor web ligero de alto rendimiento." @@ -11690,11 +11700,12 @@ msgid "The Threat Model (Attacks)" msgstr "El modelo de reisgos (Ataques)" #: i2p2www/pages/site/docs/how/threat-model.html:79 +#, fuzzy msgid "" "I2P design started in 2003, not long after the advent of\n" "[Onion Routing],\n" "[Freenet], and\n" -"[Tor].\n" +"[Tor].\n" "Our design benefits substantially from the research published around that" " time.\n" "I2P uses several onion routing techniques, so we continue to benefit\n" diff --git a/i2p2www/translations/es/LC_MESSAGES/get-involved.po b/i2p2www/translations/es/LC_MESSAGES/get-involved.po index 1196fec7..aee92c68 100644 --- a/i2p2www/translations/es/LC_MESSAGES/get-involved.po +++ b/i2p2www/translations/es/LC_MESSAGES/get-involved.po @@ -13,7 +13,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-30 09:59+0000\n" +"POT-Creation-Date: 2013-08-30 14:17+0000\n" "PO-Revision-Date: 2013-07-11 10:13+0000\n" "Last-Translator: trolly\n" "Language-Team: Spanish " diff --git a/i2p2www/translations/es/LC_MESSAGES/misc.po b/i2p2www/translations/es/LC_MESSAGES/misc.po index 71980426..9c5ce521 100644 --- a/i2p2www/translations/es/LC_MESSAGES/misc.po +++ b/i2p2www/translations/es/LC_MESSAGES/misc.po @@ -13,7 +13,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-30 09:59+0000\n" +"POT-Creation-Date: 2013-08-30 14:17+0000\n" "PO-Revision-Date: 2013-08-12 09:33+0000\n" "Last-Translator: trolly\n" "Language-Team: Spanish " diff --git a/i2p2www/translations/es/LC_MESSAGES/priority.po b/i2p2www/translations/es/LC_MESSAGES/priority.po index d3ba13b0..6ee60f23 100644 --- a/i2p2www/translations/es/LC_MESSAGES/priority.po +++ b/i2p2www/translations/es/LC_MESSAGES/priority.po @@ -13,7 +13,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-30 09:59+0000\n" +"POT-Creation-Date: 2013-08-30 14:17+0000\n" "PO-Revision-Date: 2013-08-12 10:34+0000\n" "Last-Translator: str4d \n" "Language-Team: Spanish " @@ -916,19 +916,15 @@ msgstr "EEUU" msgid "Donate" msgstr "Donar" -#: i2p2www/pages/global/layout.html:29 -msgid "Skip navigation" -msgstr "Saltar Navegación" - -#: i2p2www/pages/global/layout.html:32 +#: i2p2www/pages/global/layout.html:31 msgid "I2P Logo" msgstr "Logo I2P" -#: i2p2www/pages/global/layout.html:32 i2p2www/pages/site/index.html:3 +#: i2p2www/pages/global/layout.html:31 i2p2www/pages/site/index.html:3 msgid "The Invisible Internet Project" msgstr "El proyecto de Internet Invisible" -#: i2p2www/pages/global/layout.html:56 +#: i2p2www/pages/global/layout.html:55 #, python-format msgid "" "This page was last updated in %(lastupdated)s and is accurate for router " @@ -937,12 +933,12 @@ msgstr "" "Esta pagina fue actualizada por última vez el %(lastupdated)s y, en " "concrento, es la versión %(accuratefor)s." -#: i2p2www/pages/global/layout.html:60 +#: i2p2www/pages/global/layout.html:59 #, python-format msgid "This page was last updated in %(lastupdated)s." msgstr "Esta página fue actualizada por última vez el %(lastupdated)s." -#: i2p2www/pages/global/layout.html:64 +#: i2p2www/pages/global/layout.html:63 #, python-format msgid "This page is accurate for router version %(accuratefor)s." msgstr "Esta página está diseñada para la versión de router %(accuratefor)s." @@ -2047,8 +2043,9 @@ msgstr "" "serlo." #: i2p2www/pages/site/faq.html:274 +#, fuzzy msgid "" -"No. Unlike Tor,\n" +"No. Unlike Tor,\n" "\"exit nodes\" or \"outproxies\" are not an inherent part of the network." "\n" "Only volunteers who set up and run separate applications will relay " @@ -2062,6 +2059,7 @@ msgstr "" "muy pocos de estos." #: i2p2www/pages/site/faq.html:283 +#, fuzzy msgid "" "See above. There are very few HTTP \"outproxies\", they are not an " "inherent part of the network,\n" @@ -2078,7 +2076,7 @@ msgid "" "If your primary reason to use an anonymous network is to anonymously " "access sites\n" "on the regular Internet, you should probably try Tor." +"href=\"https://www.torproject.org/\">Tor." msgstr "" "Hay pocos \\\"outproxies\\\" HTTP, no son parte inherente de la red, y " "podrían no estar encendidos. Además, los viejos outproxies squid.i2p, " @@ -2252,13 +2250,14 @@ msgstr "" "en %(zzz)s." #: i2p2www/pages/site/faq.html:368 +#, fuzzy msgid "" "Unless an outproxy has been set up for the service you want to connect " "to, this cannot be done.\n" "There are only three types of outproxies running right now: HTTP, HTTPS, " "and email. Note that there is not a SOCKS outproxy.\n" "If this type of service is required, try Tor." +"href=\"https://www.torproject.org/\">Tor." msgstr "" "A no ser se haya configurado un outproxy para el servicio al que quiere " "conectar esto no se puede hacer. Sólo hay tres tipos de outproxies " diff --git a/i2p2www/translations/es/LC_MESSAGES/research.po b/i2p2www/translations/es/LC_MESSAGES/research.po index 9cfd10b8..a972dc30 100644 --- a/i2p2www/translations/es/LC_MESSAGES/research.po +++ b/i2p2www/translations/es/LC_MESSAGES/research.po @@ -13,7 +13,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-30 09:59+0000\n" +"POT-Creation-Date: 2013-08-30 14:17+0000\n" "PO-Revision-Date: 2013-07-25 09:42+0000\n" "Last-Translator: trolly\n" "Language-Team: Spanish " diff --git a/i2p2www/translations/fr/LC_MESSAGES/about.po b/i2p2www/translations/fr/LC_MESSAGES/about.po index f3f104a0..65b45904 100644 --- a/i2p2www/translations/fr/LC_MESSAGES/about.po +++ b/i2p2www/translations/fr/LC_MESSAGES/about.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-30 09:59+0000\n" +"POT-Creation-Date: 2013-08-30 14:17+0000\n" "PO-Revision-Date: 2013-08-11 16:29+0000\n" "Last-Translator: Boxoa590\n" "Language-Team: French " diff --git a/i2p2www/translations/fr/LC_MESSAGES/blog.po b/i2p2www/translations/fr/LC_MESSAGES/blog.po index 09c101d8..04145150 100644 --- a/i2p2www/translations/fr/LC_MESSAGES/blog.po +++ b/i2p2www/translations/fr/LC_MESSAGES/blog.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-30 09:59+0000\n" +"POT-Creation-Date: 2013-08-30 14:17+0000\n" "PO-Revision-Date: 2013-08-12 10:32+0000\n" "Last-Translator: str4d \n" "Language-Team: French " diff --git a/i2p2www/translations/fr/LC_MESSAGES/comparison.po b/i2p2www/translations/fr/LC_MESSAGES/comparison.po index d5d89758..1859b872 100644 --- a/i2p2www/translations/fr/LC_MESSAGES/comparison.po +++ b/i2p2www/translations/fr/LC_MESSAGES/comparison.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-30 09:59+0000\n" +"POT-Creation-Date: 2013-08-30 14:17+0000\n" "PO-Revision-Date: 2013-06-29 11:32+0000\n" "Last-Translator: Boxoa590\n" "Language-Team: French " diff --git a/i2p2www/translations/fr/LC_MESSAGES/docs.po b/i2p2www/translations/fr/LC_MESSAGES/docs.po index d746b653..8205dc68 100644 --- a/i2p2www/translations/fr/LC_MESSAGES/docs.po +++ b/i2p2www/translations/fr/LC_MESSAGES/docs.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-30 09:59+0000\n" +"POT-Creation-Date: 2013-08-30 14:17+0000\n" "PO-Revision-Date: 2013-08-12 10:33+0000\n" "Last-Translator: str4d \n" "Language-Team: French " @@ -3901,17 +3901,17 @@ msgid "Inproxies" msgstr "" #: i2p2www/pages/site/docs/applications/supported.html:71 -#: i2p2www/pages/site/docs/applications/supported.html:653 +#: i2p2www/pages/site/docs/applications/supported.html:669 msgid "Outproxies" msgstr "" #: i2p2www/pages/site/docs/applications/supported.html:76 -#: i2p2www/pages/site/docs/applications/supported.html:667 +#: i2p2www/pages/site/docs/applications/supported.html:683 msgid "Website Hosting" msgstr "" #: i2p2www/pages/site/docs/applications/supported.html:79 -#: i2p2www/pages/site/docs/applications/supported.html:682 +#: i2p2www/pages/site/docs/applications/supported.html:698 msgid "Web servers" msgstr "" @@ -3935,7 +3935,7 @@ msgstr "" #: i2p2www/pages/site/docs/applications/supported.html:279 #: i2p2www/pages/site/docs/applications/supported.html:311 #: i2p2www/pages/site/docs/applications/supported.html:336 -#: i2p2www/pages/site/docs/applications/supported.html:679 +#: i2p2www/pages/site/docs/applications/supported.html:695 msgid "bundled" msgstr "" @@ -3996,11 +3996,11 @@ msgstr "" #: i2p2www/pages/site/docs/applications/supported.html:618 #: i2p2www/pages/site/docs/applications/supported.html:627 #: i2p2www/pages/site/docs/applications/supported.html:633 -#: i2p2www/pages/site/docs/applications/supported.html:679 -#: i2p2www/pages/site/docs/applications/supported.html:694 -#: i2p2www/pages/site/docs/applications/supported.html:700 -#: i2p2www/pages/site/docs/applications/supported.html:706 -#: i2p2www/pages/site/docs/applications/supported.html:712 +#: i2p2www/pages/site/docs/applications/supported.html:695 +#: i2p2www/pages/site/docs/applications/supported.html:710 +#: i2p2www/pages/site/docs/applications/supported.html:716 +#: i2p2www/pages/site/docs/applications/supported.html:722 +#: i2p2www/pages/site/docs/applications/supported.html:728 msgid "standalone" msgstr "" @@ -4037,7 +4037,9 @@ msgstr "" #: i2p2www/pages/site/docs/applications/supported.html:602 #: i2p2www/pages/site/docs/applications/supported.html:608 #: i2p2www/pages/site/docs/applications/supported.html:649 -#: i2p2www/pages/site/docs/applications/supported.html:663 +#: i2p2www/pages/site/docs/applications/supported.html:657 +#: i2p2www/pages/site/docs/applications/supported.html:665 +#: i2p2www/pages/site/docs/applications/supported.html:679 msgid "service" msgstr "" @@ -4407,17 +4409,22 @@ msgstr "" msgid "tino's inproxy on the public Internet." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:655 +#: i2p2www/pages/site/docs/applications/supported.html:654 +#: i2p2www/pages/site/docs/applications/supported.html:662 +msgid "Another inproxy on the public Internet." +msgstr "" + +#: i2p2www/pages/site/docs/applications/supported.html:671 msgid "" "Gateways allowing I2P users to access content hosted on the public " "Internet." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:662 +#: i2p2www/pages/site/docs/applications/supported.html:678 msgid "Publicly advertised outproxy running Squid, located in Germany." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:672 +#: i2p2www/pages/site/docs/applications/supported.html:688 msgid "" "Lightweight web server and Java servlet container. I2P is tightly\n" "integrated with a bundled copy of Jetty which by default is configured to" @@ -4429,26 +4436,26 @@ msgid "" "I2P." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:684 +#: i2p2www/pages/site/docs/applications/supported.html:700 msgid "" "In addition to Jetty, any web server should function over I2P without\n" "modification so long as it's HTTP-compliant. Some web servers known to\n" "currently serve content on the I2P network are:" msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:693 +#: i2p2www/pages/site/docs/applications/supported.html:709 msgid "Most popular web server on the public WWW." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:699 +#: i2p2www/pages/site/docs/applications/supported.html:715 msgid "Web server and Java servlet container. More features than Jetty." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:705 +#: i2p2www/pages/site/docs/applications/supported.html:721 msgid "Fast lightweight web server." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:711 +#: i2p2www/pages/site/docs/applications/supported.html:727 msgid "High-performance lightweight web server." msgstr "" @@ -10315,7 +10322,7 @@ msgid "" "I2P design started in 2003, not long after the advent of\n" "[Onion Routing],\n" "[Freenet], and\n" -"[Tor].\n" +"[Tor].\n" "Our design benefits substantially from the research published around that" " time.\n" "I2P uses several onion routing techniques, so we continue to benefit\n" diff --git a/i2p2www/translations/fr/LC_MESSAGES/get-involved.po b/i2p2www/translations/fr/LC_MESSAGES/get-involved.po index 4f3e5d56..271f88ca 100644 --- a/i2p2www/translations/fr/LC_MESSAGES/get-involved.po +++ b/i2p2www/translations/fr/LC_MESSAGES/get-involved.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-30 09:59+0000\n" +"POT-Creation-Date: 2013-08-30 14:17+0000\n" "PO-Revision-Date: 2013-08-11 15:29+0000\n" "Last-Translator: Boxoa590\n" "Language-Team: French " diff --git a/i2p2www/translations/fr/LC_MESSAGES/misc.po b/i2p2www/translations/fr/LC_MESSAGES/misc.po index 48fa08ea..e11420af 100644 --- a/i2p2www/translations/fr/LC_MESSAGES/misc.po +++ b/i2p2www/translations/fr/LC_MESSAGES/misc.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-30 09:59+0000\n" +"POT-Creation-Date: 2013-08-30 14:17+0000\n" "PO-Revision-Date: 2013-06-29 11:32+0000\n" "Last-Translator: Boxoa590\n" "Language-Team: French " diff --git a/i2p2www/translations/fr/LC_MESSAGES/priority.po b/i2p2www/translations/fr/LC_MESSAGES/priority.po index 64a11abd..e68d3a2b 100644 --- a/i2p2www/translations/fr/LC_MESSAGES/priority.po +++ b/i2p2www/translations/fr/LC_MESSAGES/priority.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-30 09:59+0000\n" +"POT-Creation-Date: 2013-08-30 14:17+0000\n" "PO-Revision-Date: 2013-08-12 10:34+0000\n" "Last-Translator: str4d \n" "Language-Team: French " @@ -904,19 +904,15 @@ msgstr "USA" msgid "Donate" msgstr "Faire un don" -#: i2p2www/pages/global/layout.html:29 -msgid "Skip navigation" -msgstr "Passer la navigation" - -#: i2p2www/pages/global/layout.html:32 +#: i2p2www/pages/global/layout.html:31 msgid "I2P Logo" msgstr "Logo I2P" -#: i2p2www/pages/global/layout.html:32 i2p2www/pages/site/index.html:3 +#: i2p2www/pages/global/layout.html:31 i2p2www/pages/site/index.html:3 msgid "The Invisible Internet Project" msgstr "The Invisible Internet Project (le projet internet invisible)" -#: i2p2www/pages/global/layout.html:56 +#: i2p2www/pages/global/layout.html:55 #, python-format msgid "" "This page was last updated in %(lastupdated)s and is accurate for router " @@ -925,12 +921,12 @@ msgstr "" "Cette page a été mise à jour en %(lastupdated)s et est correcte pour la " "version de routeur %(accuratefor)s." -#: i2p2www/pages/global/layout.html:60 +#: i2p2www/pages/global/layout.html:59 #, python-format msgid "This page was last updated in %(lastupdated)s." msgstr "Cette page a étée mise à jour dernièrement en %(lastupdated)s." -#: i2p2www/pages/global/layout.html:64 +#: i2p2www/pages/global/layout.html:63 #, python-format msgid "This page is accurate for router version %(accuratefor)s." msgstr "Cette page est à jour pour la version de routeur %(accuratefor)s." @@ -2053,8 +2049,9 @@ msgstr "" "l'Internet régulier ? Je ne veux pas qu'il le soit." #: i2p2www/pages/site/faq.html:274 +#, fuzzy msgid "" -"No. Unlike Tor,\n" +"No. Unlike Tor,\n" "\"exit nodes\" or \"outproxies\" are not an inherent part of the network." "\n" "Only volunteers who set up and run separate applications will relay " @@ -2069,6 +2066,7 @@ msgstr "" "Il y a très, très peu de ces ceux-là." #: i2p2www/pages/site/faq.html:283 +#, fuzzy msgid "" "See above. There are very few HTTP \"outproxies\", they are not an " "inherent part of the network,\n" @@ -2085,7 +2083,7 @@ msgid "" "If your primary reason to use an anonymous network is to anonymously " "access sites\n" "on the regular Internet, you should probably try Tor." +"href=\"https://www.torproject.org/\">Tor." msgstr "" "Voir ci-dessus. Il ya très peu de \"outproxies\" HTTP, ils ne sont pas " "une partie intégrante du réseau, ⏎ \n" @@ -2279,13 +2277,14 @@ msgstr "" "href=\"http://%(zzz)s/topics/217\">%(zzz)s." #: i2p2www/pages/site/faq.html:368 +#, fuzzy msgid "" "Unless an outproxy has been set up for the service you want to connect " "to, this cannot be done.\n" "There are only three types of outproxies running right now: HTTP, HTTPS, " "and email. Note that there is not a SOCKS outproxy.\n" "If this type of service is required, try Tor." +"href=\"https://www.torproject.org/\">Tor." msgstr "" "A moins qu'un outproxy aie été mis en place pour le service auquel vous " "souhaitez vous connecter, cela ne peut être fait.\n" diff --git a/i2p2www/translations/fr/LC_MESSAGES/research.po b/i2p2www/translations/fr/LC_MESSAGES/research.po index 25fff63a..c40d3d54 100644 --- a/i2p2www/translations/fr/LC_MESSAGES/research.po +++ b/i2p2www/translations/fr/LC_MESSAGES/research.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-30 09:59+0000\n" +"POT-Creation-Date: 2013-08-30 14:17+0000\n" "PO-Revision-Date: 2013-08-11 14:55+0000\n" "Last-Translator: Boxoa590\n" "Language-Team: French " diff --git a/i2p2www/translations/pt/LC_MESSAGES/priority.po b/i2p2www/translations/pt/LC_MESSAGES/priority.po index 0d634544..aa8e04f2 100644 --- a/i2p2www/translations/pt/LC_MESSAGES/priority.po +++ b/i2p2www/translations/pt/LC_MESSAGES/priority.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-30 09:59+0000\n" +"POT-Creation-Date: 2013-08-30 14:17+0000\n" "PO-Revision-Date: 2013-08-12 10:34+0000\n" "Last-Translator: str4d \n" "Language-Team: Portuguese " @@ -884,19 +884,15 @@ msgstr "EUA" msgid "Donate" msgstr "Doe" -#: i2p2www/pages/global/layout.html:29 -msgid "Skip navigation" -msgstr "" - -#: i2p2www/pages/global/layout.html:32 +#: i2p2www/pages/global/layout.html:31 msgid "I2P Logo" msgstr "Logo do I2P" -#: i2p2www/pages/global/layout.html:32 i2p2www/pages/site/index.html:3 +#: i2p2www/pages/global/layout.html:31 i2p2www/pages/site/index.html:3 msgid "The Invisible Internet Project" msgstr "O projeto de Internet Invisível" -#: i2p2www/pages/global/layout.html:56 +#: i2p2www/pages/global/layout.html:55 #, python-format msgid "" "This page was last updated in %(lastupdated)s and is accurate for router " @@ -905,12 +901,12 @@ msgstr "" "A última atualização desta página foi em %(lastupdated)s e é própria para" " a versão de servidor %(accuratefor)s." -#: i2p2www/pages/global/layout.html:60 +#: i2p2www/pages/global/layout.html:59 #, python-format msgid "This page was last updated in %(lastupdated)s." msgstr "A última atualização desta página foi em %(lastupdated)s." -#: i2p2www/pages/global/layout.html:64 +#: i2p2www/pages/global/layout.html:63 #, python-format msgid "This page is accurate for router version %(accuratefor)s." msgstr "Esta página está própria para a versão de servidor %(accuratefor)s." @@ -1840,7 +1836,7 @@ msgstr "" #: i2p2www/pages/site/faq.html:274 msgid "" -"No. Unlike Tor,\n" +"No. Unlike Tor,\n" "\"exit nodes\" or \"outproxies\" are not an inherent part of the network." "\n" "Only volunteers who set up and run separate applications will relay " @@ -1865,7 +1861,7 @@ msgid "" "If your primary reason to use an anonymous network is to anonymously " "access sites\n" "on the regular Internet, you should probably try Tor." +"href=\"https://www.torproject.org/\">Tor." msgstr "" #: i2p2www/pages/site/faq.html:298 @@ -1986,7 +1982,7 @@ msgid "" "There are only three types of outproxies running right now: HTTP, HTTPS, " "and email. Note that there is not a SOCKS outproxy.\n" "If this type of service is required, try Tor." +"href=\"https://www.torproject.org/\">Tor." msgstr "" #: i2p2www/pages/site/faq.html:376 diff --git a/i2p2www/translations/sv_SE/LC_MESSAGES/about.po b/i2p2www/translations/sv_SE/LC_MESSAGES/about.po index a9572d7b..2f8d2ec7 100644 --- a/i2p2www/translations/sv_SE/LC_MESSAGES/about.po +++ b/i2p2www/translations/sv_SE/LC_MESSAGES/about.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-30 09:59+0000\n" +"POT-Creation-Date: 2013-08-30 14:17+0000\n" "PO-Revision-Date: 2013-04-27 23:10+0000\n" "Last-Translator: Martin Svensson \n" "Language-Team: Swedish (Sweden) " diff --git a/i2p2www/translations/sv_SE/LC_MESSAGES/blog.po b/i2p2www/translations/sv_SE/LC_MESSAGES/blog.po index 39049d67..1f80f4b2 100644 --- a/i2p2www/translations/sv_SE/LC_MESSAGES/blog.po +++ b/i2p2www/translations/sv_SE/LC_MESSAGES/blog.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-30 09:59+0000\n" +"POT-Creation-Date: 2013-08-30 14:17+0000\n" "PO-Revision-Date: 2013-08-12 10:32+0000\n" "Last-Translator: str4d \n" "Language-Team: Swedish (Sweden) " diff --git a/i2p2www/translations/sv_SE/LC_MESSAGES/comparison.po b/i2p2www/translations/sv_SE/LC_MESSAGES/comparison.po index 568d64db..d93ec4b0 100644 --- a/i2p2www/translations/sv_SE/LC_MESSAGES/comparison.po +++ b/i2p2www/translations/sv_SE/LC_MESSAGES/comparison.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-30 09:59+0000\n" +"POT-Creation-Date: 2013-08-30 14:17+0000\n" "PO-Revision-Date: 2013-04-27 23:10+0000\n" "Last-Translator: Martin Svensson \n" "Language-Team: Swedish (Sweden) " diff --git a/i2p2www/translations/sv_SE/LC_MESSAGES/docs.po b/i2p2www/translations/sv_SE/LC_MESSAGES/docs.po index 790969de..0b521e91 100644 --- a/i2p2www/translations/sv_SE/LC_MESSAGES/docs.po +++ b/i2p2www/translations/sv_SE/LC_MESSAGES/docs.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-30 09:59+0000\n" +"POT-Creation-Date: 2013-08-30 14:17+0000\n" "PO-Revision-Date: 2013-04-27 23:10+0000\n" "Last-Translator: Martin Svensson \n" "Language-Team: Swedish (Sweden) " @@ -3897,17 +3897,17 @@ msgid "Inproxies" msgstr "" #: i2p2www/pages/site/docs/applications/supported.html:71 -#: i2p2www/pages/site/docs/applications/supported.html:653 +#: i2p2www/pages/site/docs/applications/supported.html:669 msgid "Outproxies" msgstr "" #: i2p2www/pages/site/docs/applications/supported.html:76 -#: i2p2www/pages/site/docs/applications/supported.html:667 +#: i2p2www/pages/site/docs/applications/supported.html:683 msgid "Website Hosting" msgstr "" #: i2p2www/pages/site/docs/applications/supported.html:79 -#: i2p2www/pages/site/docs/applications/supported.html:682 +#: i2p2www/pages/site/docs/applications/supported.html:698 msgid "Web servers" msgstr "" @@ -3931,7 +3931,7 @@ msgstr "" #: i2p2www/pages/site/docs/applications/supported.html:279 #: i2p2www/pages/site/docs/applications/supported.html:311 #: i2p2www/pages/site/docs/applications/supported.html:336 -#: i2p2www/pages/site/docs/applications/supported.html:679 +#: i2p2www/pages/site/docs/applications/supported.html:695 msgid "bundled" msgstr "" @@ -3992,11 +3992,11 @@ msgstr "" #: i2p2www/pages/site/docs/applications/supported.html:618 #: i2p2www/pages/site/docs/applications/supported.html:627 #: i2p2www/pages/site/docs/applications/supported.html:633 -#: i2p2www/pages/site/docs/applications/supported.html:679 -#: i2p2www/pages/site/docs/applications/supported.html:694 -#: i2p2www/pages/site/docs/applications/supported.html:700 -#: i2p2www/pages/site/docs/applications/supported.html:706 -#: i2p2www/pages/site/docs/applications/supported.html:712 +#: i2p2www/pages/site/docs/applications/supported.html:695 +#: i2p2www/pages/site/docs/applications/supported.html:710 +#: i2p2www/pages/site/docs/applications/supported.html:716 +#: i2p2www/pages/site/docs/applications/supported.html:722 +#: i2p2www/pages/site/docs/applications/supported.html:728 msgid "standalone" msgstr "" @@ -4033,7 +4033,9 @@ msgstr "" #: i2p2www/pages/site/docs/applications/supported.html:602 #: i2p2www/pages/site/docs/applications/supported.html:608 #: i2p2www/pages/site/docs/applications/supported.html:649 -#: i2p2www/pages/site/docs/applications/supported.html:663 +#: i2p2www/pages/site/docs/applications/supported.html:657 +#: i2p2www/pages/site/docs/applications/supported.html:665 +#: i2p2www/pages/site/docs/applications/supported.html:679 msgid "service" msgstr "" @@ -4403,17 +4405,22 @@ msgstr "" msgid "tino's inproxy on the public Internet." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:655 +#: i2p2www/pages/site/docs/applications/supported.html:654 +#: i2p2www/pages/site/docs/applications/supported.html:662 +msgid "Another inproxy on the public Internet." +msgstr "" + +#: i2p2www/pages/site/docs/applications/supported.html:671 msgid "" "Gateways allowing I2P users to access content hosted on the public " "Internet." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:662 +#: i2p2www/pages/site/docs/applications/supported.html:678 msgid "Publicly advertised outproxy running Squid, located in Germany." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:672 +#: i2p2www/pages/site/docs/applications/supported.html:688 msgid "" "Lightweight web server and Java servlet container. I2P is tightly\n" "integrated with a bundled copy of Jetty which by default is configured to" @@ -4425,26 +4432,26 @@ msgid "" "I2P." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:684 +#: i2p2www/pages/site/docs/applications/supported.html:700 msgid "" "In addition to Jetty, any web server should function over I2P without\n" "modification so long as it's HTTP-compliant. Some web servers known to\n" "currently serve content on the I2P network are:" msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:693 +#: i2p2www/pages/site/docs/applications/supported.html:709 msgid "Most popular web server on the public WWW." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:699 +#: i2p2www/pages/site/docs/applications/supported.html:715 msgid "Web server and Java servlet container. More features than Jetty." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:705 +#: i2p2www/pages/site/docs/applications/supported.html:721 msgid "Fast lightweight web server." msgstr "" -#: i2p2www/pages/site/docs/applications/supported.html:711 +#: i2p2www/pages/site/docs/applications/supported.html:727 msgid "High-performance lightweight web server." msgstr "" @@ -10116,7 +10123,7 @@ msgid "" "I2P design started in 2003, not long after the advent of\n" "[Onion Routing],\n" "[Freenet], and\n" -"[Tor].\n" +"[Tor].\n" "Our design benefits substantially from the research published around that" " time.\n" "I2P uses several onion routing techniques, so we continue to benefit\n" diff --git a/i2p2www/translations/sv_SE/LC_MESSAGES/get-involved.po b/i2p2www/translations/sv_SE/LC_MESSAGES/get-involved.po index 38a342b2..a8a4f42c 100644 --- a/i2p2www/translations/sv_SE/LC_MESSAGES/get-involved.po +++ b/i2p2www/translations/sv_SE/LC_MESSAGES/get-involved.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-30 09:59+0000\n" +"POT-Creation-Date: 2013-08-30 14:17+0000\n" "PO-Revision-Date: 2013-04-27 23:10+0000\n" "Last-Translator: Martin Svensson \n" "Language-Team: Swedish (Sweden) " diff --git a/i2p2www/translations/sv_SE/LC_MESSAGES/misc.po b/i2p2www/translations/sv_SE/LC_MESSAGES/misc.po index 55902b64..0665fcbd 100644 --- a/i2p2www/translations/sv_SE/LC_MESSAGES/misc.po +++ b/i2p2www/translations/sv_SE/LC_MESSAGES/misc.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-30 09:59+0000\n" +"POT-Creation-Date: 2013-08-30 14:17+0000\n" "PO-Revision-Date: 2013-04-27 23:10+0000\n" "Last-Translator: Martin Svensson \n" "Language-Team: Swedish (Sweden) " diff --git a/i2p2www/translations/sv_SE/LC_MESSAGES/priority.po b/i2p2www/translations/sv_SE/LC_MESSAGES/priority.po index c5e66c83..d09888eb 100644 --- a/i2p2www/translations/sv_SE/LC_MESSAGES/priority.po +++ b/i2p2www/translations/sv_SE/LC_MESSAGES/priority.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-30 09:59+0000\n" +"POT-Creation-Date: 2013-08-30 14:17+0000\n" "PO-Revision-Date: 2013-04-27 23:10+0000\n" "Last-Translator: Martin Svensson \n" "Language-Team: Swedish (Sweden) " @@ -708,31 +708,27 @@ msgstr "" msgid "Donate" msgstr "" -#: i2p2www/pages/global/layout.html:29 -msgid "Skip navigation" -msgstr "" - -#: i2p2www/pages/global/layout.html:32 +#: i2p2www/pages/global/layout.html:31 msgid "I2P Logo" msgstr "" -#: i2p2www/pages/global/layout.html:32 i2p2www/pages/site/index.html:3 +#: i2p2www/pages/global/layout.html:31 i2p2www/pages/site/index.html:3 msgid "The Invisible Internet Project" msgstr "" -#: i2p2www/pages/global/layout.html:56 +#: i2p2www/pages/global/layout.html:55 #, python-format msgid "" "This page was last updated in %(lastupdated)s and is accurate for router " "version %(accuratefor)s." msgstr "" -#: i2p2www/pages/global/layout.html:60 +#: i2p2www/pages/global/layout.html:59 #, python-format msgid "This page was last updated in %(lastupdated)s." msgstr "" -#: i2p2www/pages/global/layout.html:64 +#: i2p2www/pages/global/layout.html:63 #, python-format msgid "This page is accurate for router version %(accuratefor)s." msgstr "" @@ -1662,7 +1658,7 @@ msgstr "" #: i2p2www/pages/site/faq.html:274 msgid "" -"No. Unlike Tor,\n" +"No. Unlike Tor,\n" "\"exit nodes\" or \"outproxies\" are not an inherent part of the network." "\n" "Only volunteers who set up and run separate applications will relay " @@ -1687,7 +1683,7 @@ msgid "" "If your primary reason to use an anonymous network is to anonymously " "access sites\n" "on the regular Internet, you should probably try Tor." +"href=\"https://www.torproject.org/\">Tor." msgstr "" #: i2p2www/pages/site/faq.html:298 @@ -1808,7 +1804,7 @@ msgid "" "There are only three types of outproxies running right now: HTTP, HTTPS, " "and email. Note that there is not a SOCKS outproxy.\n" "If this type of service is required, try Tor." +"href=\"https://www.torproject.org/\">Tor." msgstr "" #: i2p2www/pages/site/faq.html:376 diff --git a/i2p2www/translations/sv_SE/LC_MESSAGES/research.po b/i2p2www/translations/sv_SE/LC_MESSAGES/research.po index 2192b423..20fe942e 100644 --- a/i2p2www/translations/sv_SE/LC_MESSAGES/research.po +++ b/i2p2www/translations/sv_SE/LC_MESSAGES/research.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-30 09:59+0000\n" +"POT-Creation-Date: 2013-08-30 14:17+0000\n" "PO-Revision-Date: 2013-04-27 23:10+0000\n" "Last-Translator: Martin Svensson \n" "Language-Team: Swedish (Sweden) " From 6c48eceb81f1cbcd6bdeb0372c7311c1a9702e46 Mon Sep 17 00:00:00 2001 From: str4d Date: Fri, 30 Aug 2013 22:42:05 +0000 Subject: [PATCH 584/650] Removed out-of-date mirror --- i2p2www/pages/downloads/mirrors | 1 - 1 file changed, 1 deletion(-) diff --git a/i2p2www/pages/downloads/mirrors b/i2p2www/pages/downloads/mirrors index df33e6a9..3016abd7 100644 --- a/i2p2www/pages/downloads/mirrors +++ b/i2p2www/pages/downloads/mirrors @@ -1,7 +1,6 @@ {"protocol": "http", "domain": "i2p.googlecode.com", "path": "/files/%(file)s", "org": "Google Code", "org_url": "http://code.google.com", "country": "us"} {"protocol": "https", "domain": "i2p.googlecode.com", "path": "/files/%(file)s", "org": "Google Code", "org_url": "https://code.google.com", "country": "us"} {"protocol": "https", "domain": "launchpad.net", "path": "/i2p/trunk/%(version)s/+download/%(file)s", "org": "Launchpad", "org_url": "https://launchpad.net", "country": "us"} -{"protocol": "http", "domain": "golden.mtveurope.org", "path": "/~yang/i2p_mirror/%(file)s", "org": "VServer.si", "org_url": "http://www.vserver.si", "country": "lu"} {"protocol": "http", "domain": "a.mirror.geti2p.net", "path": "/releases/%(version)s/%(file)s", "org": "welterde", "country": "de"} {"protocol": "http", "domain": "download.i2p2.no", "path": "/releases/%(version)s/%(file)s", "org": "meeh", "country": "no"} {"protocol": "https", "domain": "googledrive.com", "path": "/host/0B4jHEq5G7_EPWV9UeERwdGplZXc/%(version)s/%(file)s", "org": "Google Drive", "country": "us"} From 2c22aa18531e9a096b4e6ade3c5693d4dc7c0d04 Mon Sep 17 00:00:00 2001 From: str4d Date: Fri, 30 Aug 2013 23:07:33 +0000 Subject: [PATCH 585/650] Updated another viewmtn link --- i2p2www/pages/site/get-involved/guides/new-developers.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/i2p2www/pages/site/get-involved/guides/new-developers.html b/i2p2www/pages/site/get-involved/guides/new-developers.html index 277b62f0..754939fd 100644 --- a/i2p2www/pages/site/get-involved/guides/new-developers.html +++ b/i2p2www/pages/site/get-involved/guides/new-developers.html @@ -102,7 +102,7 @@ The initial pull may take several hours using the tunnel. If it fails after a partial pull, simply rerun it, it will start where it left off. If you are in a hurry, use the non-anonymous access. {%- endtrans %}

    -

    {% trans viewmtn='http://'+i2pconv('stats.i2p')+'/cgi-bin/viewmtn/' -%} +

    {% trans viewmtn='http://'+i2pconv('killyourtv.i2p')+'/viewmtn/' -%} A full list of branches, including i2p.i2p and i2p.www can be found on viewmtn. {%- endtrans %}

    {% trans monotone=site_url('get-involved/guides/monotone') -%} From 16ba701d76b72d2af234c83158dd52323296d2a4 Mon Sep 17 00:00:00 2001 From: str4d Date: Fri, 30 Aug 2013 23:16:51 +0000 Subject: [PATCH 586/650] Fixed link to PyBit host --- i2p2www/pages/site/docs/how/tech-intro.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/i2p2www/pages/site/docs/how/tech-intro.html b/i2p2www/pages/site/docs/how/tech-intro.html index 72efb333..230bfa78 100644 --- a/i2p2www/pages/site/docs/how/tech-intro.html +++ b/i2p2www/pages/site/docs/how/tech-intro.html @@ -1004,9 +1004,9 @@ It is hosted on http://{{ bob }}/Robert.h

    PyBit

    {% trans dev='Blub' -%}Developed by: {{ dev }}{%- endtrans %}

    -

    {% trans pebcache=i2pconv('pebcache.i2p') -%} +

    {% trans pybit='http://'+i2pconv('echelon.i2p')+'/pybit/' -%} PyBit is a Bittorrent client written in Python. -It is hosted on http://{{ pebcache }}/ +It is hosted on {{ pybit }} {%- endtrans %}

    I2Phex

    From 4b60caf012833204e0b68244951b8b0bf4177b7e Mon Sep 17 00:00:00 2001 From: str4d Date: Fri, 30 Aug 2013 23:21:48 +0000 Subject: [PATCH 587/650] perv.i2p -> identiguy.i2p (eepstatus site that is up) --- i2p2www/pages/site/docs/applications/supported.html | 2 +- i2p2www/pages/site/faq.html | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/i2p2www/pages/site/docs/applications/supported.html b/i2p2www/pages/site/docs/applications/supported.html index 2542d583..c14e8c80 100644 --- a/i2p2www/pages/site/docs/applications/supported.html +++ b/i2p2www/pages/site/docs/applications/supported.html @@ -597,7 +597,7 @@ Source code available.
  • -

    {{ i2pconv('perv.i2p') }} — +

    {{ i2pconv('identiguy.i2p') }} — {% trans %}Dynamically updated eepsite index.{% endtrans %} [{{ _('service') }}]

  • diff --git a/i2p2www/pages/site/faq.html b/i2p2www/pages/site/faq.html index 9fcdf1c8..b337de97 100644 --- a/i2p2www/pages/site/faq.html +++ b/i2p2www/pages/site/faq.html @@ -373,11 +373,11 @@ If this type of service is required, try T

    {% trans %}Most of the eepsites within I2P are down?{% endtrans %} ({{ _('link') }})

    -

    {% trans perv=i2pconv('perv.i2p') -%} +

    {% trans eepstatus='http://'+i2pconv('identiguy.i2p') -%} If you consider every eepsite that has ever been created, yes, most of them are down. People and eepsites come and go. A good way to get started in I2P is check out a list of eepsites that are currently up. -{{ perv }} tracks active eepsites. +{{ eepstatus }} tracks active eepsites. {%- endtrans %}

    {% trans %}How do I set up my own eepsite?{% endtrans %} From 26b45fb729062bcf518b196b087a58bdb22c8b73 Mon Sep 17 00:00:00 2001 From: str4d Date: Fri, 30 Aug 2013 23:28:40 +0000 Subject: [PATCH 588/650] Updated translation strings --- i2p2www/translations/de/LC_MESSAGES/about.po | 2 +- i2p2www/translations/de/LC_MESSAGES/blog.po | 2 +- i2p2www/translations/de/LC_MESSAGES/comparison.po | 2 +- i2p2www/translations/de/LC_MESSAGES/docs.po | 5 ++--- i2p2www/translations/de/LC_MESSAGES/get-involved.po | 2 +- i2p2www/translations/de/LC_MESSAGES/misc.po | 2 +- i2p2www/translations/de/LC_MESSAGES/priority.po | 4 ++-- i2p2www/translations/de/LC_MESSAGES/research.po | 2 +- i2p2www/translations/es/LC_MESSAGES/about.po | 2 +- i2p2www/translations/es/LC_MESSAGES/blog.po | 2 +- i2p2www/translations/es/LC_MESSAGES/comparison.po | 2 +- i2p2www/translations/es/LC_MESSAGES/docs.po | 7 +++---- i2p2www/translations/es/LC_MESSAGES/get-involved.po | 2 +- i2p2www/translations/es/LC_MESSAGES/misc.po | 2 +- i2p2www/translations/es/LC_MESSAGES/priority.po | 6 +++--- i2p2www/translations/es/LC_MESSAGES/research.po | 2 +- i2p2www/translations/fr/LC_MESSAGES/about.po | 2 +- i2p2www/translations/fr/LC_MESSAGES/blog.po | 2 +- i2p2www/translations/fr/LC_MESSAGES/comparison.po | 2 +- i2p2www/translations/fr/LC_MESSAGES/docs.po | 5 ++--- i2p2www/translations/fr/LC_MESSAGES/get-involved.po | 2 +- i2p2www/translations/fr/LC_MESSAGES/misc.po | 2 +- i2p2www/translations/fr/LC_MESSAGES/priority.po | 6 +++--- i2p2www/translations/fr/LC_MESSAGES/research.po | 2 +- i2p2www/translations/pt/LC_MESSAGES/priority.po | 4 ++-- i2p2www/translations/sv_SE/LC_MESSAGES/about.po | 2 +- i2p2www/translations/sv_SE/LC_MESSAGES/blog.po | 2 +- i2p2www/translations/sv_SE/LC_MESSAGES/comparison.po | 2 +- i2p2www/translations/sv_SE/LC_MESSAGES/docs.po | 5 ++--- i2p2www/translations/sv_SE/LC_MESSAGES/get-involved.po | 2 +- i2p2www/translations/sv_SE/LC_MESSAGES/misc.po | 2 +- i2p2www/translations/sv_SE/LC_MESSAGES/priority.po | 4 ++-- i2p2www/translations/sv_SE/LC_MESSAGES/research.po | 2 +- 33 files changed, 45 insertions(+), 49 deletions(-) diff --git a/i2p2www/translations/de/LC_MESSAGES/about.po b/i2p2www/translations/de/LC_MESSAGES/about.po index 67817c5b..5856c06e 100644 --- a/i2p2www/translations/de/LC_MESSAGES/about.po +++ b/i2p2www/translations/de/LC_MESSAGES/about.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-30 14:17+0000\n" +"POT-Creation-Date: 2013-08-30 23:26+0000\n" "PO-Revision-Date: 2013-07-04 16:33+0000\n" "Last-Translator: D.A. Loader\n" "Language-Team: German " diff --git a/i2p2www/translations/de/LC_MESSAGES/blog.po b/i2p2www/translations/de/LC_MESSAGES/blog.po index b44fb4e3..947fb523 100644 --- a/i2p2www/translations/de/LC_MESSAGES/blog.po +++ b/i2p2www/translations/de/LC_MESSAGES/blog.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-30 14:17+0000\n" +"POT-Creation-Date: 2013-08-30 23:26+0000\n" "PO-Revision-Date: 2013-08-12 10:32+0000\n" "Last-Translator: str4d \n" "Language-Team: German " diff --git a/i2p2www/translations/de/LC_MESSAGES/comparison.po b/i2p2www/translations/de/LC_MESSAGES/comparison.po index ce683f33..fdc1c7c7 100644 --- a/i2p2www/translations/de/LC_MESSAGES/comparison.po +++ b/i2p2www/translations/de/LC_MESSAGES/comparison.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-30 14:17+0000\n" +"POT-Creation-Date: 2013-08-30 23:26+0000\n" "PO-Revision-Date: 2013-07-04 16:33+0000\n" "Last-Translator: D.A. Loader\n" "Language-Team: German " diff --git a/i2p2www/translations/de/LC_MESSAGES/docs.po b/i2p2www/translations/de/LC_MESSAGES/docs.po index bd5ea511..b025b8d1 100644 --- a/i2p2www/translations/de/LC_MESSAGES/docs.po +++ b/i2p2www/translations/de/LC_MESSAGES/docs.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-30 14:17+0000\n" +"POT-Creation-Date: 2013-08-30 23:26+0000\n" "PO-Revision-Date: 2013-08-12 10:33+0000\n" "Last-Translator: str4d \n" "Language-Team: German " @@ -10101,8 +10101,7 @@ msgstr "" #, python-format msgid "" "PyBit is a Bittorrent client written in Python.\n" -"It is hosted on http://%(pebcache)s/" -" " +"It is hosted on %(pybit)s " msgstr "" #: i2p2www/pages/site/docs/how/tech-intro.html:1015 diff --git a/i2p2www/translations/de/LC_MESSAGES/get-involved.po b/i2p2www/translations/de/LC_MESSAGES/get-involved.po index 52e1ce51..c7e8b425 100644 --- a/i2p2www/translations/de/LC_MESSAGES/get-involved.po +++ b/i2p2www/translations/de/LC_MESSAGES/get-involved.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-30 14:17+0000\n" +"POT-Creation-Date: 2013-08-30 23:26+0000\n" "PO-Revision-Date: 2013-07-04 16:33+0000\n" "Last-Translator: D.A. Loader\n" "Language-Team: German " diff --git a/i2p2www/translations/de/LC_MESSAGES/misc.po b/i2p2www/translations/de/LC_MESSAGES/misc.po index adf4d7f8..1b2debd2 100644 --- a/i2p2www/translations/de/LC_MESSAGES/misc.po +++ b/i2p2www/translations/de/LC_MESSAGES/misc.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-30 14:17+0000\n" +"POT-Creation-Date: 2013-08-30 23:26+0000\n" "PO-Revision-Date: 2013-07-04 16:33+0000\n" "Last-Translator: D.A. Loader\n" "Language-Team: German " diff --git a/i2p2www/translations/de/LC_MESSAGES/priority.po b/i2p2www/translations/de/LC_MESSAGES/priority.po index f771bbb4..d0369120 100644 --- a/i2p2www/translations/de/LC_MESSAGES/priority.po +++ b/i2p2www/translations/de/LC_MESSAGES/priority.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-30 14:17+0000\n" +"POT-Creation-Date: 2013-08-30 23:26+0000\n" "PO-Revision-Date: 2013-08-12 10:34+0000\n" "Last-Translator: str4d \n" "Language-Team: German " @@ -1833,7 +1833,7 @@ msgid "" "People and eepsites come and go.\n" "A good way to get started in I2P is check out a list of eepsites that are" " currently up.\n" -"%(perv)s tracks active eepsites." +"%(eepstatus)s tracks active eepsites." msgstr "" #: i2p2www/pages/site/faq.html:385 diff --git a/i2p2www/translations/de/LC_MESSAGES/research.po b/i2p2www/translations/de/LC_MESSAGES/research.po index c940dd23..6fb43583 100644 --- a/i2p2www/translations/de/LC_MESSAGES/research.po +++ b/i2p2www/translations/de/LC_MESSAGES/research.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-30 14:17+0000\n" +"POT-Creation-Date: 2013-08-30 23:26+0000\n" "PO-Revision-Date: 2013-07-04 16:33+0000\n" "Last-Translator: D.A. Loader\n" "Language-Team: German " diff --git a/i2p2www/translations/es/LC_MESSAGES/about.po b/i2p2www/translations/es/LC_MESSAGES/about.po index 248d6b3a..4fe0f8e9 100644 --- a/i2p2www/translations/es/LC_MESSAGES/about.po +++ b/i2p2www/translations/es/LC_MESSAGES/about.po @@ -13,7 +13,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-30 14:17+0000\n" +"POT-Creation-Date: 2013-08-30 23:26+0000\n" "PO-Revision-Date: 2013-07-22 10:38+0000\n" "Last-Translator: trolly\n" "Language-Team: Spanish " diff --git a/i2p2www/translations/es/LC_MESSAGES/blog.po b/i2p2www/translations/es/LC_MESSAGES/blog.po index 27dbec6e..49895202 100644 --- a/i2p2www/translations/es/LC_MESSAGES/blog.po +++ b/i2p2www/translations/es/LC_MESSAGES/blog.po @@ -13,7 +13,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-30 14:17+0000\n" +"POT-Creation-Date: 2013-08-30 23:26+0000\n" "PO-Revision-Date: 2013-08-12 10:32+0000\n" "Last-Translator: str4d \n" "Language-Team: Spanish " diff --git a/i2p2www/translations/es/LC_MESSAGES/comparison.po b/i2p2www/translations/es/LC_MESSAGES/comparison.po index 69647462..0bd630a7 100644 --- a/i2p2www/translations/es/LC_MESSAGES/comparison.po +++ b/i2p2www/translations/es/LC_MESSAGES/comparison.po @@ -13,7 +13,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-30 14:17+0000\n" +"POT-Creation-Date: 2013-08-30 23:26+0000\n" "PO-Revision-Date: 2013-07-11 10:13+0000\n" "Last-Translator: trolly\n" "Language-Team: Spanish " diff --git a/i2p2www/translations/es/LC_MESSAGES/docs.po b/i2p2www/translations/es/LC_MESSAGES/docs.po index 4affb3b7..bd3620e0 100644 --- a/i2p2www/translations/es/LC_MESSAGES/docs.po +++ b/i2p2www/translations/es/LC_MESSAGES/docs.po @@ -13,7 +13,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-30 14:17+0000\n" +"POT-Creation-Date: 2013-08-30 23:26+0000\n" "PO-Revision-Date: 2013-08-12 10:33+0000\n" "Last-Translator: str4d \n" "Language-Team: Spanish " @@ -11398,11 +11398,10 @@ msgstr "" "TODO: desarrollar -->" #: i2p2www/pages/site/docs/how/tech-intro.html:1007 -#, python-format +#, fuzzy, python-format msgid "" "PyBit is a Bittorrent client written in Python.\n" -"It is hosted on http://%(pebcache)s/" -" " +"It is hosted on %(pybit)s " msgstr "" "PyBit es un cliente Bittorrent escrito en python. Se aloja en http://%(pebcache)s/ " +"It is hosted on %(pybit)s " msgstr "" #: i2p2www/pages/site/docs/how/tech-intro.html:1015 diff --git a/i2p2www/translations/fr/LC_MESSAGES/get-involved.po b/i2p2www/translations/fr/LC_MESSAGES/get-involved.po index 271f88ca..63da5dcf 100644 --- a/i2p2www/translations/fr/LC_MESSAGES/get-involved.po +++ b/i2p2www/translations/fr/LC_MESSAGES/get-involved.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-30 14:17+0000\n" +"POT-Creation-Date: 2013-08-30 23:26+0000\n" "PO-Revision-Date: 2013-08-11 15:29+0000\n" "Last-Translator: Boxoa590\n" "Language-Team: French " diff --git a/i2p2www/translations/fr/LC_MESSAGES/misc.po b/i2p2www/translations/fr/LC_MESSAGES/misc.po index e11420af..ccd18589 100644 --- a/i2p2www/translations/fr/LC_MESSAGES/misc.po +++ b/i2p2www/translations/fr/LC_MESSAGES/misc.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-30 14:17+0000\n" +"POT-Creation-Date: 2013-08-30 23:26+0000\n" "PO-Revision-Date: 2013-06-29 11:32+0000\n" "Last-Translator: Boxoa590\n" "Language-Team: French " diff --git a/i2p2www/translations/fr/LC_MESSAGES/priority.po b/i2p2www/translations/fr/LC_MESSAGES/priority.po index e68d3a2b..07f02b62 100644 --- a/i2p2www/translations/fr/LC_MESSAGES/priority.po +++ b/i2p2www/translations/fr/LC_MESSAGES/priority.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-30 14:17+0000\n" +"POT-Creation-Date: 2013-08-30 23:26+0000\n" "PO-Revision-Date: 2013-08-12 10:34+0000\n" "Last-Translator: str4d \n" "Language-Team: French " @@ -2295,14 +2295,14 @@ msgstr "" "href=\"http://www.torproject.org/\">Tor." #: i2p2www/pages/site/faq.html:376 -#, python-format +#, fuzzy, python-format msgid "" "If you consider every eepsite that has ever been created, yes, most of " "them are down.\n" "People and eepsites come and go.\n" "A good way to get started in I2P is check out a list of eepsites that are" " currently up.\n" -"%(perv)s tracks active eepsites." +"%(eepstatus)s tracks active eepsites." msgstr "" "Si vous considérez chaque eepsite qui aie jamais été créé, oui, la " "plupart d'entre eux sont en hors d'accès (down).\n" diff --git a/i2p2www/translations/fr/LC_MESSAGES/research.po b/i2p2www/translations/fr/LC_MESSAGES/research.po index c40d3d54..d67c19e0 100644 --- a/i2p2www/translations/fr/LC_MESSAGES/research.po +++ b/i2p2www/translations/fr/LC_MESSAGES/research.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-30 14:17+0000\n" +"POT-Creation-Date: 2013-08-30 23:26+0000\n" "PO-Revision-Date: 2013-08-11 14:55+0000\n" "Last-Translator: Boxoa590\n" "Language-Team: French " diff --git a/i2p2www/translations/pt/LC_MESSAGES/priority.po b/i2p2www/translations/pt/LC_MESSAGES/priority.po index aa8e04f2..438bbd27 100644 --- a/i2p2www/translations/pt/LC_MESSAGES/priority.po +++ b/i2p2www/translations/pt/LC_MESSAGES/priority.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-30 14:17+0000\n" +"POT-Creation-Date: 2013-08-30 23:26+0000\n" "PO-Revision-Date: 2013-08-12 10:34+0000\n" "Last-Translator: str4d \n" "Language-Team: Portuguese " @@ -1993,7 +1993,7 @@ msgid "" "People and eepsites come and go.\n" "A good way to get started in I2P is check out a list of eepsites that are" " currently up.\n" -"%(perv)s tracks active eepsites." +"%(eepstatus)s tracks active eepsites." msgstr "" #: i2p2www/pages/site/faq.html:385 diff --git a/i2p2www/translations/sv_SE/LC_MESSAGES/about.po b/i2p2www/translations/sv_SE/LC_MESSAGES/about.po index 2f8d2ec7..210eb331 100644 --- a/i2p2www/translations/sv_SE/LC_MESSAGES/about.po +++ b/i2p2www/translations/sv_SE/LC_MESSAGES/about.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-30 14:17+0000\n" +"POT-Creation-Date: 2013-08-30 23:26+0000\n" "PO-Revision-Date: 2013-04-27 23:10+0000\n" "Last-Translator: Martin Svensson \n" "Language-Team: Swedish (Sweden) " diff --git a/i2p2www/translations/sv_SE/LC_MESSAGES/blog.po b/i2p2www/translations/sv_SE/LC_MESSAGES/blog.po index 1f80f4b2..99e744de 100644 --- a/i2p2www/translations/sv_SE/LC_MESSAGES/blog.po +++ b/i2p2www/translations/sv_SE/LC_MESSAGES/blog.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-30 14:17+0000\n" +"POT-Creation-Date: 2013-08-30 23:26+0000\n" "PO-Revision-Date: 2013-08-12 10:32+0000\n" "Last-Translator: str4d \n" "Language-Team: Swedish (Sweden) " diff --git a/i2p2www/translations/sv_SE/LC_MESSAGES/comparison.po b/i2p2www/translations/sv_SE/LC_MESSAGES/comparison.po index d93ec4b0..6f9800c0 100644 --- a/i2p2www/translations/sv_SE/LC_MESSAGES/comparison.po +++ b/i2p2www/translations/sv_SE/LC_MESSAGES/comparison.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-30 14:17+0000\n" +"POT-Creation-Date: 2013-08-30 23:26+0000\n" "PO-Revision-Date: 2013-04-27 23:10+0000\n" "Last-Translator: Martin Svensson \n" "Language-Team: Swedish (Sweden) " diff --git a/i2p2www/translations/sv_SE/LC_MESSAGES/docs.po b/i2p2www/translations/sv_SE/LC_MESSAGES/docs.po index 0b521e91..723ea2a8 100644 --- a/i2p2www/translations/sv_SE/LC_MESSAGES/docs.po +++ b/i2p2www/translations/sv_SE/LC_MESSAGES/docs.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-30 14:17+0000\n" +"POT-Creation-Date: 2013-08-30 23:26+0000\n" "PO-Revision-Date: 2013-04-27 23:10+0000\n" "Last-Translator: Martin Svensson \n" "Language-Team: Swedish (Sweden) " @@ -9910,8 +9910,7 @@ msgstr "" #, python-format msgid "" "PyBit is a Bittorrent client written in Python.\n" -"It is hosted on http://%(pebcache)s/" -" " +"It is hosted on %(pybit)s " msgstr "" #: i2p2www/pages/site/docs/how/tech-intro.html:1015 diff --git a/i2p2www/translations/sv_SE/LC_MESSAGES/get-involved.po b/i2p2www/translations/sv_SE/LC_MESSAGES/get-involved.po index a8a4f42c..653e8542 100644 --- a/i2p2www/translations/sv_SE/LC_MESSAGES/get-involved.po +++ b/i2p2www/translations/sv_SE/LC_MESSAGES/get-involved.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-30 14:17+0000\n" +"POT-Creation-Date: 2013-08-30 23:26+0000\n" "PO-Revision-Date: 2013-04-27 23:10+0000\n" "Last-Translator: Martin Svensson \n" "Language-Team: Swedish (Sweden) " diff --git a/i2p2www/translations/sv_SE/LC_MESSAGES/misc.po b/i2p2www/translations/sv_SE/LC_MESSAGES/misc.po index 0665fcbd..edf2a8c6 100644 --- a/i2p2www/translations/sv_SE/LC_MESSAGES/misc.po +++ b/i2p2www/translations/sv_SE/LC_MESSAGES/misc.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-30 14:17+0000\n" +"POT-Creation-Date: 2013-08-30 23:26+0000\n" "PO-Revision-Date: 2013-04-27 23:10+0000\n" "Last-Translator: Martin Svensson \n" "Language-Team: Swedish (Sweden) " diff --git a/i2p2www/translations/sv_SE/LC_MESSAGES/priority.po b/i2p2www/translations/sv_SE/LC_MESSAGES/priority.po index d09888eb..1ec8e8c9 100644 --- a/i2p2www/translations/sv_SE/LC_MESSAGES/priority.po +++ b/i2p2www/translations/sv_SE/LC_MESSAGES/priority.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-30 14:17+0000\n" +"POT-Creation-Date: 2013-08-30 23:26+0000\n" "PO-Revision-Date: 2013-04-27 23:10+0000\n" "Last-Translator: Martin Svensson \n" "Language-Team: Swedish (Sweden) " @@ -1815,7 +1815,7 @@ msgid "" "People and eepsites come and go.\n" "A good way to get started in I2P is check out a list of eepsites that are" " currently up.\n" -"%(perv)s tracks active eepsites." +"%(eepstatus)s tracks active eepsites." msgstr "" #: i2p2www/pages/site/faq.html:385 diff --git a/i2p2www/translations/sv_SE/LC_MESSAGES/research.po b/i2p2www/translations/sv_SE/LC_MESSAGES/research.po index 20fe942e..db945b20 100644 --- a/i2p2www/translations/sv_SE/LC_MESSAGES/research.po +++ b/i2p2www/translations/sv_SE/LC_MESSAGES/research.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-30 14:17+0000\n" +"POT-Creation-Date: 2013-08-30 23:26+0000\n" "PO-Revision-Date: 2013-04-27 23:10+0000\n" "Last-Translator: Martin Svensson \n" "Language-Team: Swedish (Sweden) " From 5bbe2814e0fe11a0731e04fe86a0ba8cb18af807 Mon Sep 17 00:00:00 2001 From: str4d Date: Fri, 30 Aug 2013 23:30:27 +0000 Subject: [PATCH 589/650] disapproval of revision 'dc30e3fd8f4778c36c8d95252a923d7a3b285513' --- i2p2www/pages/global/layout.html | 1 + 1 file changed, 1 insertion(+) diff --git a/i2p2www/pages/global/layout.html b/i2p2www/pages/global/layout.html index 259b8881..8d91acb0 100644 --- a/i2p2www/pages/global/layout.html +++ b/i2p2www/pages/global/layout.html @@ -26,6 +26,7 @@ {%- block headextra %}{% endblock %} +
    From 2790dd1024420acf5b7e846c9306a895040dbcac Mon Sep 17 00:00:00 2001 From: str4d Date: Fri, 30 Aug 2013 23:31:41 +0000 Subject: [PATCH 590/650] disapproval of revision '131c16962ceb9e26f1f792b2866fa405a5105983' --- i2p2www/__init__.py | 12 ++++++------ i2p2www/pages/global/lang.html | 6 ++++++ 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/i2p2www/__init__.py b/i2p2www/__init__.py index 747f6fa3..5dbf0cc0 100644 --- a/i2p2www/__init__.py +++ b/i2p2www/__init__.py @@ -19,18 +19,18 @@ MEETINGS_PER_PAGE = 20 SUPPORTED_LANGS = [ 'en', -# 'es', -# 'zh_CN', -# 'de', -# 'fr', + 'es', + 'zh_CN', + 'de', + 'fr', # 'it', # 'nl', # 'ru', -# 'sv_SE', + 'sv_SE', # 'cs', # 'ar', # 'el', -# 'pt', + 'pt', ] DEFAULT_GETTEXT_DOMAIN = 'priority' diff --git a/i2p2www/pages/global/lang.html b/i2p2www/pages/global/lang.html index 0094bad9..dd83130a 100644 --- a/i2p2www/pages/global/lang.html +++ b/i2p2www/pages/global/lang.html @@ -1,3 +1,9 @@
    • +
    • +
    • +
    • +
    • +
    • +
    From 08db2df77da5b7eda867c625e7694e0c96a99b5c Mon Sep 17 00:00:00 2001 From: str4d Date: Fri, 30 Aug 2013 23:33:51 +0000 Subject: [PATCH 591/650] Updated translation strings TODO: improve scripts to detect unchanged files --- i2p2www/translations/de/LC_MESSAGES/about.po | 2 +- i2p2www/translations/de/LC_MESSAGES/blog.po | 2 +- .../translations/de/LC_MESSAGES/comparison.po | 2 +- i2p2www/translations/de/LC_MESSAGES/docs.po | 2 +- .../translations/de/LC_MESSAGES/get-involved.po | 2 +- i2p2www/translations/de/LC_MESSAGES/misc.po | 2 +- i2p2www/translations/de/LC_MESSAGES/priority.po | 16 ++++++++++------ i2p2www/translations/de/LC_MESSAGES/research.po | 2 +- i2p2www/translations/es/LC_MESSAGES/about.po | 2 +- i2p2www/translations/es/LC_MESSAGES/blog.po | 2 +- .../translations/es/LC_MESSAGES/comparison.po | 2 +- i2p2www/translations/es/LC_MESSAGES/docs.po | 2 +- .../translations/es/LC_MESSAGES/get-involved.po | 2 +- i2p2www/translations/es/LC_MESSAGES/misc.po | 2 +- i2p2www/translations/es/LC_MESSAGES/priority.po | 16 ++++++++++------ i2p2www/translations/es/LC_MESSAGES/research.po | 2 +- i2p2www/translations/fr/LC_MESSAGES/about.po | 2 +- i2p2www/translations/fr/LC_MESSAGES/blog.po | 2 +- .../translations/fr/LC_MESSAGES/comparison.po | 2 +- i2p2www/translations/fr/LC_MESSAGES/docs.po | 2 +- .../translations/fr/LC_MESSAGES/get-involved.po | 2 +- i2p2www/translations/fr/LC_MESSAGES/misc.po | 2 +- i2p2www/translations/fr/LC_MESSAGES/priority.po | 16 ++++++++++------ i2p2www/translations/fr/LC_MESSAGES/research.po | 2 +- i2p2www/translations/pt/LC_MESSAGES/priority.po | 16 ++++++++++------ i2p2www/translations/sv_SE/LC_MESSAGES/about.po | 2 +- i2p2www/translations/sv_SE/LC_MESSAGES/blog.po | 2 +- .../translations/sv_SE/LC_MESSAGES/comparison.po | 2 +- i2p2www/translations/sv_SE/LC_MESSAGES/docs.po | 2 +- .../sv_SE/LC_MESSAGES/get-involved.po | 2 +- i2p2www/translations/sv_SE/LC_MESSAGES/misc.po | 2 +- .../translations/sv_SE/LC_MESSAGES/priority.po | 16 ++++++++++------ .../translations/sv_SE/LC_MESSAGES/research.po | 2 +- 33 files changed, 78 insertions(+), 58 deletions(-) diff --git a/i2p2www/translations/de/LC_MESSAGES/about.po b/i2p2www/translations/de/LC_MESSAGES/about.po index 5856c06e..390f8864 100644 --- a/i2p2www/translations/de/LC_MESSAGES/about.po +++ b/i2p2www/translations/de/LC_MESSAGES/about.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-30 23:26+0000\n" +"POT-Creation-Date: 2013-08-30 23:32+0000\n" "PO-Revision-Date: 2013-07-04 16:33+0000\n" "Last-Translator: D.A. Loader\n" "Language-Team: German " diff --git a/i2p2www/translations/de/LC_MESSAGES/blog.po b/i2p2www/translations/de/LC_MESSAGES/blog.po index 947fb523..b8735360 100644 --- a/i2p2www/translations/de/LC_MESSAGES/blog.po +++ b/i2p2www/translations/de/LC_MESSAGES/blog.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-30 23:26+0000\n" +"POT-Creation-Date: 2013-08-30 23:32+0000\n" "PO-Revision-Date: 2013-08-12 10:32+0000\n" "Last-Translator: str4d \n" "Language-Team: German " diff --git a/i2p2www/translations/de/LC_MESSAGES/comparison.po b/i2p2www/translations/de/LC_MESSAGES/comparison.po index fdc1c7c7..6e2a9954 100644 --- a/i2p2www/translations/de/LC_MESSAGES/comparison.po +++ b/i2p2www/translations/de/LC_MESSAGES/comparison.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-30 23:26+0000\n" +"POT-Creation-Date: 2013-08-30 23:32+0000\n" "PO-Revision-Date: 2013-07-04 16:33+0000\n" "Last-Translator: D.A. Loader\n" "Language-Team: German " diff --git a/i2p2www/translations/de/LC_MESSAGES/docs.po b/i2p2www/translations/de/LC_MESSAGES/docs.po index b025b8d1..d80b31fd 100644 --- a/i2p2www/translations/de/LC_MESSAGES/docs.po +++ b/i2p2www/translations/de/LC_MESSAGES/docs.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-30 23:26+0000\n" +"POT-Creation-Date: 2013-08-30 23:32+0000\n" "PO-Revision-Date: 2013-08-12 10:33+0000\n" "Last-Translator: str4d \n" "Language-Team: German " diff --git a/i2p2www/translations/de/LC_MESSAGES/get-involved.po b/i2p2www/translations/de/LC_MESSAGES/get-involved.po index c7e8b425..ced67a9a 100644 --- a/i2p2www/translations/de/LC_MESSAGES/get-involved.po +++ b/i2p2www/translations/de/LC_MESSAGES/get-involved.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-30 23:26+0000\n" +"POT-Creation-Date: 2013-08-30 23:32+0000\n" "PO-Revision-Date: 2013-07-04 16:33+0000\n" "Last-Translator: D.A. Loader\n" "Language-Team: German " diff --git a/i2p2www/translations/de/LC_MESSAGES/misc.po b/i2p2www/translations/de/LC_MESSAGES/misc.po index 1b2debd2..09a90130 100644 --- a/i2p2www/translations/de/LC_MESSAGES/misc.po +++ b/i2p2www/translations/de/LC_MESSAGES/misc.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-30 23:26+0000\n" +"POT-Creation-Date: 2013-08-30 23:32+0000\n" "PO-Revision-Date: 2013-07-04 16:33+0000\n" "Last-Translator: D.A. Loader\n" "Language-Team: German " diff --git a/i2p2www/translations/de/LC_MESSAGES/priority.po b/i2p2www/translations/de/LC_MESSAGES/priority.po index d0369120..acf76d23 100644 --- a/i2p2www/translations/de/LC_MESSAGES/priority.po +++ b/i2p2www/translations/de/LC_MESSAGES/priority.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-30 23:26+0000\n" +"POT-Creation-Date: 2013-08-30 23:32+0000\n" "PO-Revision-Date: 2013-08-12 10:34+0000\n" "Last-Translator: str4d \n" "Language-Team: German " @@ -710,27 +710,31 @@ msgstr "USA" msgid "Donate" msgstr "Spenden" -#: i2p2www/pages/global/layout.html:31 +#: i2p2www/pages/global/layout.html:29 +msgid "Skip navigation" +msgstr "" + +#: i2p2www/pages/global/layout.html:32 msgid "I2P Logo" msgstr "I2P Logo" -#: i2p2www/pages/global/layout.html:31 i2p2www/pages/site/index.html:3 +#: i2p2www/pages/global/layout.html:32 i2p2www/pages/site/index.html:3 msgid "The Invisible Internet Project" msgstr "Das Invisible Internet Projekt" -#: i2p2www/pages/global/layout.html:55 +#: i2p2www/pages/global/layout.html:56 #, python-format msgid "" "This page was last updated in %(lastupdated)s and is accurate for router " "version %(accuratefor)s." msgstr "" -#: i2p2www/pages/global/layout.html:59 +#: i2p2www/pages/global/layout.html:60 #, python-format msgid "This page was last updated in %(lastupdated)s." msgstr "" -#: i2p2www/pages/global/layout.html:63 +#: i2p2www/pages/global/layout.html:64 #, python-format msgid "This page is accurate for router version %(accuratefor)s." msgstr "" diff --git a/i2p2www/translations/de/LC_MESSAGES/research.po b/i2p2www/translations/de/LC_MESSAGES/research.po index 6fb43583..eb731095 100644 --- a/i2p2www/translations/de/LC_MESSAGES/research.po +++ b/i2p2www/translations/de/LC_MESSAGES/research.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-30 23:26+0000\n" +"POT-Creation-Date: 2013-08-30 23:32+0000\n" "PO-Revision-Date: 2013-07-04 16:33+0000\n" "Last-Translator: D.A. Loader\n" "Language-Team: German " diff --git a/i2p2www/translations/es/LC_MESSAGES/about.po b/i2p2www/translations/es/LC_MESSAGES/about.po index 4fe0f8e9..64e49133 100644 --- a/i2p2www/translations/es/LC_MESSAGES/about.po +++ b/i2p2www/translations/es/LC_MESSAGES/about.po @@ -13,7 +13,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-30 23:26+0000\n" +"POT-Creation-Date: 2013-08-30 23:32+0000\n" "PO-Revision-Date: 2013-07-22 10:38+0000\n" "Last-Translator: trolly\n" "Language-Team: Spanish " diff --git a/i2p2www/translations/es/LC_MESSAGES/blog.po b/i2p2www/translations/es/LC_MESSAGES/blog.po index 49895202..ad637de5 100644 --- a/i2p2www/translations/es/LC_MESSAGES/blog.po +++ b/i2p2www/translations/es/LC_MESSAGES/blog.po @@ -13,7 +13,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-30 23:26+0000\n" +"POT-Creation-Date: 2013-08-30 23:32+0000\n" "PO-Revision-Date: 2013-08-12 10:32+0000\n" "Last-Translator: str4d \n" "Language-Team: Spanish " diff --git a/i2p2www/translations/es/LC_MESSAGES/comparison.po b/i2p2www/translations/es/LC_MESSAGES/comparison.po index 0bd630a7..d95477bf 100644 --- a/i2p2www/translations/es/LC_MESSAGES/comparison.po +++ b/i2p2www/translations/es/LC_MESSAGES/comparison.po @@ -13,7 +13,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-30 23:26+0000\n" +"POT-Creation-Date: 2013-08-30 23:32+0000\n" "PO-Revision-Date: 2013-07-11 10:13+0000\n" "Last-Translator: trolly\n" "Language-Team: Spanish " diff --git a/i2p2www/translations/es/LC_MESSAGES/docs.po b/i2p2www/translations/es/LC_MESSAGES/docs.po index bd3620e0..8648297d 100644 --- a/i2p2www/translations/es/LC_MESSAGES/docs.po +++ b/i2p2www/translations/es/LC_MESSAGES/docs.po @@ -13,7 +13,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-30 23:26+0000\n" +"POT-Creation-Date: 2013-08-30 23:32+0000\n" "PO-Revision-Date: 2013-08-12 10:33+0000\n" "Last-Translator: str4d \n" "Language-Team: Spanish " diff --git a/i2p2www/translations/es/LC_MESSAGES/get-involved.po b/i2p2www/translations/es/LC_MESSAGES/get-involved.po index 083500a6..6d1c039b 100644 --- a/i2p2www/translations/es/LC_MESSAGES/get-involved.po +++ b/i2p2www/translations/es/LC_MESSAGES/get-involved.po @@ -13,7 +13,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-30 23:26+0000\n" +"POT-Creation-Date: 2013-08-30 23:32+0000\n" "PO-Revision-Date: 2013-07-11 10:13+0000\n" "Last-Translator: trolly\n" "Language-Team: Spanish " diff --git a/i2p2www/translations/es/LC_MESSAGES/misc.po b/i2p2www/translations/es/LC_MESSAGES/misc.po index fcd14c39..00591303 100644 --- a/i2p2www/translations/es/LC_MESSAGES/misc.po +++ b/i2p2www/translations/es/LC_MESSAGES/misc.po @@ -13,7 +13,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-30 23:26+0000\n" +"POT-Creation-Date: 2013-08-30 23:32+0000\n" "PO-Revision-Date: 2013-08-12 09:33+0000\n" "Last-Translator: trolly\n" "Language-Team: Spanish " diff --git a/i2p2www/translations/es/LC_MESSAGES/priority.po b/i2p2www/translations/es/LC_MESSAGES/priority.po index b9559e59..501be9e1 100644 --- a/i2p2www/translations/es/LC_MESSAGES/priority.po +++ b/i2p2www/translations/es/LC_MESSAGES/priority.po @@ -13,7 +13,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-30 23:26+0000\n" +"POT-Creation-Date: 2013-08-30 23:32+0000\n" "PO-Revision-Date: 2013-08-12 10:34+0000\n" "Last-Translator: str4d \n" "Language-Team: Spanish " @@ -916,15 +916,19 @@ msgstr "EEUU" msgid "Donate" msgstr "Donar" -#: i2p2www/pages/global/layout.html:31 +#: i2p2www/pages/global/layout.html:29 +msgid "Skip navigation" +msgstr "" + +#: i2p2www/pages/global/layout.html:32 msgid "I2P Logo" msgstr "Logo I2P" -#: i2p2www/pages/global/layout.html:31 i2p2www/pages/site/index.html:3 +#: i2p2www/pages/global/layout.html:32 i2p2www/pages/site/index.html:3 msgid "The Invisible Internet Project" msgstr "El proyecto de Internet Invisible" -#: i2p2www/pages/global/layout.html:55 +#: i2p2www/pages/global/layout.html:56 #, python-format msgid "" "This page was last updated in %(lastupdated)s and is accurate for router " @@ -933,12 +937,12 @@ msgstr "" "Esta pagina fue actualizada por última vez el %(lastupdated)s y, en " "concrento, es la versión %(accuratefor)s." -#: i2p2www/pages/global/layout.html:59 +#: i2p2www/pages/global/layout.html:60 #, python-format msgid "This page was last updated in %(lastupdated)s." msgstr "Esta página fue actualizada por última vez el %(lastupdated)s." -#: i2p2www/pages/global/layout.html:63 +#: i2p2www/pages/global/layout.html:64 #, python-format msgid "This page is accurate for router version %(accuratefor)s." msgstr "Esta página está diseñada para la versión de router %(accuratefor)s." diff --git a/i2p2www/translations/es/LC_MESSAGES/research.po b/i2p2www/translations/es/LC_MESSAGES/research.po index ad96ebaa..ba824336 100644 --- a/i2p2www/translations/es/LC_MESSAGES/research.po +++ b/i2p2www/translations/es/LC_MESSAGES/research.po @@ -13,7 +13,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-30 23:26+0000\n" +"POT-Creation-Date: 2013-08-30 23:32+0000\n" "PO-Revision-Date: 2013-07-25 09:42+0000\n" "Last-Translator: trolly\n" "Language-Team: Spanish " diff --git a/i2p2www/translations/fr/LC_MESSAGES/about.po b/i2p2www/translations/fr/LC_MESSAGES/about.po index 9ec13227..32100944 100644 --- a/i2p2www/translations/fr/LC_MESSAGES/about.po +++ b/i2p2www/translations/fr/LC_MESSAGES/about.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-30 23:26+0000\n" +"POT-Creation-Date: 2013-08-30 23:32+0000\n" "PO-Revision-Date: 2013-08-11 16:29+0000\n" "Last-Translator: Boxoa590\n" "Language-Team: French " diff --git a/i2p2www/translations/fr/LC_MESSAGES/blog.po b/i2p2www/translations/fr/LC_MESSAGES/blog.po index 94c8fa52..04a0281c 100644 --- a/i2p2www/translations/fr/LC_MESSAGES/blog.po +++ b/i2p2www/translations/fr/LC_MESSAGES/blog.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-30 23:26+0000\n" +"POT-Creation-Date: 2013-08-30 23:32+0000\n" "PO-Revision-Date: 2013-08-12 10:32+0000\n" "Last-Translator: str4d \n" "Language-Team: French " diff --git a/i2p2www/translations/fr/LC_MESSAGES/comparison.po b/i2p2www/translations/fr/LC_MESSAGES/comparison.po index 31fa094d..ccf0716a 100644 --- a/i2p2www/translations/fr/LC_MESSAGES/comparison.po +++ b/i2p2www/translations/fr/LC_MESSAGES/comparison.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-30 23:26+0000\n" +"POT-Creation-Date: 2013-08-30 23:32+0000\n" "PO-Revision-Date: 2013-06-29 11:32+0000\n" "Last-Translator: Boxoa590\n" "Language-Team: French " diff --git a/i2p2www/translations/fr/LC_MESSAGES/docs.po b/i2p2www/translations/fr/LC_MESSAGES/docs.po index 7f0330eb..2744bcba 100644 --- a/i2p2www/translations/fr/LC_MESSAGES/docs.po +++ b/i2p2www/translations/fr/LC_MESSAGES/docs.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-30 23:26+0000\n" +"POT-Creation-Date: 2013-08-30 23:32+0000\n" "PO-Revision-Date: 2013-08-12 10:33+0000\n" "Last-Translator: str4d \n" "Language-Team: French " diff --git a/i2p2www/translations/fr/LC_MESSAGES/get-involved.po b/i2p2www/translations/fr/LC_MESSAGES/get-involved.po index 63da5dcf..cd563933 100644 --- a/i2p2www/translations/fr/LC_MESSAGES/get-involved.po +++ b/i2p2www/translations/fr/LC_MESSAGES/get-involved.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-30 23:26+0000\n" +"POT-Creation-Date: 2013-08-30 23:32+0000\n" "PO-Revision-Date: 2013-08-11 15:29+0000\n" "Last-Translator: Boxoa590\n" "Language-Team: French " diff --git a/i2p2www/translations/fr/LC_MESSAGES/misc.po b/i2p2www/translations/fr/LC_MESSAGES/misc.po index ccd18589..bb04f34e 100644 --- a/i2p2www/translations/fr/LC_MESSAGES/misc.po +++ b/i2p2www/translations/fr/LC_MESSAGES/misc.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-30 23:26+0000\n" +"POT-Creation-Date: 2013-08-30 23:32+0000\n" "PO-Revision-Date: 2013-06-29 11:32+0000\n" "Last-Translator: Boxoa590\n" "Language-Team: French " diff --git a/i2p2www/translations/fr/LC_MESSAGES/priority.po b/i2p2www/translations/fr/LC_MESSAGES/priority.po index 07f02b62..f788dbab 100644 --- a/i2p2www/translations/fr/LC_MESSAGES/priority.po +++ b/i2p2www/translations/fr/LC_MESSAGES/priority.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-30 23:26+0000\n" +"POT-Creation-Date: 2013-08-30 23:32+0000\n" "PO-Revision-Date: 2013-08-12 10:34+0000\n" "Last-Translator: str4d \n" "Language-Team: French " @@ -904,15 +904,19 @@ msgstr "USA" msgid "Donate" msgstr "Faire un don" -#: i2p2www/pages/global/layout.html:31 +#: i2p2www/pages/global/layout.html:29 +msgid "Skip navigation" +msgstr "" + +#: i2p2www/pages/global/layout.html:32 msgid "I2P Logo" msgstr "Logo I2P" -#: i2p2www/pages/global/layout.html:31 i2p2www/pages/site/index.html:3 +#: i2p2www/pages/global/layout.html:32 i2p2www/pages/site/index.html:3 msgid "The Invisible Internet Project" msgstr "The Invisible Internet Project (le projet internet invisible)" -#: i2p2www/pages/global/layout.html:55 +#: i2p2www/pages/global/layout.html:56 #, python-format msgid "" "This page was last updated in %(lastupdated)s and is accurate for router " @@ -921,12 +925,12 @@ msgstr "" "Cette page a été mise à jour en %(lastupdated)s et est correcte pour la " "version de routeur %(accuratefor)s." -#: i2p2www/pages/global/layout.html:59 +#: i2p2www/pages/global/layout.html:60 #, python-format msgid "This page was last updated in %(lastupdated)s." msgstr "Cette page a étée mise à jour dernièrement en %(lastupdated)s." -#: i2p2www/pages/global/layout.html:63 +#: i2p2www/pages/global/layout.html:64 #, python-format msgid "This page is accurate for router version %(accuratefor)s." msgstr "Cette page est à jour pour la version de routeur %(accuratefor)s." diff --git a/i2p2www/translations/fr/LC_MESSAGES/research.po b/i2p2www/translations/fr/LC_MESSAGES/research.po index d67c19e0..b34685eb 100644 --- a/i2p2www/translations/fr/LC_MESSAGES/research.po +++ b/i2p2www/translations/fr/LC_MESSAGES/research.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-30 23:26+0000\n" +"POT-Creation-Date: 2013-08-30 23:32+0000\n" "PO-Revision-Date: 2013-08-11 14:55+0000\n" "Last-Translator: Boxoa590\n" "Language-Team: French " diff --git a/i2p2www/translations/pt/LC_MESSAGES/priority.po b/i2p2www/translations/pt/LC_MESSAGES/priority.po index 438bbd27..6e7fbd31 100644 --- a/i2p2www/translations/pt/LC_MESSAGES/priority.po +++ b/i2p2www/translations/pt/LC_MESSAGES/priority.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-30 23:26+0000\n" +"POT-Creation-Date: 2013-08-30 23:32+0000\n" "PO-Revision-Date: 2013-08-12 10:34+0000\n" "Last-Translator: str4d \n" "Language-Team: Portuguese " @@ -884,15 +884,19 @@ msgstr "EUA" msgid "Donate" msgstr "Doe" -#: i2p2www/pages/global/layout.html:31 +#: i2p2www/pages/global/layout.html:29 +msgid "Skip navigation" +msgstr "" + +#: i2p2www/pages/global/layout.html:32 msgid "I2P Logo" msgstr "Logo do I2P" -#: i2p2www/pages/global/layout.html:31 i2p2www/pages/site/index.html:3 +#: i2p2www/pages/global/layout.html:32 i2p2www/pages/site/index.html:3 msgid "The Invisible Internet Project" msgstr "O projeto de Internet Invisível" -#: i2p2www/pages/global/layout.html:55 +#: i2p2www/pages/global/layout.html:56 #, python-format msgid "" "This page was last updated in %(lastupdated)s and is accurate for router " @@ -901,12 +905,12 @@ msgstr "" "A última atualização desta página foi em %(lastupdated)s e é própria para" " a versão de servidor %(accuratefor)s." -#: i2p2www/pages/global/layout.html:59 +#: i2p2www/pages/global/layout.html:60 #, python-format msgid "This page was last updated in %(lastupdated)s." msgstr "A última atualização desta página foi em %(lastupdated)s." -#: i2p2www/pages/global/layout.html:63 +#: i2p2www/pages/global/layout.html:64 #, python-format msgid "This page is accurate for router version %(accuratefor)s." msgstr "Esta página está própria para a versão de servidor %(accuratefor)s." diff --git a/i2p2www/translations/sv_SE/LC_MESSAGES/about.po b/i2p2www/translations/sv_SE/LC_MESSAGES/about.po index 210eb331..d7f67c13 100644 --- a/i2p2www/translations/sv_SE/LC_MESSAGES/about.po +++ b/i2p2www/translations/sv_SE/LC_MESSAGES/about.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-30 23:26+0000\n" +"POT-Creation-Date: 2013-08-30 23:32+0000\n" "PO-Revision-Date: 2013-04-27 23:10+0000\n" "Last-Translator: Martin Svensson \n" "Language-Team: Swedish (Sweden) " diff --git a/i2p2www/translations/sv_SE/LC_MESSAGES/blog.po b/i2p2www/translations/sv_SE/LC_MESSAGES/blog.po index 99e744de..68d6a668 100644 --- a/i2p2www/translations/sv_SE/LC_MESSAGES/blog.po +++ b/i2p2www/translations/sv_SE/LC_MESSAGES/blog.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-30 23:26+0000\n" +"POT-Creation-Date: 2013-08-30 23:32+0000\n" "PO-Revision-Date: 2013-08-12 10:32+0000\n" "Last-Translator: str4d \n" "Language-Team: Swedish (Sweden) " diff --git a/i2p2www/translations/sv_SE/LC_MESSAGES/comparison.po b/i2p2www/translations/sv_SE/LC_MESSAGES/comparison.po index 6f9800c0..4823d202 100644 --- a/i2p2www/translations/sv_SE/LC_MESSAGES/comparison.po +++ b/i2p2www/translations/sv_SE/LC_MESSAGES/comparison.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-30 23:26+0000\n" +"POT-Creation-Date: 2013-08-30 23:32+0000\n" "PO-Revision-Date: 2013-04-27 23:10+0000\n" "Last-Translator: Martin Svensson \n" "Language-Team: Swedish (Sweden) " diff --git a/i2p2www/translations/sv_SE/LC_MESSAGES/docs.po b/i2p2www/translations/sv_SE/LC_MESSAGES/docs.po index 723ea2a8..1c5c6327 100644 --- a/i2p2www/translations/sv_SE/LC_MESSAGES/docs.po +++ b/i2p2www/translations/sv_SE/LC_MESSAGES/docs.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-30 23:26+0000\n" +"POT-Creation-Date: 2013-08-30 23:32+0000\n" "PO-Revision-Date: 2013-04-27 23:10+0000\n" "Last-Translator: Martin Svensson \n" "Language-Team: Swedish (Sweden) " diff --git a/i2p2www/translations/sv_SE/LC_MESSAGES/get-involved.po b/i2p2www/translations/sv_SE/LC_MESSAGES/get-involved.po index 653e8542..b6a68251 100644 --- a/i2p2www/translations/sv_SE/LC_MESSAGES/get-involved.po +++ b/i2p2www/translations/sv_SE/LC_MESSAGES/get-involved.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-30 23:26+0000\n" +"POT-Creation-Date: 2013-08-30 23:32+0000\n" "PO-Revision-Date: 2013-04-27 23:10+0000\n" "Last-Translator: Martin Svensson \n" "Language-Team: Swedish (Sweden) " diff --git a/i2p2www/translations/sv_SE/LC_MESSAGES/misc.po b/i2p2www/translations/sv_SE/LC_MESSAGES/misc.po index edf2a8c6..f16f8fad 100644 --- a/i2p2www/translations/sv_SE/LC_MESSAGES/misc.po +++ b/i2p2www/translations/sv_SE/LC_MESSAGES/misc.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-30 23:26+0000\n" +"POT-Creation-Date: 2013-08-30 23:32+0000\n" "PO-Revision-Date: 2013-04-27 23:10+0000\n" "Last-Translator: Martin Svensson \n" "Language-Team: Swedish (Sweden) " diff --git a/i2p2www/translations/sv_SE/LC_MESSAGES/priority.po b/i2p2www/translations/sv_SE/LC_MESSAGES/priority.po index 1ec8e8c9..27af3bf1 100644 --- a/i2p2www/translations/sv_SE/LC_MESSAGES/priority.po +++ b/i2p2www/translations/sv_SE/LC_MESSAGES/priority.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-30 23:26+0000\n" +"POT-Creation-Date: 2013-08-30 23:32+0000\n" "PO-Revision-Date: 2013-04-27 23:10+0000\n" "Last-Translator: Martin Svensson \n" "Language-Team: Swedish (Sweden) " @@ -708,27 +708,31 @@ msgstr "" msgid "Donate" msgstr "" -#: i2p2www/pages/global/layout.html:31 +#: i2p2www/pages/global/layout.html:29 +msgid "Skip navigation" +msgstr "" + +#: i2p2www/pages/global/layout.html:32 msgid "I2P Logo" msgstr "" -#: i2p2www/pages/global/layout.html:31 i2p2www/pages/site/index.html:3 +#: i2p2www/pages/global/layout.html:32 i2p2www/pages/site/index.html:3 msgid "The Invisible Internet Project" msgstr "" -#: i2p2www/pages/global/layout.html:55 +#: i2p2www/pages/global/layout.html:56 #, python-format msgid "" "This page was last updated in %(lastupdated)s and is accurate for router " "version %(accuratefor)s." msgstr "" -#: i2p2www/pages/global/layout.html:59 +#: i2p2www/pages/global/layout.html:60 #, python-format msgid "This page was last updated in %(lastupdated)s." msgstr "" -#: i2p2www/pages/global/layout.html:63 +#: i2p2www/pages/global/layout.html:64 #, python-format msgid "This page is accurate for router version %(accuratefor)s." msgstr "" diff --git a/i2p2www/translations/sv_SE/LC_MESSAGES/research.po b/i2p2www/translations/sv_SE/LC_MESSAGES/research.po index db945b20..33ffa6b4 100644 --- a/i2p2www/translations/sv_SE/LC_MESSAGES/research.po +++ b/i2p2www/translations/sv_SE/LC_MESSAGES/research.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-30 23:26+0000\n" +"POT-Creation-Date: 2013-08-30 23:32+0000\n" "PO-Revision-Date: 2013-04-27 23:10+0000\n" "Last-Translator: Martin Svensson \n" "Language-Team: Swedish (Sweden) " From 2d412878b2de626bd79359df2cbbe5cae73df1c8 Mon Sep 17 00:00:00 2001 From: str4d Date: Sat, 31 Aug 2013 00:29:42 +0000 Subject: [PATCH 592/650] Removed obsolete /research/papers page --- i2p2www/pages/site/research/papers.html | 121 ------------------------ 1 file changed, 121 deletions(-) delete mode 100644 i2p2www/pages/site/research/papers.html diff --git a/i2p2www/pages/site/research/papers.html b/i2p2www/pages/site/research/papers.html deleted file mode 100644 index 96471238..00000000 --- a/i2p2www/pages/site/research/papers.html +++ /dev/null @@ -1,121 +0,0 @@ -{% extends "global/layout.html" %} -{% block title %}{{ _('Papers on I2P') }}{% endblock %} -{% block content %} -

    {{ _('Papers on I2P') }}

    -

    -{% trans %}Following are links to research papers about I2P.{% endtrans %} -

    -

    {% trans email='press ~~~at~~~ i2p2.de' -%} -To request an addition to this page, please send to {{ email }}. -{%- endtrans %}

    -

    -{% trans %}Newest links are at the top of the page.{% endtrans %} -

    - - -{% endblock %} From 28e96d3ed0ef7df423afbe7bc6b44b7290681fec Mon Sep 17 00:00:00 2001 From: str4d Date: Sat, 31 Aug 2013 00:56:03 +0000 Subject: [PATCH 593/650] Handle zh -> zh_CN for a few legacy pages --- i2p2www/legacy.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/i2p2www/legacy.py b/i2p2www/legacy.py index 6d89054c..2c41cbd4 100644 --- a/i2p2www/legacy.py +++ b/i2p2www/legacy.py @@ -182,6 +182,8 @@ def legacy_show(f): lang = 'en' if hasattr(g, 'lang') and g.lang: lang = g.lang + if lang == 'zh': + lang = 'zh_CN' if f in LEGACY_FUNCTIONS_MAP: return redirect(url_for(LEGACY_FUNCTIONS_MAP[f]['function'], lang=lang, **LEGACY_FUNCTIONS_MAP[f]['params'])) elif f in LEGACY_PAGES_MAP: From 322603b97818fa0b8b1b55262187e331edb212a7 Mon Sep 17 00:00:00 2001 From: str4d Date: Sat, 31 Aug 2013 04:09:53 +0000 Subject: [PATCH 594/650] Slight font size increase --- i2p2www/static/styles/duck/desktop.css | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/i2p2www/static/styles/duck/desktop.css b/i2p2www/static/styles/duck/desktop.css index 0cdcb5e1..aef371de 100644 --- a/i2p2www/static/styles/duck/desktop.css +++ b/i2p2www/static/styles/duck/desktop.css @@ -235,7 +235,7 @@ div#content .main { box-shadow:2px 2px 4px rgba(0, 0, 0, 0.3), 1em 3em 2em 0.5em rgba(255, 255, 255, 0.3) inset, inset -.2em -.5em 1em -0em rgba(0,0,0,.3)} .main .get-i2p:hover {box-shadow:2px 2px 2px rgba(0, 0, 0, 0.3), inset 0 -2.2em 2.2em rgba(255, 255, 255, 0.3), inset .2em .5em 1em 0em rgba(0,0,0,.3);} div#content .aside-wrap {width:80%; margin:2em auto;} - div#content .aside {position:relative; width:30.9%; margin-left:3%; display:inline-block; vertical-align:top; font-size:1.2em} + div#content .aside {position:relative; width:30.9%; margin-left:3%; display:inline-block; vertical-align:top; font-size:1.3em} div#content .aside:first-child {margin-left:0%;} div#content .aside a {font-weight:bold;} div#content .aside h1 {padding:1em 0; border-bottom:1px solid rgba(171, 204, 113, 0.6); font-size:1.4em; color:#222200; text-shadow:1px 1px 1px rgba(0,0,0,.3)} @@ -269,7 +269,7 @@ div#content .main { width:auto; margin: 0 5%; padding: 4em 5% 2em; position:relative; background: rgba(171, 204, 113, 0.6); border-top:2px solid #abcc71; border-left: 2px solid #abcc71; border-right: 2px solid #abcc71; border-radius: 5px 5px 0 0; - color:black; font-size:1.2em; line-height:1.4em; + color:black; font-size:1.3em; line-height:1.4em; } div#content .inner h1, div#content .inner h2, div#content .inner h3 {color:white; text-shadow:1px 1px 1px rgba(0,0,0,.3); margin:1em 0 .5em; border-bottom:1px solid white; padding-bottom:.2em;} div#content .inner h1 {font-size:2.2em; margin:0em 0 1em; width:auto;} From 3e3a438ff93a2a649f36fc4df36ba5a694858a4c Mon Sep 17 00:00:00 2001 From: str4d Date: Sat, 31 Aug 2013 04:27:20 +0000 Subject: [PATCH 595/650] Define default gettext domain in one place --- i2p2www/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/i2p2www/__init__.py b/i2p2www/__init__.py index 5dbf0cc0..b8a31b1a 100644 --- a/i2p2www/__init__.py +++ b/i2p2www/__init__.py @@ -64,7 +64,7 @@ class MyFlask(Flask): app = application = MyFlask('i2p2www', template_folder=TEMPLATE_DIR, static_url_path='/_static', static_folder=STATIC_DIR) app.debug = bool(os.environ.get('APP_DEBUG', 'False')) -babel = Babel(app, default_domain='priority') +babel = Babel(app, default_domain=DEFAULT_GETTEXT_DOMAIN) cache = Cache(app, config={ 'CACHE_DEFAULT_TIMEOUT': 600, #'CACHE_TYPE': '', # See http://packages.python.org/Flask-Cache/#configuring-flask-cache From 564922e651ea93e8766faf87f0aebbe3aaa5d004 Mon Sep 17 00:00:00 2001 From: str4d Date: Sat, 31 Aug 2013 04:31:20 +0000 Subject: [PATCH 596/650] Define site domain in one place --- i2p2www/__init__.py | 2 ++ i2p2www/templatevars.py | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/i2p2www/__init__.py b/i2p2www/__init__.py index b8a31b1a..16b272a9 100644 --- a/i2p2www/__init__.py +++ b/i2p2www/__init__.py @@ -13,6 +13,8 @@ CURRENT_I2P_VERSION = '0.9.7.1' CANONICAL_DOMAIN = 'i2hq.srv.i2p2.de' +THIS_DOMAIN = CANONICAL_DOMAIN + BLOG_POSTS_PER_FEED = 10 BLOG_POSTS_PER_PAGE = 10 MEETINGS_PER_PAGE = 20 diff --git a/i2p2www/templatevars.py b/i2p2www/templatevars.py index 0c6701e2..45b8da06 100644 --- a/i2p2www/templatevars.py +++ b/i2p2www/templatevars.py @@ -1,12 +1,12 @@ from flask import g, request, safe_join, url_for import os.path -from i2p2www import CANONICAL_DOMAIN, CURRENT_I2P_VERSION, STATIC_DIR, app +from i2p2www import CANONICAL_DOMAIN, CURRENT_I2P_VERSION, STATIC_DIR, THIS_DOMAIN, app INPROXY = '.us' I2P_TO_CLEAR = { - 'www.i2p2.i2p': 'www.i2p2.de', + 'www.i2p2.i2p': THIS_DOMAIN, 'forum.i2p': 'forum.i2p', # Don't convert forum.i2p, it is not accessible outside I2P 'trac.i2p2.i2p': 'trac.i2p2.de', 'mail.i2p': 'i2pmail.org', From b6eec49511805a147e373fa61cf77c962a4638b9 Mon Sep 17 00:00:00 2001 From: str4d Date: Sat, 31 Aug 2013 04:48:31 +0000 Subject: [PATCH 597/650] Set up site-specific settings --- i2p2www/__init__.py | 16 +++++++++++----- i2p2www/settings.py.sample | 8 ++++++++ 2 files changed, 19 insertions(+), 5 deletions(-) create mode 100644 i2p2www/settings.py.sample diff --git a/i2p2www/__init__.py b/i2p2www/__init__.py index 16b272a9..57975769 100644 --- a/i2p2www/__init__.py +++ b/i2p2www/__init__.py @@ -5,6 +5,11 @@ from docutils.core import publish_parts import os.path import os +try: + from i2p2www import settings +except ImportError: + settings = None + ########### # Constants @@ -13,7 +18,11 @@ CURRENT_I2P_VERSION = '0.9.7.1' CANONICAL_DOMAIN = 'i2hq.srv.i2p2.de' -THIS_DOMAIN = CANONICAL_DOMAIN +THIS_DOMAIN = settings.THIS_DOMAIN if settings and hasattr(settings, 'THIS_DOMAIN') else CANONICAL_DOMAIN + +CACHE_CONFIG = settings.CACHE_CONFIG if settings and hasattr(settings, 'CACHE_CONFIG') else { + 'CACHE_DEFAULT_TIMEOUT': 600, + } BLOG_POSTS_PER_FEED = 10 BLOG_POSTS_PER_PAGE = 10 @@ -67,10 +76,7 @@ class MyFlask(Flask): app = application = MyFlask('i2p2www', template_folder=TEMPLATE_DIR, static_url_path='/_static', static_folder=STATIC_DIR) app.debug = bool(os.environ.get('APP_DEBUG', 'False')) babel = Babel(app, default_domain=DEFAULT_GETTEXT_DOMAIN) -cache = Cache(app, config={ - 'CACHE_DEFAULT_TIMEOUT': 600, - #'CACHE_TYPE': '', # See http://packages.python.org/Flask-Cache/#configuring-flask-cache - }) +cache = Cache(app, config=CACHE_CONFIG) ################# diff --git a/i2p2www/settings.py.sample b/i2p2www/settings.py.sample new file mode 100644 index 00000000..8284d6fc --- /dev/null +++ b/i2p2www/settings.py.sample @@ -0,0 +1,8 @@ +# The domain hosting this site +THIS_DOMAIN = 'i2p.mirror.example.org' + +# Flask-Cache settings +CACHE_CONFIG = { + 'CACHE_DEFAULT_TIMEOUT': 600, + 'CACHE_TYPE': '', # See http://packages.python.org/Flask-Cache/#configuring-flask-cache + } From a805cc541a1243283beaac0582a80b805273d51c Mon Sep 17 00:00:00 2001 From: str4d Date: Sat, 31 Aug 2013 04:55:09 +0000 Subject: [PATCH 598/650] Removed absolute links to this site --- i2p2www/__init__.py | 2 -- i2p2www/pages/site/about/team.html | 4 ++-- i2p2www/settings.py.sample | 3 --- i2p2www/templatevars.py | 3 +-- 4 files changed, 3 insertions(+), 9 deletions(-) diff --git a/i2p2www/__init__.py b/i2p2www/__init__.py index 57975769..1eb2a93e 100644 --- a/i2p2www/__init__.py +++ b/i2p2www/__init__.py @@ -18,8 +18,6 @@ CURRENT_I2P_VERSION = '0.9.7.1' CANONICAL_DOMAIN = 'i2hq.srv.i2p2.de' -THIS_DOMAIN = settings.THIS_DOMAIN if settings and hasattr(settings, 'THIS_DOMAIN') else CANONICAL_DOMAIN - CACHE_CONFIG = settings.CACHE_CONFIG if settings and hasattr(settings, 'CACHE_CONFIG') else { 'CACHE_DEFAULT_TIMEOUT': 600, } diff --git a/i2p2www/pages/site/about/team.html b/i2p2www/pages/site/about/team.html index 95e1cd31..f8a3da43 100644 --- a/i2p2www/pages/site/about/team.html +++ b/i2p2www/pages/site/about/team.html @@ -82,12 +82,12 @@ network. {{ _('manage the public project website content design') }} - {% trans website=i2pconv('www.i2p2.i2p') %}Webserver admin{% endtrans %} + {% trans website=site_url() %}Webserver admin{% endtrans %} welterde {{ _('manage the public project webservers') }} - {% trans website=i2pconv('www.i2p2.i2p') %}Website admin{% endtrans %} + {% trans website=site_url() %}Website admin{% endtrans %} str4d {{ _('manage the public project website content') }} diff --git a/i2p2www/settings.py.sample b/i2p2www/settings.py.sample index 8284d6fc..3027ca11 100644 --- a/i2p2www/settings.py.sample +++ b/i2p2www/settings.py.sample @@ -1,6 +1,3 @@ -# The domain hosting this site -THIS_DOMAIN = 'i2p.mirror.example.org' - # Flask-Cache settings CACHE_CONFIG = { 'CACHE_DEFAULT_TIMEOUT': 600, diff --git a/i2p2www/templatevars.py b/i2p2www/templatevars.py index 45b8da06..e682dd2d 100644 --- a/i2p2www/templatevars.py +++ b/i2p2www/templatevars.py @@ -1,12 +1,11 @@ from flask import g, request, safe_join, url_for import os.path -from i2p2www import CANONICAL_DOMAIN, CURRENT_I2P_VERSION, STATIC_DIR, THIS_DOMAIN, app +from i2p2www import CANONICAL_DOMAIN, CURRENT_I2P_VERSION, STATIC_DIR, app INPROXY = '.us' I2P_TO_CLEAR = { - 'www.i2p2.i2p': THIS_DOMAIN, 'forum.i2p': 'forum.i2p', # Don't convert forum.i2p, it is not accessible outside I2P 'trac.i2p2.i2p': 'trac.i2p2.de', 'mail.i2p': 'i2pmail.org', From 7e086fd2e77b0a1bda9bd2d4374cf5f35ffd76b6 Mon Sep 17 00:00:00 2001 From: kytv Date: Sat, 31 Aug 2013 23:30:36 +0000 Subject: [PATCH 599/650] workaround flask bug by explicitly installing pytz before flask --- etc/reqs.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/etc/reqs.txt b/etc/reqs.txt index df74394b..baa1939c 100644 --- a/etc/reqs.txt +++ b/etc/reqs.txt @@ -1,3 +1,4 @@ +pytz>=2012 Flask==0.9 Flask-Babel==0.8 Flask-Cache==0.10.1 From ba651ceafb26f6dafc7c5136e3aaf791436f50de Mon Sep 17 00:00:00 2001 From: kytv Date: Sat, 31 Aug 2013 23:52:07 +0000 Subject: [PATCH 600/650] site-updater updates - no unneccesary uses of cat - create tempfile with mktemp and cleanup with a trap - simplify regex --- site-updater-i2hq.sh | 11 ++++------- site-updater.sh | 11 ++++------- 2 files changed, 8 insertions(+), 14 deletions(-) diff --git a/site-updater-i2hq.sh b/site-updater-i2hq.sh index b12c2d23..28b3452d 100755 --- a/site-updater-i2hq.sh +++ b/site-updater-i2hq.sh @@ -1,18 +1,15 @@ #!/bin/sh -TMP=tmp +TMP=$(mktemp XXXXXXXXXX) +trap 'rm -f $TMP;exit' 0 1 2 15 mtn update 2>&1 | tee $TMP -cat $TMP | grep "^mtn: adding 'i2p2www/translations/\|^mtn: dropping 'i2p2www/translations/\|^mtn: updating 'i2p2www/translations/" >/dev/null -if [ $? -eq 0 ]; then +if grep "^mtn: \(add\|dropp\|updat\)ing 'i2p2www/translations/" "$TMP" >/dev/null; then echo "Translations updated, compiling messages" ./compile-messages-i2hq.sh fi -cat $TMP | grep "^mtn: updating 'i2p2www/.*\.py\|^mtn: updating 'i2p2www/.*/.*\.py" >/dev/null -if [ $? -eq 0 ]; then +if grep "^mtn: updating 'i2p2www/.*\.py\|^mtn: updating 'i2p2www/.*/.*\.py" >/dev/null; then echo "Python files changed, restarting server" touch /tmp/2fcd2f17-c293-4f77-b4c9-9b266ba70daa fi - -rm $TMP diff --git a/site-updater.sh b/site-updater.sh index d5366eaf..9fa5f7ea 100755 --- a/site-updater.sh +++ b/site-updater.sh @@ -1,18 +1,15 @@ #!/bin/sh -TMP=tmp +TMP=$(mktemp XXXXXXXXXX) +trap 'rm -f $TMP;exit' 0 1 2 15 mtn update 2>&1 | tee $TMP -cat $TMP | grep "^mtn: adding 'i2p2www/translations/\|^mtn: dropping 'i2p2www/translations/\|^mtn: updating 'i2p2www/translations/" >/dev/null -if [ $? -eq 0 ]; then +if grep "^mtn: \(add\|dropp\|updat\)ing 'i2p2www/translations/" "$TMP" >/dev/null ; then echo "Translations updated, compiling messages" ./compile-messages.sh fi -cat $TMP | grep "^mtn: updating 'i2p2www/.*\.py\|^mtn: updating 'i2p2www/.*/.*\.py" >/dev/null -if [ $? -eq 0 ]; then +if grep "^mtn: updating 'i2p2www/.*\.py\|^mtn: updating 'i2p2www/.*/.*\.py" "$TMP" >/dev/null ; then echo "Python files changed, restarting server" touch /tmp/2fcd2f17-c293-4f77-b4c9-9b266ba70daa fi - -rm $TMP From 5c7672eb1c4b5ca80fea0de40cf29c5ce4216a39 Mon Sep 17 00:00:00 2001 From: kytv Date: Sat, 31 Aug 2013 23:58:20 +0000 Subject: [PATCH 601/650] prefer the venv pybabel but allow the system one to be used (if found) --- compile-messages.sh | 6 ++++-- etc/translation.vars | 9 +++++++++ extract-messages.sh | 10 ++++++++-- init-new-po.sh | 4 +++- update-existing-po.sh | 5 +++-- 5 files changed, 27 insertions(+), 7 deletions(-) diff --git a/compile-messages.sh b/compile-messages.sh index bc2e8b7b..8dddd6e3 100755 --- a/compile-messages.sh +++ b/compile-messages.sh @@ -1,11 +1,13 @@ #!/bin/sh . ./etc/translation.vars +export TZ=UTC + if [ $# -ge 1 ] then - TZ=UTC env/bin/pybabel compile -D $1 -d $TRANSDIR + $PYBABEL compile -D $1 -d $TRANSDIR else for domain in $(ls $BABELCFG); do - TZ=UTC env/bin/pybabel compile -D $domain -d $TRANSDIR + $PYBABEL compile -D $domain -d $TRANSDIR done fi diff --git a/etc/translation.vars b/etc/translation.vars index b892c1db..cc7998cc 100644 --- a/etc/translation.vars +++ b/etc/translation.vars @@ -4,3 +4,12 @@ BABELCFG=etc/babel.cfg POTDIR=pots PROJDIR=i2p2www TRANSDIR=$PROJDIR/translations + +if [ -x env/bin/pybabel ]; then + PYBABEL=env/bin/pybabel +elif [ $(which pybabel) ]; then + PYBABEL=$(which pybabel) +else + echo "ERROR: pybabel was not found. Please run setup_venv.sh" >&2 + exit 1 +fi diff --git a/extract-messages.sh b/extract-messages.sh index fb7250d9..d8b7de1e 100755 --- a/extract-messages.sh +++ b/extract-messages.sh @@ -1,20 +1,26 @@ #!/bin/sh . ./etc/translation.vars +export TZ=UTC + if [ ! -e $POTDIR ]; then mkdir $POTDIR fi +# By setting the PYTHONPATH here we can help pybabel find 'our' highlighting +# extension and we can use any pybabel +export PYTHONPATH=i2p2www:$PYTHONPATH + if [ $# -ge 1 ] then - TZ=UTC ./pybabel extract --msgid-bugs-address="http://trac.i2p2.de" \ + $PYBABEL extract --msgid-bugs-address="http://trac.i2p2.de" \ --project=$PROJECT \ --version=$VERSION \ -F $BABELCFG/$1 \ -o $POTDIR/$1.pot $PROJDIR else for domain in $(ls $BABELCFG); do - TZ=UTC ./pybabel extract --msgid-bugs-address="http://trac.i2p2.de" \ + $PYBABEL extract --msgid-bugs-address="http://trac.i2p2.de" \ --project=$PROJECT \ --version=$VERSION \ -F $BABELCFG/$domain \ diff --git a/init-new-po.sh b/init-new-po.sh index 5a021c41..e8395ac2 100755 --- a/init-new-po.sh +++ b/init-new-po.sh @@ -1,10 +1,12 @@ #!/bin/sh . ./etc/translation.vars +export TZ=UTC + if [ $# -ge 1 ] then for domain in $(ls $BABELCFG); do - TZ=UTC env/bin/pybabel init -D $domain -i $POTDIR/$domain.pot -d $TRANSDIR -l $1 + $PYBABEL init -D $domain -i $POTDIR/$domain.pot -d $TRANSDIR -l $1 done else echo "Usage: ./init-new-po.sh lang" diff --git a/update-existing-po.sh b/update-existing-po.sh index d423360d..4ddedef2 100755 --- a/update-existing-po.sh +++ b/update-existing-po.sh @@ -1,11 +1,12 @@ #!/bin/sh . ./etc/translation.vars +export TZ=UTC if [ $# -ge 1 ] then - TZ=UTC env/bin/pybabel update -D $1 -i $POTDIR/$1.pot -d $TRANSDIR + $PYBABEL update -D $1 -i $POTDIR/$1.pot -d $TRANSDIR else for domain in $(ls $BABELCFG); do - TZ=UTC env/bin/pybabel update -D $domain -i $POTDIR/$domain.pot -d $TRANSDIR + $PYBABEL update -D $domain -i $POTDIR/$domain.pot -d $TRANSDIR done fi From fb54baaf77572c8fd6af8aff37b1cc3506147352 Mon Sep 17 00:00:00 2001 From: kytv Date: Sat, 31 Aug 2013 23:59:03 +0000 Subject: [PATCH 602/650] allow system flask-cache/babel to be used --- i2p2www/__init__.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/i2p2www/__init__.py b/i2p2www/__init__.py index 1eb2a93e..939d9c24 100644 --- a/i2p2www/__init__.py +++ b/i2p2www/__init__.py @@ -1,6 +1,12 @@ from flask import Flask, request, g, redirect, url_for, abort, render_template, send_from_directory, safe_join -from flaskext.babel import Babel -from flask.ext.cache import Cache +try: + from flaskext.babel import Babel +except ImportError: + from flask_babel import Babel +try: + from flask.ext.cache import Cache +except ImportError: + from flask_cache import Cache from docutils.core import publish_parts import os.path import os From 8059c7fdcf3397dad51466031cd95bacd4488b20 Mon Sep 17 00:00:00 2001 From: kytv Date: Sun, 1 Sep 2013 00:00:01 +0000 Subject: [PATCH 603/650] add temp- and byte-compiled files to the ignore list --- .mtn-ignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.mtn-ignore b/.mtn-ignore index 5b67e3e5..a0741418 100644 --- a/.mtn-ignore +++ b/.mtn-ignore @@ -1,2 +1,5 @@ env pots +\.pyc$ +\.pyo$ +~$ From ef592ad9957579f24e5b66d5489b90ffe6f8b2b2 Mon Sep 17 00:00:00 2001 From: kytv Date: Sun, 1 Sep 2013 00:05:24 +0000 Subject: [PATCH 604/650] only allow "forward" patches & exit 1 if virtualenv isn't found --- setup_venv.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/setup_venv.sh b/setup_venv.sh index e9ed695b..9b3b3a40 100755 --- a/setup_venv.sh +++ b/setup_venv.sh @@ -4,6 +4,7 @@ set -e if [ ! $venv ]; then echo "ERROR: virtualenv not found!" >&2 + exit 1 else if [ ! -d $venv_dir ] ; then $venv --distribute $venv_dir @@ -12,5 +13,5 @@ else . $venv_dir/bin/activate pip install -r etc/reqs.txt # Apply multi-domain patch to Flask-Babel - patch -p0 Date: Sun, 1 Sep 2013 22:24:44 +0000 Subject: [PATCH 605/650] droping unnecessary (and outdated) pybabel extract-messages.sh was 'fixed' in ff0e551bd7eaa9cb26d14a6606d66eb4ae9de7e0 --- pybabel | 10 ---------- 1 file changed, 10 deletions(-) delete mode 100755 pybabel diff --git a/pybabel b/pybabel deleted file mode 100755 index 0c119a66..00000000 --- a/pybabel +++ /dev/null @@ -1,10 +0,0 @@ -#!env/bin/python -# EASY-INSTALL-ENTRY-SCRIPT: 'Babel==0.9.6','console_scripts','pybabel' -__requires__ = 'Babel==0.9.6' -import sys -from pkg_resources import load_entry_point - -if __name__ == '__main__': - sys.exit( - load_entry_point('Babel==0.9.6', 'console_scripts', 'pybabel')() - ) From 2a6827383110b6bac9b8b2149f97d6230e767022 Mon Sep 17 00:00:00 2001 From: str4d Date: Sun, 1 Sep 2013 23:22:01 +0000 Subject: [PATCH 606/650] Updated dev build location for I2P Android --- i2p2www/pages/downloads/list.html | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/i2p2www/pages/downloads/list.html b/i2p2www/pages/downloads/list.html index a4631504..0b40a859 100644 --- a/i2p2www/pages/downloads/list.html +++ b/i2p2www/pages/downloads/list.html @@ -113,16 +113,15 @@ or type java -version at your command prompt.

    - {% trans spongeurl='http://'+i2pconv('sponge.i2p') -%} + {% trans str4durl='http://'+i2pconv('str4d.i2p')+'/android/' -%} The above file is the current release build. - The latest dev build is version 0.9.3-5_b2-API8, and is available from - sponge's eepsite - - scan or click the QR code. + The latest dev build is version 0.9.7-20_b1-API18, and is available from + str4d's eepsite. {%- endtrans %}
    {% trans -%} The release and dev versions of the I2P APK are not compatible, as they - are signed by zzz and sponge respectively. Uninstall one before installing + are signed by zzz and str4d respectively. Uninstall one before installing the other. {%- endtrans %}
    From 5a6cec476fe8f5e3168466e1d4f43558c0b4355c Mon Sep 17 00:00:00 2001 From: str4d Date: Sun, 1 Sep 2013 23:23:29 +0000 Subject: [PATCH 607/650] Updated message extraction to only update changed .pots --- extract-messages.sh | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/extract-messages.sh b/extract-messages.sh index fb7250d9..71715320 100755 --- a/extract-messages.sh +++ b/extract-messages.sh @@ -14,10 +14,17 @@ then -o $POTDIR/$1.pot $PROJDIR else for domain in $(ls $BABELCFG); do + if [ -e $POTDIR/$domain.pot ]; then + mv $POTDIR/$domain.pot $POTDIR/$domain.pot.old + fi TZ=UTC ./pybabel extract --msgid-bugs-address="http://trac.i2p2.de" \ --project=$PROJECT \ --version=$VERSION \ -F $BABELCFG/$domain \ -o $POTDIR/$domain.pot $PROJDIR + diff -u $POTDIR/$domain.pot.old $POTDIR/$domain.pot | grep '^+' | grep -v '^+++' | grep -v '+"POT-Creation-Date' >/dev/null + if [ $? -eq 1 ]; then + mv $POTDIR/$domain.pot.old $POTDIR/$domain.pot + fi done fi From 8ac62696178930bd3d9935cdfb8ff91e6ad88947 Mon Sep 17 00:00:00 2001 From: str4d Date: Sun, 1 Sep 2013 23:24:36 +0000 Subject: [PATCH 608/650] Updated translation strings --- i2p2www/translations/de/LC_MESSAGES/about.po | 6 +- .../translations/de/LC_MESSAGES/priority.po | 67 +++++++++--------- i2p2www/translations/es/LC_MESSAGES/about.po | 10 +-- .../translations/es/LC_MESSAGES/priority.po | 68 +++++++++---------- i2p2www/translations/fr/LC_MESSAGES/about.po | 6 +- .../translations/fr/LC_MESSAGES/priority.po | 68 +++++++++---------- .../translations/pt/LC_MESSAGES/priority.po | 68 +++++++++---------- .../translations/sv_SE/LC_MESSAGES/about.po | 6 +- .../sv_SE/LC_MESSAGES/priority.po | 67 +++++++++--------- 9 files changed, 182 insertions(+), 184 deletions(-) diff --git a/i2p2www/translations/de/LC_MESSAGES/about.po b/i2p2www/translations/de/LC_MESSAGES/about.po index 390f8864..81adb7cb 100644 --- a/i2p2www/translations/de/LC_MESSAGES/about.po +++ b/i2p2www/translations/de/LC_MESSAGES/about.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-30 23:32+0000\n" +"POT-Creation-Date: 2013-09-01 03:42+0000\n" "PO-Revision-Date: 2013-07-04 16:33+0000\n" "Last-Translator: D.A. Loader\n" "Language-Team: German " @@ -1170,7 +1170,7 @@ msgstr "" #: i2p2www/pages/site/about/team.html:85 #, python-format -msgid "Webserver admin" +msgid "Webserver admin" msgstr "" #: i2p2www/pages/site/about/team.html:87 @@ -1179,7 +1179,7 @@ msgstr "" #: i2p2www/pages/site/about/team.html:90 #, python-format -msgid "Website admin" +msgid "Website admin" msgstr "" #: i2p2www/pages/site/about/team.html:92 diff --git a/i2p2www/translations/de/LC_MESSAGES/priority.po b/i2p2www/translations/de/LC_MESSAGES/priority.po index acf76d23..9b9ae75c 100644 --- a/i2p2www/translations/de/LC_MESSAGES/priority.po +++ b/i2p2www/translations/de/LC_MESSAGES/priority.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-30 23:32+0000\n" +"POT-Creation-Date: 2013-09-01 23:23+0000\n" "PO-Revision-Date: 2013-08-12 10:34+0000\n" "Last-Translator: str4d \n" "Language-Team: German " @@ -264,7 +264,7 @@ msgid "" msgstr "" #: i2p2www/pages/downloads/debian.html:151 -#: i2p2www/pages/downloads/list.html:167 +#: i2p2www/pages/downloads/list.html:166 msgid "Post-install work" msgstr "" @@ -323,7 +323,7 @@ msgid "" msgstr "" #: i2p2www/pages/downloads/debian.html:196 -#: i2p2www/pages/downloads/list.html:200 +#: i2p2www/pages/downloads/list.html:199 #, python-format msgid "" "If you want to reach eepsites via your browser, have a look on the sponge's eepsite -\n" -" scan or click the QR code." +" str4d's eepsite." msgstr "" -#: i2p2www/pages/downloads/list.html:123 +#: i2p2www/pages/downloads/list.html:122 msgid "" "The release and dev versions of the I2P APK are not compatible, as they\n" -" are signed by zzz and sponge respectively. Uninstall one before " +" are signed by zzz and str4d respectively. Uninstall one before " "installing\n" " the other." msgstr "" -#: i2p2www/pages/downloads/list.html:133 +#: i2p2www/pages/downloads/list.html:132 msgid "Source package" msgstr "Quell Pakete" -#: i2p2www/pages/downloads/list.html:143 +#: i2p2www/pages/downloads/list.html:142 #, python-format msgid "" "Alternately, you can fetch the source from whose key is here." msgstr "" -#: i2p2www/pages/downloads/list.html:163 +#: i2p2www/pages/downloads/list.html:162 msgid "" "I2P can also be downloaded from our project pages on Launchpad and Google Code." msgstr "" -#: i2p2www/pages/downloads/list.html:169 +#: i2p2www/pages/downloads/list.html:168 msgid "" "After running the installer on windows, simply click on the \"Start I2P\"" " button\n" @@ -478,7 +477,7 @@ msgid "" "which has further instructions." msgstr "" -#: i2p2www/pages/downloads/list.html:175 +#: i2p2www/pages/downloads/list.html:174 msgid "" "On Unix-like systems, I2P can be started as a service\n" "using the \"i2prouter\" script, located in the directory you selected for" @@ -495,7 +494,7 @@ msgid "" "start the router with \"sh runplain.sh\" instead." msgstr "" -#: i2p2www/pages/downloads/list.html:186 +#: i2p2www/pages/downloads/list.html:185 #, python-format msgid "" "When installing for the first time, please remember to adjust your " @@ -507,26 +506,26 @@ msgid "" "configuration page." msgstr "" -#: i2p2www/pages/downloads/list.html:194 +#: i2p2www/pages/downloads/list.html:193 msgid "" "Also, please review and adjust the bandwidth settings on the\n" "configuration page,\n" "as the default settings of 96 KBps down / 40 KBps up are fairly slow." msgstr "" -#: i2p2www/pages/downloads/list.html:204 +#: i2p2www/pages/downloads/list.html:203 msgid "Updates from earlier releases:" msgstr "" -#: i2p2www/pages/downloads/list.html:206 +#: i2p2www/pages/downloads/list.html:205 msgid "Both automatic and manual upgrades are available for the release." msgstr "" -#: i2p2www/pages/downloads/list.html:211 +#: i2p2www/pages/downloads/list.html:210 msgid "Automatic updates" msgstr "automatische Updates" -#: i2p2www/pages/downloads/list.html:213 +#: i2p2www/pages/downloads/list.html:212 msgid "" "If you are running 0.7.5 or later, your router should detect the\n" "new release. To upgrade simply click the 'Download Update' button on your" @@ -534,7 +533,7 @@ msgid "" "when it appears." msgstr "" -#: i2p2www/pages/downloads/list.html:219 +#: i2p2www/pages/downloads/list.html:218 msgid "" "Due to a bug in release 0.7.6, those whose first I2P installation was " "that version\n" @@ -544,7 +543,7 @@ msgid "" "and should use the manual update method below." msgstr "" -#: i2p2www/pages/downloads/list.html:227 +#: i2p2www/pages/downloads/list.html:226 #, python-format msgid "" "If you are running 0.7.4 or earlier, please see\n" @@ -554,7 +553,7 @@ msgid "" "receive the release." msgstr "" -#: i2p2www/pages/downloads/list.html:235 +#: i2p2www/pages/downloads/list.html:234 #, python-format msgid "" "If you are running 0.6.1.30 or earlier, please see\n" @@ -564,7 +563,7 @@ msgid "" "receive the release." msgstr "" -#: i2p2www/pages/downloads/list.html:244 +#: i2p2www/pages/downloads/list.html:243 #, python-format msgid "" "If you have reconfigured your router following the rename as i2pupdate.zip.\n" @@ -595,26 +594,26 @@ msgid "" " NOT need to unzip that file." msgstr "" -#: i2p2www/pages/downloads/list.html:283 +#: i2p2www/pages/downloads/list.html:282 msgid "Click \"Restart\"" msgstr "" -#: i2p2www/pages/downloads/list.html:288 +#: i2p2www/pages/downloads/list.html:287 msgid "Grab a cup of coffee and come back in 11 minutes" msgstr "" -#: i2p2www/pages/downloads/list.html:296 +#: i2p2www/pages/downloads/list.html:295 #, python-format msgid "" "The file is signed by zzz,\n" "whose key is here." msgstr "" -#: i2p2www/pages/downloads/list.html:301 +#: i2p2www/pages/downloads/list.html:300 msgid "Previous Releases" msgstr "" -#: i2p2www/pages/downloads/list.html:303 +#: i2p2www/pages/downloads/list.html:302 #, python-format msgid "" "Previous releases are available on Webserver admin" +#, fuzzy, python-format +msgid "Webserver admin" msgstr "Administrador del servidor web" #: i2p2www/pages/site/about/team.html:87 @@ -1398,8 +1398,8 @@ msgid "manage the public project webservers" msgstr "administrador de los servidores web públicos del proyecto" #: i2p2www/pages/site/about/team.html:90 -#, python-format -msgid "Website admin" +#, fuzzy, python-format +msgid "Website admin" msgstr "Administrador de la página web" #: i2p2www/pages/site/about/team.html:92 diff --git a/i2p2www/translations/es/LC_MESSAGES/priority.po b/i2p2www/translations/es/LC_MESSAGES/priority.po index 501be9e1..43f3353d 100644 --- a/i2p2www/translations/es/LC_MESSAGES/priority.po +++ b/i2p2www/translations/es/LC_MESSAGES/priority.po @@ -13,7 +13,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-30 23:32+0000\n" +"POT-Creation-Date: 2013-09-01 23:23+0000\n" "PO-Revision-Date: 2013-08-12 10:34+0000\n" "Last-Translator: str4d \n" "Language-Team: Spanish " @@ -326,7 +326,7 @@ msgstr "" "disponibles aquí." #: i2p2www/pages/downloads/debian.html:151 -#: i2p2www/pages/downloads/list.html:167 +#: i2p2www/pages/downloads/list.html:166 msgid "Post-install work" msgstr "Configuración tras la instalación" @@ -409,7 +409,7 @@ msgstr "" "40 KB/s de subida son un poco conservadores. " #: i2p2www/pages/downloads/debian.html:196 -#: i2p2www/pages/downloads/list.html:200 +#: i2p2www/pages/downloads/list.html:199 #, python-format msgid "" "If you want to reach eepsites via your browser, have a look on the sponge's eepsite -\n" -" scan or click the QR code." +" str4d's eepsite." msgstr "" -#: i2p2www/pages/downloads/list.html:123 +#: i2p2www/pages/downloads/list.html:122 +#, fuzzy msgid "" "The release and dev versions of the I2P APK are not compatible, as they\n" -" are signed by zzz and sponge respectively. Uninstall one before " +" are signed by zzz and str4d respectively. Uninstall one before " "installing\n" " the other." msgstr "" @@ -557,11 +557,11 @@ msgstr "" "una antes de \n" " instalar la otra." -#: i2p2www/pages/downloads/list.html:133 +#: i2p2www/pages/downloads/list.html:132 msgid "Source package" msgstr "Archivo con el código fuente " -#: i2p2www/pages/downloads/list.html:143 +#: i2p2www/pages/downloads/list.html:142 #, python-format msgid "" "Alternately, you can fetch the source from y después ejecute el instalador " "gráfico o la instalación headless como más arriba." -#: i2p2www/pages/downloads/list.html:158 +#: i2p2www/pages/downloads/list.html:157 #, python-format msgid "" "The files are signed by zzz,\n" @@ -591,7 +591,7 @@ msgstr "" "Estos archivos están firmados por zzz, cuya " "clave está aquí." -#: i2p2www/pages/downloads/list.html:163 +#: i2p2www/pages/downloads/list.html:162 msgid "" "I2P can also be downloaded from our project pages on Launchpad and Launchpad y en Google Code." -#: i2p2www/pages/downloads/list.html:169 +#: i2p2www/pages/downloads/list.html:168 msgid "" "After running the installer on windows, simply click on the \"Start I2P\"" " button\n" @@ -615,7 +615,7 @@ msgstr "" "ruter,\n" "donde encontrará mas instrucciones." -#: i2p2www/pages/downloads/list.html:175 +#: i2p2www/pages/downloads/list.html:174 msgid "" "On Unix-like systems, I2P can be started as a service\n" "using the \"i2prouter\" script, located in the directory you selected for" @@ -645,7 +645,7 @@ msgstr "" " no está soportado,\n" "ejecute el ruter con \"sh runplain.sh\"." -#: i2p2www/pages/downloads/list.html:186 +#: i2p2www/pages/downloads/list.html:185 #, python-format msgid "" "When installing for the first time, please remember to adjust your " @@ -665,7 +665,7 @@ msgstr "" "entrada en la página de " "configuración." -#: i2p2www/pages/downloads/list.html:194 +#: i2p2www/pages/downloads/list.html:193 msgid "" "Also, please review and adjust the bandwidth settings on the\n" "configuration page,\n" @@ -679,19 +679,19 @@ msgstr "" "subida es \n" "bastante lenta." -#: i2p2www/pages/downloads/list.html:204 +#: i2p2www/pages/downloads/list.html:203 msgid "Updates from earlier releases:" msgstr "Actualizaciones desde versiones anteriores:" -#: i2p2www/pages/downloads/list.html:206 +#: i2p2www/pages/downloads/list.html:205 msgid "Both automatic and manual upgrades are available for the release." msgstr "Están disponibles actualizaciones manuales y automáticas." -#: i2p2www/pages/downloads/list.html:211 +#: i2p2www/pages/downloads/list.html:210 msgid "Automatic updates" msgstr "Actualizaciones Auutomáticas" -#: i2p2www/pages/downloads/list.html:213 +#: i2p2www/pages/downloads/list.html:212 msgid "" "If you are running 0.7.5 or later, your router should detect the\n" "new release. To upgrade simply click the 'Download Update' button on your" @@ -702,7 +702,7 @@ msgstr "" "versiones automáticamente. Para actualizar, cuando aparezca el botón " "'Descargar actualización' en la consola, simplemente púlselo." -#: i2p2www/pages/downloads/list.html:219 +#: i2p2www/pages/downloads/list.html:218 msgid "" "Due to a bug in release 0.7.6, those whose first I2P installation was " "that version\n" @@ -717,7 +717,7 @@ msgstr "" "\"downloaded version is not greater than current version\", y deben usar " "la actualización manual de abajo." -#: i2p2www/pages/downloads/list.html:227 +#: i2p2www/pages/downloads/list.html:226 #, python-format msgid "" "If you are running 0.7.4 or earlier, please see\n" @@ -731,7 +731,7 @@ msgstr "" "información importante de como configurar el ruter para descargar las " "actualizaciones automáticamente." -#: i2p2www/pages/downloads/list.html:235 +#: i2p2www/pages/downloads/list.html:234 #, python-format msgid "" "If you are running 0.6.1.30 or earlier, please see\n" @@ -745,7 +745,7 @@ msgstr "" "para obtener ver información importante de como configurar el ruter para " "descargar las actualizaciones automáticamente." -#: i2p2www/pages/downloads/list.html:244 +#: i2p2www/pages/downloads/list.html:243 #, python-format msgid "" "If you have reconfigured your router following the rename as i2pupdate.zip.\n" @@ -786,17 +786,17 @@ msgstr "" "archivo resultante i2pupdate.zip a la carpeta de instalación de I2P). NO" " necesita descomprimir este archivo .zip." -#: i2p2www/pages/downloads/list.html:283 +#: i2p2www/pages/downloads/list.html:282 msgid "Click \"Restart\"" msgstr "" "Pulse \"Reiniciar\"" -#: i2p2www/pages/downloads/list.html:288 +#: i2p2www/pages/downloads/list.html:287 msgid "Grab a cup of coffee and come back in 11 minutes" msgstr "Vaya a por una taza de horchata/café/mate y vuelva en 11 minutos." -#: i2p2www/pages/downloads/list.html:296 +#: i2p2www/pages/downloads/list.html:295 #, python-format msgid "" "The file is signed by zzz,\n" @@ -805,11 +805,11 @@ msgstr "" "El archivo está firmado por zzz,\n" "cuya clave está aquí." -#: i2p2www/pages/downloads/list.html:301 +#: i2p2www/pages/downloads/list.html:300 msgid "Previous Releases" msgstr "Versiones Anteriores" -#: i2p2www/pages/downloads/list.html:303 +#: i2p2www/pages/downloads/list.html:302 #, python-format msgid "" "Previous releases are available on Webserver admin" +msgid "Webserver admin" msgstr "" #: i2p2www/pages/site/about/team.html:87 @@ -1251,7 +1251,7 @@ msgstr "" #: i2p2www/pages/site/about/team.html:90 #, python-format -msgid "Website admin" +msgid "Website admin" msgstr "" #: i2p2www/pages/site/about/team.html:92 diff --git a/i2p2www/translations/fr/LC_MESSAGES/priority.po b/i2p2www/translations/fr/LC_MESSAGES/priority.po index f788dbab..668e5736 100644 --- a/i2p2www/translations/fr/LC_MESSAGES/priority.po +++ b/i2p2www/translations/fr/LC_MESSAGES/priority.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-30 23:32+0000\n" +"POT-Creation-Date: 2013-09-01 23:23+0000\n" "PO-Revision-Date: 2013-08-12 10:34+0000\n" "Last-Translator: str4d \n" "Language-Team: French " @@ -321,7 +321,7 @@ msgstr "" "disponibles içi." #: i2p2www/pages/downloads/debian.html:151 -#: i2p2www/pages/downloads/list.html:167 +#: i2p2www/pages/downloads/list.html:166 msgid "Post-install work" msgstr "Travail post-installation" @@ -404,7 +404,7 @@ msgstr "" "conservateurs." #: i2p2www/pages/downloads/debian.html:196 -#: i2p2www/pages/downloads/list.html:200 +#: i2p2www/pages/downloads/list.html:199 #, python-format msgid "" "If you want to reach eepsites via your browser, have a look on the sponge's eepsite -\n" -" scan or click the QR code." +" str4d's eepsite." msgstr "" -#: i2p2www/pages/downloads/list.html:123 +#: i2p2www/pages/downloads/list.html:122 +#, fuzzy msgid "" "The release and dev versions of the I2P APK are not compatible, as they\n" -" are signed by zzz and sponge respectively. Uninstall one before " +" are signed by zzz and str4d respectively. Uninstall one before " "installing\n" " the other." msgstr "" @@ -548,11 +548,11 @@ msgstr "" "d'installer⏎\n" "l'autre." -#: i2p2www/pages/downloads/list.html:133 +#: i2p2www/pages/downloads/list.html:132 msgid "Source package" msgstr "À partir des sources:" -#: i2p2www/pages/downloads/list.html:143 +#: i2p2www/pages/downloads/list.html:142 #, python-format msgid "" "Alternately, you can fetch the source from puis soit⏎\n" " lancez l'installeur GUI ou l'installation facile comme ci-dessus." -#: i2p2www/pages/downloads/list.html:158 +#: i2p2www/pages/downloads/list.html:157 #, python-format msgid "" "The files are signed by zzz,\n" @@ -582,7 +582,7 @@ msgstr "" "Les fichiers sont signés par zzz,⏎\n" "dont la clé est içi." -#: i2p2www/pages/downloads/list.html:163 +#: i2p2www/pages/downloads/list.html:162 msgid "" "I2P can also be downloaded from our project pages on Launchpad and Launchpad et Google Code." -#: i2p2www/pages/downloads/list.html:169 +#: i2p2www/pages/downloads/list.html:168 msgid "" "After running the installer on windows, simply click on the \"Start I2P\"" " button\n" @@ -606,7 +606,7 @@ msgstr "" "href=\"http://localhost:7657/index.jsp\">console du routeur,\n" "qui contient des instructions supplémentaires." -#: i2p2www/pages/downloads/list.html:175 +#: i2p2www/pages/downloads/list.html:174 msgid "" "On Unix-like systems, I2P can be started as a service\n" "using the \"i2prouter\" script, located in the directory you selected for" @@ -636,7 +636,7 @@ msgstr "" "lesquels le wrapper (i2psvc) n'est pas supporté,\n" "démarrer le routeur avec \"sh runplain.sh\" à la place." -#: i2p2www/pages/downloads/list.html:186 +#: i2p2www/pages/downloads/list.html:185 #, python-format msgid "" "When installing for the first time, please remember to adjust your " @@ -656,7 +656,7 @@ msgstr "" " le protocole TCP entrant sur la\n" "page de configuration." -#: i2p2www/pages/downloads/list.html:194 +#: i2p2www/pages/downloads/list.html:193 msgid "" "Also, please review and adjust the bandwidth settings on the\n" "configuration page,\n" @@ -668,21 +668,21 @@ msgstr "" "car les paramètres par défaut (96 kbps down / 40 kbps up) sont assez " "lents." -#: i2p2www/pages/downloads/list.html:204 +#: i2p2www/pages/downloads/list.html:203 msgid "Updates from earlier releases:" msgstr "Mises à jour depuis des versions antérieures :" -#: i2p2www/pages/downloads/list.html:206 +#: i2p2www/pages/downloads/list.html:205 msgid "Both automatic and manual upgrades are available for the release." msgstr "" "Les mises à jour automatiques et manuelles sont disponibles pour la " "version." -#: i2p2www/pages/downloads/list.html:211 +#: i2p2www/pages/downloads/list.html:210 msgid "Automatic updates" msgstr "Mises à jour automatiques" -#: i2p2www/pages/downloads/list.html:213 +#: i2p2www/pages/downloads/list.html:212 msgid "" "If you are running 0.7.5 or later, your router should detect the\n" "new release. To upgrade simply click the 'Download Update' button on your" @@ -694,7 +694,7 @@ msgstr "" " 'Télécharger mise à jour' sur votre console routeur\n" "quand elle apparaît." -#: i2p2www/pages/downloads/list.html:219 +#: i2p2www/pages/downloads/list.html:218 msgid "" "Due to a bug in release 0.7.6, those whose first I2P installation was " "that version\n" @@ -710,7 +710,7 @@ msgstr "" "à la version actuelle\",\n" "et devraient utiliser la méthode de mise à jour manuelle ci-dessous." -#: i2p2www/pages/downloads/list.html:227 +#: i2p2www/pages/downloads/list.html:226 #, python-format msgid "" "If you are running 0.7.4 or earlier, please see\n" @@ -725,7 +725,7 @@ msgstr "" "routeur pour automatiquement\n" "recevoir la release." -#: i2p2www/pages/downloads/list.html:235 +#: i2p2www/pages/downloads/list.html:234 #, python-format msgid "" "If you are running 0.6.1.30 or earlier, please see\n" @@ -735,7 +735,7 @@ msgid "" "receive the release." msgstr "" -#: i2p2www/pages/downloads/list.html:244 +#: i2p2www/pages/downloads/list.html:243 #, python-format msgid "" "If you have reconfigured your router following the rename as i2pupdate.zip.\n" @@ -768,17 +768,17 @@ msgid "" " NOT need to unzip that file." msgstr "" -#: i2p2www/pages/downloads/list.html:283 +#: i2p2www/pages/downloads/list.html:282 msgid "Click \"Restart\"" msgstr "" "Cliquez \"Redémarrer\"" -#: i2p2www/pages/downloads/list.html:288 +#: i2p2www/pages/downloads/list.html:287 msgid "Grab a cup of coffee and come back in 11 minutes" msgstr "Prenez une tasse de café et revenez dans 11 minutes" -#: i2p2www/pages/downloads/list.html:296 +#: i2p2www/pages/downloads/list.html:295 #, python-format msgid "" "The file is signed by zzz,\n" @@ -787,11 +787,11 @@ msgstr "" "Le fichier est signé par zzz,⏎\n" "dont la clé est içi." -#: i2p2www/pages/downloads/list.html:301 +#: i2p2www/pages/downloads/list.html:300 msgid "Previous Releases" msgstr "Précédentes releases" -#: i2p2www/pages/downloads/list.html:303 +#: i2p2www/pages/downloads/list.html:302 #, python-format msgid "" "Previous releases are available on \n" "Language-Team: Portuguese " @@ -316,7 +316,7 @@ msgstr "" "href=\"%(jbigi)s\">aqui." #: i2p2www/pages/downloads/debian.html:151 -#: i2p2www/pages/downloads/list.html:167 +#: i2p2www/pages/downloads/list.html:166 msgid "Post-install work" msgstr "Trabalho pós-instalação" @@ -397,7 +397,7 @@ msgstr "" "KB/s para enviar são bem conservadoras." #: i2p2www/pages/downloads/debian.html:196 -#: i2p2www/pages/downloads/list.html:200 +#: i2p2www/pages/downloads/list.html:199 #, python-format msgid "" "If you want to reach eepsites via your browser, have a look on the sponge's eepsite -\n" -" scan or click the QR code." +" str4d's eepsite." msgstr "" -#: i2p2www/pages/downloads/list.html:123 +#: i2p2www/pages/downloads/list.html:122 +#, fuzzy msgid "" "The release and dev versions of the I2P APK are not compatible, as they\n" -" are signed by zzz and sponge respectively. Uninstall one before " +" are signed by zzz and str4d respectively. Uninstall one before " "installing\n" " the other." msgstr "" @@ -530,11 +530,11 @@ msgstr "" "uma antes de instalar\n" " outra." -#: i2p2www/pages/downloads/list.html:133 +#: i2p2www/pages/downloads/list.html:132 msgid "Source package" msgstr "Pacote originário" -#: i2p2www/pages/downloads/list.html:143 +#: i2p2www/pages/downloads/list.html:142 #, python-format msgid "" "Alternately, you can fetch the source from cuja chave está aqui." -#: i2p2www/pages/downloads/list.html:163 +#: i2p2www/pages/downloads/list.html:162 msgid "" "I2P can also be downloaded from our project pages on Launchpad and Launchpad e no Google Code." -#: i2p2www/pages/downloads/list.html:169 +#: i2p2www/pages/downloads/list.html:168 msgid "" "After running the installer on windows, simply click on the \"Start I2P\"" " button\n" @@ -579,7 +579,7 @@ msgstr "" "roteador,\n" "onde há maiores instruções." -#: i2p2www/pages/downloads/list.html:175 +#: i2p2www/pages/downloads/list.html:174 msgid "" "On Unix-like systems, I2P can be started as a service\n" "using the \"i2prouter\" script, located in the directory you selected for" @@ -609,7 +609,7 @@ msgstr "" "(i2psvc) incompatível,\n" "dêem partida no roteador com \"sh runplain.sh\"." -#: i2p2www/pages/downloads/list.html:186 +#: i2p2www/pages/downloads/list.html:185 #, python-format msgid "" "When installing for the first time, please remember to adjust your " @@ -629,7 +629,7 @@ msgstr "" "página de " "configuração." -#: i2p2www/pages/downloads/list.html:194 +#: i2p2www/pages/downloads/list.html:193 msgid "" "Also, please review and adjust the bandwidth settings on the\n" "configuration page,\n" @@ -641,21 +641,21 @@ msgstr "" "já que as configurações padrão de 96 KBps para download / 40 KBps para " "upload são bem lentas." -#: i2p2www/pages/downloads/list.html:204 +#: i2p2www/pages/downloads/list.html:203 msgid "Updates from earlier releases:" msgstr "Informes de lançamentos anteriores:" -#: i2p2www/pages/downloads/list.html:206 +#: i2p2www/pages/downloads/list.html:205 msgid "Both automatic and manual upgrades are available for the release." msgstr "" "As atualizações automática e manual estão ambas disponíveis para o " "lançamento." -#: i2p2www/pages/downloads/list.html:211 +#: i2p2www/pages/downloads/list.html:210 msgid "Automatic updates" msgstr "Atualizações automáticas" -#: i2p2www/pages/downloads/list.html:213 +#: i2p2www/pages/downloads/list.html:212 msgid "" "If you are running 0.7.5 or later, your router should detect the\n" "new release. To upgrade simply click the 'Download Update' button on your" @@ -668,7 +668,7 @@ msgstr "" "painel do seu roteador\n" "quando o botão aparecer." -#: i2p2www/pages/downloads/list.html:219 +#: i2p2www/pages/downloads/list.html:218 msgid "" "Due to a bug in release 0.7.6, those whose first I2P installation was " "that version\n" @@ -683,7 +683,7 @@ msgstr "" "podem ter um erro \"versão baixada não é maior que a atual versão\",\n" "e devem usar o método de atualização manual abaixo." -#: i2p2www/pages/downloads/list.html:227 +#: i2p2www/pages/downloads/list.html:226 #, python-format msgid "" "If you are running 0.7.4 or earlier, please see\n" @@ -698,7 +698,7 @@ msgstr "" "automaticamente\n" "receber o lançamento." -#: i2p2www/pages/downloads/list.html:235 +#: i2p2www/pages/downloads/list.html:234 #, python-format msgid "" "If you are running 0.6.1.30 or earlier, please see\n" @@ -713,7 +713,7 @@ msgstr "" "automaticamente\n" "receber o lançamento." -#: i2p2www/pages/downloads/list.html:244 +#: i2p2www/pages/downloads/list.html:243 #, python-format msgid "" "If you have reconfigured your router following the rename as i2pupdate.zip.\n" @@ -758,17 +758,17 @@ msgstr "" "Você NÃO \n" " precisa descompactar esse arquivo." -#: i2p2www/pages/downloads/list.html:283 +#: i2p2www/pages/downloads/list.html:282 msgid "Click \"Restart\"" msgstr "" "Clique em \"Reiniciar\"" -#: i2p2www/pages/downloads/list.html:288 +#: i2p2www/pages/downloads/list.html:287 msgid "Grab a cup of coffee and come back in 11 minutes" msgstr "Pegue um copo de café e volte em 11 minutos" -#: i2p2www/pages/downloads/list.html:296 +#: i2p2www/pages/downloads/list.html:295 #, python-format msgid "" "The file is signed by zzz,\n" @@ -777,11 +777,11 @@ msgstr "" "O arquivo é assinado pelo zzz,\n" "cuja chave está aqui." -#: i2p2www/pages/downloads/list.html:301 +#: i2p2www/pages/downloads/list.html:300 msgid "Previous Releases" msgstr "Versões anteriores" -#: i2p2www/pages/downloads/list.html:303 +#: i2p2www/pages/downloads/list.html:302 #, python-format msgid "" "Previous releases are available on \n" "Language-Team: Swedish (Sweden) " @@ -1168,7 +1168,7 @@ msgstr "" #: i2p2www/pages/site/about/team.html:85 #, python-format -msgid "Webserver admin" +msgid "Webserver admin" msgstr "" #: i2p2www/pages/site/about/team.html:87 @@ -1177,7 +1177,7 @@ msgstr "" #: i2p2www/pages/site/about/team.html:90 #, python-format -msgid "Website admin" +msgid "Website admin" msgstr "" #: i2p2www/pages/site/about/team.html:92 diff --git a/i2p2www/translations/sv_SE/LC_MESSAGES/priority.po b/i2p2www/translations/sv_SE/LC_MESSAGES/priority.po index 27af3bf1..07454352 100644 --- a/i2p2www/translations/sv_SE/LC_MESSAGES/priority.po +++ b/i2p2www/translations/sv_SE/LC_MESSAGES/priority.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-30 23:32+0000\n" +"POT-Creation-Date: 2013-09-01 23:23+0000\n" "PO-Revision-Date: 2013-04-27 23:10+0000\n" "Last-Translator: Martin Svensson \n" "Language-Team: Swedish (Sweden) " @@ -262,7 +262,7 @@ msgid "" msgstr "" #: i2p2www/pages/downloads/debian.html:151 -#: i2p2www/pages/downloads/list.html:167 +#: i2p2www/pages/downloads/list.html:166 msgid "Post-install work" msgstr "" @@ -321,7 +321,7 @@ msgid "" msgstr "" #: i2p2www/pages/downloads/debian.html:196 -#: i2p2www/pages/downloads/list.html:200 +#: i2p2www/pages/downloads/list.html:199 #, python-format msgid "" "If you want to reach eepsites via your browser, have a look on the sponge's eepsite -\n" -" scan or click the QR code." +" str4d's eepsite." msgstr "" -#: i2p2www/pages/downloads/list.html:123 +#: i2p2www/pages/downloads/list.html:122 msgid "" "The release and dev versions of the I2P APK are not compatible, as they\n" -" are signed by zzz and sponge respectively. Uninstall one before " +" are signed by zzz and str4d respectively. Uninstall one before " "installing\n" " the other." msgstr "" -#: i2p2www/pages/downloads/list.html:133 +#: i2p2www/pages/downloads/list.html:132 msgid "Source package" msgstr "" -#: i2p2www/pages/downloads/list.html:143 +#: i2p2www/pages/downloads/list.html:142 #, python-format msgid "" "Alternately, you can fetch the source from whose key is here." msgstr "" -#: i2p2www/pages/downloads/list.html:163 +#: i2p2www/pages/downloads/list.html:162 msgid "" "I2P can also be downloaded from our project pages on Launchpad and Google Code." msgstr "" -#: i2p2www/pages/downloads/list.html:169 +#: i2p2www/pages/downloads/list.html:168 msgid "" "After running the installer on windows, simply click on the \"Start I2P\"" " button\n" @@ -476,7 +475,7 @@ msgid "" "which has further instructions." msgstr "" -#: i2p2www/pages/downloads/list.html:175 +#: i2p2www/pages/downloads/list.html:174 msgid "" "On Unix-like systems, I2P can be started as a service\n" "using the \"i2prouter\" script, located in the directory you selected for" @@ -493,7 +492,7 @@ msgid "" "start the router with \"sh runplain.sh\" instead." msgstr "" -#: i2p2www/pages/downloads/list.html:186 +#: i2p2www/pages/downloads/list.html:185 #, python-format msgid "" "When installing for the first time, please remember to adjust your " @@ -505,26 +504,26 @@ msgid "" "configuration page." msgstr "" -#: i2p2www/pages/downloads/list.html:194 +#: i2p2www/pages/downloads/list.html:193 msgid "" "Also, please review and adjust the bandwidth settings on the\n" "configuration page,\n" "as the default settings of 96 KBps down / 40 KBps up are fairly slow." msgstr "" -#: i2p2www/pages/downloads/list.html:204 +#: i2p2www/pages/downloads/list.html:203 msgid "Updates from earlier releases:" msgstr "" -#: i2p2www/pages/downloads/list.html:206 +#: i2p2www/pages/downloads/list.html:205 msgid "Both automatic and manual upgrades are available for the release." msgstr "" -#: i2p2www/pages/downloads/list.html:211 +#: i2p2www/pages/downloads/list.html:210 msgid "Automatic updates" msgstr "" -#: i2p2www/pages/downloads/list.html:213 +#: i2p2www/pages/downloads/list.html:212 msgid "" "If you are running 0.7.5 or later, your router should detect the\n" "new release. To upgrade simply click the 'Download Update' button on your" @@ -532,7 +531,7 @@ msgid "" "when it appears." msgstr "" -#: i2p2www/pages/downloads/list.html:219 +#: i2p2www/pages/downloads/list.html:218 msgid "" "Due to a bug in release 0.7.6, those whose first I2P installation was " "that version\n" @@ -542,7 +541,7 @@ msgid "" "and should use the manual update method below." msgstr "" -#: i2p2www/pages/downloads/list.html:227 +#: i2p2www/pages/downloads/list.html:226 #, python-format msgid "" "If you are running 0.7.4 or earlier, please see\n" @@ -552,7 +551,7 @@ msgid "" "receive the release." msgstr "" -#: i2p2www/pages/downloads/list.html:235 +#: i2p2www/pages/downloads/list.html:234 #, python-format msgid "" "If you are running 0.6.1.30 or earlier, please see\n" @@ -562,7 +561,7 @@ msgid "" "receive the release." msgstr "" -#: i2p2www/pages/downloads/list.html:244 +#: i2p2www/pages/downloads/list.html:243 #, python-format msgid "" "If you have reconfigured your router following the rename as i2pupdate.zip.\n" @@ -593,26 +592,26 @@ msgid "" " NOT need to unzip that file." msgstr "" -#: i2p2www/pages/downloads/list.html:283 +#: i2p2www/pages/downloads/list.html:282 msgid "Click \"Restart\"" msgstr "" -#: i2p2www/pages/downloads/list.html:288 +#: i2p2www/pages/downloads/list.html:287 msgid "Grab a cup of coffee and come back in 11 minutes" msgstr "" -#: i2p2www/pages/downloads/list.html:296 +#: i2p2www/pages/downloads/list.html:295 #, python-format msgid "" "The file is signed by zzz,\n" "whose key is here." msgstr "" -#: i2p2www/pages/downloads/list.html:301 +#: i2p2www/pages/downloads/list.html:300 msgid "Previous Releases" msgstr "" -#: i2p2www/pages/downloads/list.html:303 +#: i2p2www/pages/downloads/list.html:302 #, python-format msgid "" "Previous releases are available on Date: Mon, 2 Sep 2013 01:50:12 +0000 Subject: [PATCH 609/650] fix errors in po files --- i2p2www/translations/es/LC_MESSAGES/about.po | 3 +-- i2p2www/translations/es/LC_MESSAGES/docs.po | 2 +- i2p2www/translations/es/LC_MESSAGES/priority.po | 2 +- i2p2www/translations/fr/LC_MESSAGES/priority.po | 2 +- 4 files changed, 4 insertions(+), 5 deletions(-) diff --git a/i2p2www/translations/es/LC_MESSAGES/about.po b/i2p2www/translations/es/LC_MESSAGES/about.po index 5f70cc9f..a15b48e4 100644 --- a/i2p2www/translations/es/LC_MESSAGES/about.po +++ b/i2p2www/translations/es/LC_MESSAGES/about.po @@ -1202,8 +1202,7 @@ msgid "" "German translation" msgstr "" "zzz entrevistado por gulli.com⏎ Marzo 2009⏎ traducción en alemán traducción en ruso" +"href=\"%(german)s\">traducción en alemán" #: i2p2www/pages/site/about/media.html:202 #, python-format diff --git a/i2p2www/translations/es/LC_MESSAGES/docs.po b/i2p2www/translations/es/LC_MESSAGES/docs.po index 8648297d..0ce6d92e 100644 --- a/i2p2www/translations/es/LC_MESSAGES/docs.po +++ b/i2p2www/translations/es/LC_MESSAGES/docs.po @@ -11404,7 +11404,7 @@ msgid "" "It is hosted on %(pybit)s " msgstr "" "PyBit es un cliente Bittorrent escrito en python. Se aloja en http://%(pebcache)s/ " #: i2p2www/pages/site/docs/how/tech-intro.html:1015 diff --git a/i2p2www/translations/es/LC_MESSAGES/priority.po b/i2p2www/translations/es/LC_MESSAGES/priority.po index 43f3353d..32ddc9ce 100644 --- a/i2p2www/translations/es/LC_MESSAGES/priority.po +++ b/i2p2www/translations/es/LC_MESSAGES/priority.po @@ -2282,7 +2282,7 @@ msgstr "" "Si considera todas las eepsites que se han creado, si, la mayoría no " "funcionan. La gente y las eepsites van y vienen. Una buena forma de " "comenzar con I2P es mirar la lista de eepsites que funcionan actualmente." -" %(perv)s informa qué " +" %(eepstatus)s informa qué " "páginas están activas." #: i2p2www/pages/site/faq.html:385 diff --git a/i2p2www/translations/fr/LC_MESSAGES/priority.po b/i2p2www/translations/fr/LC_MESSAGES/priority.po index 668e5736..5addcf70 100644 --- a/i2p2www/translations/fr/LC_MESSAGES/priority.po +++ b/i2p2www/translations/fr/LC_MESSAGES/priority.po @@ -2313,7 +2313,7 @@ msgstr "" "Les gens et les eepsites vont et viennent.\n" "Une bonne façon de se lancer dans I2P est de vérifier une liste de " "eepsites qui sont actuellement en place.\n" -"%(perv)s trace les eepsites " +"%(eepstatus)s trace les eepsites " "actifs." #: i2p2www/pages/site/faq.html:385 From 114bab6c22d46b6459e21a322f37f158e499f65b Mon Sep 17 00:00:00 2001 From: str4d Date: Mon, 2 Sep 2013 04:42:07 +0000 Subject: [PATCH 610/650] Updated es translation --- i2p2www/translations/es/LC_MESSAGES/about.po | 47 +- i2p2www/translations/es/LC_MESSAGES/docs.po | 1975 ++++++++++++++--- .../translations/es/LC_MESSAGES/priority.po | 254 ++- 3 files changed, 1866 insertions(+), 410 deletions(-) diff --git a/i2p2www/translations/es/LC_MESSAGES/about.po b/i2p2www/translations/es/LC_MESSAGES/about.po index 5f70cc9f..d7776095 100644 --- a/i2p2www/translations/es/LC_MESSAGES/about.po +++ b/i2p2www/translations/es/LC_MESSAGES/about.po @@ -14,8 +14,8 @@ msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" "POT-Creation-Date: 2013-09-01 03:42+0000\n" -"PO-Revision-Date: 2013-07-22 10:38+0000\n" -"Last-Translator: trolly\n" +"PO-Revision-Date: 2013-09-02 01:51+0000\n" +"Last-Translator: kytv \n" "Language-Team: Spanish " "(http://www.transifex.com/projects/p/I2P/language/es/)\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" @@ -190,16 +190,17 @@ msgstr "" "ser apagados o no estar accesibles en todo momento." #: i2p2www/pages/site/about/browser-config.html:83 -#, fuzzy, python-format +#, python-format msgid "" "By default, I2P comes with two outproxies configured: " "%(http)s\n" "(an HTTP-only proxy) and %(https)s (an HTTPS proxy\n" "routed through Tor." msgstr "" -"Por defecto I2P viene con 2 outproxies configurados: " -"code>false.i2p (un proxy HTTP sólo) y " -"outproxyng.h2ik.i2p (un proxy HTTPS a través de TOR." +"Por defecto, I2P viene con dos proxys externos (`outproxies`) " +"configurados:\n" +"%(http)s (un proxy sólo-HTTP) and \n" +"%(https)s (un proxy HTTPS enrutado hacia Tor)." #: i2p2www/pages/site/about/browser-config.html:88 msgid "" @@ -224,6 +225,13 @@ msgid "" "outproxies.\n" "As a convenience, false.i2p blocks ad servers." msgstr "" +"El filtrado está activo sobre estos proxys externos (por ejemplo, mibbit " +"y el \n" +"acceso a tracker torrent están bloqueados). Los eepsites que son " +"accesibles vía direcciones .i2p también son no permitidos vía los proxys" +" \n" +"externos. Por convenciencia, false.i2p bloquea servidores de" +" publicidad." #: i2p2www/pages/site/about/browser-config.html:100 msgid "" @@ -1195,15 +1203,15 @@ msgstr "" "anónimos en Internet (Alemán) Noviembre 2007." #: i2p2www/pages/site/about/media.html:195 -#, fuzzy, python-format +#, python-format msgid "" "zzz interviewed by gulli.com\n" "March 2009\n" "German translation" msgstr "" -"zzz entrevistado por gulli.com⏎ Marzo 2009⏎ traducción en alemán traducción en ruso" +"zzz entrevistado por gulli.com\n" +"Marzo de 2009\n" +"Traducción al alemán" #: i2p2www/pages/site/about/media.html:202 #, python-format @@ -2157,6 +2165,14 @@ msgid "" "packaging\n" "and deployment, yet." msgstr "" +"\n" +"ugha y duck están trabajando en el código de C/JNI, y el código java " +"actual está desplegado con los 'ganchos' para cuando esté listo. Los " +"resultados preliminares se ven fantásticos - ejecutar el ruter con GMP " +"modPow nativo proporciona un aumento de velocidad del 800% , y la " +"carga se ha reducido ala mitad. Y esto sólo ha sido en la maquina de un " +"solo usuario, y las cosas están casi listas para ser empaquetado y " +"distribuidas." #: i2p2www/pages/site/about/performance/history.html:32 msgid "Garlic wrapping a \"reply\" LeaseSet" @@ -2220,7 +2236,6 @@ msgstr "" "destinatario no necesita hacer la búsqueda en la base de datos de la red." #: i2p2www/pages/site/about/performance/history.html:54 -#, fuzzy msgid "" "For unpublished LeaseSets such as \"shared clients\", this is the only " "way to\n" @@ -2229,11 +2244,11 @@ msgid "" "\n" "a connection with smaller messages." msgstr "" -"Para los LeaseSets no publicados como en los \"clientes compartidos\", " -"esta es la única forma de hacer llegar los LeaseSets a Bob. " -"Desafortunadamente esto añade casi un 100% o de gasto en una conexión con" -" un gran ancho de banda, y mucho más en una conexión con poco ancho de " -"banda." +"Para los LeaseSets no publicados como los \"clientes compartidos\", esta " +"es la única forma de enviar el LeaseSet a Bob. Desafortunadamente al " +"construirlo cada vez se añade al menos un 100% de sobre gastos en una" +" red con mucho ancho de banda, y mucho más en una red con mensajes más " +"pequeños." #: i2p2www/pages/site/about/performance/history.html:60 msgid "" diff --git a/i2p2www/translations/es/LC_MESSAGES/docs.po b/i2p2www/translations/es/LC_MESSAGES/docs.po index 8648297d..499a246c 100644 --- a/i2p2www/translations/es/LC_MESSAGES/docs.po +++ b/i2p2www/translations/es/LC_MESSAGES/docs.po @@ -14,8 +14,8 @@ msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" "POT-Creation-Date: 2013-08-30 23:32+0000\n" -"PO-Revision-Date: 2013-08-12 10:33+0000\n" -"Last-Translator: str4d \n" +"PO-Revision-Date: 2013-09-02 01:51+0000\n" +"Last-Translator: kytv \n" "Language-Team: Spanish " "(http://www.transifex.com/projects/p/I2P/language/es/)\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" @@ -26,7 +26,7 @@ msgstr "" #: i2p2www/pages/site/docs/index.html:2 i2p2www/pages/site/docs/index.html:25 msgid "Index to Technical Documentation" -msgstr "" +msgstr "Índice de la Documentación técnica" #: i2p2www/pages/site/docs/index.html:3 i2p2www/pages/site/docs/ports.html:3 #: i2p2www/pages/site/docs/spec/datagrams.html:3 @@ -41,7 +41,7 @@ msgstr "Cómo funciona I2P" #: i2p2www/pages/site/docs/index.html:8 msgid "Following is an index to the technical documentation for I2P." -msgstr "" +msgstr "A continuación hay in índice de la documentación técnica de I2P." #: i2p2www/pages/site/docs/index.html:12 msgid "" @@ -51,6 +51,10 @@ msgid "" "The interface between applications and the router is the I2CP (I2P " "Control Protocol) API." msgstr "" +"Este índice está ordenado desde la capa más alta a la más baja. Las capas" +" más altas son para las aplicaciones \"clientes\"; Las capas menores son " +"las que están dentro del propio ruter. El interfaz entre las aplicaciones" +" y el ruter es el API I2CP (Protocolo de Control de I2P)." #: i2p2www/pages/site/docs/index.html:19 #, python-format @@ -61,6 +65,10 @@ msgid "" "enter a ticket identifying the " "problem." msgstr "" +"El proyecto I2P se ha comprometido a mantener una documentación exacta y " +"al día. Si encuentra alguna inexactitud en los siguientes documentos, por" +" favor cree un ticket identificando " +"el problema." #: i2p2www/pages/site/docs/index.html:27 i2p2www/pages/site/docs/naming.html:7 #: i2p2www/pages/site/docs/api/i2ptunnel.html:12 @@ -85,19 +93,19 @@ msgstr "Introducción técnica" #: i2p2www/pages/site/docs/index.html:30 msgid "A Less-Technical Introduction" -msgstr "" +msgstr "Una introducción no tan técnica" #: i2p2www/pages/site/docs/index.html:31 msgid "Threat model and analysis" -msgstr "" +msgstr "Modelo de amenazas y análisis" #: i2p2www/pages/site/docs/index.html:32 msgid "Comparisons to other anonymous networks" -msgstr "" +msgstr "Comparación con otras redes anónimas." #: i2p2www/pages/site/docs/index.html:33 msgid "Protocol stack chart" -msgstr "" +msgstr "Gráfica de la pila del protocolo" #: i2p2www/pages/site/docs/index.html:34 msgid "Papers on I2P" @@ -109,26 +117,28 @@ msgid "" "Invisible Internet Project (I2P) Project Overview" " August 28, 2003 (pdf)" msgstr "" +"Vista general del Proyecto para un Internet " +"Invisible(I2P) 28 de Agosto del 2003 (pdf)" #: i2p2www/pages/site/docs/index.html:38 msgid "Application-Layer Topics" -msgstr "" +msgstr "Asuntos sobre la capa de aplicaciones" #: i2p2www/pages/site/docs/index.html:41 i2p2www/pages/site/docs/naming.html:2 msgid "Naming and Addressbook" -msgstr "" +msgstr "Nombres de dominios y libreta de direcciones" #: i2p2www/pages/site/docs/index.html:42 msgid "Plugins Overview" -msgstr "" +msgstr "Resumen de pluguins" #: i2p2www/pages/site/docs/index.html:43 msgid "Plugin Specification" -msgstr "" +msgstr "Especificaciones de los pluguins" #: i2p2www/pages/site/docs/index.html:44 msgid "Router software updates" -msgstr "" +msgstr "Actualizaciones de software del ruter" #: i2p2www/pages/site/docs/index.html:45 #: i2p2www/pages/site/docs/applications/bittorrent.html:2 @@ -137,29 +147,31 @@ msgstr "Bittorrent sobre I2P" #: i2p2www/pages/site/docs/index.html:46 msgid "I2PControl Plugin API" -msgstr "" +msgstr "API del pluguin I2PControl" #: i2p2www/pages/site/docs/index.html:47 msgid "hostsdb.blockfile Format" -msgstr "" +msgstr "Formato de hostsdb.blockfile " #: i2p2www/pages/site/docs/index.html:48 i2p2www/pages/site/docs/index.html:185 msgid "Configuration File Format" -msgstr "" +msgstr "Formato del archivo de configuración" #: i2p2www/pages/site/docs/index.html:51 msgid "Application Layer API and Protocols" -msgstr "" +msgstr "Protocolos y API de la capa de aplicación" #: i2p2www/pages/site/docs/index.html:52 msgid "" "High-level, easy-to-use APIs for applications written in any language to " "send and receive data." msgstr "" +"API de alto nivel y fácil de usar para enviar y recibir datos para " +"aplicaciones escritas en cualquier lenguaje." #: i2p2www/pages/site/docs/index.html:54 msgid "Application Development Overview and Guide" -msgstr "" +msgstr "Resumen y guía del desarrollo de aplicaciones" #: i2p2www/pages/site/docs/index.html:72 msgid "SAM Protocol" @@ -179,22 +191,24 @@ msgstr "Protocolo BOB" #: i2p2www/pages/site/docs/index.html:81 msgid "End-to-End Transport API and Protocols" -msgstr "" +msgstr "Protocolos y API del transporte de fin a fin." #: i2p2www/pages/site/docs/index.html:82 msgid "" "The end-to-end protocols used by clients for reliable and unreliable " "communication." msgstr "" +"Los protocolos fin a fin usado por los clientes para la comunicación " +"segura y no segura." #: i2p2www/pages/site/docs/index.html:84 #: i2p2www/pages/site/docs/api/streaming.html:2 msgid "Streaming Library" -msgstr "" +msgstr "Librería de srteaming" #: i2p2www/pages/site/docs/index.html:86 msgid "Streaming Javadoc" -msgstr "" +msgstr "Javadoc del streaming" #: i2p2www/pages/site/docs/index.html:88 #: i2p2www/pages/site/docs/api/datagrams.html:2 @@ -203,11 +217,11 @@ msgstr "Datagramas" #: i2p2www/pages/site/docs/index.html:90 msgid "Datagram Javadoc" -msgstr "" +msgstr "Javadoc del datagrama" #: i2p2www/pages/site/docs/index.html:93 msgid "Client-to-Router Interface API and Protocol" -msgstr "" +msgstr "Protocolo y API del interfac cliente-a-ruter" #: i2p2www/pages/site/docs/index.html:94 msgid "" @@ -215,10 +229,13 @@ msgid "" "traffic to a router.\n" "Traditionally used only by Java applications and higher-level APIs." msgstr "" +"El API de menor nivel usado por los clientes (aplicaciones) para enviar y" +" recibir tráfico a un ruter. Tradicionalmente usado sólo por aplicaciones" +" en Java y APIs de mayor nivel." #: i2p2www/pages/site/docs/index.html:99 msgid "I2CP - I2P Control Protocol / API overview" -msgstr "" +msgstr "I2CP - Protocolo de control de I2P / Resumen del API" #: i2p2www/pages/site/docs/index.html:101 msgid "I2CP Specification" @@ -226,34 +243,34 @@ msgstr "Especificación I2CP" #: i2p2www/pages/site/docs/index.html:103 msgid "I2CP API Javadoc" -msgstr "" +msgstr "Javadoc del API de I2CP" #: i2p2www/pages/site/docs/index.html:105 #: i2p2www/pages/site/docs/index.html:134 msgid "Common data structures specification" -msgstr "" +msgstr "Especificaciones de las estructuras de datos más usadas." #: i2p2www/pages/site/docs/index.html:107 #: i2p2www/pages/site/docs/index.html:136 msgid "Data Structures Javadoc" -msgstr "" +msgstr "Javadoc de las estructuras de datos" #: i2p2www/pages/site/docs/index.html:110 msgid "End-to-End Encryption" -msgstr "" +msgstr "Cifrado de fin a fin" #: i2p2www/pages/site/docs/index.html:111 msgid "How client messages are end-to-end encrypted by the router." -msgstr "" +msgstr "Cómo son cifrados por el ruter los mensajes de fin a fin." #: i2p2www/pages/site/docs/index.html:113 msgid "ElGamal/AES+SessionTag encryption" -msgstr "" +msgstr "Cifrado ElGamal/AES+SessionTag" #: i2p2www/pages/site/docs/index.html:114 #: i2p2www/pages/site/docs/index.html:147 msgid "ElGamal and AES cryptography details" -msgstr "" +msgstr "Detalles criptográficos de ElGamal y AES" #: i2p2www/pages/site/docs/index.html:117 #: i2p2www/pages/site/docs/how/tech-intro.html:15 @@ -266,32 +283,38 @@ msgid "" "Distributed storage and retrieval of information about routers and " "clients." msgstr "" +"Almacenamiento distribuido y obtención de información sobre los ruters y " +"los clientes. " #: i2p2www/pages/site/docs/index.html:120 msgid "Network database overview, details, and threat analysis" msgstr "" +"Vista general, detalles y análisis de amenazas de la base de datos de la " +"red" #: i2p2www/pages/site/docs/index.html:121 msgid "Cryptographic hashes" -msgstr "" +msgstr "Hashes de cifrados" #: i2p2www/pages/site/docs/index.html:122 msgid "Cryptographic signatures" -msgstr "" +msgstr "Firmas de cifrados" #: i2p2www/pages/site/docs/index.html:125 msgid "Router Message Protocol" -msgstr "" +msgstr "Protocolo de los mensajes del ruter" #: i2p2www/pages/site/docs/index.html:126 msgid "" "I2P is a message-oriented router. The messages sent between routers are " "defined by the I2NP protocol." msgstr "" +"I2P es un ruter orientado a mensajes. Los mensajes que se envían entre " +"los ruters son definidos por el protocolo I2NP." #: i2p2www/pages/site/docs/index.html:128 msgid "I2NP - I2P Network Protocol Overview" -msgstr "" +msgstr "I2NP - Vista general del protocolo de red de I2P" #: i2p2www/pages/site/docs/index.html:130 msgid "I2NP Specification" @@ -299,7 +322,7 @@ msgstr "Especificación I2NP" #: i2p2www/pages/site/docs/index.html:132 msgid "I2NP Javadoc" -msgstr "" +msgstr "Javadoc de I2NP" #: i2p2www/pages/site/docs/index.html:139 #: i2p2www/pages/site/docs/how/tech-intro.html:14 @@ -312,22 +335,24 @@ msgid "" "Selecting peers, requesting tunnels through those peers, and encrypting " "and routing messages through these tunnels." msgstr "" +"Seleccionando pares, solicitando túneles a través de esos pares, y " +"cifrando y enrutando mensajes a través de esos túneles." #: i2p2www/pages/site/docs/index.html:142 msgid "Peer profiling and selection" -msgstr "" +msgstr "Perfiles y selección de pares" #: i2p2www/pages/site/docs/index.html:143 msgid "Tunnel routing overview" -msgstr "" +msgstr "Vista general del túnel de enrutado" #: i2p2www/pages/site/docs/index.html:144 msgid "Garlic routing and \"garlic\" terminology" -msgstr "" +msgstr "Rutado Garlic y terminología \"garlic\"" #: i2p2www/pages/site/docs/index.html:145 msgid "Tunnel building and encryption" -msgstr "" +msgstr "Cifrado y construcción de los túneles" #: i2p2www/pages/site/docs/index.html:146 msgid "ElGamal/AES" @@ -335,29 +360,29 @@ msgstr "ElGamal/AES" #: i2p2www/pages/site/docs/index.html:146 msgid "for build request encryption" -msgstr "" +msgstr "para cifrado de solicitudes de construcción (`build`, de túneles)" #: i2p2www/pages/site/docs/index.html:148 msgid "Tunnel building specification" -msgstr "" +msgstr "Especificaciones para la creación de túneles" #: i2p2www/pages/site/docs/index.html:149 msgid "Low-level tunnel message specification" -msgstr "" +msgstr "Especificaciones de los mensajes de túnel de bajo nivel" #: i2p2www/pages/site/docs/index.html:150 #: i2p2www/pages/site/docs/tunnels/unidirectional.html:2 msgid "Unidirectional Tunnels" -msgstr "" +msgstr "Túneles unidireccionales" #: i2p2www/pages/site/docs/index.html:151 #: i2p2www/pages/site/docs/how/peer-selection.html:299 msgid "Peer Profiling and Selection in the I2P Anonymous Network" -msgstr "" +msgstr "Perfiles y selección de pares en la red anónima I2P" #: i2p2www/pages/site/docs/index.html:152 msgid "2009 paper (pdf), not current but still generally accurate" -msgstr "" +msgstr "Estudio del 2009 (pdf), no es muy actual pero es bastante exacto" #: i2p2www/pages/site/docs/index.html:155 msgid "Transport Layer" @@ -366,6 +391,8 @@ msgstr "Capa de transporte" #: i2p2www/pages/site/docs/index.html:156 msgid "The protocols for direct (point-to-point) router to router communication." msgstr "" +"Los protocolos para las comunicaciones directas (punto a punto) de ruter " +"a ruter." #: i2p2www/pages/site/docs/index.html:158 msgid "Transport layer overview" @@ -373,11 +400,11 @@ msgstr "Visión general de la capa de transporte" #: i2p2www/pages/site/docs/index.html:160 msgid "TCP-based transport overview and specification" -msgstr "" +msgstr "Especificaciones y vista general de los transportes basados en TCP" #: i2p2www/pages/site/docs/index.html:162 msgid "UDP-based transport overview" -msgstr "" +msgstr "Vista general de los transportes basados en UDP" #: i2p2www/pages/site/docs/index.html:164 msgid "SSU specification" @@ -385,35 +412,35 @@ msgstr "Especificación SSU" #: i2p2www/pages/site/docs/index.html:166 msgid "NTCP transport encryption" -msgstr "" +msgstr "Cifrado del transporte de NTCP" #: i2p2www/pages/site/docs/index.html:168 msgid "SSU transport encryption" -msgstr "" +msgstr "Cifrado del transporte de SSU" #: i2p2www/pages/site/docs/index.html:170 msgid "Transport Javadoc" -msgstr "" +msgstr "Jacadoc del transporte" #: i2p2www/pages/site/docs/index.html:172 msgid "NTCP Javadoc" -msgstr "" +msgstr "Javadoc de NTCP" #: i2p2www/pages/site/docs/index.html:174 msgid "SSU Javadoc" -msgstr "" +msgstr "Jacadoc de SSU" #: i2p2www/pages/site/docs/index.html:177 msgid "Other Router Topics" -msgstr "" +msgstr "Otros temas sobre el Ruter" #: i2p2www/pages/site/docs/index.html:179 msgid "Native BigInteger Library" -msgstr "" +msgstr "Librería BigInteger nativa" #: i2p2www/pages/site/docs/index.html:181 msgid "Time synchronization and NTP" -msgstr "" +msgstr "NTP y sincronización de la fecha" #: i2p2www/pages/site/docs/index.html:183 msgid "Performance" @@ -421,7 +448,7 @@ msgstr "Rendimiento" #: i2p2www/pages/site/docs/index.html:190 msgid "Developer's Guides and Resources" -msgstr "" +msgstr "Recursos y guías para desarrolladores" #: i2p2www/pages/site/docs/index.html:192 msgid "New Developer's Guide" @@ -429,7 +456,7 @@ msgstr "Guía para nuevos desarrolladores" #: i2p2www/pages/site/docs/index.html:194 msgid "New Translator's Guide" -msgstr "" +msgstr "La nueva guía de los traductores" #: i2p2www/pages/site/docs/index.html:196 msgid "Monotone Guide" @@ -437,11 +464,11 @@ msgstr "Guía de Monotone" #: i2p2www/pages/site/docs/index.html:198 msgid "Developer Guidelines" -msgstr "" +msgstr "Directrizes para los desarrolladores" #: i2p2www/pages/site/docs/index.html:200 msgid "Javadocs on the standard internet:" -msgstr "" +msgstr "Jacadocs en el Internet normal:" #: i2p2www/pages/site/docs/index.html:201 #: i2p2www/pages/site/docs/index.html:205 @@ -457,30 +484,32 @@ msgid "" "Note: always verify that javadocs are current by checking the release " "number." msgstr "" +"Nota: verifique siempre que los Javadocs son actuales comprobando los " +"números de versiones." #: i2p2www/pages/site/docs/index.html:204 msgid "Javadocs inside I2P:" -msgstr "" +msgstr "Javadocs en I2P:" #: i2p2www/pages/site/docs/index.html:213 msgid "Ports used by I2P" -msgstr "" +msgstr "Ports usados por I2P" #: i2p2www/pages/site/docs/index.html:215 msgid "Automatic updates to development builds inside I2P" -msgstr "" +msgstr "Actualizaciones automáticas y compilaciones de desarrollo dentro de I2P" #: i2p2www/pages/site/docs/index.html:217 msgid "Updating the wrapper manually" -msgstr "" +msgstr "Actualizando el wrapper manualmente" #: i2p2www/pages/site/docs/index.html:219 msgid "User forum" -msgstr "" +msgstr "Foro para usuarios" #: i2p2www/pages/site/docs/index.html:221 msgid "Developer forum inside I2P" -msgstr "" +msgstr "Foro para desarrolladores en I2P" #: i2p2www/pages/site/docs/index.html:223 msgid "Bug tracker" @@ -488,32 +517,32 @@ msgstr "Bug tracker" #: i2p2www/pages/site/docs/index.html:225 msgid "Viewmtn inside I2P" -msgstr "" +msgstr "Viewmtn en I2P" #: i2p2www/pages/site/docs/index.html:227 msgid "I2P Source exported to GitHub" -msgstr "" +msgstr "El código de I2P exportado a GitHub" #: i2p2www/pages/site/docs/index.html:229 msgid "I2P Source Git Repo inside I2P" -msgstr "" +msgstr "Repositorio Git del código de I2P en I2P" #: i2p2www/pages/site/docs/index.html:231 msgid "Source translation at Transifex" -msgstr "" +msgstr "Fuentes para traducir en Transifex" #: i2p2www/pages/site/docs/index.html:233 msgid "Roadmap wiki" -msgstr "" +msgstr "Wiki con el plan de trabajo" #: i2p2www/pages/site/docs/index.html:235 msgid "Old roadmap" -msgstr "" +msgstr "Plan de trabajo antiguo" #: i2p2www/pages/site/docs/index.html:235 #: i2p2www/pages/site/docs/index.html:237 msgid "not current" -msgstr "" +msgstr "no actual" #: i2p2www/pages/site/docs/index.html:237 msgid "To Do List" @@ -526,7 +555,7 @@ msgstr "Marzo de 2012" #: i2p2www/pages/site/docs/naming.html:6 msgid "Naming in I2P" -msgstr "" +msgstr "Dominios en I2P" #: i2p2www/pages/site/docs/naming.html:9 msgid "" @@ -536,6 +565,14 @@ msgid "" "I2P also supports Base32 hostnames similar to " "Tor's .onion addresses." msgstr "" +"I2P viene con una librería genérica de asignación de nombres y una \n" +"implementación base diseñada para entregar un mapeado desde nombre local" +" \n" +"a destino, además de una aplicación add-on llamada guía de direcciones \n" +"(`adressbook`). I2P también soporta nombres de " +"servidor Base32 \n" +"similares a las direcciones .onion de Tor." #: i2p2www/pages/site/docs/naming.html:16 msgid "" @@ -560,6 +597,26 @@ msgid "" "emulating\n" "traditional DNS." msgstr "" +"La guía de direcciones es un sistema de nombres asegurado mediante \n" +"web-of-trust, distribuído, y legible por humanos, que tan solo sacrifica " +"el \n" +"que los nombres sean globalmente únicos, obligando a que sólo lo sean\n" +"localmente. Mientras todos los mensajes en I2P son criptográficamente \n" +"direccionados por su destino, diferentes personas puede tener diferentes" +" \n" +"entradas \"Alice\" en sus guías de direcciones locales que se refieran a" +" \n" +"diferentes destinos. El público aún puede descubrir nuevos nombres " +"importando \n" +"guías de direcciones publicadas, de pares (`peers`) especificados en sus\n" +"web-of-trust, incorporando las entradas provistas por terceros, o (si " +"algunas \n" +"personas organizan series de guías de direcciones publicadas usando un \n" +"sistema de registro tipo `primero en venir primero en ser servido`) la " +"gente \n" +"puede elegir tratar estas guías de direcciones como servidores de " +"nombres, \n" +"emulando al tradicional DNS." #: i2p2www/pages/site/docs/naming.html:30 #, python-format @@ -570,16 +627,22 @@ msgid "" " discussion\n" "page." msgstr "" +"NOTA: Para encontrar las razones detrás del sistema de nombres de I2P, \n" +"los argumentos habituales contra él y las posibles alternativas, vea la \n" +"página de discusión sobre el sistema de " +"nombres." #: i2p2www/pages/site/docs/naming.html:37 msgid "Naming System Components" -msgstr "" +msgstr "Componentes del sistema de nombres" #: i2p2www/pages/site/docs/naming.html:39 msgid "" "There is no central naming authority in I2P.\n" "All hostnames are local." msgstr "" +"No hay una autoridad central de nombres en I2P.\n" +"Todos los nombres de servidor están en local." #: i2p2www/pages/site/docs/naming.html:44 msgid "" @@ -588,6 +651,9 @@ msgid "" "the I2P distribution.\n" "The components are:" msgstr "" +"El sistema de nombres es bastante simple, y la mayoria de él está \n" +"implementado en aplicaciones externas al router pero \n" +"empaquetadas con la distribución I2P. Los componentes son:" #: i2p2www/pages/site/docs/naming.html:52 msgid "" @@ -595,6 +661,10 @@ msgid "" "in hosts.txt\n" "and also takes care of the Base32 hostnames." msgstr "" +"La aplicación cliente que hace las consultas " +"locales en hosts.txt \n" +"y también se ocupa de los nombres de servidor " +"Base32." #: i2p2www/pages/site/docs/naming.html:56 msgid "" @@ -602,18 +672,28 @@ msgid "" "lookups and points\n" "the user to remote jump services to assist with failed lookups." msgstr "" +"El proxy HTTP que realiza consultas al router" +" \n" +"y dirige al usuario a servicios remotos distribuídos (`jump`)\n" +"para asistirle con las consultas fallidas." #: i2p2www/pages/site/docs/naming.html:60 msgid "" "HTTP host-add forms which allow users to " "add hosts to their local hosts.txt" msgstr "" +"Formularios de añadido de servidores HTTP " +"que permiten \n" +"a los usuarios añadir servidores a su hosts.txt local." #: i2p2www/pages/site/docs/naming.html:63 msgid "" "HTTP jump services which provide their own" " lookups and redirection." msgstr "" +"Servicios distribuídos (`jump`) HTTP que " +"proporcionan \n" +"sus propias consultas y redirecciones." #: i2p2www/pages/site/docs/naming.html:66 msgid "" @@ -621,6 +701,8 @@ msgid "" "external\n" "host lists, retrieved via HTTP, with the local list." msgstr "" +"La aplicación de guía de direcciones que \n" +"fusiona listas externas de servidores, con la lista local." #: i2p2www/pages/site/docs/naming.html:70 msgid "" @@ -628,10 +710,14 @@ msgid "" "front-end\n" "for addressbook configuration and viewing of the local host lists." msgstr "" +"La aplicación SusiDNS que es un sencillo frontal" +" web para la configuración \n" +"de la guía de direcciones y el visionado de las listas locales de " +"servidores." #: i2p2www/pages/site/docs/naming.html:77 msgid "Naming Files and Lookups" -msgstr "" +msgstr "Ficheros de nombres y consultas" #: i2p2www/pages/site/docs/naming.html:79 #, python-format @@ -646,6 +732,16 @@ msgid "" "One possible use of certificates is for proof of work.)" msgstr "" +"Todos los destinos en I2P son claves de 516-bytes (o más largas).\n" +"(Para ser más precisos, es una clave pública de 256-bytes más una clave " +"de \n" +"firmado de 128-bytes más un certificado vacío, lo que en representación \n" +"Base64 son 516 byles.\n" +"Los certificados no se " +"usan ahora,\n" +"si se usaran, las claves serían más largas.\n" +"Un posible uso de certificados es como prueba de trabajo.)" #: i2p2www/pages/site/docs/naming.html:88 msgid "" @@ -657,6 +753,13 @@ msgid "" "does a linear search through three local files, in order, to\n" "look up host names and convert them to a 516-byte destination key:" msgstr "" +"Si una aplicación (i2ptunnel o el proxy HTTP) quiere acceder al \n" +"destino mediante el nombre, el router hace una sencilla \n" +"consulta local para resolver el nombre.\n" +"La aplicación cliente (técnicamente, el lado del cliente de I2CP de \n" +"la API de I2P) hace una búsqueda lineal a través de tres ficheros \n" +"locales, para consultar nombres de servidor y convertirlos en \n" +"una clave de destino de 516-bytes:" #: i2p2www/pages/site/docs/naming.html:103 msgid "" @@ -664,6 +767,9 @@ msgid "" "The first match is used, and conflicts are not detected.\n" "There is no enforcement of naming rules in lookups." msgstr "" +"La consulta es independiente de mayúsculas/minúsculas \n" +"Se usa la primera coincidencia, y no se detectan los conflictos. \n" +"No hay aplicación de reglas de nombres en la consulta." #: i2p2www/pages/site/docs/naming.html:109 #, python-format @@ -676,6 +782,12 @@ msgid "" "href=\"%(namingdiscussion)s#alternatives\">Alternatives on the discussion" " page)." msgstr "" +"Las consultas se guardan en caché cada pocos minutos. Hay una \n" +"herramienta experimental para consultas en tiempo real (a la DNS) \n" +"sobre la red del router, pero no está activada de forma predeterminada \n" +"(vea \"EepGet\" bajo Alternativas en la página " +"de discusión)." #: i2p2www/pages/site/docs/naming.html:116 msgid "HTTP Proxy" @@ -689,6 +801,14 @@ msgid "" "Thus, in practice, all HTTP (eepsite) hostnames must end in the pseudo-" "Top Level Domain '.i2p'." msgstr "" +"El proxy HTTP hace una consulta vía router para todos los nombres de " +"servidores \n" +"terminados en `.i2p`. De otra manera este envía la solicitud \n" +"a un proxy HTTP\n" +"configurado de salida (`outproxy`). Así, en la práctica, todos los " +"nombres de servidores \n" +"HTTP (eepsites) deben terminar en un pseudo-dominio-de-primer-nivel " +"`.i2p`." #: i2p2www/pages/site/docs/naming.html:124 msgid "" @@ -696,6 +816,9 @@ msgid "" "an error page to the user with links to several \"jump\" services.\n" "See below for details." msgstr "" +"Si el router falla en la resolución del nombre de servidor, el proxy \n" +"HTTP devuelve una página de error al usuario con enlaces a varios \n" +"servicios distribuídos (`jump`). Mire debajo para más detalles." #: i2p2www/pages/site/docs/naming.html:130 #: i2p2www/pages/site/docs/spec/configuration.html:77 @@ -704,7 +827,7 @@ msgstr "Libreta de direcciones" #: i2p2www/pages/site/docs/naming.html:131 msgid "Incoming Subscriptions and Merging" -msgstr "" +msgstr "Suscripciones entrantes y fusionado" #: i2p2www/pages/site/docs/naming.html:133 msgid "" @@ -714,6 +837,12 @@ msgid "" "Naming conflicts are resolved on a first-come first-served\n" "basis." msgstr "" +"La aplicación de la guía de direcciones obtiene periódicamente los " +"ficheros \n" +"hosts.txt de otros usuarios y los fusiona con el fichero hosts.txt local " +"tras \n" +"varias comprobaciones. Los conflictos de nomenclatura se resuelven en \n" +"base al criterio `el primero en venir es el primero en ser servido`." #: i2p2www/pages/site/docs/naming.html:141 msgid "" @@ -723,6 +852,11 @@ msgid "" "by quickly entering in their own key for a new site before\n" "passing the new host/key entry to you." msgstr "" +"Suscribirse al fichero hosts.txt de otros usuarios implica darles un \n" +"cierto nivel de confianza. \n" +"No querrá que ellos, por ejemplo, 'secuestren' un sitio nuevo \n" +"introduciendo rápidamente su propia clave para el nuevo sitio antes \n" +"de pasarle el nuevo servidor/clave a usted." #: i2p2www/pages/site/docs/naming.html:149 msgid "" @@ -734,10 +868,12 @@ msgid "" "local addressbook application (via subscriptions.txt or SusiDNS)." msgstr "" +"Por esta razón, la única suscripción configurada por defecto \n" +"es http://www.i2p2.i2p/hosts.txt," #: i2p2www/pages/site/docs/naming.html:158 msgid "Some other public addressbook subscription links:" -msgstr "" +msgstr "Algunos enlaces extra de suscripciones de guías de direcciones públicas: " #: i2p2www/pages/site/docs/naming.html:165 msgid "" @@ -745,11 +881,13 @@ msgid "" "hosts.\n" "Presence on this list does not imply endorsement." msgstr "" +"Los operadores de estos servicios pueden tener variadas políticas para \n" +"listar servidores. La presencia en esta lista no implica su respaldo." #: i2p2www/pages/site/docs/naming.html:170 #: i2p2www/pages/site/docs/naming.html:182 msgid "Naming Rules" -msgstr "" +msgstr "Reglas de nomenclatura" #: i2p2www/pages/site/docs/naming.html:171 msgid "" @@ -764,10 +902,17 @@ msgid "" "Any hostnames violating these rules may not be propagated\n" "to other routers." msgstr "" +"Aunque afortunadamente no hay limitación técnica alguna en I2P para los \n" +"nombres de servidor, la guía de direcciones impone varias restricciones \n" +"sobre los nombres de servidor importados desde suscripciones. Hace \n" +"esto por higiene tipográfica básica y compatibilidad con navegadores, y \n" +"por seguridad. Las reglas son esencialmente las mismas que aquellas de \n" +"la Sección 3.2.2. en el RFC2396. Cualquier nombre de servidor que viole \n" +"esas reglas puede no ser propagado a otros routers." #: i2p2www/pages/site/docs/naming.html:186 msgid "Names are converted to lower case on import." -msgstr "" +msgstr "Los nombres se convierten a minúsculas al importarlos." #: i2p2www/pages/site/docs/naming.html:190 msgid "" @@ -775,14 +920,20 @@ msgid "" "userhosts.txt and hosts.txt\n" "(but not privatehosts.txt) after conversion to lower case." msgstr "" +"Se comprueban los conflictos entre los nombres y los nombres existentes " +"en \n" +"userhosts.txt y hosts.txt (pero no privatehosts.txt) tras su conversión a" +" minúsculas." #: i2p2www/pages/site/docs/naming.html:195 msgid "Must contain only [a-z] [0-9] '.' and '-' after conversion to lower case." msgstr "" +"Sólo deben contener [a-z] [0-9] '.' y '-' tras su conversión a " +"minúsculas." #: i2p2www/pages/site/docs/naming.html:199 msgid "Must not start with '.' or '-'." -msgstr "" +msgstr "No deben comenzar con '.' o '-'." #: i2p2www/pages/site/docs/naming.html:203 msgid "Must end with '.i2p'." @@ -790,7 +941,7 @@ msgstr "Debe terminar en «.i2p»." #: i2p2www/pages/site/docs/naming.html:207 msgid "67 characters maximum, including the '.i2p'." -msgstr "" +msgstr "Máximo 67 caracteres, incluyendo el '.i2p'." #: i2p2www/pages/site/docs/naming.html:211 msgid "Must not contain '..'." @@ -798,15 +949,15 @@ msgstr "No puede contener «..»." #: i2p2www/pages/site/docs/naming.html:215 msgid "Must not contain '.-' or '-.' (as of 0.6.1.33)." -msgstr "" +msgstr "No deben contener '.-' o '-.' (a partir de la 0.6.1.33)." #: i2p2www/pages/site/docs/naming.html:219 msgid "Must not contain '--' except in 'xn--' for IDN." -msgstr "" +msgstr "No deben contener '--' excepto en 'xn--' para IDN." #: i2p2www/pages/site/docs/naming.html:223 msgid "Base32 hostnames (*.b32.i2p) are not allowed." -msgstr "" +msgstr "Los nombres de servidor Base32 (*.b32.i2p) no están permitidos." #: i2p2www/pages/site/docs/naming.html:227 msgid "" @@ -814,30 +965,40 @@ msgid "" "(proxy.i2p, router.i2p, console.i2p, *.proxy.i2p, *.router.i2p, " "*.console.i2p, and others)" msgstr "" +"Ciertos nombres de servidor reservados para uso del proyecto no están " +"autorizados \n" +"(proxy.i2p, router.i2p, console.i2p, *.proxy.i2p, *.router.i2p, " +"*.console.i2p, y otros)" #: i2p2www/pages/site/docs/naming.html:232 msgid "Keys are checked for base64 validity." -msgstr "" +msgstr "Se comprueba la validez base64 de las claves." #: i2p2www/pages/site/docs/naming.html:236 msgid "" "Keys are checked for conflict with existing keys in hosts.txt (but not " "privatehosts.txt)." msgstr "" +"Se comprueba si las claves tienen conflictos con claves existentes en \n" +"hosts.txt (pero no privatehosts.txt)." #: i2p2www/pages/site/docs/naming.html:240 msgid "Minimum key length 516 bytes." -msgstr "" +msgstr "La longitud mínima de clave es 516 bytes." #: i2p2www/pages/site/docs/naming.html:244 msgid "Maximum key length 616 bytes (to account for certs up to 100 bytes)." msgstr "" +"La longitud máxima de clave es 616 bytes (para contar con certificados de" +" hasta 100 bytes)." #: i2p2www/pages/site/docs/naming.html:249 msgid "" "Any name received via subscription that passes all the checks is added to" " the local hosts.txt." msgstr "" +"Cualquier nombre recibido vía suscripción que pase todas las " +"comprobaciones, es añadido al hosts.txt local." #: i2p2www/pages/site/docs/naming.html:253 msgid "" @@ -850,6 +1011,17 @@ msgid "" "and the desirability and feasibility of these methods,\n" "are topics for future discussion." msgstr "" +"Observe que los símbolos '.' en el nombre de servidor no tienen " +"significancia, \n" +"y no denotan jerarquía de confianza o de nomenclatura alguna. \n" +"Si el nombre 'host.i2p' ya existe, no hay nada que evite que alguien " +"añada \n" +"un nombre 'a.host.i2p' a su(s) hosts.txt, y este nombre pueda ser " +"importado \n" +"por las guías de direcciones de otros. Los métodos para denegar \n" +"subdominios a propietarios de no-dominios (¿certificados?), y lo deseable" +" \n" +"y factible de estos métodos, son temas para futura discusión." #: i2p2www/pages/site/docs/naming.html:264 msgid "" @@ -859,6 +1031,10 @@ msgid "" "bar,\n" "add 'network.IDN.whitelist.i2p (boolean) = true' in about:config." msgstr "" +"Los Nombres de Dominio Internacionales (IDN) también funcionan con I2P \n" +"(usando la forma punycode 'xn--'). Para ver nombres de dominio .i2p IDN \n" +"correctamente formados en la barra de direcciones de Firefox, añada \n" +"'network.IDN.whitelist.i2p (boolean) = true' en about:config" #: i2p2www/pages/site/docs/naming.html:270 msgid "" @@ -868,10 +1044,16 @@ msgid "" "aliases or\n" "\"pet names\" for sites already in hosts.txt." msgstr "" +"Como la aplicación de guía de direcciones no usa privatehosts.txt para " +"nada, \n" +"en la práctica este fichero es el único lugar donde es apropiado emplazar" +" \n" +"alias privados o \"nombres de mascota\" para sitios ya existentes en " +"hosts.txt" #: i2p2www/pages/site/docs/naming.html:276 msgid "Outgoing Subscriptions" -msgstr "" +msgstr "Suscripciones salientes" #: i2p2www/pages/site/docs/naming.html:277 msgid "" @@ -881,6 +1063,10 @@ msgid "" "for their subscriptions.\n" "This step is optional and is disabled by default." msgstr "" +"La guía de direcciones publicará el hosts.txt fusionado hacia un \n" +"emplazamiento (tradicionalmente el hosts.txt del directorio home del \n" +"eepsite) para que sea accesible para las suscripciones de otros. \n" +"Este paso es opcional y está deshabilitado por defecto." #: i2p2www/pages/site/docs/naming.html:285 msgid "" @@ -890,12 +1076,20 @@ msgid "" "This greatly reduces the bandwidth required, as the web server will\n" "return a '304 Not Modified' on the next fetch if nothing has changed." msgstr "" +"La aplicación de guía de direcciones, junto con eepget, previene que la \n" +"información del Etag y/o la de Última-modificación sea devuelta por el \n" +"servidor web de la suscripción. Esto reduce enormemente el ancho de banda" +" \n" +"requerido ya que el servidor web devolverá un '304 No Modificado' en la \n" +"la siguiente toma de datos (`fetch`) si nada ha cambiado." #: i2p2www/pages/site/docs/naming.html:292 msgid "" "However the entire hosts.txt is downloaded if it has changed.\n" "See below for discussion on this issue." msgstr "" +"Sin embargo, si ha cambiado se descarga el hosts.txt completo. \n" +"Mire debajo las discusiones sobre este asunto." #: i2p2www/pages/site/docs/naming.html:297 msgid "" @@ -907,10 +1101,17 @@ msgid "" "This will dramatically reduce the network bandwidth, and\n" "reduce chances of corruption." msgstr "" +"Se recomienda que los servidores que sirven un archivo host.txt o una " +"aplicación CGI equivalente, lleven una cabecera con el tqmaño del " +"contenido, Content-Length header, y una Etag o la última cabecera " +"modificada, Last-Modified header. Además asegúrese de que el servidor " +"muestra el aviso '304 Not Modified' cuando sea apropiado. Esto reducirá " +"dramáticamente el ancho de banda usado, y reducirá las posibilidades de " +"corrupción." #: i2p2www/pages/site/docs/naming.html:306 msgid "Host Add Services" -msgstr "" +msgstr "Servicio de gestión de dominios" #: i2p2www/pages/site/docs/naming.html:307 msgid "" @@ -920,6 +1121,10 @@ msgid "" "If other routers subscribe to that hosts.txt, the new hostname/key\n" "will be propagated through the network." msgstr "" +"Un servicio de gestión de dominios es una aplicación CGI simple que toma " +"un nombre de dominio y una clave Base64 como parámetros y loa añade a su " +"hosts.txt local. SI otros ruters se suscriben a ese host.txt, el nuevo " +"nombre de domino/clave serán propagados a través de la red." #: i2p2www/pages/site/docs/naming.html:314 msgid "" @@ -928,42 +1133,49 @@ msgid "" "Host add services may impose additional restrictions on hostnames and " "keys, for example:" msgstr "" +"Se recomienda que los servicios de gestión de dominios impongan, como " +"mínimo, las restricciones impuestas por la aplicación libreta de " +"direcciones listadas anteriormente. Los servicios de gestión de dominios " +"deben imponer restricciones adicionales en los nombres de dominio y en " +"las claves, por ejemplo:" #: i2p2www/pages/site/docs/naming.html:319 msgid "A limit on number of 'subdomains'." -msgstr "" +msgstr "Un 'límite' en el número de 'subdominios'." #: i2p2www/pages/site/docs/naming.html:323 msgid "Authorization for 'subdomains' through various methods." -msgstr "" +msgstr "Autorización para los 'subdominios' a través de varios métodos." #: i2p2www/pages/site/docs/naming.html:327 msgid "Hashcash or signed certificates." -msgstr "" +msgstr "Hashcash o certificados firmados." #: i2p2www/pages/site/docs/naming.html:331 msgid "Editorial review of host names and/or content." -msgstr "" +msgstr "Revisión editorial de los nombres de dominio y/o su contenido." #: i2p2www/pages/site/docs/naming.html:335 msgid "Categorization of hosts by content." -msgstr "" +msgstr "Clasificación de los dominios según su contenido." #: i2p2www/pages/site/docs/naming.html:339 msgid "Reservation or rejection of certain host names." -msgstr "" +msgstr "Reserva o rechazo de ciertos dominios." #: i2p2www/pages/site/docs/naming.html:343 msgid "Restrictions on the number of names registered in a given time period." msgstr "" +"Restricciones en el número de dominios registrados en un determinado " +"periodo de tiempo." #: i2p2www/pages/site/docs/naming.html:347 msgid "Delays between registration and publication." -msgstr "" +msgstr "Intervalos entre los registros y las publicaciones." #: i2p2www/pages/site/docs/naming.html:351 msgid "Requirement that the host be up for verification." -msgstr "" +msgstr "Exigir que el servidor esté funcionando para su verificaión." #: i2p2www/pages/site/docs/naming.html:355 msgid "Expiration and/or revocation." @@ -971,11 +1183,11 @@ msgstr "Expiración y/o revocación." #: i2p2www/pages/site/docs/naming.html:359 msgid "IDN spoof rejection." -msgstr "" +msgstr "Denegación de IDN spoof." #: i2p2www/pages/site/docs/naming.html:364 msgid "Jump Services" -msgstr "" +msgstr "Servicios de salto" #: i2p2www/pages/site/docs/naming.html:365 msgid "" @@ -989,6 +1201,12 @@ msgid "" "In addition, the proxy will cache that key so the\n" "address helper is not necessary until restart." msgstr "" +"Un servicio de salto, jump service, es una aplicación CGI que toma un " +"nombre de dominio como parámetro y devuelve una re-dirección 301 a la URL" +" apropiada con una cadena de texto ?i2paddresshelper=key " +"añadida. El servidor HTTP interpretará la cadena de texto añadida y usará" +" la clave como la destinación actual. Además, el proxy cacheará esa clave" +" para que el address helper no sea necesario hasta el próximo reinicio." #: i2p2www/pages/site/docs/naming.html:375 msgid "" @@ -996,12 +1214,19 @@ msgid "" "implies a certain amount of trust, as a jump service could maliciously\n" "redirect a user to an incorrect destination." msgstr "" +"Dese cuenta que, al igual que con las suscripciones, el usar un servicio " +"de salto implica confianza de su parte, debe fiarse del servicio de " +"salto, ya que un servicio de salto podría redirigirle maliciosamente a " +"una destinación incorrecta." #: i2p2www/pages/site/docs/naming.html:381 msgid "" "To provide the best service, a jump service should be subscribed to\n" "several hosts.txt providers so that its local host list is current." msgstr "" +"Para proporcionar un mejor servicio, un servicio de salto debería estar " +"suscrito a varios proveedores de archivos host,.txt , para que su lista " +"local de dominios esté al día." #: i2p2www/pages/site/docs/naming.html:387 msgid "" @@ -1010,6 +1235,10 @@ msgid "" "and accessing the four addressbook files.\n" "All the real work is done by the 'addressbook' application." msgstr "" +"SusiDNS es simplemente un interfaz web para configurar las suscripciones " +"a la libreta de direcciones, y con acceso a los cuatro archivos de " +"libretas de direcciones. Todo el trabajo duro es realizado por la " +"aplicación 'addressbook', 'libreta de direcciones'." #: i2p2www/pages/site/docs/naming.html:393 msgid "" @@ -1018,10 +1247,14 @@ msgid "" "so a user may enter hostnames locally that would be rejected by\n" "the addressbook subscription rules." msgstr "" +"Actualmente, hay poco control sobre las reglas de creación de los nombres" +" de dominio dentro de SusiDNS, por lo que un usuario puede añadir nombres" +" de dominios localmente que serían rechazados por las reglas de " +"suscripción de la libreta de direcciones." #: i2p2www/pages/site/docs/naming.html:399 msgid "Base32 Names" -msgstr "" +msgstr "Dominios Base32" #: i2p2www/pages/site/docs/naming.html:400 msgid "" @@ -1031,6 +1264,11 @@ msgid "" "Example: " "ukeu3k5oycgaauneqgtnvselmt4yemvoilkln7jpvamvfx7dnkdq.b32.i2p" msgstr "" +"I2P soporta nombres de dominios Base32 similares a las direcciones .onion" +" de Tor. Las direcciones Base32 son mucho más fáciles de manejar y mucho " +"más cortas que los addresshelpers o las Destinaciones Base64 de 516 " +"caracteres. Ejemplo:\n" +"ukeu3k5oycgaauneqgtnvselmt4yemvoilkln7jpvamvfx7dnkdq.b32.i2p" #: i2p2www/pages/site/docs/naming.html:407 msgid "" @@ -1047,6 +1285,15 @@ msgid "" "significantly\n" "longer than a local address book lookup." msgstr "" +"En Tor, las direcciones son de 16 caracteres (80 bits), la mitad de un " +"hash SHA-1. I2P usa 52 caracteres (256 bits) para representar un hash " +"SHA-256 completo. La forma es {52 caracs}.b32.i2p. Las direcciones Base32" +" están implementadas en el servicio de nombres, lo que requiere que el " +"ruter en I2CP mire el LeaseSet para obtener el destino completo. Las " +"direcciones Base32 sólo serán accesibles si el Destino está funcionando y" +" publicando un LeaseSet. Ya que al resolver el dominio se requerirá una " +"búsqueda en la base de datos de la red, puede tardar bastante más que en " +"un búsqueda en la libreta de direcciones local." #: i2p2www/pages/site/docs/naming.html:419 msgid "" @@ -1056,6 +1303,11 @@ msgid "" "name does not immediately resolve. I2PTunnel will fail, for example, if\n" "the name does not resolve to a destination." msgstr "" +"Las direcciones Base32 pueden ser usadas en la mayoría de sitios donde se" +" puedan usar los nombres de dominios o la Destinación completa, aunque " +"hay algunas excepciones donde podría fallar sin el dominio no se resuelve" +" inmediatamente, Por ejemplo, I2PTunnel fallará si el domino no resuelve " +"una destinación." #: i2p2www/pages/site/docs/plugins.html:2 #: i2p2www/pages/site/docs/spec/configuration.html:65 @@ -1079,6 +1331,8 @@ msgid "" "I2P includes a plugin architecture\n" "to support easy development and installation of additional software." msgstr "" +"I2P incluye una arquitectura de pluguins para dar soporte a la " +"instalación fácil y desarrollo fácil de aplicaciones adicionales." #: i2p2www/pages/site/docs/plugins.html:14 msgid "" @@ -1086,20 +1340,27 @@ msgid "" "IRC\n" "clients, distributed file storage, wikis, and more." msgstr "" +"Ahora hay plugins disponibles que soportan email distribuído, blogs, \n" +"clientes IRC, almacenamiento de ficheros distribuído, wikis y más." #: i2p2www/pages/site/docs/plugins.html:19 msgid "Benefits to i2p users and app developers:" msgstr "" +"Los beneficios para los usuarios de I2P y los desarrolladores de " +"aplicaciones son:" #: i2p2www/pages/site/docs/plugins.html:24 msgid "Easy distribution of applications" -msgstr "" +msgstr "Fácil distribución de aplicaciones" #: i2p2www/pages/site/docs/plugins.html:28 msgid "" "Allows innovation and use of additional libraries without worrying about\n" "increasing the size of i2pupdate.sud" msgstr "" +"Permite la innovación y el uso de librerías adicionales sin preocuparse " +"por el \n" +"incremento de tamaño de i2pupdate.sud" #: i2p2www/pages/site/docs/plugins.html:33 msgid "" @@ -1107,50 +1368,67 @@ msgid "" "\n" "with the I2P installation" msgstr "" +"Soporta aplicaciones grandes o de proposito-especial que nunca serían \n" +"empaquetadas con la instalación de I2P" #: i2p2www/pages/site/docs/plugins.html:38 msgid "Cryptographically signed and verified applications" -msgstr "" +msgstr "Aplicaciones criptográficamente firmadas y verificadas" #: i2p2www/pages/site/docs/plugins.html:42 msgid "Automatic updates of applications, just like for the router" -msgstr "" +msgstr "Actualizaciones automáticas de aplicaciones, igual que para el router" #: i2p2www/pages/site/docs/plugins.html:46 msgid "" "Separate initial install and update packages, if desired, for smaller " "update downloads" msgstr "" +"Paquetes separados para la instalación inicial y las actualizaciones, si " +"se \n" +"desea, para tener descargas de actualizaciones más pequeñas" #: i2p2www/pages/site/docs/plugins.html:50 msgid "" "One-click installation of applications. No more asking users to modify\n" "wrapper.config or clients.config" msgstr "" +"Instalación de aplicaciones en un-sólo-clic. Sin preguntar más al usuario" +" \n" +"para modificar wrapper.config o clients.config" #: i2p2www/pages/site/docs/plugins.html:55 msgid "Isolate applications from the base $I2P installation" -msgstr "" +msgstr "Aplicaciones aisladas desde la instalación base de $I2P" #: i2p2www/pages/site/docs/plugins.html:59 msgid "" "Automatic compatibility checking for I2P version, Java version, Jetty\n" "version, and previous installed application version" msgstr "" +"Comprobación automática de compatibilidad para la versión de I2P, la " +"versión \n" +"de Java, la versión de Jetty, y versiones de la aplicación previamente " +"instaladas" #: i2p2www/pages/site/docs/plugins.html:64 msgid "Automatic link addition in console" -msgstr "" +msgstr "Añadido automático de enlaces en la consola" #: i2p2www/pages/site/docs/plugins.html:68 msgid "" "Automatic startup of application, including modifying classpath, without " "requiring a restart" msgstr "" +"Inicio automático de la aplicación, incluyendo modificación de la ruta de" +" \n" +"clases (`classpath`), sin requerir un reinicio" #: i2p2www/pages/site/docs/plugins.html:72 msgid "Automatic integration and startup of webapps into console Jetty instance" msgstr "" +"Integración automática e inicio de aplicaciones web en la instancia de \n" +"consola Jetty" #: i2p2www/pages/site/docs/plugins.html:76 #, python-format @@ -1158,22 +1436,25 @@ msgid "" "Facilitate creation of 'app stores' like the one at\n" "%(pluginsite)s" msgstr "" +"Facilita la creación de 'app stores' (tiendas de aplicaciones) como la de" +" \n" +"%(pluginsite)s" #: i2p2www/pages/site/docs/plugins.html:81 msgid "One-click uninstall" -msgstr "" +msgstr "Desinstalación en un-sólo-clic" #: i2p2www/pages/site/docs/plugins.html:85 msgid "Language and theme packs for the console" -msgstr "" +msgstr "Paquetes de idioma y de temas para la consola" #: i2p2www/pages/site/docs/plugins.html:89 msgid "Bring detailed application information to the router console" -msgstr "" +msgstr "Trae información detallada de la aplicación a la consola del router" #: i2p2www/pages/site/docs/plugins.html:93 msgid "Non-java applications also supported" -msgstr "" +msgstr "Las aplicaciones no-Java también están soportadas" #: i2p2www/pages/site/docs/plugins.html:99 msgid "Required I2P version" @@ -1201,6 +1482,14 @@ msgid "" " at\n" "the top of your summary bar." msgstr "" +"Para instalar e iniciar un plugin, copie el enlace de instalación " +".xpi2p en \n" +"el formulario al final de configclients.jsp" +" en la consola de su router y \n" +"haga clic en el botón \"instalar plugin\". Después de que un plugin sea " +"instalado e iniciado, un enlace al plugin aparecerá normalmente en la " +"parte superior de su barra de resumen." #: i2p2www/pages/site/docs/plugins.html:112 msgid "" @@ -1217,6 +1506,16 @@ msgid "" "including dev\n" "builds)." msgstr "" +"Para actualizar un plugin a la última versión, tan solo haga clic en el " +"botón de actualización sobre configclients.jsp." +" También hay un botón para \n" +"comprobar si el plugin tiene una versión más reciente, así como un botón" +" \n" +"para buscar actualizaciones para todos los plugins. Se comprobará si hay" +" \n" +"actualizaciones para los plugins automáticamente cuando se actualice a \n" +"una nueva versión de I2P (sin incluír las versiones de desarrollo)." #: i2p2www/pages/site/docs/plugins.html:122 msgid "Development" @@ -1229,6 +1528,9 @@ msgid "" "the\n" "plugin forum on %(zzz)s." msgstr "" +"Vea las últimas especificaciones de " +"plugins y el \n" +"forum de plugins en %(zzz)s." #: i2p2www/pages/site/docs/plugins.html:128 #, python-format @@ -1239,6 +1541,12 @@ msgid "" "developed\n" "specifically as examples." msgstr "" +"Vea también las fuentes de los plugins desarrollados por varias personas." +" \n" +"Algunos plugins como snowman, fueron " +"desarrollados específicamente \n" +"como ejemplos." #: i2p2www/pages/site/docs/plugins.html:134 msgid "" @@ -1246,6 +1554,8 @@ msgid "" "\n" "or easily add some feature." msgstr "" +"¡Se buscan desarrolladores! Los plugins son una gran manera de \n" +"aprender más acerca de I2P o de añadir fácilmente alguna característica." #: i2p2www/pages/site/docs/plugins.html:139 msgid "Getting Started" @@ -1258,6 +1568,10 @@ msgid "" "makeplugin.sh from the i2p.scripts branch in " "monotone." msgstr "" +"Para crear un plugin desde un paquete binario existente necesitará " +"obtener \n" +"makeplugin.sh desde el ramal (`branch`) de " +"i2p.scripts en monotone." #: i2p2www/pages/site/docs/plugins.html:146 msgid "Known Issues" @@ -1268,6 +1582,8 @@ msgid "" "Note that the router's plugin architecture does NOT currently\n" "provide any additional security isolation or sandboxing of plugins." msgstr "" +"Observe que la arquitectura del plugin del router actualmente NO\n" +"proporciona seguridad adicional, aislamiento o sandboxing de plugins." #: i2p2www/pages/site/docs/plugins.html:153 msgid "" @@ -1276,10 +1592,15 @@ msgid "" " the\n" "class cache; a full router restart is required." msgstr "" +"Las actualizaciones de un plugin con jars (no wars) incluídos, no serán \n" +"reconocidas si el plugin ya se está ejecutando, ya que requiere usar \n" +"trucos en el cargador de clases ('class') para limpiar la caché de " +"clases;\n" +"se requiere un reinicio completo del router." #: i2p2www/pages/site/docs/plugins.html:159 msgid "The stop button may be displayed even if there is nothing to stop." -msgstr "" +msgstr "El botón de parada podría mostarse incluso si no hay nada que parar." #: i2p2www/pages/site/docs/plugins.html:163 msgid "" @@ -1287,6 +1608,9 @@ msgid "" "in\n" "$CWD." msgstr "" +"Los plugins ejecutandose en una JVM crean un directorio " +"logs/ en \n" +"$CWD." #: i2p2www/pages/site/docs/plugins.html:168 msgid "" @@ -1295,6 +1619,11 @@ msgid "" "same keys as for router update), so the first key seen for a signer is\n" "automatically accepted—there is no signing key authority." msgstr "" +"No hay claves inciales presentes, excepto para aquellos de `jrandom` y " +"`zzz` \n" +"(que usan las mismas claves que para la actualización del router), por \n" +"lo que la primera clave vista para un firmante es automáticamente \n" +"aceptada—no hay autoridad de clave de firmado." #: i2p2www/pages/site/docs/plugins.html:174 msgid "" @@ -1302,6 +1631,9 @@ msgid "" "on\n" "Windows." msgstr "" +"Cuando se borra un plugin el directorio no siempre se borra, " +"especialmente \n" +"sobre Windows." #: i2p2www/pages/site/docs/plugins.html:179 msgid "" @@ -1310,14 +1642,19 @@ msgid "" "\"plugin is corrupt\" message if pack200 compression of the plugin file " "is used." msgstr "" +"Instalar un plugin que requiere Java 1.6 sobre una máquina Java 1.5 " +"resultará \n" +"en un mensaje \"el plugin está corrupto\" si se usó la compresión pack200" +" \n" +"en el fichero del plugin." #: i2p2www/pages/site/docs/plugins.html:184 msgid "Theme and translation plugins are untested." -msgstr "" +msgstr "Los plugins de temas y traducciones no están probados." #: i2p2www/pages/site/docs/plugins.html:188 msgid "Disabling autostart doesn't always work." -msgstr "" +msgstr "Deshabilitar autoinicio no siempre funciona." #: i2p2www/pages/site/docs/ports.html:2 msgid "Ports Used by I2P" @@ -1330,6 +1667,10 @@ msgid "" "common alternates,\n" "and some typical related applications." msgstr "" +"Estos son los puertos usados o reservados por I2P, incluyendo aquellos " +"para plugins conocidos, \n" +"alternativas comunes, \n" +"y algunas aplicaciones típicas relacionadas." #: i2p2www/pages/site/docs/ports.html:13 #, python-format @@ -1341,10 +1682,16 @@ msgid "" "For new plugins, we recommend using the next available port\n" "in the 766x range." msgstr "" +"Observe que muchos de estos no están habilitados de forma predeterminada." +" \n" +"Hay más información en las FAQ. Vea también" +" la documentación para plugins individuales. Los autores de los \n" +"plugins por favor añadan cualquier puerto que usen aquí. Para nuevos \n" +"plugins recomendamos usar el siguiente puerto disponible en el rango 766x." #: i2p2www/pages/site/docs/ports.html:53 msgid "recommended spot for new plugins/applications" -msgstr "" +msgstr "punto recomendado para nuevos plugins/aplicaciones" #: i2p2www/pages/site/docs/api/bob.html:3 #: i2p2www/pages/site/docs/api/datagrams.html:3 @@ -1356,11 +1703,11 @@ msgstr "Agosto del 2010" #: i2p2www/pages/site/docs/api/bob.html:5 msgid "BOB - Basic Open Bridge" -msgstr "" +msgstr "BOB- Basic Open Bridge (pasarela abierta básica)" #: i2p2www/pages/site/docs/api/bob.html:7 msgid "Technical differences from SAM (for the better?)" -msgstr "" +msgstr "Diferencias técnicas con SAM (¿para mejorarlo?)" #: i2p2www/pages/site/docs/api/bob.html:9 msgid "" @@ -1371,12 +1718,24 @@ msgid "" "destination key, and to set the destination key to port bindings. \n" "All connections run in parallel." msgstr "" +"BOB tiene canales separados de comandos y de datos. \n" +"Uno, un socket de canal de comandos de aplicación hacia el router.\n" +"Dos, los sockets de datos de aplicación hacia/desde el router, que portan" +" \n" +"sólo datos.\n" +"El canal de comandos sólo es necesario para generar o establecer la clave" +" \n" +"de destino inicial, y para establecer las ligaduras (`bindings`) de las " +"claves \n" +"de destino con los puertos. Todas las conexiones se ejecutan en paralelo." #: i2p2www/pages/site/docs/api/bob.html:18 msgid "" "SAM has one connection that does everything, and you need to parse every " "packet." msgstr "" +"SAM tiene una conexión que hace todo, y usted necesita procesar todos los" +" paquetes." #: i2p2www/pages/site/docs/api/bob.html:22 msgid "" @@ -1386,22 +1745,27 @@ msgid "" "to\n" "your privacy." msgstr "" +"BOB no retiene valores de parejas de claves, tampoco lo hace el router. \n" +"La aplicación de usted retiene los valores de parejas de claves.\n" +"Esto es para reducir cualquier complejidad extra en el código del router," +" \n" +"también contribuye a su privacidad." #: i2p2www/pages/site/docs/api/bob.html:29 msgid "SAM router stores every keypair you ever make." -msgstr "" +msgstr "El router SAM guarda cada par de claves que alguna vez haya generado." #: i2p2www/pages/site/docs/api/bob.html:33 msgid "Those are the important differences." -msgstr "" +msgstr "Esas son las diferencias importantes." #: i2p2www/pages/site/docs/api/bob.html:37 msgid "KEYS = keypair public+private, these are BASE64" -msgstr "" +msgstr "CLAVES = par de claves pública+privada, estas son BASE64" #: i2p2www/pages/site/docs/api/bob.html:40 msgid "KEY = public key, also BASE64" -msgstr "" +msgstr "CLAVE = clave pública, también BASE64" #: i2p2www/pages/site/docs/api/bob.html:43 msgid "" @@ -1409,6 +1773,9 @@ msgid "" "\"+DESCRIPTION+\"\n" "\", where the DESCRIPTION is what went wrong." msgstr "" +"ERROR como está implícito, devuelve el mensaje \"ERROR" +" \"+DESCRIPCIÓN+\"\n" +"\", donde la DESCRIPCIÓN es lo que fue mal." #: i2p2www/pages/site/docs/api/bob.html:46 msgid "" @@ -1416,12 +1783,17 @@ msgid "" "returned, it is on the same line. OK means the command is " "finished." msgstr "" +"OK devuelve \"OK\", y si se van a devolver " +"datos, se hará en la misma línea. OK significa que el " +"comando ha finalizado." #: i2p2www/pages/site/docs/api/bob.html:49 msgid "" "DATA lines contain information that you requested. There may" " be multiple DATA lines per request." msgstr "" +"DATOS líneas conteniendo la información que usted solicitó. " +"Puede haber múltiples líneas de DATOS por solicitud." #: i2p2www/pages/site/docs/api/bob.html:53 msgid "" @@ -1430,6 +1802,10 @@ msgid "" "the rules... it can actually return nothing! This is intentional, since\n" "help is a HUMAN and not an APPLICATION command." msgstr "" +"NOTA: El comando `help` es el ÚNICO comando que tiene una \n" +"excepción a las reglas... actualmente puede devolver ¡nada! Es " +"intencionado, \n" +"dado que `help` es un HUMANO y no un comando de APLICACIÓN." #: i2p2www/pages/site/docs/api/bob.html:59 msgid "" @@ -1439,28 +1815,35 @@ msgid "" "Just telnet to localhost 2827 and type help and you can get full " "documentation on each command." msgstr "" +"POR FAVOR OBSERVE QUE: Para detalles ACTUALES de los comandos POR " +"FAVOR use el comando interno `help`. \n" +"Tan sólo haga telnet al localhost 2827, teclee `help` y podrá obtener la" +" \n" +"documentación completa para cada comando." #: i2p2www/pages/site/docs/api/bob.html:65 msgid "" "Commands never get obsoleted or changed, however new commands do get " "added from time to time." msgstr "" +"Los comandos nunca cambian o se vuelven obsoletos, sin embargo nuevos " +"comandos son añadidos de cuando en cuando." #: i2p2www/pages/site/docs/api/bob.html:69 msgid "Here are the commands we have as of this writing:" -msgstr "" +msgstr "Aquí están los comandos que tenemos en el momento de escirbir esto:" #: i2p2www/pages/site/docs/api/bob.html:74 msgid "COMMAND" -msgstr "" +msgstr "COMANDO" #: i2p2www/pages/site/docs/api/bob.html:74 msgid "OPERAND" -msgstr "" +msgstr "OPERANDO" #: i2p2www/pages/site/docs/api/bob.html:74 msgid "RETURNS" -msgstr "" +msgstr "DEVUELVE" #: i2p2www/pages/site/docs/api/bob.html:101 msgid "" @@ -1473,6 +1856,12 @@ msgid "" "many streams in or out one socket -- that can't scale when you have alot " "of connections!" msgstr "" +"Una vez configurado, todos los sockets TCP pueden y bloquearán según se \n" +"necesite, y no hay necesidad de mensaje adicional alguno hacia/desde el \n" +"canal de comandos. Esto permite al router marcar el paso del stream sin \n" +"reventar con un OOM (out of memory/agotamiento de memoria) como lo hace \n" +"SAM al ahogarse intentando empujar varios streams dentro o fuera de un \n" +"socket -- ¡que no puede crecer cuando tiene muchas conexiones!" #: i2p2www/pages/site/docs/api/bob.html:108 msgid "" @@ -1495,6 +1884,24 @@ msgid "" "It will simply be fooled -- the destinations are not reachable, and that " "nothing is coming in." msgstr "" +"Lo que también es agradable acerca de esta interfaz en particular es que" +" \n" +"escribir algo para la interfaz, es mucho mucho más fácil que para SAM. \n" +"No hay ningún otro proceso que realizar después de configurarla. Su \n" +"configuración es tan simple, que muchas aplicaciones sencillas, tales \n" +"como nc (netcat) se pueden usar para apuntar a alguna aplicación. El " +"valor \n" +"ahí es que uno puede programar periodos de actividad e inactividad para \n" +"una aplicación, sin tener que cambiar la aplicación para hacer eso, o \n" +"incluso sin tener que detener esa aplicación. En su lugar, puede " +"literalmente\n" +"\"desenchufar\" el destino, y \"enchufarlo\" de nuevo. Mientras las " +"mismas \n" +"direcciones IP/puerto y claves de destino sean usadas al levantar la \n" +"pasarela, a las aplicaciones TCP normales no les importará, y no lo " +"notarán. Simplemente serán engañadas -- los destinos no son alcanzables," +" \n" +"y así nada va a recibirse." #: i2p2www/pages/site/docs/api/bob.html:120 msgid "" @@ -1506,10 +1913,15 @@ msgid "" "that you\n" "can telnet into, and watch the pretty ASCII test puke forth." msgstr "" +"Para el siguiente ejemplo, estableceremos un conexión loopback local \n" +"muy simple, con dos destinos. El destino \"boca\" será el servicio \n" +"CHARGEN desde el demonio superservidor INET. El destino \"oido\" será \n" +"un puerto local sobre el que podrá hacer telnet, y observar el precioso \n" +"ASCII de prueba vomitado." #: i2p2www/pages/site/docs/api/bob.html:128 msgid "EXAMPLE SESSION DIALOGUE -- simple telnet 127.0.0.1 2827 works" -msgstr "" +msgstr "DIÁLOGO DE SESIÓN DE EJEMPLO -- un simple `telnet 127.0.0.1 2827` funciona" #: i2p2www/pages/site/docs/api/bob.html:129 msgid "Application" @@ -1517,7 +1929,7 @@ msgstr "Aplicación" #: i2p2www/pages/site/docs/api/bob.html:130 msgid "BOB's Command response." -msgstr "" +msgstr "Respuesta al comando de BOB." #: i2p2www/pages/site/docs/api/bob.html:132 #: i2p2www/pages/site/docs/api/bob.html:144 @@ -1526,7 +1938,7 @@ msgstr "" #: i2p2www/pages/site/docs/api/bob.html:284 #: i2p2www/pages/site/docs/api/bob.html:299 msgid "FROM" -msgstr "" +msgstr "DESDE" #: i2p2www/pages/site/docs/api/bob.html:132 #: i2p2www/pages/site/docs/api/bob.html:144 @@ -1535,7 +1947,7 @@ msgstr "" #: i2p2www/pages/site/docs/api/bob.html:284 #: i2p2www/pages/site/docs/api/bob.html:299 msgid "TO" -msgstr "" +msgstr "HACIA" #: i2p2www/pages/site/docs/api/bob.html:132 #: i2p2www/pages/site/docs/api/bob.html:144 @@ -1544,11 +1956,11 @@ msgstr "" #: i2p2www/pages/site/docs/api/bob.html:284 #: i2p2www/pages/site/docs/api/bob.html:299 msgid "DIALOGUE" -msgstr "" +msgstr "DIÁLOGO" #: i2p2www/pages/site/docs/api/bob.html:139 msgid "MAKE NOTE OF THE ABOVE DESTINATION KEY, YOURS WILL BE DIFFERENT!" -msgstr "" +msgstr "ANOTE LA CLAVE DE DESTINO ANTERIOR, ¡LA SUYA SERÁ DIFERENTE!" #: i2p2www/pages/site/docs/api/bob.html:153 msgid "" @@ -1558,10 +1970,15 @@ msgid "" "connect \n" "to the CHARGEN service on 19/TCP." msgstr "" +"En este punto no hubo error, un destino con un apodo de \"boca\" está \n" +"establecido. Cuando contacte con el destino proporcionado, en realidad \n" +"conectará con el servicio CHARGEN sobre 19/TCP." #: i2p2www/pages/site/docs/api/bob.html:159 msgid "Now for the other half, so that we can actually contact this destination." msgstr "" +"Ahora para la otra mitad, para que realmente podamos contactar con este " +"destino." #: i2p2www/pages/site/docs/api/bob.html:179 msgid "" @@ -1571,24 +1988,34 @@ msgid "" "In this case, we want to contact \"mouth\", all we do is paste in the\n" "key and it goes." msgstr "" +"Ahora todo lo que necesitamos es hacer telnet a 127.0.0.1, puerto 37337," +" \n" +"enviar la clave destino o la dirección del servidor de la guía de " +"direcciones \n" +"con la que queramos contactar. En este caso, queremos contactar con \n" +"\"boca\", todo lo que haremos es pegar la clave e irá." #: i2p2www/pages/site/docs/api/bob.html:186 msgid "" "NOTE: The \"quit\" command in the command channel does NOT " "disconnect the tunnels like SAM." msgstr "" +"NOTA: El comando \"quit\" en el canal de comandos NO desconecta \n" +"los túneles como SAM." #: i2p2www/pages/site/docs/api/bob.html:203 msgid "After a few virtual miles of this spew, press Control-]" msgstr "" +"Después de unas pocas millas virtuales de esta eyección, presione " +"Control-]" #: i2p2www/pages/site/docs/api/bob.html:215 msgid "Here is what happened..." -msgstr "" +msgstr "Aquí está lo que sucedió..." #: i2p2www/pages/site/docs/api/bob.html:223 msgid "You can connect to EEPSITES too!" -msgstr "" +msgstr "¡También puede conectar con EEPSITES!" #: i2p2www/pages/site/docs/api/bob.html:256 msgid "" @@ -1601,18 +2028,28 @@ msgid "" "They would be meaningless to the application, and are only presented for " "human debugging." msgstr "" +"Bastante chulo ¿verdad? Pruebe con algún otro EEPSITE bien conocido si \n" +"prefiere, o con los no existentes, etc. para conseguir una sensación de " +"qué \n" +"tipo de resultado esperar en diferentes situaciones. Para la mayor parte," +" se \n" +"sugiere que ignore cualquier tipo de mensajes de error. No tendrían " +"significado \n" +"para la aplicación, y sólo son presentados para depuración por humanos." #: i2p2www/pages/site/docs/api/bob.html:263 msgid "Let's put down our destinations now that we are all done with them." msgstr "" +"Desactivemos nuestros destinos ahora que hemos terminado del todo con " +"ellos." #: i2p2www/pages/site/docs/api/bob.html:267 msgid "First, lets see what destination nicknames we have." -msgstr "" +msgstr "Primero, veamos que apodos de destino tenemos." #: i2p2www/pages/site/docs/api/bob.html:279 msgid "Alright, there they are. First, let's remove \"mouth\"." -msgstr "" +msgstr "De acuerdo, ahí las tiene. Primero, eliminemos \"boca\" (`mouth`)." #: i2p2www/pages/site/docs/api/bob.html:293 msgid "" @@ -1620,6 +2057,10 @@ msgid "" "fast,\n" "and shows you what typical ERROR messages looks like." msgstr "" +"Ahora para eliminar \"oido\" (`ear`), note que esto es lo que ocurre " +"cuando teclea\n" +"demasiado rápido, y le muestra el aspecto de los típicos mensajes de " +"ERROR." #: i2p2www/pages/site/docs/api/bob.html:312 msgid "" @@ -1627,6 +2068,11 @@ msgid "" "because it is very simple. There are two possible settings for it, and\n" "it is toggled with the \"quiet\" command." msgstr "" +"No le molestaré mostrando un ejemplo de un receptor final de una pasarela" +" \n" +"(`bridge`) porque es muy simple. Hay dos posibles configuraciones para " +"ello, \n" +"y se accionan con el comando \"quiet\" (silenciar)." #: i2p2www/pages/site/docs/api/bob.html:318 msgid "" @@ -1635,6 +2081,12 @@ msgid "" "single line consisting of the BASE64 address followed by a newline.\n" "Everything after that is for the application to actually consume." msgstr "" +"La configuración por defecto es NO silenciado, a y los primeros datos en" +" \n" +"llegar a su socket de escucha es el destiono que está estableciendo el \n" +"contacto. Es una sola línea consistente en una dirección BASE64 seguida \n" +"de una nueva línea. Todo lo que viene después de aquello es en realidad \n" +"para consumo de la aplicación." #: i2p2www/pages/site/docs/api/bob.html:325 msgid "" @@ -1645,6 +2097,19 @@ msgid "" "can use BOB to point a destination at a web server, for example, and\n" "you would not have to modify the web server at all." msgstr "" +"En modo silencioso, piense en él como en una conexión regular a Internet." +" \n" +"No hay dato extra entrante alguno. Es tan solo como si estuviera " +"conectado \n" +"normalmente al Internet regular. Este modo permite una forma de " +"transparencia \n" +"muy parecida a la que está disponible en las páginas de configuración del" +" \n" +"túnel de la consola del router, así que usted puede, por ejemplo, usar " +"BOB \n" +"para apuntar hacia un destino en un servidor web, y no tendría que " +"modificar \n" +"para nada el servidor web." #: i2p2www/pages/site/docs/api/bob.html:334 msgid "" @@ -1660,10 +2125,28 @@ msgid "" "point to a set of backup machines depending on what is running, etc,\n" "etc. Only your imagination limits what you could do with BOB." msgstr "" +"La ventaja de usar BOB para esto es la que fue discutida previamente. \n" +"Puede programar periodos de actividad aleatorios para la aplicación, " +"redirigirla \n" +"a una máquina diferente, etc. Un uso de esto puede ser algo parecido a \n" +"tratar de confundir acciones de estimación de la conectividad router-" +"destino. \n" +"Puede detener e iniciar el destino con un proceso totalmente diferente " +"para \n" +"establecer periodos aleatorios de actividad e inactividad para los " +"servicios. De ese modo sólo se estaría deteniendo la capacidad de " +"contactar con tal \n" +"servicio, sin tener que preocuparse cerrándolo y reiniciándolo. Podría " +"redirigir \n" +"y apuntar a una máquina diferente de su LAN, mientras hace " +"actualizaciones, \n" +"o apuntar a un conjunto de máquinas de respaldo dependiendo de lo que se " +"esté ejecuntando, etc, etc. Sólo su imaginación limita lo que podría " +"hacer con BOB." #: i2p2www/pages/site/docs/api/datagrams.html:6 msgid "Datagram Overview" -msgstr "" +msgstr "Un vistazo a los datagramas" #: i2p2www/pages/site/docs/api/datagrams.html:7 #, python-format @@ -1680,6 +2163,19 @@ msgid "" "addition, the\n" "message and sender are authenticated by signing the payload." msgstr "" +"Los datagramas se construyen sobre la base de I2CP para proporcionar \n" +"autentificación y mensajes respondibles en un formato standard. \n" +"Esto permite a las aplicaciones leer con fiabilidad la dirección \"from\"" +" (desde)\n" +"de los datragramas, y confirmar que la dirección envió efectivamente el " +"mensaje. \n" +"Esto es necesario para algunas aplicaciones ya que el mensaje base I2P es" +" \n" +"completamente crudo (`raw`) - no tiene dirección \"from\" (al contrario " +"que los \n" +"paquetes IP). Además el mensaje y el emisor son autentificados mediante \n" +"el firmado de la carga." #: i2p2www/pages/site/docs/api/datagrams.html:16 #, python-format @@ -1691,10 +2187,16 @@ msgid "" "the protocols are converted to I2NP messages by the router, and\n" "either protocol may be carried by either transport." msgstr "" +"Los datagramas, al igual que los paquetes de la" +" librería de streaming, son una construcción al nivel de aplicación. " +"Estos protocolos son diferentes de los transportes de bajo nivel; estos protocolos " +"son convertidos en mensajes I2NP por el ruter, y así cualquier protocolo " +"puede ser llevado por cualquier transporte." #: i2p2www/pages/site/docs/api/datagrams.html:25 msgid "Application Guide" -msgstr "" +msgstr "Guía de aplicaciones" #: i2p2www/pages/site/docs/api/datagrams.html:26 #, python-format @@ -1707,6 +2209,12 @@ msgid "" "href=\"%(socks)s\">SOCKS proxy,\n" "the 'streamr' tunnel types, and udpTunnel classes." msgstr "" +"Las aplicaciones escritas en Java pueden usar la API " +"datagram, mientras que las aplicaciones en otros idomas pueden usar" +" \n" +"el soporte datagram de SAM. También hay soporte " +"limitado en i2ptunnel en el proxy SOCKS, los \n" +"tipos de túnel 'streamr', y las clases udpTunnel." #: i2p2www/pages/site/docs/api/datagrams.html:37 msgid "Datagram Length" @@ -1726,6 +2234,16 @@ msgid "" "Messages over 16 KB cannot be delivered over NTCP, dropping delivery " "chances even more." msgstr "" +"El diseñador de la aplicación debe considerar cuidadosamente las\n" +"contrapartidas de datagramas respondibles frente a los no-respondibles. \n" +"El tamaño del datagrama también afectaría a la fiabilidad, debido a la \n" +"fragmentación del túnel en mensajes de túnel de 1KB. Cuantos más \n" +"fragmentos de mensaje, más probable es que uno de ellos se pierda en un \n" +"salto intermedio. Los mensajes más largos de unos pocos KB no están \n" +"recomendados. Por encima de alrededor de 10KB, la probabilidad de entrega" +" \n" +"cae dramáticamente. Los mensajes por encima de 16KB no pueden ser \n" +"entregados sobre NTCP (TCP basado en NIO)." #: i2p2www/pages/site/docs/api/datagrams.html:47 #, python-format @@ -1744,10 +2262,21 @@ msgid "" "tune\n" "the ElGamal Session Tag parameters." msgstr "" +"Observe también que del variado tráfico de control añadido por las capas" +" \n" +"inferiores, en particular la asimétrica ElGamal/AES, coloca una \n" +"gran carga sobre los mensajes intermitentes tales como los usados por \n" +"una aplicación Kademlia-sobre-UDP. Las implementaciones actualmente \n" +"se ajustan para tráfico frecuente usando la librería streaming. Por \n" +"ejemplo, si hay un alto número de etiquetas de sesión entregadas, y una \n" +"vida corta de etiqueta de sesión. Actualmente no hay parámetros de \n" +"configuración disponibles dentro de I2CP para ajustar los parametros de \n" +"la Etiqueta de Sesión ElGamal." #: i2p2www/pages/site/docs/api/datagrams.html:57 msgid "I2CP Protocol Number and Ports" -msgstr "" +msgstr "Número de protocolo y puertos de I2CP" #: i2p2www/pages/site/docs/api/datagrams.html:58 msgid "" @@ -1757,6 +2286,12 @@ msgid "" "It must be set to demultiplex datagram and streaming traffic received on " "the same Destination." msgstr "" +"El número stadard del protocolo I2CP (Protocolo de Cliente I2P) para \n" +"datagramas es PROTO_DATAGRAM (17). Las aplicaciones pueden o no \n" +"elegir establecer el protocolo en la cabecera I2CP. No está establecido " +"por \n" +"defecto. Debe ser establecido para demultiplexar el datagrama y el " +"tráfico de streaming recibido en el mismo Destino." #: i2p2www/pages/site/docs/api/datagrams.html:65 #, python-format @@ -1769,6 +2304,13 @@ msgid "" "described in\n" "the I2CP page." msgstr "" +"Como los datagramas no están orientados a la conexión, la aplicación " +"puede \n" +"requerir números de puerto para correlacionar los datagramas con pares " +"('peers') concrectos o sesiones de comunicaciones, como es tradicional " +"con UDP sobre IP. Las aplicaciones pueden añadir puertos 'from' (origen) " +"y 'to' (destino) a la cabecera (gzip) I2CP como se describe en la página de I2CP." #: i2p2www/pages/site/docs/api/datagrams.html:73 #, python-format @@ -1788,6 +2330,19 @@ msgid "" "datagram\n" "for the reply, returning the nonce from the request." msgstr "" +"No hay método dentro de la API datagram para especificar si es no-" +"respondible (raw (crudo)) o respondible. La aplicación debe ser designada" +" \n" +"para esperar el tipo apropiado. El número de protocolo I2CP o el puerto \n" +"debería ser usado por la aplicación para indicar el tipo de datagrama. " +"Los \n" +"números de protocolo I2CP `PROTO_DATAGRAM_RAW` se definen en la \n" +"API I2PSession para este propósito. Un " +"patrón de diseño común en aplicaciones datagrama cliente/servidor es usar" +" \n" +"datagramas firmados para una petición que incluye un nonce (valor de \n" +"seguridad de un único uso), y usa un datagrama crudo (`raw`) para la \n" +"respuesta, devolviendo el nonce desde la petición." #: i2p2www/pages/site/docs/api/datagrams.html:85 #, python-format @@ -1797,6 +2352,10 @@ msgid "" "as implemented in\n" "I2PSessionMuxedImpl." msgstr "" +"Los protocolos y puertos pueden ser establecidos en la API I2PSession \n" +"de I2CP, tal como están implementados en I2PSessionMuxedImpl." #: i2p2www/pages/site/docs/api/datagrams.html:93 #: i2p2www/pages/site/docs/api/streaming.html:381 @@ -1810,6 +2369,10 @@ msgid "" "the I2CP layer.\n" "There is no checksum field in the datagram protocol." msgstr "" +"La integridad de los datos está asegurada por el checksum CRC-32 de gzip" +" \n" +"implementado en la capa I2CP. No hay " +"campo checksum en el protocolo datagram" #: i2p2www/pages/site/docs/api/datagrams.html:100 #: i2p2www/pages/site/docs/api/streaming.html:389 @@ -1829,6 +2392,14 @@ msgid "" "There is no packet delimiter mechanism or length field in the datagram " "protocol." msgstr "" +"Cada datagrama se envía a través de I2P como un mensaje único (o como un " +"'clove' (diente) individual en un `Garlic " +"Message)` (mensaje ajo). \n" +"La encapsulación del mensaje se implementa en los I2CP, I2NP, y \n" +"las capas de mensaje de túnel " +"subyacentes. No hay mecanismo \n" +"delimitador de paquetes o campo de tamaño en el protocolo datagram." #: i2p2www/pages/site/docs/api/datagrams.html:114 #: i2p2www/pages/site/docs/spec/datagrams.html:10 @@ -1838,11 +2409,11 @@ msgstr "Especificación" #: i2p2www/pages/site/docs/api/datagrams.html:116 msgid "See the Datagrams Specification page." -msgstr "" +msgstr "Vea la página de Especificaciones de Datagramas." #: i2p2www/pages/site/docs/api/i2pcontrol.html:4 msgid "I2PControl - Remote Control Service" -msgstr "" +msgstr "I2PControl - Servicio de Control Remoto" #: i2p2www/pages/site/docs/api/i2pcontrol.html:5 #, python-format @@ -1859,10 +2430,24 @@ msgid "" "at the JSON-RPC " "wiki." msgstr "" +"I2P habilita una interfaz JSONRPC2 a través del plugin I2PControl. \n" +"El proposito de la interfaz es proporcionar un camino sencillo a la " +"interacción con \n" +"un nodo I2P en ejecución. Un cliente, itoopie, ha sido desarrollado en " +"paralelo. \n" +"La implementación JSONRPC2 para el cliente, así como el plugin, son \n" +"proporcionados por las librerías Java JSON-RPC " +"2.0. Una lista de \n" +"implementaciones de JSON-RPC para varios idiomas puede encontrarse en \n" +"el wiki de JSON-" +"RPC." #: i2p2www/pages/site/docs/api/i2pcontrol.html:12 msgid "I2PControl is by default listening on localhost:7650" -msgstr "" +msgstr "I2PControl por defecto está escuchando en localhost:7650" #: i2p2www/pages/site/docs/api/i2pcontrol.html:14 msgid "API, version 1." @@ -1870,7 +2455,7 @@ msgstr "API, versión 1." #: i2p2www/pages/site/docs/api/i2pcontrol.html:15 msgid "Parameters are only provided in a named way (maps)." -msgstr "" +msgstr "Los parámetros sólo se proporcionan a través del nombre (mapas)." #: i2p2www/pages/site/docs/api/i2pcontrol.html:19 msgid "JSON-RPC 2 format" @@ -1886,7 +2471,7 @@ msgstr "Formato JSON-RPC 2" #: i2p2www/pages/site/docs/api/i2pcontrol.html:137 #: i2p2www/pages/site/docs/api/i2pcontrol.html:154 msgid "Request:" -msgstr "" +msgstr "Petición:" #: i2p2www/pages/site/docs/api/i2pcontrol.html:23 #: i2p2www/pages/site/docs/api/i2pcontrol.html:32 @@ -1898,7 +2483,7 @@ msgstr "" #: i2p2www/pages/site/docs/api/i2pcontrol.html:145 #: i2p2www/pages/site/docs/api/i2pcontrol.html:169 msgid "Response:" -msgstr "" +msgstr "Respuesta:" #: i2p2www/pages/site/docs/api/i2pcontrol.html:26 #: i2p2www/pages/site/docs/api/i2pcontrol.html:28 @@ -1936,40 +2521,44 @@ msgid "" "Token used for authenticating every request (excluding the 'Authenticate'" " RPC method)" msgstr "" +"Muestra usada para autentificar cada petición (excluyendo el método RPC " +"'Authenticate')" #: i2p2www/pages/site/docs/api/i2pcontrol.html:38 msgid "Implemented methods" -msgstr "" +msgstr "Métodos implemetados" #: i2p2www/pages/site/docs/api/i2pcontrol.html:39 msgid "" "Creates and returns an authentication token used for further " "communication." msgstr "" +"Crea y devuelve un token de autentificación usado para comunicaciones " +"posteriores." #: i2p2www/pages/site/docs/api/i2pcontrol.html:41 msgid "The version of the I2PControl API used by the client." -msgstr "" +msgstr "La versión del API de I2PControl usada por el cliente." #: i2p2www/pages/site/docs/api/i2pcontrol.html:42 msgid "The password used for authenticating against the remote server." -msgstr "" +msgstr "La contraseña usada para autentificarse en el servidor remoto." #: i2p2www/pages/site/docs/api/i2pcontrol.html:45 msgid "The primary I2PControl API version implemented by the server." -msgstr "" +msgstr "Versión del API principal de I2PControl implementado por el servidor." #: i2p2www/pages/site/docs/api/i2pcontrol.html:46 msgid "The token used for further communication." -msgstr "" +msgstr "La muestra usada para la posterior comunicación." #: i2p2www/pages/site/docs/api/i2pcontrol.html:49 msgid "Echoes the value of the echo key, used for debugging and testing." -msgstr "" +msgstr "Muestra el calor de la clave eco, se usa para depuración y pruebas." #: i2p2www/pages/site/docs/api/i2pcontrol.html:51 msgid "Value will be returned in response." -msgstr "" +msgstr "Un valor será devuelto como respuesta." #: i2p2www/pages/site/docs/api/i2pcontrol.html:52 #: i2p2www/pages/site/docs/api/i2pcontrol.html:62 @@ -1980,16 +2569,20 @@ msgid "" "Token used for authenticating the client. Is provided by the server via " "the 'Authenticate' RPC method." msgstr "" +"Token usado para autentificar el cliente. Es provisto por el servidor a " +"través del método RPC 'Authenticate'" #: i2p2www/pages/site/docs/api/i2pcontrol.html:55 msgid "Value of the key 'echo' in the request." -msgstr "" +msgstr "Valor de la clave 'echo', clave eco, en la petición." #: i2p2www/pages/site/docs/api/i2pcontrol.html:58 msgid "" "Fetches rateStat from router statManager. Creates stat if not already " "created." msgstr "" +"Obtiene el rateStat del StatManager del ruter. Crear el stat si no ha " +"sido creado ya." #: i2p2www/pages/site/docs/api/i2pcontrol.html:60 #, python-format @@ -1997,55 +2590,65 @@ msgid "" "Determines which rateStat to fetch, see ratestats." msgstr "" +"Determina que rateStat debe obtenerse, vea ratestats." #: i2p2www/pages/site/docs/api/i2pcontrol.html:61 msgid "Determines which period a stat is fetched for. Measured in ms." -msgstr "" +msgstr "Determina para qué periodo de tiempo se obtendrá el stat. Se mide en ms." #: i2p2www/pages/site/docs/api/i2pcontrol.html:65 msgid "Returns the average value for the reuested rateStat and period." -msgstr "" +msgstr "Devuelve el valor medio del periodo y del rateStat requerido." #: i2p2www/pages/site/docs/api/i2pcontrol.html:68 msgid "Manages I2PControl. Ports, passwords and the like." -msgstr "" +msgstr "Administra I2PControl, Puertos, contraseñas y cosas de ese tipo." #: i2p2www/pages/site/docs/api/i2pcontrol.html:70 msgid "" "Sets a new listen address for I2PControl (only 127.0.0.1 and 0.0.0.0 are " "implemented in I2PControl currently)." msgstr "" +"Cambia la dirección donde escucha I2PControl (sólo se han implementado " +"127.0.0.1 y 0.0.0.0 para I2PControl hasta ahora)." #: i2p2www/pages/site/docs/api/i2pcontrol.html:71 msgid "" "Sets a new password for I2PControl, all Authentication tokens will be " "revoked." msgstr "" +"Cambia la contraseña para I2PControl, todos los tokens de autentificación" +" serán revocados." #: i2p2www/pages/site/docs/api/i2pcontrol.html:72 msgid "Switches which port I2PControl will listen for connections on." -msgstr "" +msgstr "Cambia el puerto en el que I2PControl escuchará por conexiones." #: i2p2www/pages/site/docs/api/i2pcontrol.html:76 msgid "Returned if address was changed" -msgstr "" +msgstr "Devuelto si la dirección fue cambiada" #: i2p2www/pages/site/docs/api/i2pcontrol.html:77 #: i2p2www/pages/site/docs/api/i2pcontrol.html:78 msgid "Returned if setting was changed" -msgstr "" +msgstr "Devuelto si la configuración fue cambiada" #: i2p2www/pages/site/docs/api/i2pcontrol.html:79 msgid "Returns true if any changes were made." -msgstr "" +msgstr "Devuelve verdadero si se hizo algún cambio." #: i2p2www/pages/site/docs/api/i2pcontrol.html:80 msgid "Returns true if any changes requiring a restart to take effect were made." msgstr "" +"Devuelve verdadero si se hizo algún cambio que necesite un reinicio para " +"tener efecto." #: i2p2www/pages/site/docs/api/i2pcontrol.html:83 msgid "Fetches basic information about the I2P router. Uptime, version etc." msgstr "" +"Obtiene información básica sobre el ruter I2P. Tiempo encendido, versión," +" etc." #: i2p2www/pages/site/docs/api/i2pcontrol.html:102 msgid "What the status of the router is." @@ -2053,65 +2656,67 @@ msgstr "cuál es el estado del router." #: i2p2www/pages/site/docs/api/i2pcontrol.html:103 msgid "What the uptime of the router is in ms." -msgstr "" +msgstr "Cuanto tiempo lleva encendido el ruter en ms." #: i2p2www/pages/site/docs/api/i2pcontrol.html:104 msgid "What version of I2P the router is running." -msgstr "" +msgstr "Qué versión de I2P está ejecutando el ruter." #: i2p2www/pages/site/docs/api/i2pcontrol.html:105 msgid "The 1 second average inbound bandwidth in Bps." -msgstr "" +msgstr "Media del ancho de banda de entrada durante 1 segundo, en Bps." #: i2p2www/pages/site/docs/api/i2pcontrol.html:106 msgid "The 15 second average inbound bandwidth in Bps." -msgstr "" +msgstr "Media del ancho de banda de entrada durante 15 segundos, en Bps. " #: i2p2www/pages/site/docs/api/i2pcontrol.html:107 msgid "The 1 second average outbound bandwidth in Bps." -msgstr "" +msgstr "Media del ancho de banda de salida durante 1 segundo, en Bps." #: i2p2www/pages/site/docs/api/i2pcontrol.html:108 msgid "The 15 second average outbound bandwidth in Bps." -msgstr "" +msgstr "Media del ancho de banda de salida durante 15 segundos, en Bps. " #: i2p2www/pages/site/docs/api/i2pcontrol.html:109 msgid "What the current network status is. According to the below enum:" -msgstr "" +msgstr "Cuál es el estado actual de la red. De acuerdo con la lista:" #: i2p2www/pages/site/docs/api/i2pcontrol.html:128 msgid "How many tunnels on the I2P net are we participating in." -msgstr "" +msgstr "En cuantos túneles estamos participando en la red I2p." #: i2p2www/pages/site/docs/api/i2pcontrol.html:129 msgid "How many peers have we communicated with recently." -msgstr "" +msgstr "Con cuantos túneles nos hemos comunicado recientemente." #: i2p2www/pages/site/docs/api/i2pcontrol.html:130 msgid "How many peers are considered 'fast'." -msgstr "" +msgstr "Cuantos pares se consideran como 'rápidos'." #: i2p2www/pages/site/docs/api/i2pcontrol.html:131 msgid "How many peers are considered 'high capacity'." -msgstr "" +msgstr "Cuantos pares se consideran de 'alta capacidad'" #: i2p2www/pages/site/docs/api/i2pcontrol.html:132 msgid "Is the router reseeding hosts to its NetDB?" -msgstr "" +msgstr "¿Está el ruter resembrando servidores a su NetDB?" #: i2p2www/pages/site/docs/api/i2pcontrol.html:133 msgid "How many peers are known to us (listed in our NetDB)." -msgstr "" +msgstr "Cuantos pares conocemos (listados en nuestra NetDB)." #: i2p2www/pages/site/docs/api/i2pcontrol.html:136 msgid "Manages I2P router restart/shutdown." -msgstr "" +msgstr "Maneja el arrancado/apagado del ruter I2P." #: i2p2www/pages/site/docs/api/i2pcontrol.html:138 msgid "" "Initiates a router reseed, fetching peers into our NetDB from a remote " "host." msgstr "" +"Inicia el resembrado de un ruter, obteniendo los pares para nuestra NetDB" +" desde un ordenador remoto." #: i2p2www/pages/site/docs/api/i2pcontrol.html:139 msgid "Restarts the router." @@ -2122,6 +2727,8 @@ msgid "" "Restarts the router gracefully (waits for participating tunnels to " "expire)." msgstr "" +"Reinicia el ruter con cuidado (espera a que expiren los túneles " +"participantes)." #: i2p2www/pages/site/docs/api/i2pcontrol.html:141 msgid "Shuts down the router." @@ -2132,98 +2739,126 @@ msgid "" "Shuts down the router gracefully (waits for participating tunnels to " "expire)." msgstr "" +"Apaga el ruter con cuidado (espera a que expiren los túneles " +"participantes)." #: i2p2www/pages/site/docs/api/i2pcontrol.html:146 msgid "If requested, verifies that a reseed has been initiated." -msgstr "" +msgstr "Si se ha requerido, verifica que el resembrado ha sido iniciado." #: i2p2www/pages/site/docs/api/i2pcontrol.html:147 msgid "If requested, verifies that a restart has been initiated." -msgstr "" +msgstr "Si se ha requerido, verifica que el reinicio ha sido iniciado." #: i2p2www/pages/site/docs/api/i2pcontrol.html:148 msgid "If requested, verifies that a graceful restart has been initiated." -msgstr "" +msgstr "Si se ha requerido, verifica que el reinicio con cuidado ha sido iniciado." #: i2p2www/pages/site/docs/api/i2pcontrol.html:149 msgid "If requested, verifies that a shutdown has been initiated" -msgstr "" +msgstr "Si se ha requerido, verifica que el apagado ha sido iniciado." #: i2p2www/pages/site/docs/api/i2pcontrol.html:150 msgid "If requested, verifies that a graceful shutdown has been initiated" -msgstr "" +msgstr "Si se ha requerido, verifica que el apagado con cuidado ha sido iniciado." #: i2p2www/pages/site/docs/api/i2pcontrol.html:153 msgid "Fetches or sets various network related settings. Ports, addresses etc." msgstr "" +"Obtiene un conjunto de configuraciones relacionadas con la red. Puertos, " +"direcciones, etc." #: i2p2www/pages/site/docs/api/i2pcontrol.html:155 msgid "" "What port is used for the TCP transport. If null is submitted, current " "setting will be returned." msgstr "" +"Qué puerto es usado para el transporte TCP. Si se ha enviado null, se " +"devolverá la configuración actual." #: i2p2www/pages/site/docs/api/i2pcontrol.html:156 msgid "" "What hostname is used for the TCP transport. If null is submitted, " "current setting will be returned." msgstr "" +"Qué nombre de dominio es usado para el transporte TCP. Si se ha enviado " +"null, se devolverá la configuración actual." #: i2p2www/pages/site/docs/api/i2pcontrol.html:157 msgid "" "Use automatically detected ip for TCP transport. If null is submitted, " "current setting will be returned." msgstr "" +"Usar la ip detectada automáticamente para el transporte TCP . Si se ha " +"enciado null, se devolverá la configuración actual." #: i2p2www/pages/site/docs/api/i2pcontrol.html:158 msgid "" "What port is used for the UDP transport. If null is submitted, current " "setting will be returned." msgstr "" +"Qué puerto es usado para el transporte UDP. Si se ha enviado null, se " +"devolverá la configuración actual." #: i2p2www/pages/site/docs/api/i2pcontrol.html:159 msgid "" "What hostname is used for the UDP transport. If null is submitted, " "current setting will be returned." msgstr "" +"Qué nombre de dominio es usado para el transporte UDP. Si se ha enviado " +"null, se devolverá la configuración actual." #: i2p2www/pages/site/docs/api/i2pcontrol.html:160 msgid "" "Which methods should be used for detecting the ip address of the UDP " "transport. If null is submitted, current setting will be returned." msgstr "" +"Qué métodos deben susarse para detectar la dirección ip del transporte " +"UDP. Si se ha enviado null, se devolverá la configuración actual." #: i2p2www/pages/site/docs/api/i2pcontrol.html:161 msgid "What ip has been detected by the UDP transport." -msgstr "" +msgstr "Qué ip ha sido detectada para el transporte UDP." #: i2p2www/pages/site/docs/api/i2pcontrol.html:162 msgid "Is UPnP enabled. If null is submitted, current setting will be returned." msgstr "" +"Está UPnP activo. Si se ha enviado null, se devolverá la configuración " +"actual." #: i2p2www/pages/site/docs/api/i2pcontrol.html:163 msgid "" "How many percent of bandwidth is usable for participating tunnels. If " "null is submitted, current setting will be returned." msgstr "" +"Qué tanto por ciento del ancho de banda es utilizable para los túneles " +"participantes. Si se ha enviado null, se devolverá la configuración " +"actual." #: i2p2www/pages/site/docs/api/i2pcontrol.html:164 msgid "" "How many KB/s of inbound bandwidth is allowed. If null is submitted, " "current setting will be returned." msgstr "" +"Cuántos KB/s se permiten para el ancho de banda entrante. Si se ha " +"enviado null, se devolverá la configuración actual." #: i2p2www/pages/site/docs/api/i2pcontrol.html:165 msgid "" "How many KB/s of outbound bandwidth is allowed. If null is submitted, " "current setting will be returned." msgstr "" +"Cuántos KB/s se permiten para el ancho de banda de salida. Si se ha " +"enviado null, se devolverá la configuración actual." #: i2p2www/pages/site/docs/api/i2pcontrol.html:166 msgid "" "Is laptop mode enabled (change router identity and UDP port when IP " "changes ). If null is submitted, current setting will be returned." msgstr "" +"Si está el modo laptop activado (el cambio de la identidad del ruter " +"cuando cambia la IP). Si se ha enviado null, se devolverá la " +"configuración actual." #: i2p2www/pages/site/docs/api/i2pcontrol.html:167 msgid "" @@ -2231,76 +2866,96 @@ msgid "" "the 'Authenticate' RPC method. If null is submitted, current setting will" " be returned." msgstr "" +"El identificador (`token`) usado para la autentificación del cliente, es " +"proporcionado por el servidor a través del método 'Authenticate' " +"(autentificar) de RPC. Si se envía vacío ('null'), se devolverá el valor " +"de configuración actual." #: i2p2www/pages/site/docs/api/i2pcontrol.html:170 msgid "If requested, returns the port used for the TCP transport." -msgstr "" +msgstr "Si se solicita, devuelve el puerto usado para el transporte TCP." #: i2p2www/pages/site/docs/api/i2pcontrol.html:171 msgid "If requested, returns the hostname used for the TCP transport." msgstr "" +"Si se solicita, devuelve el nombre del servidor usado para el transporte " +"TCP." #: i2p2www/pages/site/docs/api/i2pcontrol.html:172 msgid "" "If requested, returns the method used for automatically detecting ip for " "the TCP transport." msgstr "" +"Si se solicita, devuelve el método usado para detectar automáticamente la" +" IP para el transporte TCP." #: i2p2www/pages/site/docs/api/i2pcontrol.html:173 msgid "If requested, returns the port used for the UDP transport." -msgstr "" +msgstr "Si se solicita, devuelve el puerto usado para el transporte UDP." #: i2p2www/pages/site/docs/api/i2pcontrol.html:174 msgid "If requested, returns the hostname used for the UDP transport." msgstr "" +"Si se solicita, devuelve el nombre del servidor usado para el transporte " +"UDP." #: i2p2www/pages/site/docs/api/i2pcontrol.html:175 msgid "" "If requested, returns methods used for detecting the ip address of the " "UDP transport." msgstr "" +"Si se solicita, devuelve los métodos usados para detectar la dirección IP" +" del transporte UDP." #: i2p2www/pages/site/docs/api/i2pcontrol.html:176 msgid "If requested, returns what ip has been detected by the UDP transport." msgstr "" +"Si se solicita, devuelve la IP que ha sido detectada por el transporte " +"UDP." #: i2p2www/pages/site/docs/api/i2pcontrol.html:177 msgid "If requested, returns the UPNP setting." -msgstr "" +msgstr "Si se solicita, devuelve el valor de la configuración UPnP." #: i2p2www/pages/site/docs/api/i2pcontrol.html:178 msgid "" "If requested, returns how many percent of bandwidth is usable for " "participating tunnels." msgstr "" +"Si se solicita, devuelve el porcentaje de ancho de banda disponible para " +"los túneles participantes." #: i2p2www/pages/site/docs/api/i2pcontrol.html:179 msgid "If requested, returns how many KB/s of inbound bandwidth is allowed." msgstr "" +"Si se solicita, devuelve el número de KB/s de ancho de banda de entrada " +"que están permitidos." #: i2p2www/pages/site/docs/api/i2pcontrol.html:180 msgid "If requested, returns how many KB/s of outbound bandwidth is allowed." msgstr "" +"Si se solicita, devuelve el número de KB/s de ancho de banda de salida " +"que están permitidos." #: i2p2www/pages/site/docs/api/i2pcontrol.html:181 msgid "If requested, returns the laptop mode." -msgstr "" +msgstr "Si se solicita, devuelve el valor del modo laptop (portátil)." #: i2p2www/pages/site/docs/api/i2pcontrol.html:182 msgid "Have the provided settings been saved." -msgstr "" +msgstr "Han sido guardadas las configuraciones proporcionadas." #: i2p2www/pages/site/docs/api/i2pcontrol.html:183 msgid "Is a restart needed for the new settings to be used." -msgstr "" +msgstr "Se necesita un reinicio para que las nuevas configuraciones se usen." #: i2p2www/pages/site/docs/api/i2pcontrol.html:186 msgid "denotes an optional value." -msgstr "" +msgstr "denota un valor opcional." #: i2p2www/pages/site/docs/api/i2pcontrol.html:187 msgid "denotes a possibly occuring return value" -msgstr "" +msgstr "denota un valor de retorno que posiblemente ocurra" #: i2p2www/pages/site/docs/api/i2pcontrol.html:189 msgid "Error codes" @@ -2308,11 +2963,11 @@ msgstr "Códigos de error" #: i2p2www/pages/site/docs/api/i2pcontrol.html:190 msgid "Standard JSON-RPC2 error codes." -msgstr "" +msgstr "Códigos de error standard JSON-RPC2." #: i2p2www/pages/site/docs/api/i2pcontrol.html:191 msgid "JSON parse error." -msgstr "" +msgstr "Error de procesado JSON." #: i2p2www/pages/site/docs/api/i2pcontrol.html:192 msgid "Invalid request." @@ -2332,35 +2987,39 @@ msgstr "Error interno." #: i2p2www/pages/site/docs/api/i2pcontrol.html:197 msgid "I2PControl specific error codes." -msgstr "" +msgstr "Códigos de error específicos de I2PControl." #: i2p2www/pages/site/docs/api/i2pcontrol.html:198 msgid "Invalid password provided." -msgstr "" +msgstr "Se proporcionó una contraseña no válida." #: i2p2www/pages/site/docs/api/i2pcontrol.html:199 msgid "No authentication token presented." -msgstr "" +msgstr "No se presentó la credencial (`token`) de autentificación." #: i2p2www/pages/site/docs/api/i2pcontrol.html:200 msgid "Authentication token doesn't exist." -msgstr "" +msgstr "La credencial (`token`) de autentificación no existe" #: i2p2www/pages/site/docs/api/i2pcontrol.html:201 msgid "The provided authentication token was expired and will be removed." -msgstr "" +msgstr "La credencial (`token`) de identificación ha expirado y será eliminada." #: i2p2www/pages/site/docs/api/i2pcontrol.html:202 msgid "" "The version of the I2PControl API used wasn't specified, but is required " "to be specified." msgstr "" +"La versión de la API I2PControl usada no fue especificada, pero se " +"requiere que sea especificada." #: i2p2www/pages/site/docs/api/i2pcontrol.html:203 msgid "" "The version of the I2PControl API specified is not supported by " "I2PControl." msgstr "" +"La versión de la API I2PControl especificada no está soportada por " +"I2PControl." #: i2p2www/pages/site/docs/api/i2ptunnel.html:13 #, python-format @@ -2381,6 +3040,22 @@ msgid "" "localhost:7657/i2ptunnel/." msgstr "" +"I2PTunnel es una herramienta para intermediar con, y proveer de servicios" +" a\n" +"I2P. El destino de un I2PTunnel puede ser definido usando un nombre de servidor \n" +"Base32, o una clave de destino completa" +" de 516-bytes. Un I2PTunnel establecido estará disponible sobre \n" +"su máquina cliente en localhost:puerto Si desea proporcionar un servicio" +" \n" +"sobre la red I2P, simplemente cree un I2PTunnel hasta la dirección " +"IP:puerto \n" +"apropiada. Se generarará una clave de destino de 516-bytes " +"correspondiente \n" +"para el servicio, y se hará disponible a través de I2P. Una interfaz web " +"para \n" +"la administración del I2PTunnel está disponible en localhost:7657/i2ptunnel/." #: i2p2www/pages/site/docs/api/i2ptunnel.html:25 msgid "Default Services" @@ -2388,7 +3063,7 @@ msgstr "Servicios predeterminados" #: i2p2www/pages/site/docs/api/i2ptunnel.html:26 msgid "Server tunnels" -msgstr "" +msgstr "Túneles de servidor" #: i2p2www/pages/site/docs/api/i2ptunnel.html:28 msgid "" @@ -2397,10 +3072,15 @@ msgid "" "and quick hosting on I2P.\n" "
    The document root is:" msgstr "" +"Servidor web I2P - Un túnel apuntando a un servidor web Jetty se \n" +"ejecuta en localhost:7658 para un " +"hospedaje conveniente \n" +"y rápido en I2P.\n" +"
    El documento raíz es: " #: i2p2www/pages/site/docs/api/i2ptunnel.html:36 msgid "Client tunnels" -msgstr "" +msgstr "Túneles de cliente" #: i2p2www/pages/site/docs/api/i2ptunnel.html:38 msgid "" @@ -2409,10 +3089,15 @@ msgid "" "Browsing internet through I2P uses a random proxy specified by the " "\"Outproxies:\" option." msgstr "" +"Un proxy HTTP usado para navegar por I2P y la Internet regular de forma " +"anónima \n" +"a través de I2P. La navegación por Internet a través de I2P usa un proxy " +"aleatorio\n" +"especificado por la opción \"Outproxies:\" (proxys de salida)." #: i2p2www/pages/site/docs/api/i2ptunnel.html:42 msgid "An IRC tunnel to the default anonymous IRC network, Irc2P." -msgstr "" +msgstr "Un túnel IRC hasta la red IRC anónima por defecto, Irc2P." #: i2p2www/pages/site/docs/api/i2ptunnel.html:43 #, python-format @@ -2427,6 +3112,8 @@ msgid "" "A SMTP service provided by postman at %(postman)s" msgstr "" +"Un servicio SMTP proporcionado por postman en %(postman)s" #: i2p2www/pages/site/docs/api/i2ptunnel.html:50 #, python-format @@ -2434,10 +3121,12 @@ msgid "" "The accompanying POP sevice of postman at %(postman)s" msgstr "" +"El servicio POP acompañante de postman en %(postman)s" #: i2p2www/pages/site/docs/api/i2ptunnel.html:55 msgid "Client Modes" -msgstr "" +msgstr "Modos de cliente" #: i2p2www/pages/site/docs/api/i2ptunnel.html:56 #: i2p2www/pages/site/docs/api/i2ptunnel.html:138 @@ -2451,6 +3140,9 @@ msgid "" "The tunnel is directed to a random host from the comma seperated (\", \")" " list of destinations." msgstr "" +"Abre un puerto TCP local que conecta con un servicio (como HTTP, FTP o \n" +"SMTP) en un destino dentro de I2P. El túnel es dirigido a un servidor \n" +"aleatorio desde la lista de destinos separados por comas (\", \")." #: i2p2www/pages/site/docs/api/i2ptunnel.html:63 msgid "" @@ -2459,6 +3151,12 @@ msgid "" "in a HTTP request. Supports proxying onto internet if an outproxy is " "provided. Strips HTTP connections of the following headers:" msgstr "" +"Un túnel de cliente-HTTP. El túnel conecta con el destino especificado " +"por la \n" +"URL en una petición HTTP. Soporta proxificación en Internet si se " +"proporciona \n" +"un proxy externo (`outproxy`). Desnuda las conexiones HTTP de las \n" +"siguientes cabeceras: " #: i2p2www/pages/site/docs/api/i2ptunnel.html:68 msgid "" @@ -2466,18 +3164,26 @@ msgid "" " and Accept-Ranges as they vary greatly between browsers and can be " "used as an identifier." msgstr "" +"Accept, Accept-Charset, Accept-Encoding, Accept-Language y Accept-" +"Ranges ya que varían bastante entre navegadores y pueden usarse como " +"identificador." #: i2p2www/pages/site/docs/api/i2ptunnel.html:76 msgid "" "HTTP client/server tunnels are via I2Ptunnel force-enabling compression " "via the following http headers:" msgstr "" +"Los túneles HTTP de cliente/servidor vía I2PTunnel, están habilitando \n" +"a la fuerza la compresión mediante las siguientes cabeceras HTTP:" #: i2p2www/pages/site/docs/api/i2ptunnel.html:83 msgid "" "Depending on if the tunnel is using an outproxy or not it will append the" " following User-Agent:" msgstr "" +"Dependiendo de si el túnel está usando un proxy externo (`outproxy`) o " +"no, \n" +"adherirá el siguiente Agente de Usuario (`User-Agent`):" #: i2p2www/pages/site/docs/api/i2ptunnel.html:87 msgid "Outproxy:" @@ -2485,7 +3191,7 @@ msgstr "Proxy de salida:" #: i2p2www/pages/site/docs/api/i2ptunnel.html:88 msgid "Internal I2P use:" -msgstr "" +msgstr "Uso interno de I2P:" #: i2p2www/pages/site/docs/api/i2ptunnel.html:93 msgid "" @@ -2494,14 +3200,19 @@ msgid "" "list of destinations. Only a whitelisted subset of IRC commands are " "allowed due to anonymity concerns." msgstr "" +"Crea una conexión a un servidor IRC aleatorio especificado por una lista " +"de \n" +"destinos separados por coma (\", \"). Sólo un subconjunto de comandos IRC" +" \n" +"de la lista blanca están permitidos debido a cuestiones de anonimato." #: i2p2www/pages/site/docs/api/i2ptunnel.html:97 msgid "Whitelist:" -msgstr "" +msgstr "Lista blanca:" #: i2p2www/pages/site/docs/api/i2ptunnel.html:112 msgid "Enables using the I2P router as a SOCKS proxy." -msgstr "" +msgstr "Habilita el uso del router I2P como un proxy SOCKS." #: i2p2www/pages/site/docs/api/i2ptunnel.html:117 msgid "" @@ -2509,12 +3220,18 @@ msgid "" "specified by\n" "IRC client mode." msgstr "" +"Habilita el uso de un router I2P como un proxy SOCKS con la lista blanca" +" \n" +"de comandos especificada por el modo cliente del IRC." #: i2p2www/pages/site/docs/api/i2ptunnel.html:123 msgid "" "Creates a HTTP tunnel and uses the HTTP request method \"CONNECT\" \n" "to build a TCP tunnel that usually is used for SSL and HTTPS." msgstr "" +"Crea un túnel HTTP y usa el método de petición HTTP \"CONNECT\" para \n" +"construír un túnel TCP que normalmente se usa para SSL y HTTPS." #: i2p2www/pages/site/docs/api/i2ptunnel.html:129 msgid "" @@ -2522,14 +3239,19 @@ msgid "" "client tunnel will \n" "subscribe to a streamr server tunnel." msgstr "" +"Crea un servidor-UDP adosado a un I2PTunnel de cliente `Streamr`. El " +"túnel \n" +"del cliente streamr se suscribirá a un túnel de servidor streamr." #: i2p2www/pages/site/docs/api/i2ptunnel.html:137 msgid "Server Modes" -msgstr "" +msgstr "Modos de servidor" #: i2p2www/pages/site/docs/api/i2ptunnel.html:139 msgid "Creates a destination to a local ip:port with an open TCP port." msgstr "" +"Crea un destino hacia una dirección IP:puerto local con un puerto TCP " +"abierto." #: i2p2www/pages/site/docs/api/i2ptunnel.html:144 msgid "" @@ -2538,6 +3260,11 @@ msgid "" "Accept-encoding: x-i2p-gzip, replies with Content-encoding: x-i2p-gzip in" " such a request." msgstr "" +"Crea un destino a un servidor HTTP local IP:puerto Soporta gzip para las" +" \n" +"peticiones con\n" +"`Accept-encoding: x-i2p-gzip`, responde con `Content-encoding: x-i2p-" +"gzip` a tal petición." #: i2p2www/pages/site/docs/api/i2ptunnel.html:150 msgid "" @@ -2547,6 +3274,13 @@ msgid "" " client-type\n" "requests, or loopback-testing an eepsite as a diagnostic tool." msgstr "" +"Funciona tanto como un I2PTunnel de servidor HTTP, como un I2PTunnel \n" +"de cliente HTTP sin capacidades de proxificación externa (`outproxying`)." +" \n" +"Una aplicación de ejemplo sería una aplicación web que realice peticiones" +" \n" +"tipo-cliente, o que realice pruebas-loopback a un eepsite a modo de \n" +"herramienta de diagnóstico." #: i2p2www/pages/site/docs/api/i2ptunnel.html:157 msgid "" @@ -2554,21 +3288,27 @@ msgid "" "and passes \n" "the clients destination key as a hostname to the IRC-server." msgstr "" +"Crea un destino que filtra la secuencia de registro de un cliente y pasa " +"la \n" +"clave de destino de los clientes como un nombre de servidor al servidor-" +"IRC." #: i2p2www/pages/site/docs/api/i2ptunnel.html:163 msgid "" "A UDP-client that connects to a media server is created. The UDP-Client " "is coupled with a Streamr server I2PTunnel." msgstr "" +"Se crea un cliente-UDP que conecta a los servidores de medios. El \n" +"cliente-UDP está emparejado con el I2PTunnel de servidor Streamr." #: i2p2www/pages/site/docs/api/ministreaming.html:2 #: i2p2www/pages/site/docs/api/ministreaming.html:17 msgid "Ministreaming Library" -msgstr "" +msgstr "Librería ministreaming" #: i2p2www/pages/site/docs/api/ministreaming.html:5 msgid "Note" -msgstr "" +msgstr "Nota" #: i2p2www/pages/site/docs/api/ministreaming.html:7 #, python-format @@ -2584,6 +3324,17 @@ msgid "" "Obsolete ministreaming classes and methods are clearly marked as " "deprecated in the Javadocs." msgstr "" +"La librería ministreaming ha sido mejorada y extendida por la librería streaming\"completa\". Ministreaming " +"está \n" +"desechada y es incompatible con las aplicaciones actuales. La siguiente \n" +"documentación es antigua. Observe también que esa libreria streaming \n" +"extiende la ministreaming en el mismo paquete Java " +"(net.i2p.client.streaming), \n" +"así que la documentation de la API actual " +"contiene \n" +"ambas. Las obsoletas clases y métodos de ministreaming están claramente \n" +"marcados como desechados en los Javadocs." #: i2p2www/pages/site/docs/api/ministreaming.html:19 #, python-format @@ -2603,6 +3354,19 @@ msgid "" " and to\n" "allow alternative optimized implementations." msgstr "" +"\n" +"La librería ministreaming es una capa encima del núcleo de I2CP \n" +"que permite flujos (`streams`) confiables, ordenados y autentificados de " +"mensajes para operar a través de una capa de mensajes no confiable, \n" +"desordenada y no autentificada. Justo como la relación de TCP hacia IP,\n" +"esta funcionalidad streaming tiene un completo conjunto de compromisos \n" +"de equilibrios y optimizaciones disponibles, pero en lugar de embeber " +"esta funcionalidad en el código base de I2P, ha sido desgajado en su " +"propia \n" +"librería, tanto para mantener separadas las complejidades propias de TCP" +" \n" +"como para permitir implementaciones optimizadas alternativas." #: i2p2www/pages/site/docs/api/ministreaming.html:30 #, python-format @@ -2630,6 +3394,28 @@ msgid "" "on average twice the time it takes to send a message before sending " "another." msgstr "" +"La librería ministream fue escrita por mihi como parte de su aplicación \n" +"I2PTunnel y después fue desgajada y \n" +"publicada bajo la licencia BSD. Se la llama librería \"mini\"streaming \n" +"porque hace algunas simplificaciones en la implementación, mientras una \n" +"librería streaming más robusta podría seguir siendo optimizada para " +"operar \n" +"sobre I2P. Los dos principales problemas con la librería ministreaming " +"son \n" +"su uso del tradicional protocolo TCP de establecimiento en dos fases, y " +"el \n" +"actual tamaño fijo de ventana (TCP) de 1. El problema del establecimiento" +" \n" +"es menor para streams de vida larga, pero para los de corta, tales como " +"las \n" +"peticiones HTTP rápidas, el impacto puede ser significativo. Y en cuanto\n" +"al tamaño de ventana (TCP), la librería ministreaming no mantiene " +"identificador \n" +"u orden alguno (o no incluye ACK o SACK de nivel aplicación alguno) junto" +" \n" +"con los mensajes enviados. así que, de media, debe esperar el doble de \n" +"tiempo del que tarda en enviar un mensaje antes de enviar otro." #: i2p2www/pages/site/docs/api/ministreaming.html:45 #, python-format @@ -2646,6 +3432,19 @@ msgid "" "through\n" "SAM's streaming support." msgstr "" +"Incluso con esos problemas, la librería ministreaming se comporta " +"bastante \n" +"bien en muchas situaciones, y su API es tanto \n" +"bastante simple como capaz de mantenerse invariante mientras se " +"introducen \n" +"diferentes implementaciones streaming. La librería se despliega en su " +"propio \n" +"`ministreaming.jar`. Los desarrolladores en Java a los que les gustaría " +"usarla \n" +"pueden acceder directamente a la API, mientras que los desarrolladores en" +" \n" +"otros lenguajes pueden usarla a través del soporte streaming de SAM." #: i2p2www/pages/site/docs/api/socks.html:4 msgid "SOCKS and SOCKS proxies" @@ -2660,6 +3459,12 @@ msgid "" "Both shared-clients and non-shared are supported.\n" "There is no SOCKS outproxy so it is of limited use." msgstr "" +"\n" +"El proxy SOCKS está funcionando desde la versión `0.7.1`. SOCKS 4/4a/5 \n" +"están soportados. Habilite SOCKS mediante la creación de un túnel de \n" +"cliente SOCKS en I2PTunnel. Ambos clientes-compartidos están soportados." +" \n" +"No hay proxy externo (`outproxy`) SOCKS, así que es de uso limitado." #: i2p2www/pages/site/docs/api/socks.html:12 #, python-format @@ -2667,6 +3472,8 @@ msgid "" "\n" "As it says on the FAQ:" msgstr "" +"\n" +"Como lo dice en las FAQ: " #: i2p2www/pages/site/docs/api/socks.html:15 msgid "" @@ -2680,10 +3487,22 @@ msgid "" "\n" "extremely dangerous." msgstr "" +"Muchas aplicaciones filtran información sensible que podría identificarle" +" en \n" +"Internet. I2P sólo filtra la conexión de datos, pero si el programa que " +"usted \n" +"intenta ejecutar envía esta información como contenido, I2P no tiene " +"manera \n" +"de proteger su anonimato. Por ejemplo, algunas aplicaciones de correo \n" +"enviarán la dirección IP de la máquina sobre la que estén ejecutando el \n" +"servidor de correo. No hay forma de I2P filtre esto, por lo que usar I2P " +"para \n" +"socksificar ('socksify') aplicaciones existentes es posible, pero \n" +"extremadamente peligroso." #: i2p2www/pages/site/docs/api/socks.html:25 msgid "And quoting from a 2005 email:" -msgstr "" +msgstr "Y citando a un email de 2005: " #: i2p2www/pages/site/docs/api/socks.html:28 msgid "" @@ -2693,6 +3512,13 @@ msgid "" "developers of anonymity and security software to have the safety of\n" "our end users foremost in our minds." msgstr "" +"... hay una razón por la que ambos, los humanos y otros, hemos construído" +" \n" +"y abandonado los proxys SOCKS. Rebotar el tráfico arbitrario es " +"simplemente \n" +"bastante inseguro, y nos corresponde a nosotros como desarrolladores \n" +"de software de anonimato y seguridad tener la seguridad de nuestros \n" +"usuarios finales entre nuestros pensamientos prioritarios." #: i2p2www/pages/site/docs/api/socks.html:36 msgid "" @@ -2706,6 +3532,20 @@ msgid "" "anonymous environments is no small feat, orders of magnitude more\n" "work that simply using the existing I2P APIs." msgstr "" +"Esperar que simplemente podamos adherir un cliente arbitrario sobre I2P \n" +"sin auditar la seguridad y anonimato tanto de su comportamiento como de " +"sus protocolos expuestos, es ingenuo. Casi cualquier aplicación y " +"protocolo \n" +"viola el anonimato, a menos que fuera específicamente diseñado para lo \n" +"contrario, e incluso entonces la mayoría de aquellos también lo hace.\n" +"Esa es la realidad. Los usuarios finales están mejor servidos con " +"sistemas \n" +"diseñados para el anonimato y la seguridad. Modificar sistemas existentes" +" \n" +"para trabajar en entornos anónimos no es una cuestión banal, supone " +"varios órdenes de magnitud más de trabajo que simplemente usar las APIs" +" \n" +"existentes de I2P." #: i2p2www/pages/site/docs/api/socks.html:48 msgid "" @@ -2716,6 +3556,13 @@ msgid "" "UDP support is stubbed out but not working yet.\n" "Outproxy selection by port number is stubbed out." msgstr "" +"El proxy SOCKS soporta los nombres de guías de direcciones (`adressbook')" +" \n" +"standard, pero no los destinos Base64. Los hashes Base32 deberían \n" +"funcionar desde la versión `0.7`. Sólo soporta conexiones salientes, es \n" +"decir, se erradicó el soporte para un I2PTunnel de cliente. Se forzó la " +"inclusión del soporte UDP, pero no funciona aún. Se forzó la inclusión de" +" la selección mediante número de puerto de proxy externo (`outproxy`)." #: i2p2www/pages/site/docs/api/socks.html:57 #: i2p2www/pages/site/docs/how/tunnel-routing.html:281 @@ -2728,16 +3575,20 @@ msgid "" "The notes for Meeting 81 and\n" "Meeting 82 in March 2004." msgstr "" +"Las notas para la Reunión 81 y la Reunión 82 en marzo de 2004." #: i2p2www/pages/site/docs/api/socks.html:69 msgid "If You Do Get Something Working" -msgstr "" +msgstr "Si consigue que algo funcione" #: i2p2www/pages/site/docs/api/socks.html:70 msgid "" "Please let us know. And please provide substantial warnings about the\n" "risks of socks proxies." msgstr "" +"Por favor, permítanos saberlo. Y, por favor, proporcione advertencias \n" +"sustanciales acerca de los riesgos de los proxys SOCKS." #: i2p2www/pages/site/docs/api/streaming.html:3 #: i2p2www/pages/site/docs/spec/streaming.html:3 @@ -2756,6 +3607,15 @@ msgid "" "The other end-to-end transport library for client communication is the\n" "datagram library." msgstr "" +"La librería streaming técnicamente es parte de la capa de \"aplicación\"," +" ya \n" +"que no es una función central del router. En la práctica, sin embargo, " +"proporciona una función vital para casi todas las aplicaciones I2P \n" +"existentes, proveyéndolas de flujos (`streams`) tipo-TCP sobre I2P, y " +"permitiendo que las aplicaciones existentes sean fácilmente portadas \n" +"a I2P. La otra librería de transporte extremo-a-extremo para la " +"comunicación \n" +"de clientes, es la librería datagram." #: i2p2www/pages/site/docs/api/streaming.html:18 #, python-format @@ -2774,6 +3634,19 @@ msgid "" " and to\n" "allow alternative optimized implementations." msgstr "" +"La librería streaming es una capa sobre el núcleo de la API I2CP que permite que flujos (`streams`) de " +"mensajes \n" +"confiables, ordenados y autentificados, operen a través de una capa de \n" +"mensaje no confiable, desordenada y no autentificada. Justo como la \n" +"relación TCP hacia IP, esta funcionalidad streaming tiene un conjunto \n" +"completo de compromisos de equilibrio y optimizaciones disponibles, pero" +" \n" +"en lugar de embeber esta funcionalidad junto al código base de I2P, ha " +"sido \n" +"desgajado en su propia librería para mantener las complejidades propias " +"de \n" +"TCP aparte, y para permitir implementaciones optimizadas alternativas." #: i2p2www/pages/site/docs/api/streaming.html:29 msgid "" @@ -2794,6 +3667,21 @@ msgid "" " browser \n" "immediately." msgstr "" +"En consideración al relativamente alto coste de los mensajes, el " +"protocolo \n" +"de la librería streaming para programar y entregar esos mensajes ha \n" +"sido optimizado para permitir que los mensajes individuales pasen a \n" +"contener tanta información como esté disponible. Por ejemplo, una pequeña" +" \n" +"transacción HTTP proxificada a través de la librería streaming puede ser" +" \n" +"completada en un sólo viaje de ida y vuelta - los primeros mensajes \n" +"empaquetan un SYN, FIN, y la pequeña carga de la petición HTTP, y la \n" +"respuesta empaqueta el SYN, FIN, ACK, y la carga de la respuesta HTTP. \n" +"Aunque un ACK adicional debe ser transmitido para decirle al servidor " +"HTTP \n" +"que el SYN/FIN/ACK ha sido recibido, el proxy HTTP local a menudo puede \n" +"entregar la respuesta completa de forma inmediata al navegador. " #: i2p2www/pages/site/docs/api/streaming.html:42 msgid "" @@ -2804,6 +3692,11 @@ msgid "" "(ACK,\n" "SYN, FIN, RST, rto calculation, etc)." msgstr "" +"La librería streaming presenta mucha semejanza a una abstracción de \n" +"TCP, con sus ventanas (de protocolo) deslizantes, algoritmos de control \n" +"de congestión (tanto de inicio lento como de elusión de congestión), y " +"comportamiento general del paquete (ACK, SYN, FIN, RST, cálculo RTO, " +"etc.)." #: i2p2www/pages/site/docs/api/streaming.html:49 msgid "" @@ -2813,6 +3706,11 @@ msgid "" "It has a one-phase setup, and\n" "it contains a full windowing implementation." msgstr "" +"La librería streaming es \n" +"una librería robusta\n" +"que está optimizada para operar sobre I2P.\n" +"Tiene una instalación de fase-única, y \n" +"contiene una implementación de ventanización (protocolo) completa." #: i2p2www/pages/site/docs/api/streaming.html:58 msgid "API" @@ -2829,6 +3727,14 @@ msgid "" "through the\n" "streaming library, to be interpreted by I2CP." msgstr "" +"La API de la librería streaming proporciona un paradigma de socket \n" +"standard a las aplicaciones Java. La API de nivel-inferior de I2CP \n" +"está completamente escondida, exceptuando que esas aplicaciones \n" +"pueden pasar parámetros I2CP a través de" +" \n" +"la librería streaming, \n" +"para que sean interpretados por I2CP." #: i2p2www/pages/site/docs/api/streaming.html:67 #, python-format @@ -2846,15 +3752,27 @@ msgid "" "or\n" "receive connections with an I2PServerSocket." msgstr "" +"La interfaz standard de la librería streaming es para que la aplicación " +"use el \n" +"I2PSocketManagerFactory para crear un I2PSocketManager. \n" +"La aplicación pregunta entonces al administrador de socket por una \n" +"I2PSession, que producirá una conexión al " +"router vía I2CP. \n" +"La aplicación puede entonces establecer conexiones con un I2PSocket \n" +"o recibir conexiones con un I2PServerSocket." #: i2p2www/pages/site/docs/api/streaming.html:82 #, python-format msgid "Here are the full streaming library Javadocs." msgstr "" +"Aquí están los Javadocs de la librería streaming " +"completa." #: i2p2www/pages/site/docs/api/streaming.html:86 msgid "For a good example of usage, see the i2psnark code." -msgstr "" +msgstr "Para ver un buen ejemplo de uso, vea el código de i2psnark." #: i2p2www/pages/site/docs/api/streaming.html:91 msgid "Options and Defaults" @@ -2877,6 +3795,19 @@ msgid "" " _i2cpPort, opts).\n" "Time values are in ms." msgstr "" +"Las opciones y los actuales valores predeterminados están listados " +"debajo. \n" +"Las opciones diferencian mayúsculas/minúsculas y pueden ser \n" +"establecidas para todo el router, para un cliente concreto, o para un \n" +"socket individual en base a cada conexión. Muchos valores son ajustados \n" +"para el rendimiento HTTP sobre las condiciones típicas de I2P. Otras \n" +"aplicaciones tales como los servicios entre pares (`peer-to-peer`) son \n" +"fuertemente animadas a que los modifiquen como sea necesario, \n" +"configurando las opciones y pasándolas a través de la llamada a \n" +"I2PSocketManagerFactory.createManager(_i2cpHost," +" _i2cpPort, opts). \n" +"Los valores de los tiempos están en ms." #: i2p2www/pages/site/docs/api/streaming.html:103 #, python-format @@ -2888,6 +3819,14 @@ msgid "" "Also note that many options only apply to servers listening for incoming " "connections." msgstr "" +"Observe que las APIs de capa-superior, tales como SAM, BOB, e \n" +"I2PTunnel, pueden imponer sus propias " +"configuraciones \n" +"predeterminadas sobre estas configuraciones por defecto. Observe también" +" \n" +"que muchas opciones sólo se aplican a los servidores que están \n" +"escuchando conexiones entrantes." #: i2p2www/pages/site/docs/api/streaming.html:110 msgid "" @@ -2895,6 +3834,9 @@ msgid "" "active socket manager or session.\n" "See the javadocs for details." msgstr "" +"Desde la versión 0.9.1 la mayoría de las opciones, pero no todas, pueden " +"ser cambiadas en un administrador de socket activo o sesión. \n" +"Vea los Javadocs para más detalles." #: i2p2www/pages/site/docs/api/streaming.html:117 #: i2p2www/pages/site/docs/protocol/i2cp.html:94 @@ -2929,6 +3871,8 @@ msgid "" "Comma- or space-separated list of Base64 peer Hashes used for either " "access list or blacklist." msgstr "" +"Lista separada por comas - o espacios - de hashes de pares (`peers`) " +"Base64 usada bien como lista de acceso, o como lista negra." #: i2p2www/pages/site/docs/api/streaming.html:121 #: i2p2www/pages/site/docs/api/streaming.html:127 @@ -2951,19 +3895,19 @@ msgstr "" #: i2p2www/pages/site/docs/api/streaming.html:328 #, python-format msgid "As of release %(release)s." -msgstr "" +msgstr "Desde la versión %(release)s." #: i2p2www/pages/site/docs/api/streaming.html:125 msgid "Use the access list as a whitelist for incoming connections." -msgstr "" +msgstr "Usar la lista de acceso como lista blanca para conexiones entrantes." #: i2p2www/pages/site/docs/api/streaming.html:131 msgid "Use the access list as a blacklist for incoming connections." -msgstr "" +msgstr "Usar la lista de acceso como lista negra para conexiones entrantes." #: i2p2www/pages/site/docs/api/streaming.html:145 msgid "Whether to respond to incoming pings" -msgstr "" +msgstr "Responder o no a los pings entrantes." #: i2p2www/pages/site/docs/api/streaming.html:157 msgid "" @@ -2975,12 +3919,21 @@ msgid "" "outside the\n" "router in a separate JVM and context." msgstr "" +"Lista separada por comas - o espacios - de hashes de pares (`peers`) \n" +"Base64 que sera usada como lista negra para las conexiones entrantes a \n" +"TODOS los destinos en el contexto. Esta opción debe ser configurada en \n" +"las propiedades contextuales, NO en el argumento createManager() de las \n" +"opciones. Observe que establecer esto en el contexto del router no " +"afectará \n" +"a clientes fuera del router en una JVM y contexto aparte." #: i2p2www/pages/site/docs/api/streaming.html:167 msgid "" "How much transmit data (in bytes) will be accepted that hasn't been " "written out yet." msgstr "" +"Cuántos datos de transmisión (en bytes) serán aceptados que no hayan \n" +"sido emitidos aún." #: i2p2www/pages/site/docs/api/streaming.html:171 msgid "" @@ -2990,6 +3943,12 @@ msgid "" "while in I2P, window sizes are in messages.\n" "A higher number means slower growth." msgstr "" +"Cuando estamos evitando la congestión, aumentamos el tamaño de la \n" +"ventana (protocolo) al ritmo de 1/(tamañodeventana*factor)." +" \n" +"En TCP standard, los tamaños de ventana se miden en bytes, mientras que \n" +"en I2P los tamaños de ventana se miden en mensajes. Un número más alto \n" +"significa un crecimiento más lento." #: i2p2www/pages/site/docs/api/streaming.html:178 msgid "" @@ -3000,18 +3959,30 @@ msgid "" "until the output stream is flushed, the buffer fills, \n" "or that many milliseconds pass, and include any initial data with the SYN." msgstr "" +"Cuánto esperar después de crear una instancia de nueva conexión antes de" +" \n" +"intentar conectar realmente. Si esto es <= 0 conecta inmediatamente \n" +"sin datos inciales. Si es mayor que 0, espera hasta que la salida del " +"flujo de \n" +"datos (`stream`) sea evacuada, se llene el buffer, o que pasen muchos \n" +"milisegundos, e incluye cualquier dato inicial con el SYN." #: i2p2www/pages/site/docs/api/streaming.html:186 msgid "" "How long to block on connect, in milliseconds. Negative means " "indefinitely. Default is 5 minutes." msgstr "" +"Durante cuánto bloquear al conectar, en milisegundos. Valores negativos \n" +"significan indefinidamente. El valor predeterminado es 5 minutos." #: i2p2www/pages/site/docs/api/streaming.html:190 msgid "" "Whether to disable warnings in the logs when an incoming connection is " "rejected due to connection limits." msgstr "" +"Desactivar o no las advertencias en los registros (`logs`), cuando se " +"rechaza \n" +"una conexión entrante debido a los límites de la conexión." #: i2p2www/pages/site/docs/api/streaming.html:196 msgid "" @@ -3021,6 +3992,11 @@ msgid "" "(released March 2009). Set to true if running multiple protocols on this " "Destination." msgstr "" +"Escuchar o no sólo el protocolo streaming. Configurando a verdadero \n" +"(`true`) prohibirá la comunicación con Destinos que usen una versión más" +" \n" +"temprana que la 0.7.1 (publicada en marzo de 2009). Configure a \n" +"verdadero si ejecuta múltiples protocolos sobre este Destino." #: i2p2www/pages/site/docs/api/streaming.html:204 msgid "" @@ -3028,6 +4004,9 @@ msgid "" "What to do on an inactivity timeout - do nothing, disconnect, or send a " "duplicate ack." msgstr "" +"(0=nada, 1=desconectar)\n" +"Qúe hacer durante un periodo de inactividad - no hacer nada, desconectar," +" o enviar un ACK duplicado." #: i2p2www/pages/site/docs/api/streaming.html:212 msgid "" @@ -3035,6 +4014,9 @@ msgid "" "1000.\n" "Not fully implemented; see below." msgstr "" +"El valor incial del campo de demora del reenvío en la cabecera del " +"paquete, \n" +"marca 1000. No está implementado completamente; vea debajo." #: i2p2www/pages/site/docs/api/streaming.html:217 msgid "" @@ -3051,28 +4033,35 @@ msgstr "" #: i2p2www/pages/site/docs/api/streaming.html:230 msgid "if no sharing data available" -msgstr "" +msgstr "si no hay datos compatidos disponibles" #: i2p2www/pages/site/docs/api/streaming.html:230 msgid "" "In standard TCP, window sizes are in bytes, while in I2P, window sizes " "are in messages." msgstr "" +"En TCP standard, los tamaños de las ventanas se miden en bytes, mientras" +" \n" +"que en I2P los tamaños de las ventanas se miden en mensajes." #: i2p2www/pages/site/docs/api/streaming.html:242 msgid "" "(0 or negative value means unlimited)\n" "This is a total limit for incoming and outgoing combined." msgstr "" +"(0 o valores negativos significan ilimitado) \n" +"Esto es un límite total para la combinación entrante y saliente." #: i2p2www/pages/site/docs/api/streaming.html:247 msgid "Incoming connection limit (per peer; 0 means disabled)" msgstr "" +"Límite de conexión entrante (por pares ('peer`); 0 significa " +"deshabilitado)" #: i2p2www/pages/site/docs/api/streaming.html:253 #: i2p2www/pages/site/docs/api/streaming.html:259 msgid "(per peer; 0 means disabled)" -msgstr "" +msgstr "(por pares (`peer`); 0 significa deshabilitado)" #: i2p2www/pages/site/docs/api/streaming.html:265 msgid "The MTU in bytes." @@ -3080,11 +4069,13 @@ msgstr "La MTU en bytes." #: i2p2www/pages/site/docs/api/streaming.html:269 msgid "Maximum number of retransmissions before failure." -msgstr "" +msgstr "Número máximo de retransmisiones antes de fallo." #: i2p2www/pages/site/docs/api/streaming.html:273 msgid "Incoming connection limit (all peers; 0 means disabled)" msgstr "" +"Límite de conexión entrante (todos los pares (`peers`); 0 significa " +"deshabilitado)" #: i2p2www/pages/site/docs/api/streaming.html:279 #: i2p2www/pages/site/docs/api/streaming.html:286 @@ -3092,6 +4083,9 @@ msgid "" "(all peers; 0 means disabled)\n" "Use with caution as exceeding this will disable a server for a long time." msgstr "" +"(todos los pares (`peers`); 0 significa deshabilitado)\n" +"Usar con precaución ya que exceder esto deshabilitará un servidor por un " +"largo periodo." #: i2p2www/pages/site/docs/api/streaming.html:295 msgid "" @@ -3099,10 +4093,15 @@ msgid "" "This doesn't currently do anything, but setting it to a value other than " "1 will cause an error." msgstr "" +"(2=interactivo no soportado)\n" +"Esto actualmente no hace nada, pero configurándolo a un valor distino de " +"1 causará un error." #: i2p2www/pages/site/docs/api/streaming.html:300 msgid "How long to block on read, in milliseconds. Negative means indefinitely." msgstr "" +"Durante cuánto bloquear al leer, en milisegundos. Valores negativos " +"significan indefinidamente." #: i2p2www/pages/site/docs/api/streaming.html:304 msgid "" @@ -3111,6 +4110,11 @@ msgid "" "while in I2P, window sizes are in messages.\n" "A higher number means slower growth." msgstr "" +"Cuando estemos en un inicio lento, elevaremos el tamaño de la ventana \n" +"(del protocolo) a un ritmo de 1/(factor). En TCP standard, los tamaños de" +" ventana se miden en bytes, mientras que en I2P los tamaños de ventana se" +" miden en mensajes. Un número más alto significa un crecimiento más " +"lento." #: i2p2www/pages/site/docs/api/streaming.html:311 #: i2p2www/pages/site/docs/api/streaming.html:318 @@ -3125,6 +4129,8 @@ msgid "" "How long to block on write/flush, in milliseconds. Negative means " "indefinitely." msgstr "" +"Durante cuánto bloquear al escribir/limpiar, en milisegundos. Los valores" +" negativos significan indefinidamente." #: i2p2www/pages/site/docs/api/streaming.html:340 #: i2p2www/pages/site/docs/spec/streaming.html:10 @@ -3133,7 +4139,7 @@ msgstr "Especificación del protocolo" #: i2p2www/pages/site/docs/api/streaming.html:342 msgid "See the Streaming Library Specification page." -msgstr "" +msgstr "Vea la página Especificación de la librería streaming." #: i2p2www/pages/site/docs/api/streaming.html:346 msgid "Implementation Details" @@ -3150,6 +4156,12 @@ msgid "" "The peer replies with a packet with the SYNCHRONIZE flag set. This packet" " may contain the initial response data as well." msgstr "" +"El iniciador envía un paquete con el distintitivo SYNCHRONIZE " +"(sincronizar) \n" +"establecido. Este paquete puede contener también los datos iniciales. El " +"par (`peer`) responde con un paquete con el distintivo SYNCHRONIZE " +"establecido. Este paquete puede contener también los datos de respuesta " +"iniciales" #: i2p2www/pages/site/docs/api/streaming.html:354 msgid "" @@ -3160,10 +4172,19 @@ msgid "" "period of time, as they may\n" "arrive out of order, in advance of the SYNCHRONIZE packet." msgstr "" +"El iniciador puede enviar paquetes de datos adicionales, hasta el tamaño " +"de \n" +"ventana inicial, antes de recibir la respuesta SYNCHRONIZE. Estos \n" +"paquetes también tendrán el campo `envíar Identificador de Stream` \n" +"establecido a 0. Los receptores deben guardar en el buffer los paquetes \n" +"recibidos sobre flujos (`streams`) desconocidos durante un periodo corto " +"de \n" +"tiempo, ya que pueden llegar estropeados, adelantándose al paquete \n" +"SYNCHRONIZE." #: i2p2www/pages/site/docs/api/streaming.html:361 msgid "MTU Selection and Negotiation" -msgstr "" +msgstr "Selección y negociación MTU" #: i2p2www/pages/site/docs/api/streaming.html:362 msgid "" @@ -3177,6 +4198,14 @@ msgid "" "I2NP tunnel messages,\n" "including overhead for the typical case." msgstr "" +"El máximo tamaño de mensaje (también llamado MTU / MRU) es negociado \n" +"al menor valor soportado por los dos pares (`peers`). Como los mensajes \n" +"túnel están acotados a 1KB, una elección MTU pobre llevaría a una gran " +"cantidad de tráfico de control. La MTU está especificada por la opción " +"i2p.streaming.maxMessageSize. La MTU está especificada por la opción " +"i2p.streaming.maxMessageSize. La MTU actual por defecto de 1720 fue \n" +"elegida para encajar precisamente en dos mensajes túnel I2NP de 1K, \n" +"incluyendo el tráfico de control para un caso típico." #: i2p2www/pages/site/docs/api/streaming.html:371 msgid "" @@ -3195,6 +4224,25 @@ msgid "" "latency, reliability, and efficiency, especially for long-lived " "connections." msgstr "" +"El primer mensaje en una conexión incluye un Destino de 387 bytes " +"(típico) \n" +"añadido por la capa streaming, y usualmente un LeaseSet (todos los leases" +" o túneles autorizados a recibir conexiones para un destino concreto) de " +"898 \n" +"bytes (típico), y claves de Sesión, empaquetadas en un mensaje Ajo \n" +"(`Garlic`) por el router (El LeaseSet y las Claves de Sesión no serán \n" +"empaquetadas si se estableció previamente una Sesión ElGamal). Por lo \n" +"tanto, la meta de encajar una petición HTTP completa en un sólo \n" +"mensaje I2NP (I2P Network Protocol) de 1KB no siempre es alcanzable. Sin" +" \n" +"embargo, la elección de MTU, junto con una cuidadosa implementación de \n" +"fragmentación y estrategias de elaboración de lotes en el procesador del" +" \n" +"túnel de la pasarela de salida (`gateway`), son factores importantes en " +"el \n" +"ancho de banda, latencia, confiabilidad y eficiencia de la red, " +"especialmente \n" +"para conexión de vida-larga." #: i2p2www/pages/site/docs/api/streaming.html:382 #, python-format @@ -3203,6 +4251,10 @@ msgid "" "the I2CP layer.\n" "There is no checksum field in the streaming protocol." msgstr "" +"La integridad de los datos está asegurada por el checksum CRC-32 de gzip" +" \n" +"implementado en la capa I2CP. No hay un " +"campo checksum en el protocolo streaming." #: i2p2www/pages/site/docs/api/streaming.html:390 #, python-format @@ -3217,10 +4269,17 @@ msgid "" "packet delimiter\n" "mechanism or payload length field in the streaming protocol." msgstr "" +"Cada paquete es enviado a través de I2P como un solo mensaje (o como un " +"clavo en un mensaje Garlic). La " +"encapsulación de los mensajes es implementada en el I2CP subyacente, en el I2NP, y en las capas de los túneles de mensajes. No hay mecanismo " +"delimitador o campo de tamaño del payload en el protocolo de streaming." #: i2p2www/pages/site/docs/api/streaming.html:400 msgid "Windowing" -msgstr "" +msgstr "Ventanización" #: i2p2www/pages/site/docs/api/streaming.html:401 msgid "" @@ -3229,10 +4288,16 @@ msgid "" "phases, with exponential backoff.\n" "Windowing and acknowledgments use packet count, not byte count." msgstr "" +"La librería streaming utiliza fases standard de inicio-lento (crecimiento" +" \n" +"exponencial de la ventana (del protocolo)) y de elusión de congestión \n" +"(crecimiento lineal de la ventana), con retroceso exponencial. La \n" +"ventanización y los acuses de recibo ('acknowledments') cuentan paquetes," +" no bytes." #: i2p2www/pages/site/docs/api/streaming.html:408 msgid "Close" -msgstr "" +msgstr "Cerrar" #: i2p2www/pages/site/docs/api/streaming.html:409 msgid "" @@ -3242,10 +4307,14 @@ msgid "" "\n" "CLOSE packets may contain data as well." msgstr "" +"Cualquier paquete, incluyendo uno con el distintivo SYNCHRONIZE " +"establecido, puede haber enviado también el distintivo CLOSE. La \n" +"conexión no está cerrada hasta que el par (`peer`) responde con el \n" +"distintivo CLOSE. Los paquetes CLOSE también pueden contener datos." #: i2p2www/pages/site/docs/api/streaming.html:416 msgid "Control Block Sharing" -msgstr "" +msgstr "Compartición del bloque de control" #: i2p2www/pages/site/docs/api/streaming.html:417 msgid "" @@ -3273,6 +4342,8 @@ msgid "" "The following parameters are hardcoded, but may be of interest for " "analysis:" msgstr "" +"Los siguientes parámetros son internos, pero pueden ser de interés para " +"el análisis:" #: i2p2www/pages/site/docs/api/streaming.html:458 #: i2p2www/pages/site/docs/how/network-database.html:822 @@ -3301,6 +4372,21 @@ msgid "" "retransmitting lost messages, and the latency and overhead of multiple " "messages." msgstr "" +"La librería streaming ha crecido orgánicamente para I2P - primero mihi \n" +"implementó la \"librería mini streaming\" como parte de I2PTunnel, que \n" +"estaba limitada a un tamaño de ventana de 1 mensaje (requiriendo un ACK \n" +"antes de enviar el siguiente), y entonces fue desgajado en una interfaz \n" +"streaming genérica (a semejanza de los sockets TCP) y la implementación \n" +"streaming completa fue desplegada con un protocolo de ventanas " +"deslizantes y optimizaciones para tener en cuenta el alto valor del " +"producto \n" +"(ancho-de-banda x demora). Los flujos (`streams`) individuales pueden \n" +"ajustar su tamaño máximo de paquete y otras opciones. El tamaño \n" +"predeterminado del mensaje se selecciona para encajar de forma precisa \n" +"en dos mensajes túnel I2NP (I2P Network Protocol) de 1KB, y es un \n" +"compromiso de equilibrio razonable entre el coste en ancho de banda de \n" +"retransmitir mensajes perdidos, y la latencia y tráfico de control de \n" +"múltiples mensajes." #: i2p2www/pages/site/docs/api/streaming.html:473 #: i2p2www/pages/site/docs/how/elgamal-aes.html:331 @@ -3323,10 +4409,16 @@ msgid "" "application-level performance, and as such, is an important\n" "area for further analysis." msgstr "" +"El comportamiento de la librería streaming tiene un profundo impacto " +"sobre\n" +"el rendimiento en el nivel-aplicación, y como tal, es un área importante " +"para análisis detallados." #: i2p2www/pages/site/docs/api/streaming.html:480 msgid "Additional tuning of the streaming lib parameters may be necessary." msgstr "" +"Podrían ser necesarios ajustes adicionales de los parámetros de librería " +"streaming." #: i2p2www/pages/site/docs/api/streaming.html:483 #, python-format @@ -3336,6 +4428,11 @@ msgid "" "NTCP and SSU transport layers.\n" "See the NTCP discussion page for details." msgstr "" +"Otro área de investigación es la interacción de la librería streaming con" +" las \n" +"capas de transporte NTCP (NIO TCP) y SSU (UDP Seguro Semiconfiable). \n" +"Para mayor detale Vea la página de discusión " +"sobre NTCP." #: i2p2www/pages/site/docs/api/streaming.html:488 msgid "" @@ -3351,24 +4448,42 @@ msgid "" "failure and tunnel selection algorithms should be reviewed for possible \n" "improvements." msgstr "" +"La interacción de los algoritmos de enrutado con la librería streaming " +"afecta \n" +"fuertemente al rendimiento. En particular, la distribución aleatoria de \n" +"mensajes a múltiples túneles entre los existentes, lleva a un alto grado " +"de \n" +"entregas estropeadas que resultan en tamaños de ventana más pequeños de " +"lo que serían en otro caso. Actualmente el router enruta mensajes \n" +"para un único par desde/hacia destino a través de un conjunto consistente" +" \n" +"de túneles, hasta la expiración del túnel o un fallo en la entrega. El " +"fallo del \n" +"router y los algoritmos de selección del túnel deben ser revisados en " +"busca \n" +"de posibles mejoras." #: i2p2www/pages/site/docs/api/streaming.html:498 msgid "The data in the first SYN packet may exceed the receiver's MTU." msgstr "" +"Los datos en el primer paquete SYN (sincronizar) pueden exceder la MTU " +"(Unidad Máxima de Transporte) del receptor." #: i2p2www/pages/site/docs/api/streaming.html:501 msgid "The DELAY_REQUESTED field could be used more." -msgstr "" +msgstr "El campo DELAY_REQUESTED (demora requerida) podría ser usado más." #: i2p2www/pages/site/docs/api/streaming.html:504 msgid "" "Duplicate initial SYNCHRONIZE packets on short-lived streams may not be " "recognized and removed." msgstr "" +"Los paquetes iniciales SYNCHRONIZE duplicados sobre streams de \n" +"vida-corta pueden ser no reconocidos y eliminados." #: i2p2www/pages/site/docs/api/streaming.html:507 msgid "Don't send the MTU in a retransmission." -msgstr "" +msgstr "No envía la MTU en una retransmisión." #: i2p2www/pages/site/docs/api/streaming.html:510 msgid "" @@ -3376,6 +4491,9 @@ msgid "" "(i.e. no-Nagle or TCP_NODELAY)\n" "Probably should have a configuration option for this." msgstr "" +"Los datos se envían al recorrido a menos que la ventana de salida esté \n" +"llena (es decir sin-Nagle o TCP_NODELAY).\n" +"Probablemente debe haber una opción de configuración para esto." #: i2p2www/pages/site/docs/api/streaming.html:515 msgid "" @@ -3385,6 +4503,13 @@ msgid "" "The format may require enhancement to map more streaming lib parameters " "to TCP fields." msgstr "" +"zzz ha añadido código de depuración a la librería streaming para " +"registrar \n" +"(`log`) paquetes en un formato compatible-wireshark (pcap); utilice esto " +"para \n" +"analizar el rendimiento con mayor detalle. El formato puede requerir " +"mejoras \n" +"para mapear más parámetros de librería streaming en campos TCP." #: i2p2www/pages/site/docs/api/streaming.html:520 msgid "" @@ -3393,6 +4518,12 @@ msgid "" "This would unfortunately be incompatible with the streaming lib\n" "but it would be good to compare the performance of the two." msgstr "" +"Hay propuestas para reemplazar la librería streaming con TCP standard (o" +" \n" +"quizá con una capa vacía junto con sockets crudos (`raw`)). \n" +"Desafortunadamente esto sería incompatible con la librería streaming pero" +" \n" +"sería bueno para comparar el rendimiento de los dos." #: i2p2www/pages/site/docs/applications/bittorrent.html:3 #: i2p2www/pages/site/docs/spec/configuration.html:3 @@ -3409,6 +4540,13 @@ msgid "" "Note carefully the guidelines for compatibility with older I2P clients " "and trackers." msgstr "" +"Hay varios clientes bittorrent y trackers sobre I2P. Como el " +"direccionamiento \n" +"de I2P usa un Destino en lugar de IP y puerto, los cambios que se " +"requieren \n" +"en los softwares del tracker y del cliente para operar sobre I2P son \n" +"menores. Estos cambios se especifican debajo. Observe con cuidado las \n" +"directrices para compatibilidad con anteriores clientes y trackers I2P." #: i2p2www/pages/site/docs/applications/bittorrent.html:15 msgid "" @@ -3416,14 +4554,21 @@ msgid "" "Specific clients and trackers may implement other unique features or " "protocols." msgstr "" +"Esta página especifica detalles del protocolo comunes a todos los " +"clientes \n" +"y trackers. Los clientes y trackers específicos pueden implementar otras" +" \n" +"características únicas o protocolos." #: i2p2www/pages/site/docs/applications/bittorrent.html:20 msgid "We welcome additional ports of client and tracker software to I2P." msgstr "" +"Son bienvenidos puertos adicionales de software de cliente y tracker para" +" I2P." #: i2p2www/pages/site/docs/applications/bittorrent.html:26 msgid "Announces" -msgstr "" +msgstr "Anuncios" #: i2p2www/pages/site/docs/applications/bittorrent.html:27 msgid "" @@ -3431,6 +4576,10 @@ msgid "" " compatibility with older trackers.\n" "Trackers may ignore the port parameter, and should not require it." msgstr "" +"Los clientes generalmente incluyen un parametro falso port=6881 en el \n" +"anuncio, por compatibilidad con anteriores trackers. Los trackers pueden" +" \n" +"ignorar el parámetro port (puerto), y no deberían necesitarlo." #: i2p2www/pages/site/docs/applications/bittorrent.html:32 #, python-format @@ -3447,7 +4596,7 @@ msgstr "" #: i2p2www/pages/site/docs/applications/bittorrent.html:42 msgid "Other parameters are the same as in standard bittorrent." -msgstr "" +msgstr "Otros parámetros son los mismos que en el bittorrent standard." #: i2p2www/pages/site/docs/applications/bittorrent.html:46 msgid "" @@ -3459,6 +4608,15 @@ msgid "" "below),\n" "the tracker should probably decode and reject bad Base64 when announced." msgstr "" +"Aunque todos los Destinos actuales para clientes son exactamente de \n" +"387 bytes, un tracker no debería presumir que siempre será así. Un valor" +" \n" +"máximo razonable a asumir, por ahora, es 475 bytes. Como el tracker debe" +" \n" +"decodificar la Base64 para entregar respuestas compactas (vea debajo), el" +" \n" +"tracker probablemente debe decodificar y rechazar las Base64 defectuosas " +"cuando se anuncie." #: i2p2www/pages/site/docs/applications/bittorrent.html:53 msgid "" @@ -3467,6 +4625,10 @@ msgid "" "the parameter compact=1. A tracker may, but is not required to, return\n" "a compact response when requested." msgstr "" +"La respuesta tipo predeterminada es no-compacta. Los clientes pueden \n" +"solicitar una respuesta compacta con el parámetro compact=1. Un tracker\n" +"podría, pero no es un requisito, devolver una respuesta compacta cuando\n" +"se le solicite." #: i2p2www/pages/site/docs/applications/bittorrent.html:59 msgid "" @@ -3477,22 +4639,31 @@ msgid "" "it allows\n" "destination enforcement by the tracker (see below)." msgstr "" +"A los desarrolladores de nuevos clientes I2P se les anima fuertemente a \n" +"implementar anuncios sobre su propio túnel en lugar de sobre el proxy del" +" \n" +"cliente HTTP en el puerto 4444. Hacerlo así es tanto más eficiente como a" +" su vez permite al tracker aplicar destinos (vea debajo)." #: i2p2www/pages/site/docs/applications/bittorrent.html:66 msgid "" "There are no known I2P clients or trackers that currently support UDP " "announce/responses." msgstr "" +"No hay clientes o trackers I2P conocidos que actualmente soporten " +"anuncios/respuestas UDP." #: i2p2www/pages/site/docs/applications/bittorrent.html:71 msgid "Non-Compact Tracker Responses" -msgstr "" +msgstr "Respuestas de tracker no-compactas" #: i2p2www/pages/site/docs/applications/bittorrent.html:72 msgid "" "The non-compact response is just as in standard bittorrent, with an I2P " "\"ip\"." msgstr "" +"La respuesta no-compacta es como la del bittorrent standard, con una " +"\"ip\" I2P." #: i2p2www/pages/site/docs/applications/bittorrent.html:76 msgid "" @@ -3500,6 +4671,9 @@ msgid "" "announce, for compatibility with older clients.\n" "Clients must ignore the port parameter, and should not require it." msgstr "" +"Los trackers generalmente incluyen un clave de puerto falsa, o usan el " +"puerto del anuncio, por compatibilidad con anteriores clientes. Los \n" +"clientes deben ignorar el parámetro port (puerto), y no deben solicitarlo." #: i2p2www/pages/site/docs/applications/bittorrent.html:81 #, python-format @@ -3511,14 +4685,25 @@ msgid "" "wasn't in the announce ip, for compatibility with older clients.\n" "Clients should not require an appended \".i2p\" in the responses." msgstr "" +"El valor de la clave ip es la base 64 del Destino del cliente," +" como se \n" +"describe arriba. Los trackers generalmente añaden \".i2p\" al final del " +"Destino \n" +"Base 64 si no estaba en el ip del anuncio, por compatibilidad con " +"anteriores \n" +"clientes. Los clientes no deben solicitar un sufijo \".i2p\" en las " +"respuestas." #: i2p2www/pages/site/docs/applications/bittorrent.html:88 msgid "Other response keys and values are the same as in standard bittorrent." msgstr "" +"Otras claves y valores de respuesta son los mismos que en el bittorrent " +"standard." #: i2p2www/pages/site/docs/applications/bittorrent.html:94 msgid "Compact Tracker Responses" -msgstr "" +msgstr "Respuestas de tracker compactas" #: i2p2www/pages/site/docs/applications/bittorrent.html:95 #, python-format @@ -3538,6 +4723,21 @@ msgid "" "or X-I2P-DestB32 HTTP headers may be converted to binary and stored.\n" "The peers key may be absent, or the peers value may be zero-length." msgstr "" +"En la respuesta compacta, el valor de la clave de diccionario de los " +"\"peers\" (pares) es una única cadena de bytes, cuya longitud es un " +"múltiplo de 32 \n" +"bytes. Esta cadena contiene los Hashes SHA-256 de 32-bytes \n" +"concatenados del binario Destinos de los " +"pares. Este \n" +"`hash` (identificador único) debe calcularse por el tracker, a menos que " +"use \n" +"aplicación en destino (vea debajo), en cuyo caso el identificador " +"(`hash`) \n" +"entregado en las cabeceras HTTP X-I2P-DestHash o X-I2P-DestB32 puede ser " +"convertido a binario y almacenado. La clave de los pares (`peers`) \n" +"puede estar ausente, o el valor de los pares puede tener longitud-cero." #: i2p2www/pages/site/docs/applications/bittorrent.html:109 msgid "" @@ -3548,7 +4748,7 @@ msgstr "" #: i2p2www/pages/site/docs/applications/bittorrent.html:116 msgid "Destination Enforcement" -msgstr "" +msgstr "Aplicación en destino" #: i2p2www/pages/site/docs/applications/bittorrent.html:117 #, python-format @@ -3576,6 +4776,11 @@ msgid "" "until\n" "those clients are converted to announcing over their own tunnel." msgstr "" +"Como varios clientes usan el proxy HTTP en lugar de sus propios túneles \n" +"para los anuncios, la aplicación de destino (en el tracker) prevendrá su " +"uso \n" +"por aquellos clientes a menos que, o hasta que, aquellos clientes se \n" +"reconviertan para anunciarse sobre sus propios túneles. " #: i2p2www/pages/site/docs/applications/bittorrent.html:135 msgid "" @@ -3584,10 +4789,15 @@ msgid "" "so we expect that all trackers will eventually enforce destinations.\n" "Both tracker and client developers should anticipate it." msgstr "" +"Desafortunadamente, al crecer la red, también lo hará la cantidad de \n" +"maliciosidad, así que esperamos que en su momento todos los trackers \n" +"apliquen los destinos. Ambos, desarrolladores de trackers y clientes " +"deben \n" +"anticiparlo." #: i2p2www/pages/site/docs/applications/bittorrent.html:143 msgid "Announce Host Names" -msgstr "" +msgstr "Nombres de Servidor de Anuncio" #: i2p2www/pages/site/docs/applications/bittorrent.html:144 #, python-format @@ -3601,22 +4811,35 @@ msgid "" "Non-open trackers should recognize their own host name in any of these " "formats." msgstr "" +"Los nombres de servidor URL de anuncio en los archivos torrent siguen\n" +"generalmente los standares de nomenclatura " +"I2P. Además \n" +"los nombres de servidor de los libros de direcciones y los nombre de " +"servidor Base 32 \".b32.i2p\", el Destino Base 65 completo (con [¿o sin?]" +" \n" +"sufijo \".i2p\"] deben ser soportados. Los trackers no-abiertos deben \n" +"reconocer sus propios nombres de servidor en cualquiera de estos formatos." #: i2p2www/pages/site/docs/applications/bittorrent.html:152 msgid "" "To preserve anonymity,\n" "clients should generally ignore non-I2P announce URLs in torrent files." msgstr "" +"Para preservar el anonimato, los clientes por lo general deben ignorar \n" +"anuncios de URLs no-I2P en los ficheros torrent." #: i2p2www/pages/site/docs/applications/bittorrent.html:159 msgid "Client Connections" -msgstr "" +msgstr "Conexiones de cliente" #: i2p2www/pages/site/docs/applications/bittorrent.html:160 msgid "" "Client-to-client connections use the standard protocol over TCP.\n" "There are no known I2P clients that currently support uTP communication." msgstr "" +"Las conexiones Cliente-a-cliente usan el protocolo standard sobre TCP. No" +" hay clientes I2P conocidos que soporten actualmente comunicación uTP \n" +"(utorrent Transpor Protocol)." #: i2p2www/pages/site/docs/applications/bittorrent.html:165 #, python-format @@ -3625,6 +4848,8 @@ msgid "" "href=\"%(commonstructures)s#struct_Destination\">Destinations\n" "for addresses, as explained above." msgstr "" +"I2P usa Destinos " +"de 387+ bytes para direcciones, como se explicó arriba." #: i2p2www/pages/site/docs/applications/bittorrent.html:170 msgid "" @@ -3634,6 +4859,15 @@ msgid "" "Naming Service,\n" "which will return the full Destination if available." msgstr "" +"Si el cliente tiene sólo el identificador (`hash`) del destino (tal como " +"desde \n" +"una respuesta compacta o un PEX (Intercambiador de Pares)), debe realizar" +" \n" +"una búsqueda codificándolo con Base 32, añadiendo el sufijo \".b32.i2p\"," +" y \n" +"consultando en el Servicio de Nombres, que devolverá el Destino completo" +" \n" +"si está disponible." #: i2p2www/pages/site/docs/applications/bittorrent.html:176 msgid "" @@ -3643,10 +4877,17 @@ msgid "" "Do not convert a Destination back to a Base 32 hash for lookup, this is " "quite inefficient." msgstr "" +"Si el cliente tiene el Destino completo de un par (`peer`) que recibió en" +" una \n" +"respuesta no-compacta, debe usarlo en el establecimiento de la conexión." +" \n" +"No convierta un Destino de vuelta a un identificador (`hash`) Base 32, " +"esto \n" +"es bastante ineficiente." #: i2p2www/pages/site/docs/applications/bittorrent.html:183 msgid "Cross-Network Prevention" -msgstr "" +msgstr "Prevención de redes-cruzadas." #: i2p2www/pages/site/docs/applications/bittorrent.html:184 msgid "" @@ -3656,6 +4897,12 @@ msgid "" "I2P HTTP outproxies often block announces.\n" "There are no known SOCKS outproxies supporting bittorrent traffic." msgstr "" +"Para preservar el anonimato, los clientes I2P bittorrent por lo general " +"no soportan anuncios no-I2P, o conexiones de pares (`peers`). Los proxys" +" \n" +"externos (`outproxies`) HTTP de I2P con frecuencia bloquean anuncios. No" +" \n" +"hay proxys externos SOCKS conocidos que soporten tráfico bittorrent." #: i2p2www/pages/site/docs/applications/bittorrent.html:191 msgid "" @@ -3665,6 +4912,12 @@ msgid "" "Trackers should reject standard network announces with IPv4 or IPv6 IPs, " "and not deliver them in responses." msgstr "" +"Para prevenir el uso por cliente no-I2P a través de un proxy interno HTTP" +" \n" +"(`inproxy`), los trackers I2P a menudo bloquean accesoos o anuncios que \n" +"contengan una cabecera HTTP X-Forwarded-For. Los trackers deben \n" +"rechazar anuncios de red standard con IPs IPv4 o IPv6, y no entregarlos \n" +"en las respuestas." #: i2p2www/pages/site/docs/applications/bittorrent.html:200 #, python-format @@ -3687,6 +4940,26 @@ msgid "" "response format specified above.\n" "The added.f value, if present, is the same as in ut_pex." msgstr "" +"El PEX (Intercambiador de Pares) I2P está basado en ut_pex (utorrent \n" +"PEX). Como no parece haber una especificación ut_pex formal disponible, \n" +"puede ser necesario revisar el código fuente de libtorrent para dotarlo " +"de \n" +"asistencia. Es un mensaje de extensión, identificado como \"i2p_pex\" en" +" \n" +"en la extensión " +"de encuentro (`handshake`). Contiene un diccionario b-codificado \n" +"(`bencoded`) con hasta 3 claves, \"added\" (añadido), \"added.f\", y " +"\"dropped\" \n" +"(descartado). Los valores `added` y `dropped` son cada uno una única \n" +"cadena de bytes, cuyo tamaño es un múltiplo de 32 bytes. Estas cadenas \n" +"de bytes son los Hashes SHA-256 concatenados del binario Destinos \n" +"de los pares (`peers`). Este es el mismo formato que el de los valores de" +" \n" +"diccionario de los pares en el formato de respuesta compacta de I2P \n" +"especificado arriba. Si está presente, el valor de added.f es el mismo " +"que en\n" +"ut_pex." #: i2p2www/pages/site/docs/applications/bittorrent.html:218 msgid "" @@ -3696,6 +4969,12 @@ msgid "" "are described below, and are subject to change.\n" "Contact the I2P developers if you wish to develop a client supporting DHT." msgstr "" +"El soporte DHT (tabla de hash dinámica) está incluído en el cliente " +"i2psnark \n" +"desde la versión 0.9.2. Las diferencias preliminares con BEP 5 están \n" +"descritas debajo, y están sujetas a cambios. Contacte con los \n" +"desarrolladores de I2P si quiere desarrollar un cliente con soporte DHT." #: i2p2www/pages/site/docs/applications/bittorrent.html:226 msgid "" @@ -3707,6 +4986,14 @@ msgid "" "It contains a bencoded dictionary with two keys, \"port\" and \"rport\", " "both integers." msgstr "" +"Al contario que DHT (tabla de hash dinámica), I2P DHT no usa bit alguno " +"en \n" +"las opciones de encuentro (`handshake`), o en el mensaje PORT (puerto). " +"Se anuncia con con un mensaje de extensión, identificados como " +"\"i2p_dht\" \n" +"en el encuentro " +"de extensión. Contiene un diccionario b-codificado \n" +"(`bencoded`) con dos claves, \"port\" y \"rport\", ambos enteros." #: i2p2www/pages/site/docs/applications/bittorrent.html:233 msgid "" @@ -3717,6 +5004,14 @@ msgid "" "This is the \"port\" value from the extension message.\n" "Queries use I2CP protocol number 17." msgstr "" +"Para recibir datagramas respondibles (firmados) se usa el puerto UDP " +"(datagrama) listado en la información del nodo compacto. Este se usa para" +" \n" +"consultas, excepto para anuncios. Le llamamos el \"query port\" (puerto " +"de \n" +"consulta). Es el valor de \"port\" (puerto) del mensaje de extensión. Las" +" \n" +"consultas usan el protocolo I2CP (Protocolo de Cliente I2P) número 17." #: i2p2www/pages/site/docs/applications/bittorrent.html:242 msgid "" @@ -3730,6 +5025,15 @@ msgid "" "It must be 1 + the query port.\n" "Responses and announces use I2CP protocol number 18." msgstr "" +"Además de ese puerto UDP, usamos un segundo puerto de datagrama igual \n" +"al puerto de consulta + 1. Esto se usa para recibir datagramas no " +"firmados \n" +"(raw (crudos)) para las respuestas, errores y anuncios. Este puerto \n" +"proporciona una eficiencia incrementada puesto que sus respuestas \n" +"contienen las credenciales (`tokens`) enviadas en la consulta, y no \n" +"necesitan ser firmadas. Llamamos a esto el \"response port\" (puerto de \n" +"respuesta). Las respuestas y los anuncios usan el protocolo I2CP número " +"18. " #: i2p2www/pages/site/docs/applications/bittorrent.html:254 msgid "" @@ -3738,6 +5042,11 @@ msgid "" "In a response, the \"values\" key is a list of strings, each containing a" " single compact peer info." msgstr "" +"La información compacta del par (`peer`) son 32 bytes (un identificador \n" +"(`hash`) SHA256 de 32 bytes) en lugar de 4 bytes de IP + 2 bytes de \n" +"puerto. No hay puerto de peer. En una respuesta, la clave \"values\" \n" +"(valores) es una lista de cadenas, conteniendo cada una la información \n" +"compacta de un único peer." #: i2p2www/pages/site/docs/applications/bittorrent.html:260 msgid "" @@ -3747,6 +5056,11 @@ msgid "" "In a response, the \"nodes\" key is a\n" "single byte string with concatenated compact node info." msgstr "" +"La información de nodo compacto es de 54 bytes (20 bytes de hash + 32 \n" +"bytes de hash SHA256 + 2 bytes de puerto) en lugar de 20 bytes de hash \n" +"SHA1 + 4 bytes de IP + 2 bytes de puerto. En una respuesta, la clave \n" +"\"nodes\" (nodos) es una única cadena de bytes con la información \n" +"concatenada de nodo compacto." #: i2p2www/pages/site/docs/applications/bittorrent.html:267 msgid "" @@ -3757,6 +5071,15 @@ msgid "" "the\n" "destination hash exclusive-ORed with the port." msgstr "" +"Requerimiento de identificador (`ID`) de nodo seguro: Para hacer varios \n" +"ataques DHT (tabla de hash distribuída) los 4 primeros bytes del \n" +"identificador (`ID`) de nodo deben coincidir con los 4 bytes del " +"identificador \n" +"(`hash`) del destino, y los siguientes dos bytes del identificador (`ID`)" +" de \n" +"nodo deben coincidir con los siguientes dos bytes del resultado del\n" +"`OR`eado-exclusivo de el identificador (`hash`) del destino con el " +"puerto. " #: i2p2www/pages/site/docs/applications/bittorrent.html:274 msgid "" @@ -3768,6 +5091,15 @@ msgid "" "Alternatives: A single byte string with concatenated hashes,\n" "or a list of strings alone." msgstr "" +"En un fichero torrent, la clave de diccionario de los \"nodes\" (nodos) " +"torrent \n" +"sin tracker es TBD. Podría ser una lista de cadenas de bytes de 32 bytes" +" \n" +"(hashes SHA256) en lugar de una lista de listas conteniendo un cadena de" +" \n" +"servidor y un entero de puerto.\n" +"Alternativas: Una única cadena de bytes con hashes concatenados, o una \n" +"sola lista de de cadenas." #: i2p2www/pages/site/docs/applications/bittorrent.html:285 #: i2p2www/pages/site/docs/how/intro.html:187 @@ -3780,6 +5112,8 @@ msgid "" "I2P bittorrent standards are generally discussed on %(zzz)s." msgstr "" +"Los standards bittorrent I2P discutidos generalmente en %(zzz)s." #: i2p2www/pages/site/docs/applications/bittorrent.html:290 #, python-format @@ -3787,6 +5121,8 @@ msgid "" "A chart of current tracker software capabilities is also available there." msgstr "" +"Una gráfica con las capacidades del actual software de tracker también " +"está disponible allí." #: i2p2www/pages/site/docs/applications/bittorrent.html:293 #, python-format @@ -3798,7 +5134,7 @@ msgstr "" #: i2p2www/pages/site/docs/applications/bittorrent.html:297 #, python-format msgid "DHT on I2P discussion" -msgstr "" +msgstr "Discusión DHT sobre I2P" #: i2p2www/pages/site/docs/applications/supported.html:2 #: i2p2www/pages/site/docs/applications/supported.html:5 @@ -4548,11 +5884,8 @@ msgstr "" #: i2p2www/pages/site/docs/applications/supported.html:654 #: i2p2www/pages/site/docs/applications/supported.html:662 -#, fuzzy msgid "Another inproxy on the public Internet." msgstr "" -"Proxy de entrada de tino en el Internet " -"público." #: i2p2www/pages/site/docs/applications/supported.html:671 msgid "" @@ -4614,7 +5947,7 @@ msgstr "Servidor web ligero de alto rendimiento." #: i2p2www/pages/site/docs/discussions/naming.html:2 msgid "Naming discussion" -msgstr "" +msgstr "Discusión sobre nombres" #: i2p2www/pages/site/docs/discussions/naming.html:4 #, python-format @@ -4624,6 +5957,10 @@ msgid "" "common arguments and possible alternatives.\n" "See the naming page for current documentation." msgstr "" +"NOTA: Lo siguiente es una discusión de las razones que hay detrás del \n" +"sistema de nombres de I2P, argumentos comunes y posibles alternativas. \n" +"Vea la página de nombres para la documentación" +" actual." #: i2p2www/pages/site/docs/discussions/naming.html:10 msgid "Discarded alternatives" @@ -4640,6 +5977,12 @@ msgid "" "DNS-style naming system is clearly out, as are \"majority rules\" voting " "systems." msgstr "" +"Los nombres dentro de I2P han sido tema a menudo debatido desde el mismo " +"principio, con defensores de todo el espectro de posibilidades. Sin \n" +"embargo, dada la demanda de comunicaciones seguras y operaciones\n" +"descentralizadas inherente de I2P, el sistema de nombres tradicional \n" +"estilo-DNS está claramente desestimado, ya que son sistemas de voto \n" +"donde la \"mayoría manda\"." #: i2p2www/pages/site/docs/discussions/naming.html:19 msgid "" @@ -4665,6 +6008,29 @@ msgid "" " as \n" "hostile certificate authority attacks." msgstr "" +"Aunque I2P no promociona el uso de servicios tipo-DNS, ya que el daño \n" +"hecho al secuestrar un sitio puede ser tremedo - y los destinos inseguros" +" no tienen valor. DNSsec por si mismo aún se respalda sobre los " +"registradores \n" +"y las autoridades de certificados, mientras con I2P, las solicitudes " +"enviadas \n" +"a un destino no pueden ser interceptadas o la respuesta falseada, ya que" +" \n" +"están cifradas hacia un las claves públicas del destino, y un destino en " +"si \n" +"mismo es soloo un par de claves y un certificado. Los sistemas estilo-DNS" +" \n" +"por otro lado permiten que a cualquiera de los servidores de nombres en " +"la \n" +"ruta de la búsqueda, montar sencillos ataques de denegación de servicio \n" +"(DoS) o falsificación (`spoofing`). Por añadidura, un certificado " +"autentificando \n" +"las respuestas como firmadas por alguna autoridad centralizada de \n" +"certificados, podría solventar muchas de los problemas con servidores de" +" \n" +"nombres hostiles, pero también dejaría abiertos los ataques de respuesta" +" \n" +"como los ataques de autoridades de certificados hostiles." #: i2p2www/pages/site/docs/discussions/naming.html:33 msgid "" @@ -4680,6 +6046,17 @@ msgid "" "if the\n" "full network is not queried, different sets of answers may be reachable." msgstr "" +"Votar el estilo del nombrado también es peligroso, especialmente \n" +"dada la efectividad de ataques Sybil en sistemas anónimos - el atacante \n" +"puede simplemente crear arbitrariamente un alto número de pares (`peers`)" +" \n" +"y \"votar\" con cada uno para conquistar un determinado nombre. Métodos " +"prueba-de-trabajo pueden usarse para hacer la identidad no-gratuita, pero" +" cada al crecer la red la carga necesaria para contactar con todo el " +"mundo \n" +"para realizar una votación en línea no es plausible, or si no se consulta" +" a la \n" +"red completa, diferentes grupos de respuestas pueden ser alcanzables." #: i2p2www/pages/site/docs/discussions/naming.html:42 msgid "" @@ -4692,16 +6069,27 @@ msgid "" "plug into, allowing end users to drive what sort of naming tradeoffs they" " prefer." msgstr "" +"Sin embargo, como con Internet, I2P está manteniendo el diseño y las \n" +"operaciones de un sistema de nombres fuera de la (estilo-IP) capa de \n" +"comunicación. La librería de nombrado empaquetada incluye una interfaz de" +"\n" +"proveedor de servicio sencilla a la que los sistemas de nombres alternativos \n" +"pueden enchufarse, permitiendo a los usuarios finales dirigir la clase de" +" \n" +"compromisos de nombrado que ellos prefieran." #: i2p2www/pages/site/docs/discussions/naming.html:50 msgid "" "See also Names: " "Decentralized, Secure, Human-Meaningful: Choose Two." msgstr "" +"Vea también nombres: " +"descentralizados, seguros, con-significado-humano: escoja dos." #: i2p2www/pages/site/docs/discussions/naming.html:55 msgid "(adapted from a post in the old Syndie, November 26, 2005)" -msgstr "" +msgstr "(adaptado desde un post en el antiguo Syndie, 26 de noviembre de 2005)" #: i2p2www/pages/site/docs/discussions/naming.html:58 msgid "" @@ -4711,6 +6099,10 @@ msgid "" " not? \n" "Who is the right source of a name?" msgstr "" +"P: ¿Qué hacer si algunos servidores no están de acuerdo con una de las \n" +"direcciones y si algunas de las direcciones están funcionando y otras no?" +" \n" +"¿Quién es la fuerte correcta de un nombre?" #: i2p2www/pages/site/docs/discussions/naming.html:64 msgid "" @@ -4722,6 +6114,11 @@ msgid "" "unique. This is by design, and an inherent part of our need for " "security." msgstr "" +"R: Tú no. En realidad esta es una diferencia critica entre los nombres en" +" I2P \n" +"y como funciona DNS - los nombres en I2P son legibles por humanos, \n" +"seguros, pero no globalmente únicos. Esto es por diseño, y una \n" +"parte inherente de nuestras necesidades de seguridad." #: i2p2www/pages/site/docs/discussions/naming.html:70 msgid "" @@ -4742,12 +6139,16 @@ msgstr "" #: i2p2www/pages/site/docs/discussions/naming.html:78 msgid "Names will not, ever, be securely human readable and globally unique." msgstr "" +"Los nombres no serán, nunca, legibles por humanos con seguridad y \n" +"globalmente únicos." #: i2p2www/pages/site/docs/discussions/naming.html:83 msgid "" "The following from zzz is a review of several common\n" "complaints about I2P's naming system." msgstr "" +"Lo siguiente desde zzz es una revisión de varias quejas comunes acerca \n" +"del sistema de nombres de I2P." #: i2p2www/pages/site/docs/discussions/naming.html:89 msgid "" @@ -4756,6 +6157,11 @@ msgid "" "the etag and last-modified headers).\n" "It's about 400K right now for almost 800 hosts." msgstr "" +"Ineficiencia: \n" +"El hosts.txt completo está descargado (si ha cambiado, ya que eepget usa" +" \n" +"la etag y las últimas cabeceras modificadas). Ahora ocupa alrededor de \n" +"400KB para casi 800 servidores." #: i2p2www/pages/site/docs/discussions/naming.html:94 msgid "" @@ -4766,6 +6172,13 @@ msgid "" "If you downloaded a hosts.txt file from someone every 12 hours it " "averages out to about 10 bytes/sec." msgstr "" +"Verdad, pero esto no es mucho tráfico en el contexto de I2P, que en si \n" +"mismo es salvajemente ineficiente (bases de datos inundadas, enorme \n" +"tráfico de control de la encriptación y el ajustado, enrutado ajo " +"(`garlic`), \n" +"etc.). Si descargó un fichero hosts.txt desde alguien cada 12 horas, hace" +"\n" +"una media de unos 10bytes/s." #: i2p2www/pages/site/docs/discussions/naming.html:99 msgid "" @@ -4778,6 +6191,16 @@ msgid "" " services do, but\n" "in a more automated fashion), possibly at a further cost in anonymity." msgstr "" +"Como habitualmente es el caso en I2P, hay un compromiso de equilibrio \n" +"fundamental aquí entre anonimidad y eficiencia. Alguién diría que usar el" +" \n" +"etag y las últimas cabeceras modificadas es arriesgado porque expone la " +"última vez que uno solicitó los datos. Otros han sugerido pedir sólo " +"claves \n" +"específicas (similar a lo que otros servicios distribuídos ('jump') " +"hacen, pero \n" +"de una forma más automatizada), posiblemente a un coste más elevado en \n" +"anonimato." #: i2p2www/pages/site/docs/discussions/naming.html:106 #, python-format @@ -4791,6 +6214,17 @@ msgid "" "that could be both more efficient and more anonymous than the current " "hosts.txt with last-modified and etag." msgstr "" +"Posibles mejoras serían un reemplazo o suplemento al libro de direcciones" +" \n" +"(vea %(i2host)sp), or algo sencillo " +"como suscribirse a \n" +"http://example.i2p/cgi-bin/recenthosts.cgi en lugar de a " +"http://example.i2p/hosts.txt \n" +"si un hipotético recenthosts.cgi desplegado en todos los servidores en " +"las \n" +"últimas 24 horas, por ejemplo, que pudiera ser tanto más eficiente como " +"más anónimo que el actual hosts.txt con las últimas modificaciones y " +"etag." #: i2p2www/pages/site/docs/discussions/naming.html:112 #, python-format @@ -4805,6 +6239,16 @@ msgid "" "\n" "does not know about, in an addressbook-compatible manner." msgstr "" +"Una implementación de ejemplo está en stats.i2p en %(url)s.\n" +"Este script devuelve un etag con marcas de tiempo. Cuando una solicitud \n" +"entra con el etag If-None-Match, el script SOLO devuelve nuevos " +"servidores \n" +"desde su marca de tiemp, o 304 No Modificado si no hay ninguno. De esta " +"manera el script devuelve eficientemente sólo los servidores de los que " +"el \n" +"suscriptor no sepa de ellos, de una manera \n" +"compatible-con-el-libro-de-direcciones." #: i2p2www/pages/site/docs/discussions/naming.html:121 msgid "" @@ -4812,6 +6256,9 @@ msgid "" "improve things without\n" "radical change." msgstr "" +"Así la ineficiencia no es un gran problema y hay varias formas de mejorar" +" \n" +"las coasas sin un cambio radical." #: i2p2www/pages/site/docs/discussions/naming.html:127 msgid "" @@ -4819,6 +6266,10 @@ msgid "" "The 400K hosts.txt (with linear search) isn't that big at the moment and\n" "we can probably grow by 10x or 100x before it's a problem." msgstr "" +"Not escalable: \n" +"El hosts.txt de 400KB (con búsqueda lineal) no es tan grande de momento \n" +"y probablemente pueda crecer por un factor de 10x o 100x antes de que \n" +"sea un problema." #: i2p2www/pages/site/docs/discussions/naming.html:132 msgid "" @@ -7616,13 +9067,10 @@ msgstr "" "trabajos, etc) antes de que se active automáticamente como un floodfill." #: i2p2www/pages/site/docs/how/network-database.html:281 -#, fuzzy msgid "" "With the current rules for automatic opt-in, approximately 6% of\n" "the routers in the network are floodfill routers." msgstr "" -"Con las normas actuales para llegar a ser floodfill automáticamente, " -"aproximadamente el 6% o de los ruters de la red son ruters floodfill." #: i2p2www/pages/site/docs/how/network-database.html:286 msgid "" @@ -7685,6 +9133,8 @@ msgid "" "rotation\",\n" "although it isn't strictly a rotation." msgstr "" +"LA NetDb usa una medida XOR simple al estilo Kademlia para determinar la " +"cercanía. " #: i2p2www/pages/site/docs/how/network-database.html:318 msgid "" @@ -11699,7 +13149,6 @@ msgid "The Threat Model (Attacks)" msgstr "El modelo de reisgos (Ataques)" #: i2p2www/pages/site/docs/how/threat-model.html:79 -#, fuzzy msgid "" "I2P design started in 2003, not long after the advent of\n" "[Onion Routing],\n" @@ -11710,13 +13159,6 @@ msgid "" "I2P uses several onion routing techniques, so we continue to benefit\n" "from the significant academic interest in Tor." msgstr "" -"El diseño de I2P empezó en 2003, no mucho más tarde de la llegada de [Onion Routing], [Freenet], y [Tor]. Nuestro diseño se " -"beneficia notablemente de los estudios publicados en esa época. I2p usa " -"varias técnicas de de enrutado onion, con lo cual nos seguimos " -"beneficiando del interés académico en Tor." #: i2p2www/pages/site/docs/how/threat-model.html:89 msgid "" @@ -12210,17 +13652,13 @@ msgstr "" " defensa contra este ataque es:" #: i2p2www/pages/site/docs/how/threat-model.html:311 -#, fuzzy, python-format +#, python-format msgid "" "Set defaults so that most users provide resources to the network.\n" "In I2P, users route traffic by default. In sharp distinction to\n" "other networks,\n" "over 95% of I2P users relay traffic for others." msgstr "" -"Configurar por defecto para que la mayoría de los usuarios compartan " -"recursos con la red. En I2P los usuarios rutean tráfico por defecto. A " -"diferencia de otras redes, más del 95%% " -"de los usuarios de I2P reenvían tráfico de otros usuarios." #: i2p2www/pages/site/docs/how/threat-model.html:317 msgid "" @@ -12802,7 +14240,6 @@ msgstr "" "Obfuscation" #: i2p2www/pages/site/docs/how/threat-model.html:584 -#, fuzzy msgid "" "Sybil describes a category of attacks where the adversary creates " "arbitrarily\n" @@ -12831,23 +14268,6 @@ msgid "" "appropriate value when necessary (or some other certificate proving " "scarcity)." msgstr "" -"Sybil describe una categoría de ataques donde el adversario crea un gran " -"número arbitrario de nodos y los usa para montar ataques. Por ejemplo, si" -" un atacante está en una red donde los pares son seleccionados " -"aleatoriamente y el atacante quiere tener el 80% c de posibilidades de " -"ser uno de esos pares, simplemente crea 5 veces el número de nodos que " -"hay en la red y a probar suerte. Cuando crear una identidad no cuesta " -"esfuerzo, Sybil puede ser un ataque muy poderoso. La mejor técnica para " -"evitar esto es simplemente hacer que crear una nueva identidad no sea " -"'gratis' - Tarzan " -"(entro otros) usan el hecho de que el número de IPs es limitado, mientras" -" que I2P utiliza HashCash para " -"'cobrar' por la creación de un nueva identidad de ruter. Por ahora no " -"hemos implementado ninguna técnica en particular para evitar los ataque " -"Sybil, pero I2P incluye espacio en los certificados de los ruters y " -"destinaciones para estructuras de datos que pueden contener un " -"certificado HashCash válido, si fuese necesario (o algún otro certificado" -" que proporcione este costo)." #: i2p2www/pages/site/docs/how/threat-model.html:602 msgid "Requiring HashCash Certificates in various places has two major problems:" @@ -12864,6 +14284,10 @@ msgid "" "machines,\n" "while still being feasible on low-end machines such as mobile devices." msgstr "" +"El problema clásico del HashCash - seleccionar valores HashCash que sean " +"pruebas significativas de gasto de trabajo en máquinas potentes, mientras" +" que también sean factibles en máquinas no tan potentes como los " +"dispositivos móviles." #: i2p2www/pages/site/docs/how/threat-model.html:616 msgid "" @@ -12898,7 +14322,7 @@ msgstr "" "Lookup Sección 5.2)" #: i2p2www/pages/site/docs/how/threat-model.html:634 -#, fuzzy, python-format +#, python-format msgid "" "By refusing to accept or forward tunnel build requests, except to a " "colluding peer, a router could ensure\n" @@ -12919,21 +14343,6 @@ msgid "" "to manipulate the profiles managed by the target and appear attractive.\n" "Further research and defenses may be necessary." msgstr "" -"Negándose a aceptar túneles o el reenvío de las peticiones para crearlos," -" excepto para los pares en colisión, un ruter puede asegurarse que un " -"túnel está formado completamente por un conjunto de ruters en colisión. " -"Las posibilidades de obtener éxito son aumentadas si hay un gran número " -"de ruters en colisión, por ejemplo el ataque " -"Sybil. Esto es en parte mitigado por losperfiles de los pares usados para " -"monitorizar el rendimiento de los pares. Aún así este ataque es muy " -"potente cuando el número de ruters se acerca a f = 0.2, o 20%%, " -"siendo f el número de nodos maliciosos, como se indica en el estudio. Los" -" ruters maliciosos también pueden mantener conexiones con el objetivo y " -"proporcionarle un gran ancho de banda de reenvío de tráfico en esas " -"conexiones, intentando manipular los perfiles controlados por el objetivo" -" y parecer atractivo. Hacen falta más estudios y defensas sobre este " -"tema." #: i2p2www/pages/site/docs/how/threat-model.html:653 #, python-format diff --git a/i2p2www/translations/es/LC_MESSAGES/priority.po b/i2p2www/translations/es/LC_MESSAGES/priority.po index 43f3353d..d7e25e7f 100644 --- a/i2p2www/translations/es/LC_MESSAGES/priority.po +++ b/i2p2www/translations/es/LC_MESSAGES/priority.po @@ -14,8 +14,8 @@ msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" "POT-Creation-Date: 2013-09-01 23:23+0000\n" -"PO-Revision-Date: 2013-08-12 10:34+0000\n" -"Last-Translator: str4d \n" +"PO-Revision-Date: 2013-09-02 01:59+0000\n" +"Last-Translator: strel \n" "Language-Team: Spanish " "(http://www.transifex.com/projects/p/I2P/language/es/)\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" @@ -427,7 +427,7 @@ msgstr "Descargas" #: i2p2www/pages/downloads/list.html:9 msgid "Download I2P" -msgstr "Descarga I2P" +msgstr "Descargue I2P" #: i2p2www/pages/downloads/list.html:11 msgid "Dependency" @@ -466,7 +466,7 @@ msgstr "Instalación" #: i2p2www/pages/downloads/list.html:76 i2p2www/pages/downloads/list.html:135 #: i2p2www/pages/downloads/list.html:264 msgid "select alternate link" -msgstr "seleccione un enlace alternativo" +msgstr "o seleccione un enlace alternativo" #: i2p2www/pages/downloads/list.html:39 msgid "Download that file and run it." @@ -535,13 +535,17 @@ msgid "Packages for Debian & Ubuntu are available." msgstr "Hay disponibles paquetes para Debian & Ubuntu." #: i2p2www/pages/downloads/list.html:116 -#, python-format +#, fuzzy, python-format msgid "" "The above file is the current release build.\n" " The latest dev build is version 0.9.7-20_b1-API18, and is available " "from\n" " str4d's eepsite." msgstr "" +"El archivo anterior es la versión actual. La última versión de desarrollo" +" es 0.9.3-5_b2-API8, y está disponible en sponge's eepsite - escanee o pulse el código " +"QR." #: i2p2www/pages/downloads/list.html:122 #, fuzzy @@ -611,8 +615,8 @@ msgid "" msgstr "" "Después de ejecutar el instalador en Windows simplemente pulse en el " "botón \"Start I2P\" \n" -"lo cual abrirá laconsola del " -"ruter,\n" +"lo cual abrirá la consola del" +" ruter,\n" "donde encontrará mas instrucciones." #: i2p2www/pages/downloads/list.html:174 @@ -740,9 +744,9 @@ msgid "" "automatically\n" "receive the release." msgstr "" -"Si utiliza la versión 0.6.1.30 o anterior, por favor lea instrucciones\n" -"para obtener ver información importante de como configurar el ruter para " +"para obtener información importante de como configurar el ruter para " "descargar las actualizaciones automáticamente." #: i2p2www/pages/downloads/list.html:243 @@ -1286,15 +1290,15 @@ msgstr "Registro completo del IRC" #: i2p2www/pages/papers/list.html:29 msgid "By topic" -msgstr "" +msgstr "Por asunto" #: i2p2www/pages/papers/list.html:35 msgid "By date" -msgstr "" +msgstr "Por fecha" #: i2p2www/pages/papers/list.html:41 msgid "By author" -msgstr "" +msgstr "Por autor" #: i2p2www/pages/papers/list.html:83 #, python-format @@ -1306,6 +1310,22 @@ msgid "" "Remember to include URLs if possible:\n" "offline papers are less useful." msgstr "" +"Por favor, envíe las entradas nuevas o corregidas a class=\"marksource " +"newline\" title=\"New line\"> class=\"marksource tag\">class=\"marksource tag\">class=\"marksource var\">%(email)sclass=\"marksource " +"tag\">class=\"marksource tag\">.class=\"marksource tag\">
    class=\"marksource newline\" title=\"New line\">\n" +"Si puede . use el formato BibTeX; vea ourclass=\"marksource newline\" " +"title=\"New line\"> class=\"marksource tag\">%(bibtex)s\">BibTeX source pageclass=\"marksource tag\"> for " +"examples.class=\"marksource tag\">
    class=\"marksource newline\" " +"title=\"New line\">\n" +"Recuerde de incluir las URLs si es posible:class=\"marksource newline\" " +"title=\"New line\">\n" +"class=\"marksource tag\">%(citeseer)s\">offline papers are less usefulclass=\"marksource " +"tag\">." #: i2p2www/pages/site/contact.html:2 msgid "Contact" @@ -1378,7 +1398,7 @@ msgstr "" #: i2p2www/pages/site/contact.html:33 msgid "Subscribing" -msgstr "Subscripción" +msgstr "Suscripción" #: i2p2www/pages/site/contact.html:34 msgid "" @@ -1386,7 +1406,7 @@ msgid "" "below) and fill out the form. I2P-internal email addresses " "(foobar@mail.i2p) can be used." msgstr "" -"Para subscribiese al mailing list, vaya a la página de información de la " +"Para suscribiese al mailing list, vaya a la página de información de la " "lista (enlazada debajo) y rellene el formulario. Puede usar la dirección " "interna de email de I2P (foobar@mail.i2p)." @@ -1400,9 +1420,9 @@ msgid "" "to the list information page (linked below) and enter your subscription " "email address." msgstr "" -"Para cancelar o cambiar las opciones de la subscripción a la lista de " +"Para cancelar o cambiar las opciones de la suscripción a la lista de " "mails, vaya a la página de información de la lista (enlace debajo) y " -"escriba el email de su subscripción." +"escriba el email de su suscripción." #: i2p2www/pages/site/contact.html:43 msgid "Lists" @@ -1469,9 +1489,9 @@ msgid "" "My active peers / known peers / participating tunnels / connections / " "bandwidth vary dramatically over time! Is anything wrong?" msgstr "" -"¡Mis pares pares / pares conocidos / túneles participantes / conexiones /" -" ancho de banda varían dramáticamente a lo largo del tiempo! ¿Algo está " -"mal?" +"¡Mis pares activos / pares conocidos / túneles participantes / conexiones" +" / ancho de banda varían dramáticamente a lo largo del tiempo! ¿Algo está" +" mal?" #: i2p2www/pages/site/faq.html:14 i2p2www/pages/site/faq.html:348 msgid "Is using an outproxy safe?" @@ -1523,7 +1543,7 @@ msgid "" "subscription links?" msgstr "" "Me faltan muchos dominios en mi lista de direcciones. ¿Dónde hay algunos " -"buenos enlaces de subscripciones?" +"buenos enlaces de suscripciones?" #: i2p2www/pages/site/faq.html:27 i2p2www/pages/site/faq.html:383 msgid "How do I set up my own eepsite?" @@ -1689,9 +1709,9 @@ msgid "" "\"jump\" links which\n" "is annoying." msgstr "" -"La subscripción por defecto es http://www.i2p2.i2p/hosts.txt que " -"raramente se actualiza. Si no tiene otra subscripción, a menudo tendrá " -"que utilizar el servicio de \\\"salto\\\" que es poco molesto." +"La suscripción por defecto es http://www.i2p2.i2p/hosts.txt que raramente" +" se actualiza. Si no tiene otra suscripción, a menudo tendrá que utilizar" +" el servicio de \\\"salto\\\" que es poco molesto." #: i2p2www/pages/site/faq.html:87 msgid "" @@ -1715,16 +1735,16 @@ msgid "" "hosts.\n" "Presence on this list does not imply endorsement." msgstr "" -"Aquí tiene algunos enlaces públicos de subscripciones de listas de " +"Aquí tiene algunos enlaces públicos de suscripciones de listas de " "direcciones. Quizás quiera añadir uno o dos a su lista de " -"subscripciones de susidns. No tiene que añadirlos todos, ya que se " +"suscripciones de susidns. No tiene que añadirlos todos, ya que se " "sincronizan entre ellos periódicamente. Los enlaces que utilizan una " "aplicación cgi-bin usan varias estrategias para minimizar el número de " -"direcciones duplicadas enviadas, por lo que deberían ser mas eficientes. " +"direcciones duplicadas enviadas, por lo que deberían ser más eficientes. " "Dese cuenta que suscribirse a un servicio hosts.txt es de hecho un acto " -"de \\\"confianza\\\", ya que una subscripción maliciosa podría darle una " -"dirección incorrecta. Por lo que piensese bien si quiere confiar en " +"de \\\"confianza\\\", ya que una suscripción maliciosa podría darle una " +"dirección incorrecta. Por lo que piénsese bien si quiere confiar en " "alguno de ellos. Los operadores de estos servicios podrían tener reglas " "al listar los hosts. La presencia de estos servicios en esta lista no " "implica aprobación por nuestra parte." @@ -1825,15 +1845,15 @@ msgstr "" "wrapper.config." #: i2p2www/pages/site/faq.html:161 -#, fuzzy msgid "" "Is the CPU usage simply higher than you would like, or is it pegged at " "100% for a long time?\n" "If it's pegged, this could be a bug. Look in the logs for clues." msgstr "" -"¿El uso de l aCPU es mayor de lo que le gustaría o está fijo al 100%f por" -" mucho tiempo? Si está fijo podría ser un error. Mire en los registros " -"para más información." +"¿Es simplemente el uso de CPU mayor del que le gustaría, o lleva mucho " +"tiempo clavado en 100%?\n" +"Si está clavado, esto podría ser un fallo (`bug`). Busque pistas en los " +"registros (`logs`)." #: i2p2www/pages/site/faq.html:167 #, python-format @@ -1865,10 +1885,10 @@ msgid "" msgstr "" "Si su librería jbigi nativa funciona bien, el uso excesivo de la CPU " "podría ser debido al tráfico enrutado de los túneles usados. Esto usa CPU" -" porque en cada salto se debe decodificar una capa del cifrado.Puede " +" porque en cada salto se debe decodificar una capa del cifrado. Puede " "limitar el tráfico usado de dos formas - reduciendo el ancho de banda " "compartido en confignet.jsp,o " +"href=\\\"http://localhost:7657/confignet.jsp\\\">confignet.jsp, o " "configurando router.maxParticipatingTunnels=nnn en configadvanced.jsp." @@ -1884,12 +1904,11 @@ msgid "" msgstr "" "Umm. Es un poco difícil, pues I2P es una red anónima. I2P está diseñada " "para evitar la censura, creando un medio para todos de comunicarse " -"libremente.La mejor forma de mantener tu PC libre de tráfico (cifrado) " -"que no desea es no usar I2P.La libertad de expresión tiene algunos " -"costes.Pero respondamos su pregunta en tres partes:" +"libremente. La mejor forma de mantener tu PC libre de tráfico (cifrado) " +"que no desea es no usar I2P. La libertad de expresión tiene algunos " +"costes. Pero respondamos su pregunta en tres partes:" #: i2p2www/pages/site/faq.html:199 -#, fuzzy msgid "" "Distribution - All traffic on I2P is encrypted in multiple layers." " You don't know\n" @@ -1903,14 +1922,19 @@ msgid "" "routing traffic for others.\n" "Over 95% of users route traffic for others." msgstr "" -"Distribución - Todo el tráfico en I2P es cifrado en varias capas. " -"Usted no puede conocer el contenido, origen o destinación de un mensaje. " -"Todo el tráfico que reenvíe es interno en la red I2P, usted no es un nodo de salida (outproxy). Su única alternativa es " -"negarse a rutar cualquier tráfico, configurando su ancho de banda " -"compartido o el número de túneles participantes a 0 (vea más arriba). " -"Preferiríamos que no hiciese esto, así ayudaría a la red rutando el " -"tráfico de otros. Más del 95%o de los usuarios rutan el tráfico de otros." +"Distribución - Todo el tráfico sobre I2P está cifrado en múltiples" +" capas. Usted no conoce el contenido de ningún mensaje, ni su origen o\n" +"destino. Todo el tráfico que enrute es interno a red I2P si usted no es " +"un \n" +"nodo de salida (`outproxy`). Su única alternativa " +"es \n" +"rehusar a enrutar cualquier tráfico, configurando su ancho de " +"banda \n" +"compartido o su máximo de túneles participantes a 0 (vea arriba). Estaría" +" \n" +"bien si no lo hace, debería ayudar a la red enrutando el tráfico de " +"otros. Más \n" +"de 95% usuarios enrutan tráfico para otros." #: i2p2www/pages/site/faq.html:210 msgid "" @@ -1921,7 +1945,7 @@ msgid "" msgstr "" "Almacenamiento - I2P no hace almacenamiento distribuido de " "contenidos. Debe estar pensando en Freenet.Ningún contenido de " +"href=\\\"http://freenetproject.org/\\\">Freenet. Ningún contenido de " "nadie está siendo almacenado en su computador por I2P." #: i2p2www/pages/site/faq.html:217 @@ -2030,7 +2054,7 @@ msgid "" "The best way to stay \"better-connected\" to the network is to share more bandwidth." msgstr "" -"Si su ruter tiene 10 o mas pares activos todo está bien. Los cambios en " +"Si su ruter tiene 10 o más pares activos todo está bien. Los cambios en " "las versiones 0.6.1.31 y 0.6.1.32 han mejorado la eficiencia del ruter y " "han reducido el número de pares activos. El ruter debería tener " "todo el tiempo conexiones con unos pocos pares. La mejor forma de estar " @@ -2047,7 +2071,6 @@ msgstr "" "serlo." #: i2p2www/pages/site/faq.html:274 -#, fuzzy msgid "" "No. Unlike Tor,\n" "\"exit nodes\" or \"outproxies\" are not an inherent part of the network." @@ -2056,14 +2079,17 @@ msgid "" "traffic to the regular Internet.\n" "There are very, very few of these." msgstr "" -"No. A diferencia de Tor, " -"los \\\"nodos de salida\\\" o \\\"outproxies\\\" no son una parte " -"inherente de la red. Solo los voluntarios que configuran y ejecutan " -"aplicaciones a parte reenviaran el tráfico al internet normal. Hay muy, " -"muy pocos de estos." +"No. Al contrario que Tor, los" +" \n" +"\"nodos de salida\" o los \"proxys externos\" (`outproxies`) no son una " +"parte \n" +"inherente de la red. Sólo voluntarios que hayan configuradio y ejecutado" +" \n" +"aplicaciones separadas repetirán tráfico a la Interneet regular. Hay muy," +" muy\n" +"pocos de estos." #: i2p2www/pages/site/faq.html:283 -#, fuzzy msgid "" "See above. There are very few HTTP \"outproxies\", they are not an " "inherent part of the network,\n" @@ -2082,17 +2108,24 @@ msgid "" "on the regular Internet, you should probably try Tor." msgstr "" -"Hay pocos \\\"outproxies\\\" HTTP, no son parte inherente de la red, y " -"podrían no estar encendidos. Además, los viejos outproxies squid.i2p, " -"true.i2p y krabs.i2p han desparecido. El único outproxy funcionando " -"actualmente es false.i2p. Para usarlo, edita tu configuración" -" de i2ptunnel para el eepProxy y pon tu lista de outproxy a " -"'false.i2p' (sólo). Entonces reinicia el eepProxy.\n" -"Si no funciona, el outproxy no funciona. No es un fallo de I2P. Si su " -"razón principal para usar una red nónima es acceder a webs del Internet " -"normal, debería probar Tor." +"Vea arriba. Hay muy pocos proxys al exterior HTTP (`outproxies`), no son" +" \n" +"una parte inherente de la red, y pueden no estar activos. Además, los \n" +"antiguos outproxies squid.i2p, true.i2p, y krabs.i2p se han desvanecido. " +"El \n" +"único proxy al exterior en este momento es false.i2p. Para usarlo, edite " +"sus \n" +"configuraciones" +" de i2ptunnel para eepProxy y establezca su lista de proxys al " +"exterior \n" +"a `false.i2p' (sólo). Luego pare y reinice el eepProxy. Si no funciona, " +"el \n" +"proxy al exterior no está activo. No es un fallo de IP2. Si su razón " +"principal \n" +"para suar una red anónima es acceder anónimamente a sitios en la \n" +"Internet regular, probablemente debería probar con Tor." #: i2p2www/pages/site/faq.html:298 msgid "" @@ -2254,7 +2287,6 @@ msgstr "" "en %(zzz)s." #: i2p2www/pages/site/faq.html:368 -#, fuzzy msgid "" "Unless an outproxy has been set up for the service you want to connect " "to, this cannot be done.\n" @@ -2263,11 +2295,13 @@ msgid "" "If this type of service is required, try Tor." msgstr "" -"A no ser se haya configurado un outproxy para el servicio al que quiere " -"conectar esto no se puede hacer. Sólo hay tres tipos de outproxies " -"funcionando ahora mismo: HTTP, HTTPS, y email. Fíjese que no hay outproxy" -" SOCKS. Si necesita este tipo de servicio pruebe Tor." +"A menos que su proxy al exterior haya sido configurado para el servicio " +"al \n" +"que quieres conectarse, esto no puede hacerse. Hay sólo tres tipos de \n" +"proxys al exterior (`outproxies`) ejecutandose en este instante: HTTP, \n" +"HTTPS, e email. Observe que no hay un proxy al exterior SOCKS. Si se \n" +"requiere este tipo de servicio, pruebe con Tor." #: i2p2www/pages/site/faq.html:376 #, fuzzy, python-format @@ -2319,9 +2353,9 @@ msgid "" "will increase the potential transfer rate for I2PSnark and all other " "applications." msgstr "" -"Además, probablemente necesite aumentar los límites de ancho de banda.Dos" -" configuraciones importantes son los límites de entrada y salida en la página de " +"Además, probablemente necesite aumentar los límites de ancho de banda. " +"Dos configuraciones importantes son los límites de entrada y salida en la página de " "configuración. Con la configuración por defecto de 32KBps " "probablemente no conseguirá mas de 15KBps de transferencia en I2PSnark. " "Aumentando estos valores (pero manteniéndolos dentro de las limitaciones " @@ -2468,9 +2502,8 @@ msgid "" "i2cp.tcp.bindAllInterfaces=true and restart." msgstr "" "Por defecto el dispositivo del ruter I2CP (puerto 7654) escucha en " -"127.0.0.1. Para que escuche en\\0.0.0.0, cambie la opción en " -"configuración avanzada i2cp.tcp.bindAllInterfaces=true y " -"reinicie." +"127.0.0.1. Para que escuche en 0.0.0.0, cambie la opción en configuración" +" avanzada i2cp.tcp.bindAllInterfaces=true y reinicie." #: i2p2www/pages/site/faq.html:481 msgid "Whats an \"eepsite\"?" @@ -2518,8 +2551,9 @@ msgid "" "supported.\n" "There is no SOCKS outproxy so it is of limited use." msgstr "" -"El proxy SOCKS está soportado desde la versión 0.7.1.Está soportado SOCKS" -" 4/4a/5.⏎ No hay proxy de salida SOCKS, con lo cual es de uso limitado." +"El proxy SOCKS está soportado desde la versión 0.7.1. Está soportado " +"SOCKS 4/4a/5. No hay proxy de salida SOCKS, con lo cual es de uso " +"limitado." #: i2p2www/pages/site/faq.html:512 msgid "" @@ -2533,14 +2567,14 @@ msgid "" "\n" "extremely dangerous." msgstr "" -"Además muchas aplicaciones tienen fugas de información sensible⏎ " -"información que podría identificarle en Internet.⏎ I2P sólo filtra los " -"datos de conexión, pero si el programa que ⏎ ejecuta envía esta " -"información, I2P no tiene forma de proteger su anonimato.⏎ Por ejemplo, " -"algunas aplicaciones de email envían la IP de la máquina ⏎ donde se " -"ejecutan al servidor de email. No hay forma de que I2P filtre ⏎ esto, " -"con lo cual usar I2P para 'sockificar' aplicaciones existente es posible," -" ⏎ pero extremadamente peligroso." +"Además muchas aplicaciones tienen fugas de información sensible, " +"información que podría identificarle en Internet. I2P sólo filtra los " +"datos de conexión, pero si el programa que ejecuta envía esta " +"información, I2P no tiene forma de proteger su anonimato. Por ejemplo, " +"algunas aplicaciones de email envían la IP de la máquina donde se " +"ejecutan al servidor de email. No hay forma de que I2P filtre esto, con " +"lo cual usar I2P para 'sockificar' aplicaciones existente es posible, " +"pero extremadamente peligroso." #: i2p2www/pages/site/faq.html:522 #, python-format @@ -2549,8 +2583,8 @@ msgid "" "\n" "there are some helpful hints on the socks page." msgstr "" -"Si aún así desea mas información sobre el proxy socks,⏎hay algunas " -"sugerencias útiles en la a href=\"%(socks)s\">web de socks" +"Si aún así desea mas información sobre el proxy socks, hay algunas " +"sugerencias útiles en la web de socks" #: i2p2www/pages/site/faq.html:529 msgid "" @@ -2569,12 +2603,12 @@ msgid "" "The selected port is shown on the router configuration page." msgstr "" -"Puertos abiertos al internet⏎ Nota: las nuevas instalaciones a " +"Puertos abiertos al internet Nota: las nuevas instalaciones a " "partir de 0.7.8 no usan el puerto 8887; elijen un puerto aleatorio entre " "9000 y 31000 cuando el programa se ejecuta por primera vez. El puerto " "seleccionado se muestra en la página de configuración." -" del ruter" +"href=\"http://127.0.0.1:7657/confignet.jsp\">página de configuración " +"del ruter" #: i2p2www/pages/site/faq.html:546 msgid "" @@ -2585,7 +2619,7 @@ msgid "" msgstr "" "Puerto aleatorio UDP de salida en la página de configuración " -"hacia puertos UDP remotos, permitiendo respuestas." +"hacia puertos UDP remotos, permitiendo respuestas." #: i2p2www/pages/site/faq.html:551 msgid "" @@ -2604,7 +2638,7 @@ msgid "" msgstr "" "(opcional pero recomendado) UDP de entrada hacia el puerto indicado en" " la página de " -"configuración desde ubicaciones arbitrarias⏎" +"configuración desde ubicaciones arbitrarias" #: i2p2www/pages/site/faq.html:561 msgid "" @@ -2616,10 +2650,9 @@ msgid "" msgstr "" "(opcional pero recomendado) TCP de entrada hacia el puerto indicado en" " la página de " -"configuración desde ubicaciones arbitrarias.⏎ TCP de entrada puede " -"estar deshabilitado en la " -"href=\"http://127.0.0.1:7657/confignet.jsp\">página de configuración " -"
    " +"configuración desde ubicaciones arbitrarias.
    TCP de entrada " +"puede estar deshabilitado en la página de configuración" #: i2p2www/pages/site/faq.html:567 msgid "" @@ -2628,10 +2661,9 @@ msgid "" "querying a random SNTP host in pool.ntp.org or another\n" "server you specify)" msgstr "" -"Puerto 123 de salida UDP, permitiendo respuestas
    ⏎ Este es " +"Puerto 123 de salida UDP, permitiendo respuestas
    Este es " "necesario para la sincronización del reloj de I2P ( via SNTP- consultando" -" un host SNTP aleatorio en ⏎ pool.ntp.org u otro servidor que " -"especifique)" +" un host SNTP aleatorio en pool.ntp.org u otro servidor que especifique)" #: i2p2www/pages/site/faq.html:578 msgid "" @@ -2639,7 +2671,7 @@ msgid "" "except where noted:" msgstr "" "Puertos locales de I2P, escuchando por defecto solamente a " -"conexiones locales, ⏎ excepto cuando se indique:" +"conexiones locales, excepto cuando se indique:" #: i2p2www/pages/site/faq.html:584 msgid "" @@ -2648,8 +2680,8 @@ msgid "" "May be disabled on confignet.jsp.
    " msgstr "" -"1900: UPnP SSDP UDP multicast listener.⏎ No puede cambiarse. " -"Escucha en todos los dispositivos.⏎ Puede estar desactivado en 1900: UPnP SSDP UDP multicast listener. No puede cambiarse. " +"Escucha en todos los dispositivos. Puede estar desactivado en confignet.jsp." #: i2p2www/pages/site/faq.html:591 @@ -2660,9 +2692,9 @@ msgid "" "href=\"http://localhost:7657/configclients.jsp\">configclients.jsp.\n" "May be changed in the bob.config file." msgstr "" -"2827: Puente BOB, un API de alto nivel para clientes ⏎ " -"Desactivado por defecto.⏎ Puede activarse/desactivarse en configclients.jsp.⏎ " +"2827: Puente BOB, un API de alto nivel para clientes " +"Desactivado por defecto. Puede activarse/desactivarse en configclients.jsp. " "Puede cambiarse en el archivo de configuración bob.config." #: i2p2www/pages/site/faq.html:599 @@ -2722,9 +2754,9 @@ msgid "" "May be disabled on confignet.jsp." msgstr "" -"7653: UPnP SSDP UDPsearch response listener.⏎ Escucha en todos" -" los dispositivos.⏎ Puede cambiarse con la configuración avanzada " -"i2np.upnp.SSDPPort=nnnn.⏎ Puede desactivarse en 7653: UPnP SSDP UDPsearch response listener. Escucha en todos " +"los dispositivos. Puede cambiarse con la configuración avanzada " +"i2np.upnp.SSDPPort=nnnn. Puede desactivarse en confignet.jsp." #: i2p2www/pages/site/faq.html:636 From 6c08675e40a36527bd35864da21f802945d80fa0 Mon Sep 17 00:00:00 2001 From: str4d Date: Wed, 4 Sep 2013 11:38:12 +0000 Subject: [PATCH 611/650] Reworked front page text --- i2p2www/pages/site/index.html | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/i2p2www/pages/site/index.html b/i2p2www/pages/site/index.html index a8e7237b..d50e5e2d 100644 --- a/i2p2www/pages/site/index.html +++ b/i2p2www/pages/site/index.html @@ -13,13 +13,19 @@

    {{ _('What is I2P?') }}

    • {% trans -%} -I2P is a full darknet implementation - a network within a network, and is intended to protect against monitoring by third parties, such as hostile governments or ISPs. +I2P is an alternate internet - a network within a network, and is intended to protect communication against monitoring by third parties, such as hostile governments or ISPs. {% endtrans %}
    • {% trans -%} -I2P is used by many people who care about their privacy, as well as those in high-risk situations. It is designed to protect activists, oppressed people, journalists and whistle-blowers - as well as the average person. +I2P is used by many people who care about their privacy: activists, oppressed people, journalists and whistle-blowers - as well as the average person. +{% endtrans %}
    • +
    • {% trans -%} +Anonymity is not a boolean. No network can be "perfectly anonymous". The continued goal of I2P is to make attacks more and more expensive to mount. {% endtrans %}
    • {% trans -%} I2P runs on Java and is therefore available anywhere Java will run, including desktops, embedded systems (like the Raspberry Pi) and Android phones. +{% endtrans %}
    • +
    • {% trans -%} +I2P is a work in progress. Its anonymity will get stronger as the size of the network increases and with ongoing academic review. Help spread the word! {% endtrans %}
    • {% trans %}Read more…{% endtrans %} From 6c9909641a03f1295e62159783179ada768c0f65 Mon Sep 17 00:00:00 2001 From: str4d Date: Wed, 4 Sep 2013 12:10:22 +0000 Subject: [PATCH 612/650] Reworked first sentence of frontpage text --- i2p2www/pages/site/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/i2p2www/pages/site/index.html b/i2p2www/pages/site/index.html index d50e5e2d..431ed116 100644 --- a/i2p2www/pages/site/index.html +++ b/i2p2www/pages/site/index.html @@ -13,7 +13,7 @@

      {{ _('What is I2P?') }}

      • {% trans -%} -I2P is an alternate internet - a network within a network, and is intended to protect communication against monitoring by third parties, such as hostile governments or ISPs. +I2P is an anonymous overlay network - a network within a network. It is intended to protect communication against dragnet surveillance, and monitoring by third parties such as ISPs. {% endtrans %}
      • {% trans -%} I2P is used by many people who care about their privacy: activists, oppressed people, journalists and whistle-blowers - as well as the average person. From a73497b11c5de1d257c8e8ec3b5831e1dd2f098a Mon Sep 17 00:00:00 2001 From: str4d Date: Wed, 4 Sep 2013 14:22:01 +0000 Subject: [PATCH 613/650] Tweaked supported activities display on frontpage --- i2p2www/pages/site/index.html | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/i2p2www/pages/site/index.html b/i2p2www/pages/site/index.html index 431ed116..e3818965 100644 --- a/i2p2www/pages/site/index.html +++ b/i2p2www/pages/site/index.html @@ -37,37 +37,37 @@ I2P is a work in progress. Its anonymity will get stronger as the size of the ne
        • {% trans supported=site_url('docs/applications/supported') -%} - Email Integrated web mail interface, plugin for serverless email. + Email: Integrated web mail interface, plugin for serverless email. {%- endtrans %}
        • {% trans supported=site_url('docs/applications/supported') -%} - Web browsing Anonymous websites, gateways to and from the public Internet. + Web browsing: Anonymous websites, gateways to and from the public Internet. {%- endtrans %}
        • {% trans supported=site_url('docs/applications/supported') -%} - Blogging and forums Blogging and Syndie plugins. + Blogging and forums: Blogging and Syndie plugins. {%- endtrans %}
        • {% trans supported=site_url('docs/applications/supported') -%} - Website hosting Integrated anonymous web server. + Website hosting: Integrated anonymous web server. {%- endtrans %}
        • {% trans supported=site_url('docs/applications/supported') -%} - Real-time chat Instant messaging and IRC clients. + Real-time chat: Instant messaging and IRC clients. {%- endtrans %}
        • {% trans supported=site_url('docs/applications/supported') -%} - File sharing ED2K and Gnutella clients, integrated BitTorrent client. + File sharing: ED2K and Gnutella clients, integrated BitTorrent client. {%- endtrans %}
        • {% trans supported=site_url('docs/applications/supported') -%} - Decentralized file storage Tahoe-LAFS distributed filesystem plugin. + Decentralized file storage: Tahoe-LAFS distributed filesystem plugin. {%- endtrans %}
        • From 704eb73c7be54d5a0d33482ec342f5171cecda78 Mon Sep 17 00:00:00 2001 From: str4d Date: Wed, 4 Sep 2013 14:22:16 +0000 Subject: [PATCH 614/650] Updated translation strings --- .../translations/de/LC_MESSAGES/priority.po | 73 ++++++++------- .../translations/es/LC_MESSAGES/priority.po | 89 +++++++++++-------- .../translations/fr/LC_MESSAGES/priority.po | 73 ++++++++------- .../translations/pt/LC_MESSAGES/priority.po | 73 ++++++++------- .../sv_SE/LC_MESSAGES/priority.po | 73 ++++++++------- 5 files changed, 224 insertions(+), 157 deletions(-) diff --git a/i2p2www/translations/de/LC_MESSAGES/priority.po b/i2p2www/translations/de/LC_MESSAGES/priority.po index 9b9ae75c..5a8285c1 100644 --- a/i2p2www/translations/de/LC_MESSAGES/priority.po +++ b/i2p2www/translations/de/LC_MESSAGES/priority.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-09-01 23:23+0000\n" +"POT-Creation-Date: 2013-09-04 14:19+0000\n" "PO-Revision-Date: 2013-08-12 10:34+0000\n" "Last-Translator: str4d \n" "Language-Team: German " @@ -36,7 +36,7 @@ msgstr "" msgid "Blog" msgstr "Blog" -#: i2p2www/pages/blog/index.html:4 i2p2www/pages/site/index.html:75 +#: i2p2www/pages/blog/index.html:4 i2p2www/pages/site/index.html:81 msgid "I2P Blog ATOM Feed" msgstr "" @@ -2469,89 +2469,102 @@ msgstr "" #: i2p2www/pages/site/index.html:15 msgid "" -"I2P is a full darknet implementation - a network within a network, and is" -" intended to protect against monitoring by third parties, such as hostile" -" governments or ISPs.\n" +"I2P is an anonymous overlay network - a network within a network. It is " +"intended to protect communication against dragnet surveillance, and " +"monitoring by third parties such as ISPs.\n" msgstr "" #: i2p2www/pages/site/index.html:18 msgid "" -"I2P is used by many people who care about their privacy, as well as those" -" in high-risk situations. It is designed to protect activists, oppressed " -"people, journalists and whistle-blowers - as well as the average person." -"\n" +"I2P is used by many people who care about their privacy: activists, " +"oppressed people, journalists and whistle-blowers - as well as the " +"average person.\n" msgstr "" #: i2p2www/pages/site/index.html:21 msgid "" +"Anonymity is not a boolean. No network can be \"perfectly anonymous\". " +"The continued goal of I2P is to make attacks more and more expensive to " +"mount.\n" +msgstr "" + +#: i2p2www/pages/site/index.html:24 +msgid "" "I2P runs on Java and is therefore available anywhere Java will run, " "including desktops, embedded systems (like the Raspberry Pi) and Android" " phones.\n" msgstr "" -#: i2p2www/pages/site/index.html:25 +#: i2p2www/pages/site/index.html:27 +msgid "" +"I2P is a work in progress. Its anonymity will get stronger as the size of" +" the network increases and with ongoing academic review. Help spread the " +"word!\n" +msgstr "" + +#: i2p2www/pages/site/index.html:31 msgid "Read more…" msgstr "" -#: i2p2www/pages/site/index.html:30 +#: i2p2www/pages/site/index.html:36 msgid "What can you do with I2P?" msgstr "" -#: i2p2www/pages/site/index.html:33 +#: i2p2www/pages/site/index.html:39 #, python-format msgid "" -"Email Integrated web mail interface, " -"plugin for serverless email." +"Email: Integrated web mail interface," +" plugin for serverless email." msgstr "" -#: i2p2www/pages/site/index.html:38 +#: i2p2www/pages/site/index.html:44 #, python-format msgid "" -"Web browsing Anonymous " +"Web browsing: Anonymous " "websites, gateways to and from the public Internet." msgstr "" -#: i2p2www/pages/site/index.html:43 +#: i2p2www/pages/site/index.html:49 #, python-format msgid "" -"Blogging and forums " +"Blogging and forums: " "Blogging and Syndie plugins." msgstr "" -#: i2p2www/pages/site/index.html:48 +#: i2p2www/pages/site/index.html:54 #, python-format msgid "" -"Website hosting Integrated " -"anonymous web server." +"Website hosting: Integrated" +" anonymous web server." msgstr "" -#: i2p2www/pages/site/index.html:53 +#: i2p2www/pages/site/index.html:59 #, python-format msgid "" -"Real-time chat Instant " +"Real-time chat: Instant " "messaging and IRC clients." msgstr "" -#: i2p2www/pages/site/index.html:58 +#: i2p2www/pages/site/index.html:64 #, python-format msgid "" -"File sharing ED2K and Gnutella" -" clients, integrated BitTorrent client." +"File sharing: ED2K and " +"Gnutella clients, integrated BitTorrent client." msgstr "" -#: i2p2www/pages/site/index.html:63 +#: i2p2www/pages/site/index.html:69 #, python-format msgid "" "Decentralized file " -"storage Tahoe-LAFS distributed filesystem plugin." +"storage: Tahoe-LAFS distributed filesystem plugin." msgstr "" -#: i2p2www/pages/site/index.html:68 +#: i2p2www/pages/site/index.html:74 #, python-format msgid "More supported applications…" msgstr "" -#: i2p2www/pages/site/index.html:76 +#: i2p2www/pages/site/index.html:82 msgid "News & Updates" msgstr "" diff --git a/i2p2www/translations/es/LC_MESSAGES/priority.po b/i2p2www/translations/es/LC_MESSAGES/priority.po index d7e25e7f..9401b568 100644 --- a/i2p2www/translations/es/LC_MESSAGES/priority.po +++ b/i2p2www/translations/es/LC_MESSAGES/priority.po @@ -13,7 +13,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-09-01 23:23+0000\n" +"POT-Creation-Date: 2013-09-04 14:19+0000\n" "PO-Revision-Date: 2013-09-02 01:59+0000\n" "Last-Translator: strel \n" "Language-Team: Spanish " @@ -38,7 +38,7 @@ msgstr "ATOM Feed del Blog de I2P para la Categoría: %(category)s" msgid "Blog" msgstr "Blog" -#: i2p2www/pages/blog/index.html:4 i2p2www/pages/site/index.html:75 +#: i2p2www/pages/blog/index.html:4 i2p2www/pages/site/index.html:81 msgid "I2P Blog ATOM Feed" msgstr "Blog de I2P y ATOM feed" @@ -3198,21 +3198,22 @@ msgid "What is I2P?" msgstr "¿Qué es I2P?" #: i2p2www/pages/site/index.html:15 +#, fuzzy msgid "" -"I2P is a full darknet implementation - a network within a network, and is" -" intended to protect against monitoring by third parties, such as hostile" -" governments or ISPs.\n" +"I2P is an anonymous overlay network - a network within a network. It is " +"intended to protect communication against dragnet surveillance, and " +"monitoring by third parties such as ISPs.\n" msgstr "" "I2p es una implementación completa de una darkent - una red dentro de " "otra red, y está creada para proteger contra la monitarización de " "terceras partes, como gobiernos hostiles o ISPs.\n" #: i2p2www/pages/site/index.html:18 +#, fuzzy msgid "" -"I2P is used by many people who care about their privacy, as well as those" -" in high-risk situations. It is designed to protect activists, oppressed " -"people, journalists and whistle-blowers - as well as the average person." -"\n" +"I2P is used by many people who care about their privacy: activists, " +"oppressed people, journalists and whistle-blowers - as well as the " +"average person.\n" msgstr "" "I2P es usado por mucha gente que se preocupa de su privacidad, y también " "por otras personas en situaciones de alto riesgo. Está diseñado para " @@ -3221,6 +3222,13 @@ msgstr "" #: i2p2www/pages/site/index.html:21 msgid "" +"Anonymity is not a boolean. No network can be \"perfectly anonymous\". " +"The continued goal of I2P is to make attacks more and more expensive to " +"mount.\n" +msgstr "" + +#: i2p2www/pages/site/index.html:24 +msgid "" "I2P runs on Java and is therefore available anywhere Java will run, " "including desktops, embedded systems (like the Raspberry Pi) and Android" " phones.\n" @@ -3229,84 +3237,91 @@ msgstr "" "funcione, incluyendo sistemas de escritorio, embebidos (como Raspberry " "Pi) y móviles Android.\n" -#: i2p2www/pages/site/index.html:25 +#: i2p2www/pages/site/index.html:27 +msgid "" +"I2P is a work in progress. Its anonymity will get stronger as the size of" +" the network increases and with ongoing academic review. Help spread the " +"word!\n" +msgstr "" + +#: i2p2www/pages/site/index.html:31 msgid "Read more…" msgstr "Leer mas…" -#: i2p2www/pages/site/index.html:30 +#: i2p2www/pages/site/index.html:36 msgid "What can you do with I2P?" msgstr "¿Qué puede hacer con I2P?" -#: i2p2www/pages/site/index.html:33 -#, python-format +#: i2p2www/pages/site/index.html:39 +#, fuzzy, python-format msgid "" -"Email Integrated web mail interface, " -"plugin for serverless email." +"Email: Integrated web mail interface," +" plugin for serverless email." msgstr "" "Email Interfaz de correo web " "incluido, pluguin para emails sin servidores." -#: i2p2www/pages/site/index.html:38 -#, python-format +#: i2p2www/pages/site/index.html:44 +#, fuzzy, python-format msgid "" -"Web browsing Anonymous " +"Web browsing: Anonymous " "websites, gateways to and from the public Internet." msgstr "" "Navegación web Webs anónimas, " "gateways desde y hacia el Internet público." -#: i2p2www/pages/site/index.html:43 -#, python-format +#: i2p2www/pages/site/index.html:49 +#, fuzzy, python-format msgid "" -"Blogging and forums " +"Blogging and forums: " "Blogging and Syndie plugins." msgstr "" "Blogs y foros Blogs y " "pluguins para Syndie." -#: i2p2www/pages/site/index.html:48 -#, python-format +#: i2p2www/pages/site/index.html:54 +#, fuzzy, python-format msgid "" -"Website hosting Integrated " -"anonymous web server." +"Website hosting: Integrated" +" anonymous web server." msgstr "" "Alojamiento web Servidor " "web anónimo integrado." -#: i2p2www/pages/site/index.html:53 -#, python-format +#: i2p2www/pages/site/index.html:59 +#, fuzzy, python-format msgid "" -"Real-time chat Instant " +"Real-time chat: Instant " "messaging and IRC clients." msgstr "" "Chat en tiempo real " "Mensajería instantánea y clientes IRC." -#: i2p2www/pages/site/index.html:58 -#, python-format +#: i2p2www/pages/site/index.html:64 +#, fuzzy, python-format msgid "" -"File sharing ED2K and Gnutella" -" clients, integrated BitTorrent client." +"File sharing: ED2K and " +"Gnutella clients, integrated BitTorrent client." msgstr "" "Compartición de archivos " "Clientes ED2K y Gnutella, cliente de BitTorrent integrado." -#: i2p2www/pages/site/index.html:63 -#, python-format +#: i2p2www/pages/site/index.html:69 +#, fuzzy, python-format msgid "" "Decentralized file " -"storage Tahoe-LAFS distributed filesystem plugin." +"storage: Tahoe-LAFS distributed filesystem plugin." msgstr "" "Almacenamiento de " "archivos descentralizado Pluguin para el sistema de archivos " "distribuido Tahoe-LAFS." -#: i2p2www/pages/site/index.html:68 +#: i2p2www/pages/site/index.html:74 #, python-format msgid "More supported applications…" msgstr "Más aplicaciones soportadas…" -#: i2p2www/pages/site/index.html:76 +#: i2p2www/pages/site/index.html:82 msgid "News & Updates" msgstr "Noticias & Actualizaciones" diff --git a/i2p2www/translations/fr/LC_MESSAGES/priority.po b/i2p2www/translations/fr/LC_MESSAGES/priority.po index 668e5736..7a933150 100644 --- a/i2p2www/translations/fr/LC_MESSAGES/priority.po +++ b/i2p2www/translations/fr/LC_MESSAGES/priority.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-09-01 23:23+0000\n" +"POT-Creation-Date: 2013-09-04 14:19+0000\n" "PO-Revision-Date: 2013-08-12 10:34+0000\n" "Last-Translator: str4d \n" "Language-Team: French " @@ -34,7 +34,7 @@ msgstr "Flux ATOM du Blog I2P pour la catégorie : %(category)s" msgid "Blog" msgstr "Blog" -#: i2p2www/pages/blog/index.html:4 i2p2www/pages/site/index.html:75 +#: i2p2www/pages/blog/index.html:4 i2p2www/pages/site/index.html:81 msgid "I2P Blog ATOM Feed" msgstr "Flux ATOM du Blog I2P" @@ -3178,89 +3178,102 @@ msgstr "Qu'est-ce que I2P ?" #: i2p2www/pages/site/index.html:15 msgid "" -"I2P is a full darknet implementation - a network within a network, and is" -" intended to protect against monitoring by third parties, such as hostile" -" governments or ISPs.\n" +"I2P is an anonymous overlay network - a network within a network. It is " +"intended to protect communication against dragnet surveillance, and " +"monitoring by third parties such as ISPs.\n" msgstr "" #: i2p2www/pages/site/index.html:18 msgid "" -"I2P is used by many people who care about their privacy, as well as those" -" in high-risk situations. It is designed to protect activists, oppressed " -"people, journalists and whistle-blowers - as well as the average person." -"\n" +"I2P is used by many people who care about their privacy: activists, " +"oppressed people, journalists and whistle-blowers - as well as the " +"average person.\n" msgstr "" #: i2p2www/pages/site/index.html:21 msgid "" +"Anonymity is not a boolean. No network can be \"perfectly anonymous\". " +"The continued goal of I2P is to make attacks more and more expensive to " +"mount.\n" +msgstr "" + +#: i2p2www/pages/site/index.html:24 +msgid "" "I2P runs on Java and is therefore available anywhere Java will run, " "including desktops, embedded systems (like the Raspberry Pi) and Android" " phones.\n" msgstr "" -#: i2p2www/pages/site/index.html:25 +#: i2p2www/pages/site/index.html:27 +msgid "" +"I2P is a work in progress. Its anonymity will get stronger as the size of" +" the network increases and with ongoing academic review. Help spread the " +"word!\n" +msgstr "" + +#: i2p2www/pages/site/index.html:31 msgid "Read more…" msgstr "" -#: i2p2www/pages/site/index.html:30 +#: i2p2www/pages/site/index.html:36 msgid "What can you do with I2P?" msgstr "" -#: i2p2www/pages/site/index.html:33 +#: i2p2www/pages/site/index.html:39 #, python-format msgid "" -"Email Integrated web mail interface, " -"plugin for serverless email." +"Email: Integrated web mail interface," +" plugin for serverless email." msgstr "" -#: i2p2www/pages/site/index.html:38 +#: i2p2www/pages/site/index.html:44 #, python-format msgid "" -"Web browsing Anonymous " +"Web browsing: Anonymous " "websites, gateways to and from the public Internet." msgstr "" -#: i2p2www/pages/site/index.html:43 +#: i2p2www/pages/site/index.html:49 #, python-format msgid "" -"Blogging and forums " +"Blogging and forums: " "Blogging and Syndie plugins." msgstr "" -#: i2p2www/pages/site/index.html:48 +#: i2p2www/pages/site/index.html:54 #, python-format msgid "" -"Website hosting Integrated " -"anonymous web server." +"Website hosting: Integrated" +" anonymous web server." msgstr "" -#: i2p2www/pages/site/index.html:53 +#: i2p2www/pages/site/index.html:59 #, python-format msgid "" -"Real-time chat Instant " +"Real-time chat: Instant " "messaging and IRC clients." msgstr "" -#: i2p2www/pages/site/index.html:58 +#: i2p2www/pages/site/index.html:64 #, python-format msgid "" -"File sharing ED2K and Gnutella" -" clients, integrated BitTorrent client." +"File sharing: ED2K and " +"Gnutella clients, integrated BitTorrent client." msgstr "" -#: i2p2www/pages/site/index.html:63 +#: i2p2www/pages/site/index.html:69 #, python-format msgid "" "Decentralized file " -"storage Tahoe-LAFS distributed filesystem plugin." +"storage: Tahoe-LAFS distributed filesystem plugin." msgstr "" -#: i2p2www/pages/site/index.html:68 +#: i2p2www/pages/site/index.html:74 #, python-format msgid "More supported applications…" msgstr "" -#: i2p2www/pages/site/index.html:76 +#: i2p2www/pages/site/index.html:82 msgid "News & Updates" msgstr "Actualités & mises à jour" diff --git a/i2p2www/translations/pt/LC_MESSAGES/priority.po b/i2p2www/translations/pt/LC_MESSAGES/priority.po index 7c0a97bc..0f7ff2af 100644 --- a/i2p2www/translations/pt/LC_MESSAGES/priority.po +++ b/i2p2www/translations/pt/LC_MESSAGES/priority.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-09-01 23:23+0000\n" +"POT-Creation-Date: 2013-09-04 14:19+0000\n" "PO-Revision-Date: 2013-08-12 10:34+0000\n" "Last-Translator: str4d \n" "Language-Team: Portuguese " @@ -35,7 +35,7 @@ msgstr "" msgid "Blog" msgstr "" -#: i2p2www/pages/blog/index.html:4 i2p2www/pages/site/index.html:75 +#: i2p2www/pages/blog/index.html:4 i2p2www/pages/site/index.html:81 msgid "I2P Blog ATOM Feed" msgstr "Feed ATOM do blog do I2P" @@ -2627,89 +2627,102 @@ msgstr "" #: i2p2www/pages/site/index.html:15 msgid "" -"I2P is a full darknet implementation - a network within a network, and is" -" intended to protect against monitoring by third parties, such as hostile" -" governments or ISPs.\n" +"I2P is an anonymous overlay network - a network within a network. It is " +"intended to protect communication against dragnet surveillance, and " +"monitoring by third parties such as ISPs.\n" msgstr "" #: i2p2www/pages/site/index.html:18 msgid "" -"I2P is used by many people who care about their privacy, as well as those" -" in high-risk situations. It is designed to protect activists, oppressed " -"people, journalists and whistle-blowers - as well as the average person." -"\n" +"I2P is used by many people who care about their privacy: activists, " +"oppressed people, journalists and whistle-blowers - as well as the " +"average person.\n" msgstr "" #: i2p2www/pages/site/index.html:21 msgid "" +"Anonymity is not a boolean. No network can be \"perfectly anonymous\". " +"The continued goal of I2P is to make attacks more and more expensive to " +"mount.\n" +msgstr "" + +#: i2p2www/pages/site/index.html:24 +msgid "" "I2P runs on Java and is therefore available anywhere Java will run, " "including desktops, embedded systems (like the Raspberry Pi) and Android" " phones.\n" msgstr "" -#: i2p2www/pages/site/index.html:25 +#: i2p2www/pages/site/index.html:27 +msgid "" +"I2P is a work in progress. Its anonymity will get stronger as the size of" +" the network increases and with ongoing academic review. Help spread the " +"word!\n" +msgstr "" + +#: i2p2www/pages/site/index.html:31 msgid "Read more…" msgstr "" -#: i2p2www/pages/site/index.html:30 +#: i2p2www/pages/site/index.html:36 msgid "What can you do with I2P?" msgstr "" -#: i2p2www/pages/site/index.html:33 +#: i2p2www/pages/site/index.html:39 #, python-format msgid "" -"Email Integrated web mail interface, " -"plugin for serverless email." +"Email: Integrated web mail interface," +" plugin for serverless email." msgstr "" -#: i2p2www/pages/site/index.html:38 +#: i2p2www/pages/site/index.html:44 #, python-format msgid "" -"Web browsing Anonymous " +"Web browsing: Anonymous " "websites, gateways to and from the public Internet." msgstr "" -#: i2p2www/pages/site/index.html:43 +#: i2p2www/pages/site/index.html:49 #, python-format msgid "" -"Blogging and forums " +"Blogging and forums: " "Blogging and Syndie plugins." msgstr "" -#: i2p2www/pages/site/index.html:48 +#: i2p2www/pages/site/index.html:54 #, python-format msgid "" -"Website hosting Integrated " -"anonymous web server." +"Website hosting: Integrated" +" anonymous web server." msgstr "" -#: i2p2www/pages/site/index.html:53 +#: i2p2www/pages/site/index.html:59 #, python-format msgid "" -"Real-time chat Instant " +"Real-time chat: Instant " "messaging and IRC clients." msgstr "" -#: i2p2www/pages/site/index.html:58 +#: i2p2www/pages/site/index.html:64 #, python-format msgid "" -"File sharing ED2K and Gnutella" -" clients, integrated BitTorrent client." +"File sharing: ED2K and " +"Gnutella clients, integrated BitTorrent client." msgstr "" -#: i2p2www/pages/site/index.html:63 +#: i2p2www/pages/site/index.html:69 #, python-format msgid "" "Decentralized file " -"storage Tahoe-LAFS distributed filesystem plugin." +"storage: Tahoe-LAFS distributed filesystem plugin." msgstr "" -#: i2p2www/pages/site/index.html:68 +#: i2p2www/pages/site/index.html:74 #, python-format msgid "More supported applications…" msgstr "" -#: i2p2www/pages/site/index.html:76 +#: i2p2www/pages/site/index.html:82 msgid "News & Updates" msgstr "" diff --git a/i2p2www/translations/sv_SE/LC_MESSAGES/priority.po b/i2p2www/translations/sv_SE/LC_MESSAGES/priority.po index 07454352..ae64b63d 100644 --- a/i2p2www/translations/sv_SE/LC_MESSAGES/priority.po +++ b/i2p2www/translations/sv_SE/LC_MESSAGES/priority.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-09-01 23:23+0000\n" +"POT-Creation-Date: 2013-09-04 14:19+0000\n" "PO-Revision-Date: 2013-04-27 23:10+0000\n" "Last-Translator: Martin Svensson \n" "Language-Team: Swedish (Sweden) " @@ -34,7 +34,7 @@ msgstr "" msgid "Blog" msgstr "" -#: i2p2www/pages/blog/index.html:4 i2p2www/pages/site/index.html:75 +#: i2p2www/pages/blog/index.html:4 i2p2www/pages/site/index.html:81 msgid "I2P Blog ATOM Feed" msgstr "" @@ -2448,89 +2448,102 @@ msgstr "" #: i2p2www/pages/site/index.html:15 msgid "" -"I2P is a full darknet implementation - a network within a network, and is" -" intended to protect against monitoring by third parties, such as hostile" -" governments or ISPs.\n" +"I2P is an anonymous overlay network - a network within a network. It is " +"intended to protect communication against dragnet surveillance, and " +"monitoring by third parties such as ISPs.\n" msgstr "" #: i2p2www/pages/site/index.html:18 msgid "" -"I2P is used by many people who care about their privacy, as well as those" -" in high-risk situations. It is designed to protect activists, oppressed " -"people, journalists and whistle-blowers - as well as the average person." -"\n" +"I2P is used by many people who care about their privacy: activists, " +"oppressed people, journalists and whistle-blowers - as well as the " +"average person.\n" msgstr "" #: i2p2www/pages/site/index.html:21 msgid "" +"Anonymity is not a boolean. No network can be \"perfectly anonymous\". " +"The continued goal of I2P is to make attacks more and more expensive to " +"mount.\n" +msgstr "" + +#: i2p2www/pages/site/index.html:24 +msgid "" "I2P runs on Java and is therefore available anywhere Java will run, " "including desktops, embedded systems (like the Raspberry Pi) and Android" " phones.\n" msgstr "" -#: i2p2www/pages/site/index.html:25 +#: i2p2www/pages/site/index.html:27 +msgid "" +"I2P is a work in progress. Its anonymity will get stronger as the size of" +" the network increases and with ongoing academic review. Help spread the " +"word!\n" +msgstr "" + +#: i2p2www/pages/site/index.html:31 msgid "Read more…" msgstr "" -#: i2p2www/pages/site/index.html:30 +#: i2p2www/pages/site/index.html:36 msgid "What can you do with I2P?" msgstr "" -#: i2p2www/pages/site/index.html:33 +#: i2p2www/pages/site/index.html:39 #, python-format msgid "" -"Email Integrated web mail interface, " -"plugin for serverless email." +"Email: Integrated web mail interface," +" plugin for serverless email." msgstr "" -#: i2p2www/pages/site/index.html:38 +#: i2p2www/pages/site/index.html:44 #, python-format msgid "" -"Web browsing Anonymous " +"Web browsing: Anonymous " "websites, gateways to and from the public Internet." msgstr "" -#: i2p2www/pages/site/index.html:43 +#: i2p2www/pages/site/index.html:49 #, python-format msgid "" -"Blogging and forums " +"Blogging and forums: " "Blogging and Syndie plugins." msgstr "" -#: i2p2www/pages/site/index.html:48 +#: i2p2www/pages/site/index.html:54 #, python-format msgid "" -"Website hosting Integrated " -"anonymous web server." +"Website hosting: Integrated" +" anonymous web server." msgstr "" -#: i2p2www/pages/site/index.html:53 +#: i2p2www/pages/site/index.html:59 #, python-format msgid "" -"Real-time chat Instant " +"Real-time chat: Instant " "messaging and IRC clients." msgstr "" -#: i2p2www/pages/site/index.html:58 +#: i2p2www/pages/site/index.html:64 #, python-format msgid "" -"File sharing ED2K and Gnutella" -" clients, integrated BitTorrent client." +"File sharing: ED2K and " +"Gnutella clients, integrated BitTorrent client." msgstr "" -#: i2p2www/pages/site/index.html:63 +#: i2p2www/pages/site/index.html:69 #, python-format msgid "" "Decentralized file " -"storage Tahoe-LAFS distributed filesystem plugin." +"storage: Tahoe-LAFS distributed filesystem plugin." msgstr "" -#: i2p2www/pages/site/index.html:68 +#: i2p2www/pages/site/index.html:74 #, python-format msgid "More supported applications…" msgstr "" -#: i2p2www/pages/site/index.html:76 +#: i2p2www/pages/site/index.html:82 msgid "News & Updates" msgstr "" From 75b026c19830aa55c0553f69ec1d1aa79625dff6 Mon Sep 17 00:00:00 2001 From: str4d Date: Wed, 4 Sep 2013 14:29:37 +0000 Subject: [PATCH 615/650] Updated translations --- .../translations/de/LC_MESSAGES/priority.po | 2 +- .../translations/es/LC_MESSAGES/priority.po | 74 ++-- .../translations/fr/LC_MESSAGES/priority.po | 320 ++++++++++++++---- .../translations/pt/LC_MESSAGES/priority.po | 8 +- 4 files changed, 286 insertions(+), 118 deletions(-) diff --git a/i2p2www/translations/de/LC_MESSAGES/priority.po b/i2p2www/translations/de/LC_MESSAGES/priority.po index 5a8285c1..86641a35 100644 --- a/i2p2www/translations/de/LC_MESSAGES/priority.po +++ b/i2p2www/translations/de/LC_MESSAGES/priority.po @@ -12,7 +12,7 @@ msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" "POT-Creation-Date: 2013-09-04 14:19+0000\n" -"PO-Revision-Date: 2013-08-12 10:34+0000\n" +"PO-Revision-Date: 2013-09-04 14:25+0000\n" "Last-Translator: str4d \n" "Language-Team: German " "(http://www.transifex.com/projects/p/I2P/language/de/)\n" diff --git a/i2p2www/translations/es/LC_MESSAGES/priority.po b/i2p2www/translations/es/LC_MESSAGES/priority.po index 9401b568..3f6d1f4e 100644 --- a/i2p2www/translations/es/LC_MESSAGES/priority.po +++ b/i2p2www/translations/es/LC_MESSAGES/priority.po @@ -14,8 +14,8 @@ msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" "POT-Creation-Date: 2013-09-04 14:19+0000\n" -"PO-Revision-Date: 2013-09-02 01:59+0000\n" -"Last-Translator: strel \n" +"PO-Revision-Date: 2013-09-04 14:25+0000\n" +"Last-Translator: str4d \n" "Language-Team: Spanish " "(http://www.transifex.com/projects/p/I2P/language/es/)\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" @@ -535,31 +535,27 @@ msgid "Packages for Debian & Ubuntu are available." msgstr "Hay disponibles paquetes para Debian & Ubuntu." #: i2p2www/pages/downloads/list.html:116 -#, fuzzy, python-format +#, python-format msgid "" "The above file is the current release build.\n" " The latest dev build is version 0.9.7-20_b1-API18, and is available " "from\n" " str4d's eepsite." msgstr "" -"El archivo anterior es la versión actual. La última versión de desarrollo" -" es 0.9.3-5_b2-API8, y está disponible en sponge's eepsite - escanee o pulse el código " -"QR." +"El archivo de arriba es la versión actual. La última compilación es la " +"versión 0.9.7-20_b1-API18, y está disponible en la eepsite de str4d." #: i2p2www/pages/downloads/list.html:122 -#, fuzzy msgid "" "The release and dev versions of the I2P APK are not compatible, as they\n" " are signed by zzz and str4d respectively. Uninstall one before " "installing\n" " the other." msgstr "" -"Las versiones 'release' y en desarrollo del paquete APK de I2P no son " -"compatibles, \n" -" ya que están firmadas por zzz y sponge respectivamente. Desinstale " -"una antes de \n" -" instalar la otra." +"La versión estable y en desarrollo del APK I2P no son compatibles, ya que" +" están firmadas por zzz y str4d respectivamente. Desinstale una antes de " +"instalar la otra." #: i2p2www/pages/downloads/list.html:132 msgid "Source package" @@ -922,7 +918,7 @@ msgstr "Donar" #: i2p2www/pages/global/layout.html:29 msgid "Skip navigation" -msgstr "" +msgstr "Saltar navegación" #: i2p2www/pages/global/layout.html:32 msgid "I2P Logo" @@ -2304,7 +2300,7 @@ msgstr "" "href=\"https://www.torproject.org/\">Tor." #: i2p2www/pages/site/faq.html:376 -#, fuzzy, python-format +#, python-format msgid "" "If you consider every eepsite that has ever been created, yes, most of " "them are down.\n" @@ -2313,11 +2309,11 @@ msgid "" " currently up.\n" "%(eepstatus)s tracks active eepsites." msgstr "" -"Si considera todas las eepsites que se han creado, si, la mayoría no " -"funcionan. La gente y las eepsites van y vienen. Una buena forma de " -"comenzar con I2P es mirar la lista de eepsites que funcionan actualmente." -" %(perv)s informa qué " -"páginas están activas." +"Si consideramos cada eepsite que ha sido creada, sí, la mayoría de ellas " +"están caídas. La gente y las eepsites van y vienen. Una buena forma de " +"comenzar en I2P es ver la lista de las eepsites que están funcionando. %(eepstatus)s una la lista de las eepsites " +"activas. " #: i2p2www/pages/site/faq.html:385 msgid "" @@ -3198,27 +3194,18 @@ msgid "What is I2P?" msgstr "¿Qué es I2P?" #: i2p2www/pages/site/index.html:15 -#, fuzzy msgid "" "I2P is an anonymous overlay network - a network within a network. It is " "intended to protect communication against dragnet surveillance, and " "monitoring by third parties such as ISPs.\n" msgstr "" -"I2p es una implementación completa de una darkent - una red dentro de " -"otra red, y está creada para proteger contra la monitarización de " -"terceras partes, como gobiernos hostiles o ISPs.\n" #: i2p2www/pages/site/index.html:18 -#, fuzzy msgid "" "I2P is used by many people who care about their privacy: activists, " "oppressed people, journalists and whistle-blowers - as well as the " "average person.\n" msgstr "" -"I2P es usado por mucha gente que se preocupa de su privacidad, y también " -"por otras personas en situaciones de alto riesgo. Está diseñado para " -"proteger activistas, periodistas y personas que denuncian la corrupción." -"\n" #: i2p2www/pages/site/index.html:21 msgid "" @@ -3253,68 +3240,53 @@ msgid "What can you do with I2P?" msgstr "¿Qué puede hacer con I2P?" #: i2p2www/pages/site/index.html:39 -#, fuzzy, python-format +#, python-format msgid "" "Email: Integrated web mail interface," " plugin for serverless email." msgstr "" -"Email Interfaz de correo web " -"incluido, pluguin para emails sin servidores." #: i2p2www/pages/site/index.html:44 -#, fuzzy, python-format +#, python-format msgid "" "Web browsing: Anonymous " "websites, gateways to and from the public Internet." msgstr "" -"Navegación web Webs anónimas, " -"gateways desde y hacia el Internet público." #: i2p2www/pages/site/index.html:49 -#, fuzzy, python-format +#, python-format msgid "" "Blogging and forums: " "Blogging and Syndie plugins." msgstr "" -"Blogs y foros Blogs y " -"pluguins para Syndie." #: i2p2www/pages/site/index.html:54 -#, fuzzy, python-format +#, python-format msgid "" "Website hosting: Integrated" " anonymous web server." msgstr "" -"Alojamiento web Servidor " -"web anónimo integrado." #: i2p2www/pages/site/index.html:59 -#, fuzzy, python-format +#, python-format msgid "" "Real-time chat: Instant " "messaging and IRC clients." msgstr "" -"Chat en tiempo real " -"Mensajería instantánea y clientes IRC." #: i2p2www/pages/site/index.html:64 -#, fuzzy, python-format +#, python-format msgid "" "File sharing: ED2K and " "Gnutella clients, integrated BitTorrent client." msgstr "" -"Compartición de archivos " -"Clientes ED2K y Gnutella, cliente de BitTorrent integrado." #: i2p2www/pages/site/index.html:69 -#, fuzzy, python-format +#, python-format msgid "" "Decentralized file " "storage: Tahoe-LAFS distributed filesystem plugin." msgstr "" -"Almacenamiento de " -"archivos descentralizado Pluguin para el sistema de archivos " -"distribuido Tahoe-LAFS." #: i2p2www/pages/site/index.html:74 #, python-format diff --git a/i2p2www/translations/fr/LC_MESSAGES/priority.po b/i2p2www/translations/fr/LC_MESSAGES/priority.po index 7a933150..6c368032 100644 --- a/i2p2www/translations/fr/LC_MESSAGES/priority.po +++ b/i2p2www/translations/fr/LC_MESSAGES/priority.po @@ -10,7 +10,7 @@ msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" "POT-Creation-Date: 2013-09-04 14:19+0000\n" -"PO-Revision-Date: 2013-08-12 10:34+0000\n" +"PO-Revision-Date: 2013-09-04 14:25+0000\n" "Last-Translator: str4d \n" "Language-Team: French " "(http://www.transifex.com/projects/p/I2P/language/fr/)\n" @@ -106,7 +106,7 @@ msgstr "" #: i2p2www/pages/downloads/debian.html:24 msgid "Option 2: Debian (including Debian-derivatives)" -msgstr "" +msgstr "Option 2: Debian (y compris dérivés de Debian)" #: i2p2www/pages/downloads/debian.html:25 msgid "" @@ -121,6 +121,8 @@ msgid "" "Instructions for Ubuntu Precise Pangolin (and newer) and derivatives like" " Linux Mint & Trisquel" msgstr "" +"Instructions pour Ubuntu Precise Pangolin (et plus récent) et des dérivés" +" tels que Linux Mint et Ubuntu" #: i2p2www/pages/downloads/debian.html:29 msgid "Adding the PPA via the command line and installing I2P" @@ -229,6 +231,8 @@ msgid "" "For Squeeze you can follow the instructions here." msgstr "" +"Pour Squeeze vous pouvez suivre les instructions içi." #: i2p2www/pages/downloads/debian.html:86 msgid "" @@ -251,6 +255,8 @@ msgstr "Si la commande a réussi, vous aurez une sortie comme celle-ci :" #: i2p2www/pages/downloads/debian.html:98 msgid "Add the following entries to /etc/apt/sources.list.d/i2p.list" msgstr "" +"Ajoutez les entrées suivantes dans " +"/etc/apt/sources.list.d/i2p.list" #: i2p2www/pages/downloads/debian.html:103 msgid "Notify your package manager of the new PPA by entering" @@ -300,6 +306,10 @@ msgid "" "Alternatively, there are unofficial packages available here for armel, armhf, and kfreebsd." msgstr "" +"Télécharger le paquetage i2p-router depuis le PPA.⏎\n" +"Alternativement, il y a des paquetages non officiels, disponibles içi pour armel, armhf, et kfreebsd." #: i2p2www/pages/downloads/debian.html:135 msgid "" @@ -389,6 +399,14 @@ msgid "" "you may find portforward.com to be" " helpful." msgstr "" +"Lorsque vous installez pour la première fois, veuillez ne pas oublier de " +"régler votre NAT / pare-feu\n" +"si vous le pouvez. Les ports à transmettre peuvent être trouvés sur la \n" +"Configuration réseau I2P dans la console du routeur. Si, pour " +"transmettre des ports, de l'aide vous est nécessaire,\n" +"le site web portforward.com pourra" +" vous être utile." #: i2p2www/pages/downloads/debian.html:190 msgid "" @@ -463,7 +481,7 @@ msgstr "Installations propres" #: i2p2www/pages/downloads/list.html:76 i2p2www/pages/downloads/list.html:135 #: i2p2www/pages/downloads/list.html:264 msgid "select alternate link" -msgstr "" +msgstr "sélectionner lien alternatif" #: i2p2www/pages/downloads/list.html:39 msgid "Download that file and run it." @@ -479,6 +497,12 @@ msgid "" " You may be able to right-click and select\n" " "Open with Java"." msgstr "" +"Téléchargez ce fichier et double-cliquez dessus (si cela fonctionne) ou\n" +"tapez java -jar i2pinstall_%(i2pversion)s.jar dans un " +"terminal pour exécuter\n" +"l'installateur. \n" +"Vous pourrez peut-être faire un clic droit et sélectionner\n" +""Ouvrir avec Java"." #: i2p2www/pages/downloads/list.html:64 i2p2www/pages/downloads/list.html:91 msgid "Command line (headless) install:" @@ -491,6 +515,9 @@ msgid "" " run java -jar i2pinstall_%(i2pversion)s.jar -console " "from the command line." msgstr "" +"Télécharger la %(i2pversion)s installeur graphique OSX ci-dessus et\n" +"exécuter java-jar i2pinstall_%(i2pversion)s.jar -console à " +"partir de la ligne de commande." #: i2p2www/pages/downloads/list.html:83 #, python-format @@ -535,18 +562,12 @@ msgid "" msgstr "" #: i2p2www/pages/downloads/list.html:122 -#, fuzzy msgid "" "The release and dev versions of the I2P APK are not compatible, as they\n" " are signed by zzz and str4d respectively. Uninstall one before " "installing\n" " the other." msgstr "" -"Les versions release et dev de l'APK I2P ne sont pas compatibles, car " -"elles⏎\n" -"sont signées par zzz et sponge respectivement. Désinstallez l'une avant " -"d'installer⏎\n" -"l'autre." #: i2p2www/pages/downloads/list.html:132 msgid "Source package" @@ -734,6 +755,11 @@ msgid "" "automatically\n" "receive the release." msgstr "" +"Si vous utilisez 0.6.1.30 ou plus récente, s'il vous plaît voir\n" +"instructions \n" +"pour des informations importantes sur la façon de configurer votre " +"routeur pour automatiquement\n" +"recevoir la release." #: i2p2www/pages/downloads/list.html:243 #, python-format @@ -746,6 +772,14 @@ msgid "" " you to download and install the new release by just clicking on that\n" " link." msgstr "" +"Si vous avez reconfiguré votre routeur en suivant les instructions, vous devriez voir un lien sur" +" votre\n" +" console du routeur vous " +"permettant\n" +"de télécharger et d'installer la nouvelle version en cliquant simplement " +"sur ​​ce\n" +"lien." #: i2p2www/pages/downloads/list.html:251 msgid "Alternately, you can use the manual method specified below." @@ -767,6 +801,13 @@ msgid "" " \n" " NOT need to unzip that file." msgstr "" +"Téléchargez ce fichier dans le répertoire d'installation\n" +"de votre I2P puis renommez-le en i2pupdate.zip .\n" +"(alternativement, vous pouvez obtenir le code source comme ci-dessus et " +"exécuter \"ant updater\", puis copier le\n" +"résultat i2pupdate.zip dans votre répertoire d'installation de I2P). Vous" +" n'avez\n" +"PAS besoin de décompresser ce fichier." #: i2p2www/pages/downloads/list.html:282 msgid "Click \"Restart\"" @@ -1065,7 +1106,7 @@ msgstr "Spécifications" #: i2p2www/pages/global/nav.html:68 msgid "Blockfile" -msgstr "" +msgstr "Fichier de blocage" #: i2p2www/pages/global/nav.html:69 msgid "Common structures" @@ -1276,15 +1317,15 @@ msgstr "Log IRC plei" #: i2p2www/pages/papers/list.html:29 msgid "By topic" -msgstr "" +msgstr "Par thème" #: i2p2www/pages/papers/list.html:35 msgid "By date" -msgstr "" +msgstr "Par date" #: i2p2www/pages/papers/list.html:41 msgid "By author" -msgstr "" +msgstr "Par auteur" #: i2p2www/pages/papers/list.html:83 #, python-format @@ -1296,6 +1337,24 @@ msgid "" "Remember to include URLs if possible:\n" "offline papers are less useful." msgstr "" +"Veuillez envoyer des entrées nouvelles ou corrigées toclass=\"marksource " +"newline\" title=\"New line\">\n" +"class=\"marksource tag\">class=\"marksource " +"tag\">class=\"marksource " +"var\">%(email)sclass=\"marksource tag\">class=\"marksource " +"tag\">.class=\"marksource tag\">
          class=\"marksource newline\" " +"title=\"New line\">\n" +" Si vous le pouvez, veuillez les envoyer au format BibTeX, voir " +"ourclass=\"marksource newline\" title=\"New line\">\n" +"class=\"marksource tag\">%(bibtex)s\">BibTeX source pageclass=\"marksource tag\"> for " +"examples.class=\"marksource tag\">
          class=\"marksource newline\" " +"title=\"New line\">⏎\n" +" N'oubliez pas d'inclure les URL si possible:class=\"marksource newline\"" +" title=\"New line\">\n" +"class=\"marksource tag\">%(citeseer)s\">offline papers are less usefulclass=\"marksource " +"tag\">." #: i2p2www/pages/site/contact.html:2 msgid "Contact" @@ -1312,6 +1371,15 @@ msgid "" " All I2P-related channels on all these network are linked to the main " "channels on Irc2P via relay bots." msgstr "" +"Notre réseau IRC primaire est le réseau Irc2P au sein de I2P, un tunnel " +"par défaut vers ce réseau est mis en place lors des nouvelles " +"installations de routeurs.\n" +"Nous sommes également présents sur plusieurs réseaux standards tels que " +"OFTC,\n" +"EIN et Freenode.\n" +"Sur tous ces réseaux tous les canaux au sujet d'I2P sont reliés aux " +"canaux principaux de Irc2P via des robots de relais." #: i2p2www/pages/site/contact.html:13 msgid "Channel list:" @@ -1840,6 +1908,10 @@ msgid "" "100% for a long time?\n" "If it's pegged, this could be a bug. Look in the logs for clues." msgstr "" +"Est-ce que l'usage du CPU est simplement plus élevé que ce que vous " +"aimeriez, ou est-il rivé à 100% durant longtemps ?\n" +"Si il est rivé, cela pourrait être un bug. Regarder dans les logs pour " +"des indices." #: i2p2www/pages/site/faq.html:167 #, python-format @@ -1917,6 +1989,18 @@ msgid "" "routing traffic for others.\n" "Over 95% of users route traffic for others." msgstr "" +"Distribution - Tout le trafic dans I2P est chiffré dans plusieurs " +"couches. Vous ne savez pas\n" +"le contenu, la source ou la destination d'un message. \n" +"Tout le trafic que votre routez - transmettez - est interne au réseau " +"I2P, vous n'êtes pas un nœud de sortie (outproxy)." +"\n" +"Votre seule alternative est de refuser d'acheminer\n" +"tout trafic, en mettant votre bande passante partagée ou le nombre" +" maximum de tunnels participants à 0 (voir ci-dessus).\n" +"Ce serait bien de ne pas le faire, vous devriez aider le réseau en " +"routant du trafic pour les autres.\n" +"Plus de 95% des utilisateurs routent du trafic pour les autres." #: i2p2www/pages/site/faq.html:210 msgid "" @@ -1983,6 +2067,21 @@ msgid "" "work),\n" "then click \"Apply\", then click the \"reseed\" link on the left." msgstr "" +"L'URL de réamorçage a changé il y a quelques années. Si ceci est votre " +"première installation et que vous avez installé\n" +"une vielle version (0.6.1.30 ou antérieure), ou\n" +"vous n'avez pas exécuté I2P depuis longtemps, vous devez modifier l'URL " +"puis\n" +"cliquer sur \"Reseed\" sur la console afin de trouver d'autres routeurs.\n" +"Après que votre routeur soit en marche,\n" +"sur configadvanced.jsp," +"\n" +"ajoutez la ligne i2p.reseedURL=http://netdb.i2p2.de/\n" +"OU i2p.reseedURL=http://i2pdb.tin0.de/netDb/ (devrait " +"fonctionner),\n" +"puis cliquez sur \"Appliquer\", puis cliquez sur le lien \"réamorcer\" ou" +" \"reseed\" sur la gauche." #: i2p2www/pages/site/faq.html:248 #, python-format @@ -2053,7 +2152,6 @@ msgstr "" "l'Internet régulier ? Je ne veux pas qu'il le soit." #: i2p2www/pages/site/faq.html:274 -#, fuzzy msgid "" "No. Unlike Tor,\n" "\"exit nodes\" or \"outproxies\" are not an inherent part of the network." @@ -2062,15 +2160,14 @@ msgid "" "traffic to the regular Internet.\n" "There are very, very few of these." msgstr "" -"Non, contrairement Tor, ⏎ \n" -"\"nœuds de sortie\" ou \"outproxies\" ne sont pas une partie intégrante " -"du réseau. ⏎\n" -"Seuls les volontaires qui ont mis en place et exécutent des applications " -"distinctes vont relayer le traffic vers l'Internet régulier. ⏎\n" -"Il y a très, très peu de ces ceux-là." +"Non. Contrairement à Tor,\n" +"les \"noeuds de sortie\" ou \"outproxies\" ne sont pas une partie " +"inhérente du réseau.\n" +"Seuls les volontaires qui configurent et font fonctionner des " +"applications séparées relaieront du trafic vers l'Internet régulier.\n" +"Il y a très, très peu, de ceux-ci." #: i2p2www/pages/site/faq.html:283 -#, fuzzy msgid "" "See above. There are very few HTTP \"outproxies\", they are not an " "inherent part of the network,\n" @@ -2089,23 +2186,24 @@ msgid "" "on the regular Internet, you should probably try Tor." msgstr "" -"Voir ci-dessus. Il ya très peu de \"outproxies\" HTTP, ils ne sont pas " -"une partie intégrante du réseau, ⏎ \n" -"et ils peuvent ne pas être en service. ⏎ \n" +"Voir ci-dessus. Il y a très peu de \"outproxies\" HTTP, ils ne sont pas " +"une partie intégrante du réseau,\n" +"et ils peuvent ne pas être en fonctionnement.\n" "En outre, les anciens outproxies squid.i2p, true.i2p et krabs.i2p ont " -"disparu. ⏎\n" -"Le seul outproxy en ce moment est false.i2p. ⏎\n" -"Pour l'utiliser, modifiez vos " -"paramètres " -"i2ptunnel pour eepProxy ⏎ \n" -"et de définissez votre liste de outproxy à 'false.i2p' (seulement). ⏎\n" -"Puis arrêtez et redémarrez le eepProxy. ⏎\n" -"Si cela ne fonctionne pas, le outproxy n'est pas en place. Ce n'est pas " -"la faute de I2P. ⏎\n" -"Si votre principale raison d'utiliser un réseau anonyme est d'accéder " -"anonymement aux sites ⏎\n" -"de l'Internet régulier, vous devriez probablement essayer Tor." +"disparu.\n" +"Le seul outproxy en ce moment est false.i2p.\n" +"Pour l'utiliser, modifiez les réglages de " +"mandataire i2ptunnel pour eepProxy\n" +"et définissez votre liste de outproxy - mandataires sortants - à " +"'false.i2p' (seul).\n" +"Puis arrêtez et redémarrez le eepProxy.\n" +"Si cela ne fonctionne pas, le outproxy n'est pas en service. Ce n'est pas" +" la faute de I2P.\n" +"Si votre principale raison d'utiliser un réseau anonyme est d'accéder aux" +" sites de l'Internet régulier\n" +"de façon anonyme, vous devriez probablement essayer Tor." #: i2p2www/pages/site/faq.html:298 msgid "" @@ -2281,7 +2379,6 @@ msgstr "" "href=\"http://%(zzz)s/topics/217\">%(zzz)s." #: i2p2www/pages/site/faq.html:368 -#, fuzzy msgid "" "Unless an outproxy has been set up for the service you want to connect " "to, this cannot be done.\n" @@ -2290,16 +2387,16 @@ msgid "" "If this type of service is required, try Tor." msgstr "" -"A moins qu'un outproxy aie été mis en place pour le service auquel vous " -"souhaitez vous connecter, cela ne peut être fait.\n" -"Il ya seulement trois types de outproxies exécutés maintenant : HTTP, " -"HTTPS, et le courrier électronique. Notez qu'il n'y a pas de outproxy " -"SOCKS.\n" -"Si ce type de service est nécessaire, essayez Tor." +"À moins qu'un outproxy n'ait été mis en place pour le service auquel vous" +" voulez vous connecter, ceci ne peut pas être fait.\n" +"Il y a seulement trois types d'outproxies redirigeant actuellement : " +"HTTP, HTTP et courrier électronique. Notez qu'il n'y a pas de SOCKS " +"outproxy.\n" +"Si ce type de service est exigé, essayez Tor." #: i2p2www/pages/site/faq.html:376 -#, fuzzy, python-format +#, python-format msgid "" "If you consider every eepsite that has ever been created, yes, most of " "them are down.\n" @@ -2308,13 +2405,6 @@ msgid "" " currently up.\n" "%(eepstatus)s tracks active eepsites." msgstr "" -"Si vous considérez chaque eepsite qui aie jamais été créé, oui, la " -"plupart d'entre eux sont en hors d'accès (down).\n" -"Les gens et les eepsites vont et viennent.\n" -"Une bonne façon de se lancer dans I2P est de vérifier une liste de " -"eepsites qui sont actuellement en place.\n" -"%(perv)s trace les eepsites " -"actifs." #: i2p2www/pages/site/faq.html:385 msgid "" @@ -2653,12 +2743,17 @@ msgid "" "arbitrary remote UDP ports, allowing replies\n" " " msgstr "" +"UDP sortant depuis le port aléatoire noté sur la page de configuration " +"vers des ports UDP distants arbitraires, permettant réponses" #: i2p2www/pages/site/faq.html:551 msgid "" "Outbound TCP from random high ports to arbitrary remote TCP ports\n" " " msgstr "" +"TCP sortant depuis des ports élevés aléatoires vers des ports TCP " +"distants arbitraires" #: i2p2www/pages/site/faq.html:556 msgid "" @@ -2667,6 +2762,9 @@ msgid "" "arbitrary locations\n" " " msgstr "" +"(facultatif, mais recommandé) UDP entrant vers le port mentionné sur " +"la page de " +"configuration à partir d'emplacements arbitraires" #: i2p2www/pages/site/faq.html:561 msgid "" @@ -2676,6 +2774,11 @@ msgid "" "Inbound TCP may be disabled on the configuration page." msgstr "" +"(facultatif, mais recommandé) TCP entrant vers le port noté sur cette " +"page de configuration" +" à partir de positions arbitraires
          \n" +"TCP entrant peut être désactive sur la page configuration." #: i2p2www/pages/site/faq.html:567 msgid "" @@ -2684,12 +2787,20 @@ msgid "" "querying a random SNTP host in pool.ntp.org or another\n" "server you specify)" msgstr "" +"UDP sortant sur port 123, permettant réponses
          \n" +"Cela est nécessaire pour la synchronisation de l'horloge interne de I2P " +"(via SNTP - \n" +"par interrogation d'un hôte SNTP aléatoire dans pool.ntp.org ou autre\n" +"serveur que vous spécifiez)" #: i2p2www/pages/site/faq.html:578 msgid "" "Local I2P ports, listening only to local connections by default,\n" "except where noted:" msgstr "" +"Ports I2P locaux, n'écoutent que les connexions locales par " +"défaut,\n" +"sauf indication contraire :" #: i2p2www/pages/site/faq.html:584 msgid "" @@ -2820,6 +2931,13 @@ msgid "" "May be changed in the clients.config file with the SAM command line " "option sam.udp.port=nnnn.
          " msgstr "" +"7655: UDP pour pont SAM, un socket API de plus haut niveau pour " +"clients\n" +"Seulement ouvert lorsqu'un client SAM V3 demande une session UDP.\n" +"Peut être activé / désactivé sur configclients.jsp.\n" +"Il est possible de le modifier dans le fichier clients.config avec une " +"option dans la ligne de commande de SAM : sam.udp.port = nnnn." #: i2p2www/pages/site/faq.html:654 msgid "" @@ -2829,6 +2947,12 @@ msgid "" "href=\"http://localhost:7657/configclients.jsp\">configclients.jsp.\n" "May be changed in the clients.config file." msgstr "" +"7656: Pont SAM, un socket API de plus haut niveau pour clients\n" +"Désactivé par défaut pour les nouvelles installations depuis la " +"release 0.6.5.\n" +"Peut être activé / désactivé sur configclients.jsp.\n" +"Peut être modifié dans le fichier clients.config ." #: i2p2www/pages/site/faq.html:662 msgid "" @@ -2837,6 +2961,10 @@ msgid "" "May also be configured to be bound to a specific interface or all " "interfaces in that file." msgstr "" +"7657: Votre console routeur\n" +"Il est possible de le désactiver dans le fichier clients.config .\n" +"Il peut également être configuré pour être lié à une interface spécifique" +" ou à toutes les interfaces dans ce fichier." #: i2p2www/pages/site/faq.html:669 msgid "" @@ -2845,6 +2973,10 @@ msgid "" "May also be configured to be bound to a specific interface or all " "interfaces in the jetty.xml file." msgstr "" +"7658: Votre Eepsite\n" +"Il est possible de le désactiver dans le fichier clients.config .\n" +"Il peut également être configuré pour être lié à une interface spécifique" +" ou à toutes les interfaces dans le fichier jetty.xml ." #: i2p2www/pages/site/faq.html:676 msgid "" @@ -2854,6 +2986,11 @@ msgid "" "May also be configured to be bound to a specific interface or all " "interfaces." msgstr "" +"7659: Courrier sortant vers smtp.postman.i2p\n" +"Il est possible de le désactiver ou le modifier sur la page " +"d'i2ptunnel dans la console du routeur.\n" +"Il peut également être configuré pour être lié à une interface spécifique" +" ou à toutes les interfaces." #: i2p2www/pages/site/faq.html:683 msgid "" @@ -2863,6 +3000,11 @@ msgid "" "May also be configured to be bound to a specific interface or all " "interfaces." msgstr "" +"7660: Courrier entrant depuis pop.postman.i2p\n" +"Il est possible de le désactiver ou le modifier sur la page " +"d'i2ptunnel dans la console du routeur.\n" +"Il peut également être configuré pour être lié à une interface spécifique" +" ou à toutes les interfaces. " #: i2p2www/pages/site/faq.html:690 msgid "" @@ -2872,6 +3014,11 @@ msgid "" "May also be configured to be bound to a specific interface or all " "interfaces." msgstr "" +"8998: mtn.i2p2.i2p (Monotone - désactivé par défaut)\n" +"Il est possible de le désactiver ou de le modifier sur la page " +"d'i2ptunnel dans la console du routeur.\n" +"Il est également possible de le configurer pour être lié à une interface " +"spécifique ou à toutes les interfaces." #: i2p2www/pages/site/faq.html:697 msgid "" @@ -2883,6 +3030,14 @@ msgid "" "port.html\">wrapper documentation.\n" "For more information see below." msgstr "" +"31000: Connexion locale au port du canal de contrôle wrapper.\n" +"Sortant à 32000 seulement, n'écoute pas sur ce port. \n" +"Commence à 31000 et incrémente jusqu'à 31999 à la recherche d'un port " +"libre.\n" +"Pour le changer, voir la\n" +"documentation wrapper.\n" +"Davantage dinformations ci-dessous." #: i2p2www/pages/site/faq.html:707 msgid "" @@ -2892,6 +3047,12 @@ msgid "" "port.html\">wrapper documentation.\n" "For more information see below." msgstr "" +"32000: canal de contrôle local pour le service wrapper\n" +"Pour changer, voir la\n" +"documentation wrapper.\n" +"pour davantage d'informations voir ci " +"dessous." #: i2p2www/pages/site/faq.html:719 msgid "" @@ -2995,6 +3156,13 @@ msgid "" "things,\n" "if your firewall limits outbound traffic, and blocked the reseed request." msgstr "" +"Un symptôme typique d'un réamorçage échoué est l'indicateur \"Connus\"\n" +"(dans la barre latérale gauche de la console du routeur) affichant une " +"très faible valeur\n" +"(souvent moins de 5) qui n'augmente pas. Cela peut se produire, entre " +"autres choses,\n" +"si votre pare-feu limite le trafic sortant, et a bloqué la demande de " +"réamorçage." #: i2p2www/pages/site/faq.html:764 msgid "To reseed an I2P router manually, do the following:" @@ -3041,6 +3209,16 @@ msgid "" "are missing the necessary compatibility libraries.\n" "These libraries may be installed by performing the following steps:" msgstr "" +"\n" +"Pour être inclusif et essayer de faire en sorte que I2P fonctionne sur " +"autant de systèmes\n" +"que possible, jusqu'à I2P 0.8.9, nous avons utilisé un wrapper java\n" +"compilé pour FreeBSD 6.x. Si vous recevez ce message d'erreur il vous " +"manque très probablement des bibliothèques de compatibilité nécessaires." +"\n" +"Ces bibliothèques peuvent être installées en exécutant les étapes " +"suivantes :" #: i2p2www/pages/site/faq.html:800 msgid "" @@ -3132,6 +3310,11 @@ msgid "" "router console will NOT reread this file! You must\n" "click Shutdown, wait 11 minutes, then start I2P." msgstr "" +"ATTENTION : pour que des modifications dans " +"wrapper.config prennent effet, vous devez complètement\n" +"arrêter le routeur et le wrapper. Cliquer Redémarrer dans votre\n" +"console du routeur ne relira PAS ce fichier ! Vous devez\n" +"cliquez cliquer Arrêt, attendre 11 minutes, puis lancer I2P." #: i2p2www/pages/site/faq.html:847 #, python-format @@ -3140,14 +3323,18 @@ msgid "" "the forum and we'll post it here (with\n" "the answer, hopefully)." msgstr "" +"Formidable ! retrouvez-nous sur le serveur IRC irc.freenode.net #i2p, ou " +"postez-les au\n" +"forum et nous les publierons ici (avec\n" +"la réponse, nous l'espérons)." #: i2p2www/pages/site/impressum.html:4 msgid "German laws" -msgstr "" +msgstr "Lois allemandes" #: i2p2www/pages/site/index.html:2 msgid "I2P Anonymous Network" -msgstr "" +msgstr "Réseau anonyme I2P" #: i2p2www/pages/site/index.html:4 msgid "" @@ -3155,10 +3342,13 @@ msgid "" "source tools and designed to run any traditional Internet service such as" " email, IRC or web hosting." msgstr "" +"Couche de communication distribuée, anonyme, et pair-à-pair, construite " +"avec des outils open source et conçue pour exécuter n'importe quel " +"service Internet traditionnel tels que courriel, IRC ou hébergement web." #: i2p2www/pages/site/index.html:7 msgid "What does I2P do for you?" -msgstr "" +msgstr "Que peut faire I2P pour vous ?" #: i2p2www/pages/site/index.html:8 msgid "" @@ -3166,6 +3356,10 @@ msgid "" "over the Internet. Many activities that would risk your privacy on the " "public Internet can be conducted anonymously inside I2P." msgstr "" +"Le réseau I2P fournit une solide protection de la vie privée pour la " +"communication sur Internet. De nombreuses activités qui risqueraient de " +"dévoiler votre vie privée sur l'Internet public peuvent être effectuées " +"anonymement à l'intérieur de I2P." #: i2p2www/pages/site/index.html:9 #, python-format @@ -3203,6 +3397,9 @@ msgid "" "including desktops, embedded systems (like the Raspberry Pi) and Android" " phones.\n" msgstr "" +"I2P fonctionne grâce à Java et il est donc disponible partout où Java " +"s'exécute, y compris les ordinateurs de bureau, les systèmes embarqués " +"(comme le Raspberry Pi) et les téléphones Android.\n" #: i2p2www/pages/site/index.html:27 msgid "" @@ -3213,11 +3410,11 @@ msgstr "" #: i2p2www/pages/site/index.html:31 msgid "Read more…" -msgstr "" +msgstr "Lire davantage …" #: i2p2www/pages/site/index.html:36 msgid "What can you do with I2P?" -msgstr "" +msgstr "Que pouvez-vous faire avec I2P ?" #: i2p2www/pages/site/index.html:39 #, python-format @@ -3272,6 +3469,8 @@ msgstr "" #, python-format msgid "More supported applications…" msgstr "" +"Davantage d'applications supportées " +"…" #: i2p2www/pages/site/index.html:82 msgid "News & Updates" @@ -3288,6 +3487,9 @@ msgid "" "links to presentations, videos, and tutorials about" " I2P." msgstr "" +"Voir aussi la page avec\n" +"liens vers des présentations, des vidéos et des " +"tutoriels au sujet de I2P." #: i2p2www/pages/site/links.html:12 msgid "Friends of I2P" @@ -3303,7 +3505,7 @@ msgstr "Presse" #: i2p2www/pages/site/links.html:38 msgid "Boards, newssite, others" -msgstr "" +msgstr "Forums, actualités sur ce site web, autres" #: i2p2www/pages/site/links.html:42 msgid "Very Old Stuff" diff --git a/i2p2www/translations/pt/LC_MESSAGES/priority.po b/i2p2www/translations/pt/LC_MESSAGES/priority.po index 0f7ff2af..7ee19b4d 100644 --- a/i2p2www/translations/pt/LC_MESSAGES/priority.po +++ b/i2p2www/translations/pt/LC_MESSAGES/priority.po @@ -11,7 +11,7 @@ msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" "POT-Creation-Date: 2013-09-04 14:19+0000\n" -"PO-Revision-Date: 2013-08-12 10:34+0000\n" +"PO-Revision-Date: 2013-09-04 14:25+0000\n" "Last-Translator: str4d \n" "Language-Team: Portuguese " "(http://www.transifex.com/projects/p/I2P/language/pt/)\n" @@ -517,18 +517,12 @@ msgid "" msgstr "" #: i2p2www/pages/downloads/list.html:122 -#, fuzzy msgid "" "The release and dev versions of the I2P APK are not compatible, as they\n" " are signed by zzz and str4d respectively. Uninstall one before " "installing\n" " the other." msgstr "" -"As versões de lançamento e de desenvolvimento do APK do I2P são " -"incompatíveis, pois\n" -" são assinadas pelo zzz e pelo sponge, respectivamente. Desinstale " -"uma antes de instalar\n" -" outra." #: i2p2www/pages/downloads/list.html:132 msgid "Source package" From 5a50b036867aff6699ddd50e04da7488b1ca77c1 Mon Sep 17 00:00:00 2001 From: str4d Date: Thu, 5 Sep 2013 00:19:12 +0000 Subject: [PATCH 616/650] Reordered and combined some front page paragraphs --- i2p2www/pages/site/index.html | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/i2p2www/pages/site/index.html b/i2p2www/pages/site/index.html index e3818965..17d87175 100644 --- a/i2p2www/pages/site/index.html +++ b/i2p2www/pages/site/index.html @@ -17,15 +17,12 @@ I2P is an anonymous overlay network - a network within a network. It is intended {% endtrans %}
        • {% trans -%} I2P is used by many people who care about their privacy: activists, oppressed people, journalists and whistle-blowers - as well as the average person. -{% endtrans %}
        • -
        • {% trans -%} -Anonymity is not a boolean. No network can be "perfectly anonymous". The continued goal of I2P is to make attacks more and more expensive to mount. {% endtrans %}
        • {% trans -%} I2P runs on Java and is therefore available anywhere Java will run, including desktops, embedded systems (like the Raspberry Pi) and Android phones. {% endtrans %}
        • {% trans -%} -I2P is a work in progress. Its anonymity will get stronger as the size of the network increases and with ongoing academic review. Help spread the word! +Anonymity is not a boolean. No network can be "perfectly anonymous". The continued goal of I2P is to make attacks more and more expensive to mount. Its anonymity will get stronger as the size of the network increases and with ongoing academic review. Help spread the word! {% endtrans %}
        • {% trans %}Read more…{% endtrans %} From fdf5cf62013c2d96bdc18a662e28691058b49b09 Mon Sep 17 00:00:00 2001 From: str4d Date: Thu, 5 Sep 2013 10:34:08 +0000 Subject: [PATCH 617/650] More frontpage text changes --- i2p2www/pages/site/index.html | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/i2p2www/pages/site/index.html b/i2p2www/pages/site/index.html index 17d87175..1b483657 100644 --- a/i2p2www/pages/site/index.html +++ b/i2p2www/pages/site/index.html @@ -13,16 +13,16 @@

          {{ _('What is I2P?') }}

          • {% trans -%} -I2P is an anonymous overlay network - a network within a network. It is intended to protect communication against dragnet surveillance, and monitoring by third parties such as ISPs. +I2P is an anonymous overlay network - a network within a network. It is intended to protect communication from dragnet surveillance and monitoring by third parties such as ISPs. {% endtrans %}
          • {% trans -%} -I2P is used by many people who care about their privacy: activists, oppressed people, journalists and whistle-blowers - as well as the average person. +I2P is used by many people who care about their privacy: activists, oppressed people, journalists and whistleblowers, as well as the average person. {% endtrans %}
          • {% trans -%} -I2P runs on Java and is therefore available anywhere Java will run, including desktops, embedded systems (like the Raspberry Pi) and Android phones. +No network can be "perfectly anonymous". The continued goal of I2P is to make attacks more and more difficult to mount. Its anonymity will get stronger as the size of the network increases and with ongoing academic review. {% endtrans %}
          • {% trans -%} -Anonymity is not a boolean. No network can be "perfectly anonymous". The continued goal of I2P is to make attacks more and more expensive to mount. Its anonymity will get stronger as the size of the network increases and with ongoing academic review. Help spread the word! +I2P is available on desktops, embedded systems (like the Raspberry Pi) and Android phones. Help spread the word! {% endtrans %}
          • {% trans %}Read more…{% endtrans %} From c4761fbeaa02266ad8a38be5acac398fb8c2ed88 Mon Sep 17 00:00:00 2001 From: str4d Date: Fri, 6 Sep 2013 02:11:54 +0000 Subject: [PATCH 618/650] Updated Android dev build version --- i2p2www/pages/downloads/list.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/i2p2www/pages/downloads/list.html b/i2p2www/pages/downloads/list.html index 0b40a859..fdebe01c 100644 --- a/i2p2www/pages/downloads/list.html +++ b/i2p2www/pages/downloads/list.html @@ -113,9 +113,9 @@ or type java -version at your command prompt.
    - {% trans str4durl='http://'+i2pconv('str4d.i2p')+'/android/' -%} + {% trans devbuild='0.9.7.1-23_b2-API8', str4durl='http://'+i2pconv('str4d.i2p')+'/android/' -%} The above file is the current release build. - The latest dev build is version 0.9.7-20_b1-API18, and is available from + The latest dev build is version {{ devbuild }}, and is available from str4d's eepsite. {%- endtrans %}
    From f49d126a78d512407ae395a557a3f61bfbef8729 Mon Sep 17 00:00:00 2001 From: kytv Date: Sun, 8 Sep 2013 02:17:32 +0000 Subject: [PATCH 619/650] Explicitly add default host & port to app.run function I decidedto add this because the way to change the host & port may not be immediately obvious to everyone. --- runserver.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/runserver.py b/runserver.py index 9884e219..2d1a4c9f 100755 --- a/runserver.py +++ b/runserver.py @@ -1,3 +1,5 @@ #!env/bin/python from i2p2www import app -app.run(debug=False) + +if __name__ == '__main__': + app.run(host='127.0.0.1', port=5000, debug=False) From fa2301196ea3f559381c6370fe74eff06d8e3d23 Mon Sep 17 00:00:00 2001 From: kytv Date: Sun, 8 Sep 2013 02:19:57 +0000 Subject: [PATCH 620/650] ignore compiled translations --- .mtn-ignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.mtn-ignore b/.mtn-ignore index a0741418..a36f097b 100644 --- a/.mtn-ignore +++ b/.mtn-ignore @@ -2,4 +2,5 @@ env pots \.pyc$ \.pyo$ +\.mo$ ~$ From bce683560cc72b1cba24998421cd6989b0b2b3ec Mon Sep 17 00:00:00 2001 From: str4d Date: Sun, 8 Sep 2013 09:40:41 +0000 Subject: [PATCH 621/650] Pulled latest translations --- i2p2www/translations/es/LC_MESSAGES/docs.po | 1584 +++++++++++++---- .../translations/es/LC_MESSAGES/priority.po | 338 ++-- i2p2www/translations/fr/LC_MESSAGES/about.po | 188 +- .../translations/fr/LC_MESSAGES/priority.po | 48 +- 4 files changed, 1634 insertions(+), 524 deletions(-) diff --git a/i2p2www/translations/es/LC_MESSAGES/docs.po b/i2p2www/translations/es/LC_MESSAGES/docs.po index 04d89101..1f9d576d 100644 --- a/i2p2www/translations/es/LC_MESSAGES/docs.po +++ b/i2p2www/translations/es/LC_MESSAGES/docs.po @@ -14,8 +14,8 @@ msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" "POT-Creation-Date: 2013-08-30 23:32+0000\n" -"PO-Revision-Date: 2013-09-02 01:51+0000\n" -"Last-Translator: kytv \n" +"PO-Revision-Date: 2013-09-08 09:34+0000\n" +"Last-Translator: trolly\n" "Language-Team: Spanish " "(http://www.transifex.com/projects/p/I2P/language/es/)\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" @@ -569,7 +569,7 @@ msgstr "" "implementación base diseñada para entregar un mapeado desde nombre local" " \n" "a destino, además de una aplicación add-on llamada guía de direcciones \n" +"href=\"#addressbook\">libro de direcciones \n" "(`adressbook`). I2P también soporta nombres de " "servidor Base32 \n" "similares a las direcciones .onion de Tor." @@ -597,24 +597,25 @@ msgid "" "emulating\n" "traditional DNS." msgstr "" -"La guía de direcciones es un sistema de nombres asegurado mediante \n" +"El libro de direcciones es un sistema de nombres asegurado mediante \n" "web-of-trust, distribuído, y legible por humanos, que tan solo sacrifica " "el \n" "que los nombres sean globalmente únicos, obligando a que sólo lo sean\n" "localmente. Mientras todos los mensajes en I2P son criptográficamente \n" "direccionados por su destino, diferentes personas puede tener diferentes" " \n" -"entradas \"Alice\" en sus guías de direcciones locales que se refieran a" +"entradas \"Alice\" en sus libros de direcciones locales que se refieran a" " \n" "diferentes destinos. El público aún puede descubrir nuevos nombres " "importando \n" -"guías de direcciones publicadas, de pares (`peers`) especificados en sus\n" +"libros de direcciones publicados, de pares (`peers`) especificados en sus" +"\n" "web-of-trust, incorporando las entradas provistas por terceros, o (si " "algunas \n" -"personas organizan series de guías de direcciones publicadas usando un \n" +"personas organizan series de libros de direcciones publicados usando un \n" "sistema de registro tipo `primero en venir primero en ser servido`) la " "gente \n" -"puede elegir tratar estas guías de direcciones como servidores de " +"puede elegir tratar estos libros de direcciones como servidores de " "nombres, \n" "emulando al tradicional DNS." @@ -701,7 +702,7 @@ msgid "" "external\n" "host lists, retrieved via HTTP, with the local list." msgstr "" -"La aplicación de guía de direcciones que \n" +"La aplicación de libros de direcciones que \n" "fusiona listas externas de servidores, con la lista local." #: i2p2www/pages/site/docs/naming.html:70 @@ -712,7 +713,7 @@ msgid "" msgstr "" "La aplicación SusiDNS que es un sencillo frontal" " web para la configuración \n" -"de la guía de direcciones y el visionado de las listas locales de " +"de el libro de direcciones y el visionado de las listas locales de " "servidores." #: i2p2www/pages/site/docs/naming.html:77 @@ -837,12 +838,12 @@ msgid "" "Naming conflicts are resolved on a first-come first-served\n" "basis." msgstr "" -"La aplicación de la guía de direcciones obtiene periódicamente los " +"La aplicación del libro de direcciones obtiene periódicamente los " "ficheros \n" "hosts.txt de otros usuarios y los fusiona con el fichero hosts.txt local " "tras \n" -"varias comprobaciones. Los conflictos de nomenclatura se resuelven en \n" -"base al criterio `el primero en venir es el primero en ser servido`." +"varias comprobaciones. Los conflictos de nombres se resuelven en base \n" +"al criterio `el primero en venir es el primero en ser servido`." #: i2p2www/pages/site/docs/naming.html:141 msgid "" @@ -873,7 +874,7 @@ msgstr "" #: i2p2www/pages/site/docs/naming.html:158 msgid "Some other public addressbook subscription links:" -msgstr "Algunos enlaces extra de suscripciones de guías de direcciones públicas: " +msgstr "Algunos enlaces extra de suscripciones públicas a libros de direcciones: " #: i2p2www/pages/site/docs/naming.html:165 msgid "" @@ -887,7 +888,7 @@ msgstr "" #: i2p2www/pages/site/docs/naming.html:170 #: i2p2www/pages/site/docs/naming.html:182 msgid "Naming Rules" -msgstr "Reglas de nomenclatura" +msgstr "Reglas de nombres" #: i2p2www/pages/site/docs/naming.html:171 msgid "" @@ -903,7 +904,8 @@ msgid "" "to other routers." msgstr "" "Aunque afortunadamente no hay limitación técnica alguna en I2P para los \n" -"nombres de servidor, la guía de direcciones impone varias restricciones \n" +"nombres de servidor, el libro de direcciones impone varias restricciones" +" \n" "sobre los nombres de servidor importados desde suscripciones. Hace \n" "esto por higiene tipográfica básica y compatibilidad con navegadores, y \n" "por seguridad. Las reglas son esencialmente las mismas que aquellas de \n" @@ -1011,14 +1013,13 @@ msgid "" "and the desirability and feasibility of these methods,\n" "are topics for future discussion." msgstr "" -"Observe que los símbolos '.' en el nombre de servidor no tienen " -"significancia, \n" -"y no denotan jerarquía de confianza o de nomenclatura alguna. \n" +"Observe que los símbolos '.' en el nombre de servidor no tienen\n" +"significancia, y no denotan jerarquía de confianza o de nombres alguna. \n" "Si el nombre 'host.i2p' ya existe, no hay nada que evite que alguien " "añada \n" "un nombre 'a.host.i2p' a su(s) hosts.txt, y este nombre pueda ser " "importado \n" -"por las guías de direcciones de otros. Los métodos para denegar \n" +"por los libros de direcciones de otros. Los métodos para denegar \n" "subdominios a propietarios de no-dominios (¿certificados?), y lo deseable" " \n" "y factible de estos métodos, son temas para futura discusión." @@ -1044,7 +1045,7 @@ msgid "" "aliases or\n" "\"pet names\" for sites already in hosts.txt." msgstr "" -"Como la aplicación de guía de direcciones no usa privatehosts.txt para " +"Como la aplicación de libro de direcciones no usa privatehosts.txt para " "nada, \n" "en la práctica este fichero es el único lugar donde es apropiado emplazar" " \n" @@ -1063,7 +1064,7 @@ msgid "" "for their subscriptions.\n" "This step is optional and is disabled by default." msgstr "" -"La guía de direcciones publicará el hosts.txt fusionado hacia un \n" +"El libro de direcciones publicará el hosts.txt fusionado hacia un \n" "emplazamiento (tradicionalmente el hosts.txt del directorio home del \n" "eepsite) para que sea accesible para las suscripciones de otros. \n" "Este paso es opcional y está deshabilitado por defecto." @@ -1076,7 +1077,8 @@ msgid "" "This greatly reduces the bandwidth required, as the web server will\n" "return a '304 Not Modified' on the next fetch if nothing has changed." msgstr "" -"La aplicación de guía de direcciones, junto con eepget, previene que la \n" +"La aplicación de libro de direcciones, junto con eepget, previene que la" +" \n" "información del Etag y/o la de Última-modificación sea devuelta por el \n" "servidor web de la suscripción. Esto reduce enormemente el ancho de banda" " \n" @@ -1990,7 +1992,7 @@ msgid "" msgstr "" "Ahora todo lo que necesitamos es hacer telnet a 127.0.0.1, puerto 37337," " \n" -"enviar la clave destino o la dirección del servidor de la guía de " +"enviar la clave destino o la dirección del servidor del libro de " "direcciones \n" "con la que queramos contactar. En este caso, queremos contactar con \n" "\"boca\", todo lo que haremos es pegar la clave e irá." @@ -3360,10 +3362,9 @@ msgstr "" "que permite flujos (`streams`) confiables, ordenados y autentificados de " "mensajes para operar a través de una capa de mensajes no confiable, \n" "desordenada y no autentificada. Justo como la relación de TCP hacia IP,\n" -"esta funcionalidad streaming tiene un completo conjunto de compromisos \n" -"de equilibrios y optimizaciones disponibles, pero en lugar de embeber " -"esta funcionalidad en el código base de I2P, ha sido desgajado en su " -"propia \n" +"esta funcionalidad streaming tiene un completo conjunto de renuncias y " +"optimizaciones disponibles, pero en lugar de embeber esta funcionalidad " +"en el código base de I2P, ha sido desgajado en su propia \n" "librería, tanto para mantener separadas las complejidades propias de TCP" " \n" "como para permitir implementaciones optimizadas alternativas." @@ -3556,8 +3557,7 @@ msgid "" "UDP support is stubbed out but not working yet.\n" "Outproxy selection by port number is stubbed out." msgstr "" -"El proxy SOCKS soporta los nombres de guías de direcciones (`adressbook')" -" \n" +"El proxy SOCKS soporta los nombres de libros de direcciones \n" "standard, pero no los destinos Base64. Los hashes Base32 deberían \n" "funcionar desde la versión `0.7`. Sólo soporta conexiones salientes, es \n" "decir, se erradicó el soporte para un I2PTunnel de cliente. Se forzó la " @@ -3640,8 +3640,7 @@ msgstr "" "confiables, ordenados y autentificados, operen a través de una capa de \n" "mensaje no confiable, desordenada y no autentificada. Justo como la \n" "relación TCP hacia IP, esta funcionalidad streaming tiene un conjunto \n" -"completo de compromisos de equilibrio y optimizaciones disponibles, pero" -" \n" +"completo de renuncias y optimizaciones disponibles, pero \n" "en lugar de embeber esta funcionalidad junto al código base de I2P, ha " "sido \n" "desgajado en su propia librería para mantener las complejidades propias " @@ -4593,6 +4592,14 @@ msgid "" "compatibility with older trackers.\n" "Trackers should not require an appended \".i2p\"." msgstr "" +"El parámetro IP es la base 64 de la Destinación del " +"cliente, usando el alfabeto I2P Base 64 [A-Z][a-z][0-9]-~. Las Destinaciones son de" +" 387+ bytes, con lo que la Base 64 es de 516+ bytes. Los clientes " +"generalmente añaden \".i2p\" a la Destinación Base 64 para mantener la " +"compatibilidad con los trackers antiguos. Los trackers no deberían " +"necesitar añadir \".i2p\" al final." #: i2p2www/pages/site/docs/applications/bittorrent.html:42 msgid "Other parameters are the same as in standard bittorrent." @@ -4767,6 +4774,15 @@ msgid "" "A tracker enforcing destinations need not require the ip announce " "parameter at all." msgstr "" +"Algunos clientes de torrent de I2P, aunque no todos, anuncian sus propios" +" túneles. Los trackers pueden elegir el prevenir engaños exigiéndolos, y " +"verificando la Destinación de los " +"clientes usando las cabeceras añadidas por el túnel servidor HTTP " +"I2PTunnel. Las cabeceras son X-I2P-DestHash, X-I2P-DestB64, y X-I2P-" +"DestB32, que son diferentes formatos para la misma información. Estas " +"cabeceras no pueden ser falseadas por el cliente. Un tracker exigiendo " +"destinaciones no necesita el parámetro de anuncio de la ip para nada." #: i2p2www/pages/site/docs/applications/bittorrent.html:129 msgid "" @@ -4811,13 +4827,13 @@ msgid "" "Non-open trackers should recognize their own host name in any of these " "formats." msgstr "" -"Los nombres de servidor URL de anuncio en los archivos torrent siguen\n" -"generalmente los standares de nomenclatura " -"I2P. Además \n" -"los nombres de servidor de los libros de direcciones y los nombre de " -"servidor Base 32 \".b32.i2p\", el Destino Base 65 completo (con [¿o sin?]" -" \n" -"sufijo \".i2p\"] deben ser soportados. Los trackers no-abiertos deben \n" +"Los nombres de servidor de URLs de anuncio en los archivos torrent siguen" +"\n" +"generalmente los estandares de nombres I2P. " +"Además de los \n" +"nombres de servidor de los libros de direcciones y los nombre de servidor" +" Base 32 \".b32.i2p\", el Destino Base 64 completo (con [¿o sin?] \n" +"sufijo \".i2p\"] debe ser soportado. Los trackers no-abiertos deben \n" "reconocer sus propios nombres de servidor en cualquiera de estos formatos." #: i2p2www/pages/site/docs/applications/bittorrent.html:152 @@ -4825,21 +4841,21 @@ msgid "" "To preserve anonymity,\n" "clients should generally ignore non-I2P announce URLs in torrent files." msgstr "" -"Para preservar el anonimato, los clientes por lo general deben ignorar \n" -"anuncios de URLs no-I2P en los ficheros torrent." +"Para preservar el anonimato, los clientes por lo general deben ignorar " +"URLs de anuncio no-I2P en los ficheros torrent." #: i2p2www/pages/site/docs/applications/bittorrent.html:159 msgid "Client Connections" -msgstr "Conexiones de cliente" +msgstr "Conexiones entre clientes" #: i2p2www/pages/site/docs/applications/bittorrent.html:160 msgid "" "Client-to-client connections use the standard protocol over TCP.\n" "There are no known I2P clients that currently support uTP communication." msgstr "" -"Las conexiones Cliente-a-cliente usan el protocolo standard sobre TCP. No" -" hay clientes I2P conocidos que soporten actualmente comunicación uTP \n" -"(utorrent Transpor Protocol)." +"Las conexiones cliente-a-cliente usan el protocolo standard sobre TCP. \n" +"Actualmente no hay clientes I2P conocidos que soporten comunicación uTP \n" +"(Protocol de Transporte utorrent)." #: i2p2www/pages/site/docs/applications/bittorrent.html:165 #, python-format @@ -4859,15 +4875,15 @@ msgid "" "Naming Service,\n" "which will return the full Destination if available." msgstr "" -"Si el cliente tiene sólo el identificador (`hash`) del destino (tal como " -"desde \n" -"una respuesta compacta o un PEX (Intercambiador de Pares)), debe realizar" +"Si el cliente tiene sólo el identificador criptográfico (`hash`) del " +"destino \n" +"(como el de una respuesta compacta o el PEX (protocolo de Intercambio de" " \n" -"una búsqueda codificándolo con Base 32, añadiendo el sufijo \".b32.i2p\"," -" y \n" -"consultando en el Servicio de Nombres, que devolverá el Destino completo" +"Pares)), debe realizar una búsqueda codificándolo con Base 32, añadiendo" " \n" -"si está disponible." +"el sufijo \".b32.i2p\", y consultando en el Servicio de Nombres, que " +"devolverá \n" +"el Destino completo si está disponible." #: i2p2www/pages/site/docs/applications/bittorrent.html:176 msgid "" @@ -4879,11 +4895,10 @@ msgid "" msgstr "" "Si el cliente tiene el Destino completo de un par (`peer`) que recibió en" " una \n" -"respuesta no-compacta, debe usarlo en el establecimiento de la conexión." +"respuesta no-compacta, debe usarlo directamente en el establecimiento de" " \n" -"No convierta un Destino de vuelta a un identificador (`hash`) Base 32, " -"esto \n" -"es bastante ineficiente." +"la conexión. No convierta un Destino de vuelta a un identificador \n" +"criptográfico (`hash`) Base 32, esto es bastante ineficiente." #: i2p2www/pages/site/docs/applications/bittorrent.html:183 msgid "Cross-Network Prevention" @@ -4900,9 +4915,9 @@ msgstr "" "Para preservar el anonimato, los clientes I2P bittorrent por lo general " "no soportan anuncios no-I2P, o conexiones de pares (`peers`). Los proxys" " \n" -"externos (`outproxies`) HTTP de I2P con frecuencia bloquean anuncios. No" -" \n" -"hay proxys externos SOCKS conocidos que soporten tráfico bittorrent." +"al exterior (`outproxies`) HTTP de I2P con frecuencia bloquean anuncios. " +"No \n" +"hay proxys al exterior SOCKS conocidos que soporten tráfico bittorrent." #: i2p2www/pages/site/docs/applications/bittorrent.html:191 msgid "" @@ -4912,12 +4927,11 @@ msgid "" "Trackers should reject standard network announces with IPv4 or IPv6 IPs, " "and not deliver them in responses." msgstr "" -"Para prevenir el uso por cliente no-I2P a través de un proxy interno HTTP" -" \n" -"(`inproxy`), los trackers I2P a menudo bloquean accesoos o anuncios que \n" -"contengan una cabecera HTTP X-Forwarded-For. Los trackers deben \n" -"rechazar anuncios de red standard con IPs IPv4 o IPv6, y no entregarlos \n" -"en las respuestas." +"Para prevenir el uso por clientes no-I2P a través de un proxy hacia el \n" +"interior (`inproxy`) HTTP, los trackers I2P a menudo bloquean accesos o \n" +"anuncios que contengan una cabecera HTTP X-Forwarded-For. Los \n" +"trackers deben rechazar anuncios de red standard con IPs IPv4 o IPv6, y \n" +"no entregarlos en las respuestas." #: i2p2www/pages/site/docs/applications/bittorrent.html:200 #, python-format @@ -4940,26 +4954,28 @@ msgid "" "response format specified above.\n" "The added.f value, if present, is the same as in ut_pex." msgstr "" -"El PEX (Intercambiador de Pares) I2P está basado en ut_pex (utorrent \n" -"PEX). Como no parece haber una especificación ut_pex formal disponible, \n" -"puede ser necesario revisar el código fuente de libtorrent para dotarlo " -"de \n" -"asistencia. Es un mensaje de extensión, identificado como \"i2p_pex\" en" -" \n" -"en la extensión " -"de encuentro (`handshake`). Contiene un diccionario b-codificado \n" -"(`bencoded`) con hasta 3 claves, \"added\" (añadido), \"added.f\", y " -"\"dropped\" \n" -"(descartado). Los valores `added` y `dropped` son cada uno una única \n" -"cadena de bytes, cuyo tamaño es un múltiplo de 32 bytes. Estas cadenas \n" -"de bytes son los Hashes SHA-256 concatenados del binario la extensión de " +"toma de contacto (`handshake`). Contiene un diccionario \n" +"b-codificado (`bencoded`) con hasta 3 claves, \"added\" (añadido), " +"\"added.f\", \n" +"y \"dropped\" (descartado). Los valores `added` y `dropped` son cada uno " +"una \n" +"única cadena de bytes, cuyo tamaño es un múltiplo de 32 bytes. Estas \n" +"cadenas de bytes son los identificadores criptográficos ('hashes') " +"SHA-256 \n" +"concatenados del binario Destinos \n" -"de los pares (`peers`). Este es el mismo formato que el de los valores de" -" \n" -"diccionario de los pares en el formato de respuesta compacta de I2P \n" -"especificado arriba. Si está presente, el valor de added.f es el mismo " -"que en\n" -"ut_pex." +"de los pares (`peers`). \n" +"Este es el mismo formato que el de los valores de diccionario de los " +"pares \n" +"en el formato de respuesta compacta de I2P especificado arriba. Si está \n" +"presente, el valor de added.f es el mismo que en ut_pex." #: i2p2www/pages/site/docs/applications/bittorrent.html:218 msgid "" @@ -4971,10 +4987,11 @@ msgid "" msgstr "" "El soporte DHT (tabla de hash dinámica) está incluído en el cliente " "i2psnark \n" -"desde la versión 0.9.2. Las diferencias preliminares con BEP 5 están \n" -"descritas debajo, y están sujetas a cambios. Contacte con los \n" -"desarrolladores de I2P si quiere desarrollar un cliente con soporte DHT." +"desde la versión 0.9.2. Las diferencias preliminares con la BEP 5 \n" +"(Propuesta de Mejora de Bittorrent 5) están descritas debajo, y están \n" +"sujetas a cambios. Contacte con los desarrolladores de I2P si quiere \n" +"desarrollar un cliente con soporte DHT." #: i2p2www/pages/site/docs/applications/bittorrent.html:226 msgid "" @@ -4988,12 +5005,13 @@ msgid "" msgstr "" "Al contario que DHT (tabla de hash dinámica), I2P DHT no usa bit alguno " "en \n" -"las opciones de encuentro (`handshake`), o en el mensaje PORT (puerto). " -"Se anuncia con con un mensaje de extensión, identificados como " -"\"i2p_dht\" \n" -"en el encuentro " -"de extensión. Contiene un diccionario b-codificado \n" -"(`bencoded`) con dos claves, \"port\" y \"rport\", ambos enteros." +"las opciones de toma de contacto (`handshake`), o en el mensaje PORT \n" +"(puerto). Se anuncia con un mensaje de extensión, identificado como \n" +"\"i2p_dht\" en la extensión " +"handshake. Contiene un diccionario b-codificado \n" +"(`bencoded`) con dos claves, \"port\" y \"rport\" (puerto de respuesta), " +"ambos enteros." #: i2p2www/pages/site/docs/applications/bittorrent.html:233 msgid "" @@ -5004,14 +5022,13 @@ msgid "" "This is the \"port\" value from the extension message.\n" "Queries use I2CP protocol number 17." msgstr "" -"Para recibir datagramas respondibles (firmados) se usa el puerto UDP " -"(datagrama) listado en la información del nodo compacto. Este se usa para" -" \n" -"consultas, excepto para anuncios. Le llamamos el \"query port\" (puerto " -"de \n" -"consulta). Es el valor de \"port\" (puerto) del mensaje de extensión. Las" -" \n" -"consultas usan el protocolo I2CP (Protocolo de Cliente I2P) número 17." +"Para recibir datagramas respondibles (firmados) se usa el puerto UDP\n" +"(Protocolo de Datagrama de Usuario) listado en la información del nodo \n" +"compacto. Este se usa para consultas, excepto para anuncios. Le \n" +"llamamos el \"query port\" (puerto de consulta). Es el valor \"port\" " +"(puerto) del \n" +"mensaje de extensión. Las consultas usan el protocolo I2CP (Protocolo \n" +"de Cliente I2P) número 17." #: i2p2www/pages/site/docs/applications/bittorrent.html:242 msgid "" @@ -5028,12 +5045,13 @@ msgstr "" "Además de ese puerto UDP, usamos un segundo puerto de datagrama igual \n" "al puerto de consulta + 1. Esto se usa para recibir datagramas no " "firmados \n" -"(raw (crudos)) para las respuestas, errores y anuncios. Este puerto \n" -"proporciona una eficiencia incrementada puesto que sus respuestas \n" -"contienen las credenciales (`tokens`) enviadas en la consulta, y no \n" -"necesitan ser firmadas. Llamamos a esto el \"response port\" (puerto de \n" -"respuesta). Las respuestas y los anuncios usan el protocolo I2CP número " -"18. " +"(raw (crudos)) para las respuestas, errores, y anuncios. Este puerto \n" +"proporciona una eficiencia aumentada ya que las respuestas contienen las" +" \n" +"credenciales (`tokens`) enviadas en la consulta, y no necesitan ser \n" +"firmadas. Llamamos a esto el \"response port\" (puerto de respuesta). " +"Este es el valor \"rport\" del mensaje de extensión. Las respuestas y los" +" anuncios usan el protocolo I2CP número 18." #: i2p2www/pages/site/docs/applications/bittorrent.html:254 msgid "" @@ -5042,11 +5060,11 @@ msgid "" "In a response, the \"values\" key is a list of strings, each containing a" " single compact peer info." msgstr "" -"La información compacta del par (`peer`) son 32 bytes (un identificador \n" -"(`hash`) SHA256 de 32 bytes) en lugar de 4 bytes de IP + 2 bytes de \n" -"puerto. No hay puerto de peer. En una respuesta, la clave \"values\" \n" -"(valores) es una lista de cadenas, conteniendo cada una la información \n" -"compacta de un único peer." +"La información compacta del par (`peer`) son 32 bytes (identificador " +"criptográfico (`hash`) SHA256 de 32 bytes) en lugar de 4 bytes de IP + 2 " +"bytes de puerto. No hay puerto del par. En una respuesta, la clave \n" +"\"values\" (valores) es una lista de cadenas, conteniendo cada una la \n" +"información compacta de un único par." #: i2p2www/pages/site/docs/applications/bittorrent.html:260 msgid "" @@ -5056,9 +5074,10 @@ msgid "" "In a response, the \"nodes\" key is a\n" "single byte string with concatenated compact node info." msgstr "" -"La información de nodo compacto es de 54 bytes (20 bytes de hash + 32 \n" -"bytes de hash SHA256 + 2 bytes de puerto) en lugar de 20 bytes de hash \n" -"SHA1 + 4 bytes de IP + 2 bytes de puerto. En una respuesta, la clave \n" +"La información de nodo compacto son 54 bytes (20 bytes de hash SHA1 + \n" +"32 bytes de hash SHA256 + 2 bytes de puerto) en lugar de 20 bytes de \n" +"hash SHA1 + 4 bytes de IP + 2 bytes de puerto. En una respuesta, la clave" +" \n" "\"nodes\" (nodos) es una única cadena de bytes con la información \n" "concatenada de nodo compacto." @@ -5071,15 +5090,14 @@ msgid "" "the\n" "destination hash exclusive-ORed with the port." msgstr "" -"Requerimiento de identificador (`ID`) de nodo seguro: Para hacer varios \n" -"ataques DHT (tabla de hash distribuída) los 4 primeros bytes del \n" -"identificador (`ID`) de nodo deben coincidir con los 4 bytes del " -"identificador \n" -"(`hash`) del destino, y los siguientes dos bytes del identificador (`ID`)" -" de \n" -"nodo deben coincidir con los siguientes dos bytes del resultado del\n" -"`OR`eado-exclusivo de el identificador (`hash`) del destino con el " -"puerto. " +"Requisito de identificador (`ID`) de nodo seguro: Para hacer más " +"difíciles varios de los ataques DHT (tabla de hash distribuída) los " +"primeros 4 bytes \n" +"del identificador de nodo (`ID`) deben coincidir con los primeros 4 bytes" +" del identificador criptográfico (`hash`) del destino, y los siguientes 2" +" bytes del identificador de nodo deben coincidir con los siguientes 2 " +"bytes del resultado de la operación OR-exclusivo del hash del destino con" +" el puerto. " #: i2p2www/pages/site/docs/applications/bittorrent.html:274 msgid "" @@ -5091,15 +5109,14 @@ msgid "" "Alternatives: A single byte string with concatenated hashes,\n" "or a list of strings alone." msgstr "" -"En un fichero torrent, la clave de diccionario de los \"nodes\" (nodos) " -"torrent \n" -"sin tracker es TBD. Podría ser una lista de cadenas de bytes de 32 bytes" -" \n" -"(hashes SHA256) en lugar de una lista de listas conteniendo un cadena de" -" \n" -"servidor y un entero de puerto.\n" -"Alternativas: Una única cadena de bytes con hashes concatenados, o una \n" -"sola lista de de cadenas." +"En un fichero torrent, la clave \"nodos\" del diccionario de un torrent " +"sin \n" +"tracker ha de ser determinada. Podría ser una lista de cadenas binarias " +"de \n" +"32 bytes (hashes SHA256) en lugar de una lista de listas que contengan \n" +"una cadena de servidor y un valor entero de puerto. \n" +"Alternativas: Una única cadena de bytes con hashes concatenados, o una " +"lista de cadenas por si solas." #: i2p2www/pages/site/docs/applications/bittorrent.html:285 #: i2p2www/pages/site/docs/how/intro.html:187 @@ -5112,7 +5129,7 @@ msgid "" "I2P bittorrent standards are generally discussed on %(zzz)s." msgstr "" -"Los standards bittorrent I2P discutidos generalmente en %(zzz)s." #: i2p2www/pages/site/docs/applications/bittorrent.html:290 @@ -5130,11 +5147,13 @@ msgid "" "The\n" "I2P bittorrent FAQ" msgstr "" +"El FAQ del bittorrent " +"I2P" #: i2p2www/pages/site/docs/applications/bittorrent.html:297 #, python-format msgid "DHT on I2P discussion" -msgstr "Discusión DHT sobre I2P" +msgstr "Discusión de DHT sobre I2P" #: i2p2www/pages/site/docs/applications/supported.html:2 #: i2p2www/pages/site/docs/applications/supported.html:5 @@ -5947,7 +5966,7 @@ msgstr "Servidor web ligero de alto rendimiento." #: i2p2www/pages/site/docs/discussions/naming.html:2 msgid "Naming discussion" -msgstr "Discusión sobre nombres" +msgstr "Discusión de nombres" #: i2p2www/pages/site/docs/discussions/naming.html:4 #, python-format @@ -5957,10 +5976,10 @@ msgid "" "common arguments and possible alternatives.\n" "See the naming page for current documentation." msgstr "" -"NOTA: Lo siguiente es una discusión de las razones que hay detrás del \n" +"NOTA: La siguiente es una discusión de las razones que hay detrás del \n" "sistema de nombres de I2P, argumentos comunes y posibles alternativas. \n" -"Vea la página de nombres para la documentación" -" actual." +"Vea en la página de nombres la documentación " +"actual." #: i2p2www/pages/site/docs/discussions/naming.html:10 msgid "Discarded alternatives" @@ -5977,12 +5996,13 @@ msgid "" "DNS-style naming system is clearly out, as are \"majority rules\" voting " "systems." msgstr "" -"Los nombres dentro de I2P han sido tema a menudo debatido desde el mismo " -"principio, con defensores de todo el espectro de posibilidades. Sin \n" -"embargo, dada la demanda de comunicaciones seguras y operaciones\n" -"descentralizadas inherente de I2P, el sistema de nombres tradicional \n" -"estilo-DNS está claramente desestimado, ya que son sistemas de voto \n" -"donde la \"mayoría manda\"." +"Los nombres dentro de I2P han sido un tema a menudo debatido desde el " +"principio mismo, con defensores de todas las posibilidades del espectro." +" \n" +"Sin embargo, dada la demanda inherente a I2P de comunicaciones \n" +"seguras y operaciones descentralizadas, el sistema de nombres \n" +"tradicional estilo-DNS está claramente desestimado, ya que son\n" +"sistemas de voto donde la \"mayoría manda\"." #: i2p2www/pages/site/docs/discussions/naming.html:19 msgid "" @@ -6008,29 +6028,23 @@ msgid "" " as \n" "hostile certificate authority attacks." msgstr "" -"Aunque I2P no promociona el uso de servicios tipo-DNS, ya que el daño \n" -"hecho al secuestrar un sitio puede ser tremedo - y los destinos inseguros" -" no tienen valor. DNSsec por si mismo aún se respalda sobre los " -"registradores \n" -"y las autoridades de certificados, mientras con I2P, las solicitudes " -"enviadas \n" -"a un destino no pueden ser interceptadas o la respuesta falseada, ya que" +"I2P no promociona el uso de servicios tipo-DNS, ya que el \n" +"daño hecho al secuestrar un sitio puede ser tremedo - y los destinos " +"inseguros no tienen valor. El propio DNSsec aún se respalda sobre los \n" +"registradores y las autoridades de certificados, mientras que con I2P las" +" solicitudes enviadas a un destino no pueden ser interceptadas, o la \n" +"respuesta falseada (`spoofed`), ya que están cifradas hasta recibir las \n" +"claves públicas del destino, y un destino en si mismo es sólo un par de " +"claves públicas y un certificado. Por otra parte, los sistemas estilo-DNS" " \n" -"están cifradas hacia un las claves públicas del destino, y un destino en " -"si \n" -"mismo es soloo un par de claves y un certificado. Los sistemas estilo-DNS" -" \n" -"por otro lado permiten que a cualquiera de los servidores de nombres en " -"la \n" -"ruta de la búsqueda, montar sencillos ataques de denegación de servicio \n" -"(DoS) o falsificación (`spoofing`). Por añadidura, un certificado " -"autentificando \n" -"las respuestas como firmadas por alguna autoridad centralizada de \n" -"certificados, podría solventar muchas de los problemas con servidores de" -" \n" -"nombres hostiles, pero también dejaría abiertos los ataques de respuesta" -" \n" -"como los ataques de autoridades de certificados hostiles." +"permiten a cualquiera de los servidores de nombres en la ruta de la \n" +"consulta, montar sencillos ataques de denegación de servicio (DoS) y de \n" +"falsificación (`spoofing`). Añadir un certificado autentificando las " +"respuestas \n" +"como firmadas por alguna autoridad centralizada de certificados podría \n" +"solventar muchos de los problemas con servidores de nombres hostiles, \n" +"pero también dejaría abiertos los ataques de respuesta así como los " +"ataques de autoridades de certificados hostiles." #: i2p2www/pages/site/docs/discussions/naming.html:33 msgid "" @@ -6046,17 +6060,16 @@ msgid "" "if the\n" "full network is not queried, different sets of answers may be reachable." msgstr "" -"Votar el estilo del nombrado también es peligroso, especialmente \n" +"El estilo de voto de nombres también es peligroso, especialmente \n" "dada la efectividad de ataques Sybil en sistemas anónimos - el atacante \n" -"puede simplemente crear arbitrariamente un alto número de pares (`peers`)" +"simplemente puede crear arbitrariamente un alto número de pares (`peers`)" " \n" "y \"votar\" con cada uno para conquistar un determinado nombre. Métodos " -"prueba-de-trabajo pueden usarse para hacer la identidad no-gratuita, pero" -" cada al crecer la red la carga necesaria para contactar con todo el " -"mundo \n" -"para realizar una votación en línea no es plausible, or si no se consulta" -" a la \n" -"red completa, diferentes grupos de respuestas pueden ser alcanzables." +"prueba-de-trabajo pueden usarse para hacer la identidad no-gratuíta, pero" +" al crecer la red, la carga necesaria para contactar con todos para " +"realizar una \n" +"votación en línea no es plausible, o si no se consulta a la red completa " +"diferentes grupos de respuestas pueden ser alcanzables." #: i2p2www/pages/site/docs/discussions/naming.html:42 msgid "" @@ -6069,23 +6082,24 @@ msgid "" "plug into, allowing end users to drive what sort of naming tradeoffs they" " prefer." msgstr "" -"Sin embargo, como con Internet, I2P está manteniendo el diseño y las \n" -"operaciones de un sistema de nombres fuera de la (estilo-IP) capa de \n" -"comunicación. La librería de nombrado empaquetada incluye una interfaz de" -"\n" -"proveedor de servicio sencilla a la que los sistemas de nombres alternativos \n" +"Sin embargo, como sucede con Internet, I2P está manteniendo el diseño\n" +"y las operaciones de un sistema de nombres fuera de la capa de " +"comunicación \n" +"(al estilo-IP). La librería de nombres empaquetada incluye una interfaz " +"sencilla \n" +"de proveedor de servicios a la que los sistemas" +" de nombres alternativos \n" "pueden enchufarse, permitiendo a los usuarios finales dirigir la clase de" -" \n" -"compromisos de nombrado que ellos prefieran." +" compromisos de equilibrio con los nombres que ellos prefieran." #: i2p2www/pages/site/docs/discussions/naming.html:50 msgid "" "See also Names: " "Decentralized, Secure, Human-Meaningful: Choose Two." msgstr "" -"Vea también nombres: " -"descentralizados, seguros, con-significado-humano: escoja dos." +"Vea también Nombres:" +" descentralizados, seguros, con-significado-humano: escoja dos." #: i2p2www/pages/site/docs/discussions/naming.html:55 msgid "(adapted from a post in the old Syndie, November 26, 2005)" @@ -6100,9 +6114,9 @@ msgid "" "Who is the right source of a name?" msgstr "" "P: ¿Qué hacer si algunos servidores no están de acuerdo con una de las \n" -"direcciones y si algunas de las direcciones están funcionando y otras no?" -" \n" -"¿Quién es la fuerte correcta de un nombre?" +"direcciones, y si algunas de las direcciones están funcionando y otras " +"no? \n" +"¿Quién es la fuente correcta de un nombre?" #: i2p2www/pages/site/docs/discussions/naming.html:64 msgid "" @@ -6114,11 +6128,12 @@ msgid "" "unique. This is by design, and an inherent part of our need for " "security." msgstr "" -"R: Tú no. En realidad esta es una diferencia critica entre los nombres en" +"R: Tú no. En realidad esta es una diferencia crítica entre los nombres en" " I2P \n" "y como funciona DNS - los nombres en I2P son legibles por humanos, \n" -"seguros, pero no globalmente únicos. Esto es por diseño, y una \n" -"parte inherente de nuestras necesidades de seguridad." +"seguros, pero no globalmente únicos. Esto es así por diseño, y una" +" \n" +"parte inherente de nuestra necesidad de seguridad." #: i2p2www/pages/site/docs/discussions/naming.html:70 msgid "" @@ -6135,11 +6150,19 @@ msgid "" "buddy list. Who you call \"Boss\" may be who someone else calls " "\"Sally\"." msgstr "" +"Si yo pudiese convencerle de alguna forma de cambiar la destinación " +"asociada a algún nombre, yo habría \"tomado control\" de la web, y esto " +"no es aceptable bajo ninguna circunstancia. En su lugar, lo que hacemos " +"es hacer que los nombres sean únicos localmente: son lo que " +"usted normalmente llamaría un web, al igual que puede llamar a las" +" cosas como desea cuando las añade los favoritos de su navegador, o a su " +"lista de amigos de su cliente de mensajería. Aquél al que llama \"jefe\" " +"puede ser alguien llamado \"Sally\"." #: i2p2www/pages/site/docs/discussions/naming.html:78 msgid "Names will not, ever, be securely human readable and globally unique." msgstr "" -"Los nombres no serán, nunca, legibles por humanos con seguridad y \n" +"Los nombres no serán, nunca, legibles por humanos con-total-certeza, ni \n" "globalmente únicos." #: i2p2www/pages/site/docs/discussions/naming.html:83 @@ -6147,8 +6170,8 @@ msgid "" "The following from zzz is a review of several common\n" "complaints about I2P's naming system." msgstr "" -"Lo siguiente desde zzz es una revisión de varias quejas comunes acerca \n" -"del sistema de nombres de I2P." +"Lo siguiente, desde el sitio de zzz, es un compendio de varias quejas \n" +"comunes acerca del sistema de nombres de I2P." #: i2p2www/pages/site/docs/discussions/naming.html:89 msgid "" @@ -6158,10 +6181,10 @@ msgid "" "It's about 400K right now for almost 800 hosts." msgstr "" "Ineficiencia: \n" -"El hosts.txt completo está descargado (si ha cambiado, ya que eepget usa" +"El fichero hosts.txt completo se descarga (si ha cambiado, ya que eepget" " \n" -"la etag y las últimas cabeceras modificadas). Ahora ocupa alrededor de \n" -"400KB para casi 800 servidores." +"usa la ETag (etiqueta de entidad HTTP) y las últimas cabeceras \n" +"modificadas). Ahora ocupa alrededor de 400KB para casi 800 servidores." #: i2p2www/pages/site/docs/discussions/naming.html:94 msgid "" @@ -6172,13 +6195,11 @@ msgid "" "If you downloaded a hosts.txt file from someone every 12 hours it " "averages out to about 10 bytes/sec." msgstr "" -"Verdad, pero esto no es mucho tráfico en el contexto de I2P, que en si \n" +"Cierto, pero esto no es mucho tráfico en el contexto de I2P, que en si \n" "mismo es salvajemente ineficiente (bases de datos inundadas, enorme \n" -"tráfico de control de la encriptación y el ajustado, enrutado ajo " -"(`garlic`), \n" -"etc.). Si descargó un fichero hosts.txt desde alguien cada 12 horas, hace" -"\n" -"una media de unos 10bytes/s." +"tráfico de control por la encriptación y tráfico por esquemas de relleno," +" enrutado ajo (`garlic`), etc.). Si usted descargó un fichero hosts.txt " +"desde alguien cada 12 horas, esto hace una media de unos 10 bytes/s." #: i2p2www/pages/site/docs/discussions/naming.html:99 msgid "" @@ -6191,15 +6212,15 @@ msgid "" " services do, but\n" "in a more automated fashion), possibly at a further cost in anonymity." msgstr "" -"Como habitualmente es el caso en I2P, hay un compromiso de equilibrio \n" -"fundamental aquí entre anonimidad y eficiencia. Alguién diría que usar el" +"Como es habitualmente el caso en I2P, hay un compromiso de equilibrio \n" +"fundamental aquí entre anonimato y eficiencia. Alguien diría que usar la" +" \n" +"ETag y las últimas cabeceras modificadas es arriesgado porque expone la " +"última vez que solicitó los datos. Otros han sugerido pedir sólo claves" " \n" -"etag y las últimas cabeceras modificadas es arriesgado porque expone la " -"última vez que uno solicitó los datos. Otros han sugerido pedir sólo " -"claves \n" "específicas (similar a lo que otros servicios distribuídos ('jump') " "hacen, pero \n" -"de una forma más automatizada), posiblemente a un coste más elevado en \n" +"de una forma más automatizada), posiblemente a un coste superior en \n" "anonimato." #: i2p2www/pages/site/docs/discussions/naming.html:106 @@ -6216,15 +6237,16 @@ msgid "" msgstr "" "Posibles mejoras serían un reemplazo o suplemento al libro de direcciones" " \n" -"(vea %(i2host)sp), or algo sencillo " +"(vea %(i2host)sp), o algo sencillo " "como suscribirse a \n" -"http://example.i2p/cgi-bin/recenthosts.cgi en lugar de a " -"http://example.i2p/hosts.txt \n" -"si un hipotético recenthosts.cgi desplegado en todos los servidores en " -"las \n" -"últimas 24 horas, por ejemplo, que pudiera ser tanto más eficiente como " -"más anónimo que el actual hosts.txt con las últimas modificaciones y " -"etag." +"http://example.i2p/cgi-bin/recenthosts.cgi en lugar de " +"http://example.i2p/hosts.txt, \n" +"por ejemplo, si hubiera un hipotético recenthosts.cgi desplegado en todos" +" \n" +"los servidores en las últimas 24 horas, que pudiera ser tanto más " +"eficiente \n" +"como más anónimo que el actual hosts.txt con las últimas modificaciones\n" +"y ETag." #: i2p2www/pages/site/docs/discussions/naming.html:112 #, python-format @@ -6241,14 +6263,12 @@ msgid "" msgstr "" "Una implementación de ejemplo está en stats.i2p en %(url)s.\n" -"Este script devuelve un etag con marcas de tiempo. Cuando una solicitud \n" -"entra con el etag If-None-Match, el script SOLO devuelve nuevos " -"servidores \n" -"desde su marca de tiemp, o 304 No Modificado si no hay ninguno. De esta " -"manera el script devuelve eficientemente sólo los servidores de los que " -"el \n" -"suscriptor no sepa de ellos, de una manera \n" -"compatible-con-el-libro-de-direcciones." +"Este script devuelve un ETag con marcas de tiempo. Cuando una solicitud \n" +"entra con el ETag If-None-Match (si ninguno coincide), el script SÓLO \n" +"devuelve nuevos servidores desde esa marca de tiempo, o `304 No " +"Modificado` si no hay ninguno. De esta manera el script devuelve \n" +"eficientemente sólo los servidores de los que el suscriptor no tenga \n" +"conocimiento, de una manera compatible-con-el-libro-de-direcciones." #: i2p2www/pages/site/docs/discussions/naming.html:121 msgid "" @@ -6256,9 +6276,8 @@ msgid "" "improve things without\n" "radical change." msgstr "" -"Así la ineficiencia no es un gran problema y hay varias formas de mejorar" -" \n" -"las coasas sin un cambio radical." +"Así que la ineficiencia no es un gran problema y hay varias formas de \n" +"mejorar las cosas sin un cambio radical." #: i2p2www/pages/site/docs/discussions/naming.html:127 msgid "" @@ -6266,10 +6285,10 @@ msgid "" "The 400K hosts.txt (with linear search) isn't that big at the moment and\n" "we can probably grow by 10x or 100x before it's a problem." msgstr "" -"Not escalable: \n" -"El hosts.txt de 400KB (con búsqueda lineal) no es tan grande de momento \n" -"y probablemente pueda crecer por un factor de 10x o 100x antes de que \n" -"sea un problema." +"No escalable: \n" +"El fichero hosts.txt de 400KB (con búsqueda lineal) no es tan grande de \n" +"momento, y probablemente podamos crecer por un factor de 10x o 100x antes" +" de que sea un problema." #: i2p2www/pages/site/docs/discussions/naming.html:132 msgid "" @@ -6279,6 +6298,10 @@ msgid "" "a key, you need to have the whole set of keys stored locally, at a cost " "of about 500 bytes per key." msgstr "" +"En cuanto al tráfico de red, vea más arriba. Pero a no ser que vaya a " +"hacer una petición a tiempo real lenta sobre la red para obtener una " +"clave, necesita tener todo el grupo de claves almacenadas localmente, con" +" el coste de unos 500 bytes por clave." #: i2p2www/pages/site/docs/discussions/naming.html:139 msgid "" @@ -6287,6 +6310,10 @@ msgid "" "http://www.i2p2.i2p/hosts.txt, which is rarely updated,\n" "leading to poor new-user experience." msgstr "" +"Requiere configuración y \"confianza\": La libreta de direcciones " +"lista para usar sólo está suscrita a http://www.i2p2.i2p/hosts.txt, la " +"cual raramente se actualiza, creando una experiencia pobre para los " +"principiantes." #: i2p2www/pages/site/docs/discussions/naming.html:144 msgid "" @@ -6296,6 +6323,10 @@ msgid "" "The configuration step attempts to force users to think about issues of " "trust in an anonymous network." msgstr "" +"Esto es intencionado. jrandom quiere que un usuario \"confíe\" en un " +"proveedor de host.txt, y como a él le gusta decir, \"la confianza no es " +"una variable binaria\". Los pasos de configuración intenta obligar a los" +" usuarios a pensar sobre los problemas de confianza en una red anónima." #: i2p2www/pages/site/docs/discussions/naming.html:149 msgid "" @@ -6307,6 +6338,11 @@ msgid "" "not enough to\n" "automatically go fetch the key from them." msgstr "" +"Como otro ejemplo, la página de error \"Eepsite Unknown\" en el proxy " +"HTTP muestra algunos servicios de salto, pero no \"recomienda\" ninguno " +"en particular, y es elección del usuario el elegir uno (o no). jramdom " +"diría que confiamos en los proveedores listados suficientemente como para" +" mostrarlos pero no como para obtener la clave de ellos automáticamente." #: i2p2www/pages/site/docs/discussions/naming.html:156 msgid "" @@ -6314,16 +6350,22 @@ msgid "" "But there must be some sort of hierarchy of trust for the naming system.\n" "To treat everyone equally may increase the risk of hijacking." msgstr "" +"¿Cómo es de exitoso este sistema?. No estoy seguro. Pero tiene que haber " +"algún tipo de jerarquía de confianza en el sistema de nombres/dominios. " +"El tratar a todo el mundo igual puede aumentar el riesgo de secuestro de " +"dominios." #: i2p2www/pages/site/docs/discussions/naming.html:163 msgid "It isn't DNS" -msgstr "" +msgstr "No es DNS" #: i2p2www/pages/site/docs/discussions/naming.html:166 msgid "" "Unfortunately real-time lookups over i2p would significantly slow down " "web browsing." msgstr "" +"Desafortunadamente, las búsquedas en tiempo real sobre I2P relentizarían " +"significativamente la navegación web." #: i2p2www/pages/site/docs/discussions/naming.html:169 msgid "" @@ -6331,16 +6373,20 @@ msgid "" "while i2p\n" "keys are permanent." msgstr "" +"Además, DNS está basado en búsquedas con caché y tiempo de vida " +"limitados, mientras que las claves de i2p son permanentes. " #: i2p2www/pages/site/docs/discussions/naming.html:173 msgid "Sure, we could make it work, but why? It's a bad fit." -msgstr "" +msgstr "Seguro, podríamos hacerlo funcionar, pero ¿para qué? Sería un mal apaño." #: i2p2www/pages/site/docs/discussions/naming.html:178 msgid "" "Not reliable:\n" "It depends on specific servers for addressbook subscriptions." msgstr "" +"No fiable: Depende de servidores específicos para las " +"suscripciones de la libreta de direcciones." #: i2p2www/pages/site/docs/discussions/naming.html:182 msgid "" @@ -6354,6 +6400,13 @@ msgid "" "something even simpler, like a script that adds everybody in your " "hosts.txt to your addressbook." msgstr "" +"Si, depende de los pocos servidores que ha configurado. Dentro de i2p, " +"los servidores y los servicios van y vienen. Cualquier otros sistema " +"centralizado (por ejemplo servidores raíz DNS) tendrían los mismos " +"problemas. Un sistema descentralizado completamente (todo el mundo es una" +" autoridad) es posible implementando una solución tipo \"todo el mundo es" +" un servidor raíz DNS\", o con algo incluso más simple, con un script que" +" añada a todos los que estén en su hosts.txt a su libreta de direcciones." #: i2p2www/pages/site/docs/discussions/naming.html:190 msgid "" @@ -6361,6 +6414,8 @@ msgid "" "through\n" "the issues of conflicts and hijacking, however." msgstr "" +"La gente que defiende la solución de todos-son-autoridad generalmente no " +"han pensado en los conflictos y en los secuestros de dominios." #: i2p2www/pages/site/docs/discussions/naming.html:196 msgid "" @@ -6370,10 +6425,15 @@ msgid "" "eepsite status reporters.\n" "Jump servers and subscriptions are a pain, it should just work like DNS." msgstr "" +"Embarazoso, no es en tiempo real: Es un lío de proveedores de " +"hosts.txt, proveedores de formularios webs para el añadido de claves, " +"proveedores de saltos, webs con el estado de las eepsites. Los servicios " +"de saltos y las suscripciones son molestos, debería simplemente " +"funcionar, al igual que los DNS." #: i2p2www/pages/site/docs/discussions/naming.html:202 msgid "See the reliability and trust sections." -msgstr "" +msgstr "Vea las secciones de confianza y seguridad." #: i2p2www/pages/site/docs/discussions/naming.html:207 msgid "" @@ -6381,6 +6441,9 @@ msgid "" "or un-scalable,\n" "and proposals to \"just use DNS\" aren't well thought-through." msgstr "" +"En resumen, el sistema actual no está terriblemente roto, no es " +"ineficiente, o no es escalable, y las propuestas de \"simplemente usemos " +"DNS\" no están bien pensadas." #: i2p2www/pages/site/docs/discussions/naming.html:212 msgid "Alternatives" @@ -6392,28 +6455,37 @@ msgid "" "configuration options\n" "to enable experimentation with naming systems." msgstr "" +"El código de I2P contiene varios sistemas de dominios listos para " +"enchufar, y soporta opciones de configuración para permitir experimentar " +"con sistemas de nombres." #: i2p2www/pages/site/docs/discussions/naming.html:218 msgid "" "Meta - calls two or more other naming systems in order.\n" "By default, calls PetName then HostsTxt." msgstr "" +"Meta - llama a uno o más sistemas de nombres en orden. Por defecto" +" llama a PetName y después a Hosts Txt." #: i2p2www/pages/site/docs/discussions/naming.html:222 msgid "" "PetName - Looks up in a petnames.txt file.\n" "The format for this file is NOT the same as hosts.txt." msgstr "" +"PetName - busca en el archivo petnames.txt. El formato de este " +"archivo NO es el mismo que el de " #: i2p2www/pages/site/docs/discussions/naming.html:226 msgid "HostsTxt - Looks up in the following files, in order:" -msgstr "" +msgstr "HostsTxt - Busca en los siguentes archivos en orden:" #: i2p2www/pages/site/docs/discussions/naming.html:234 msgid "" "AddressDB - Each host is listed in a separate file in a addressDb/" " directory." msgstr "" +"AddressDB - Cada host es listado en un archivo separado en el " +"directorio addressDb/." #: i2p2www/pages/site/docs/discussions/naming.html:237 msgid "" @@ -6422,6 +6494,9 @@ msgid "" "This could augment or replace the jump system.\n" "Includes in-memory caching." msgstr "" +"Eepget - hace una búsqueda HTTP en un servidor externo - debe ser " +"usado después de la búsqueda en HostsTxt con Meta. Esto puede aumentar o " +"reemplazar al sistema de saltos. Incluye cacheado en-memoria." #: i2p2www/pages/site/docs/discussions/naming.html:243 msgid "" @@ -6430,10 +6505,16 @@ msgid "" "Can be used after HostsTxt or as the sole naming system.\n" "Includes in-memory caching." msgstr "" +"Exec - llama a un programa externo para las búsquedas, permite " +"experimentación adicional en los esquemas de búsquedas, " +"independientemente de java. Puede ser usado después de HostsTxt o como un" +" sistema de nombres en solitario. Incluye caché en-memoria." #: i2p2www/pages/site/docs/discussions/naming.html:249 msgid "Dummy - used as a fallback for Base64 names, otherwise fails." msgstr "" +"Dummy - usado como apoyo para los nombres BAse64, do otra forma " +"falla." #: i2p2www/pages/site/docs/discussions/naming.html:253 msgid "" @@ -6442,6 +6523,9 @@ msgid "" "(restart required).\n" "See core/java/src/net/i2p/client/naming for details." msgstr "" +"El sistema actual de dominios puede ser cambiado en la configuración " +"avanzada 'i2p.naming.impl' (se necesita reiniciar). Vea " +"core/java/src/net/i2p/client/naming para más detalles." #: i2p2www/pages/site/docs/discussions/naming.html:258 msgid "" @@ -6450,6 +6534,10 @@ msgid "" "since addressbook\n" "only knows about the hosts.txt files and format." msgstr "" +"Cualquier sistema nuevo debería usarse con HostsTxt, o debería " +"implementar almacenamiento local o/y las funciones de suscripción de la " +"libreta de direcciones, ya que la libreta de direcciones sólo conoce el " +"archivo hosts.txt y su formato." #: i2p2www/pages/site/docs/discussions/naming.html:264 msgid "Certificates" @@ -6468,6 +6556,13 @@ msgid "" " a\n" "destination. So these will have to be updated to implement certificates." msgstr "" +"Las destinaciones I2P contiene un certificado, aunque hasta el momento " +"ese certificado es siempre vacío, null. Con un certificado nulo, las " +"destinaciones base64 son siempre de 516 bytes y terminan en \"AAAA\", y " +"esto es comprobado en el mecanismo de unión de la libreta de direcciones," +" y posiblemente en otros sitios. Además, no hay ningún método disponible " +"para generar un certificado o añadirlo a la destinación. Con lo que este " +"debe ser actualizado para implementar los certificados." #: i2p2www/pages/site/docs/discussions/naming.html:273 #, python-format @@ -6475,6 +6570,8 @@ msgid "" "One possible use of certificates is for proof of work." msgstr "" +"Un posible uso para los certificados sería para la prueba de trabajo." #: i2p2www/pages/site/docs/discussions/naming.html:276 msgid "" @@ -6483,6 +6580,9 @@ msgid "" "i2p uses a flat naming system) to be signed by the 2nd level domain's " "keys." msgstr "" +"Otro es para que los \"subdominios\" (entre comillas porque realmente no " +"existe tal cosa, I2P utiliza un sistema de dominios plano) sean firmados " +"por las claves de dominio de segundo nivel ." #: i2p2www/pages/site/docs/discussions/naming.html:280 msgid "" @@ -6493,6 +6593,10 @@ msgid "" "Is there a method for multiple types of certificates, or multiple " "certificates?" msgstr "" +"Con cualquier tipo de implementación de certificados tiene que venir " +"algún método para verificar los certificados. Probablemente esto debería " +"en al código de unión de la libreta de direcciones. ¿Hay un método para " +"múltiples tipos de certificados, o múltiples certificados?" #: i2p2www/pages/site/docs/discussions/naming.html:286 msgid "" @@ -6503,14 +6607,19 @@ msgid "" " as \n" "hostile certificate authority attacks." msgstr "" +"Añadiendo sobre un certificado, autentificando la respuesta como firmada " +"por alguna autoridad certificada centralizada podría solucionar muchos de" +" los problemas con los servidores de nombres hostiles, pero lo dejaría " +"abierto a ataques de respuesta, al igual que a los ataques desde una " +"autoridad de certificados hostil." #: i2p2www/pages/site/docs/how/cryptography.html:2 msgid "Low-level Cryptography Details" -msgstr "" +msgstr "Detalles de bajo nivel de los cifrados" #: i2p2www/pages/site/docs/how/cryptography.html:6 msgid "This page specifies the low-level details of the cryptography in I2P." -msgstr "" +msgstr "Esta página especifica los detalles de bajo nivel de los cifrados en I2P." #: i2p2www/pages/site/docs/how/cryptography.html:10 #, python-format @@ -6530,6 +6639,16 @@ msgid "" "technique used in ElGamal/AES+SessionTag " "(but we're sure others have done it)." msgstr "" +"Hay bastantes algoritmos de cifrado en uso dentro de I2P, pero los hemos " +"reducido al mínimo para ajustarse a nuestras necesidades - un cifrado " +"simétrico, un cifrado asimétrico, un algoritmo de firma y un algoritmo de" +" hashing. Sin embargo, los combinamos de forma especial para proporcionar" +" integridad en los mensajes (en vez de depender de una MAC). Además, y " +"aunque odiamos el crear cosas nuevas en los que se refiere a cifrados, no" +" hemos podido encontrar ninguna referencia discutiendo (o incluso " +"nombrando) la técnica usada en el ElGamal/AES+SessionTag (pero estamos seguros " +"que otros ya lo han usado)." #: i2p2www/pages/site/docs/how/cryptography.html:20 msgid "ElGamal encryption" @@ -6541,6 +6660,9 @@ msgid "" "ElGamal is used for asymmetric encryption.\n" "ElGamal is used in several places in I2P:" msgstr "" +"\n" +"ElGamal es usado para el cifrado asimétrico. ElGamal es usado en varios " +"sitios de I2P." #: i2p2www/pages/site/docs/how/cryptography.html:27 #, python-format @@ -6548,6 +6670,8 @@ msgid "" "To encrypt router-to-router Tunnel Build " "Messages" msgstr "" +"Para cifrar los mensajes de creación de " +"túnel de ruter a ruter." #: i2p2www/pages/site/docs/how/cryptography.html:30 #, python-format @@ -6557,6 +6681,10 @@ msgid "" "using the encryption key in the LeaseSet" msgstr "" +"Para el cifrado de fin a fin (destinación a destinación) como parte de " +"ElGamal/AES+SessionTag usando la clave de " +"cifrado en el LeaseSet" #: i2p2www/pages/site/docs/how/cryptography.html:34 #: i2p2www/pages/site/docs/how/cryptography.html:189 @@ -6567,6 +6695,10 @@ msgid "" "as a part of ElGamal/AES+SessionTag\n" "(destination-to-router or router-to-router)." msgstr "" +"Para el cifrado de algunos almacenamientos" +" en la netDb y peticiones enviadas a los ruters floodfill como parte " +"de ElGamal/AES+SessionTag (destinación a " +"ruter o ruter a ruter)" #: i2p2www/pages/site/docs/how/cryptography.html:41 msgid "" @@ -6576,10 +6708,15 @@ msgid "" "single block, followed by the \n" "AES encrypted payload using that key and IV." msgstr "" +"Usamos primos comunes para el cifrado y descifrado de ElGamal 2048, como " +"se indica en IETF " +"RFC-3526. Actualmente sólo usamos ELGamal para cifrar el IV y la " +"clave de sesión en un solo bloque, seguido por el payload cifrado AES " +"usando la clave y el IV." #: i2p2www/pages/site/docs/how/cryptography.html:47 msgid "The unencrypted ElGamal contains:" -msgstr "" +msgstr "ElGamal sin cifrar contiene: " #: i2p2www/pages/site/docs/how/cryptography.html:64 msgid "" @@ -6595,6 +6732,14 @@ msgid "" "the cleartext to 222 bytes with random data.\n" "Total length: typically 255 bytes." msgstr "" +"La H(datos) es el SHA256 de los datos cifrados en al bloque ElGamal, y es" +" precedido por un byte distinto de cero. El byte puede ser aleatorio, " +"pero como está implementado es siempre 0xFF. Podría usarse en el futuro " +"para las banderas. Los datos cifrados en el bloque pueden ser de hasta " +"222 bytes de largo. Ya que los datos cifrados pueden contener un gran " +"número de ceros si el texto en plano es menor de 222 bytes, se recomienda" +" que las capas superiores rellenen el texto en plano con datos aleatorios" +" hasta los 222 bytes. Tamaño total: normalmente 255 bytes." #: i2p2www/pages/site/docs/how/cryptography.html:76 msgid "The encrypted ElGamal contains:" @@ -6610,11 +6755,16 @@ msgid "" "This is encoded as two 256-byte encrypted parts,\n" "and there is a single byte of zero padding before each part at this layer." msgstr "" +"Cada parte cifrada es precedida con ceros hasta el tamaño de 257 bytes. " +"Tamaño total: 514 bytes. En un uso normal, las capas superiores colocan " +"el texto en plano hasta los 222 bytes, resultando en un bloque no cifrado" +" de 255 bytes. Esto es codificado como dos partes cifradas de 256 bytes, " +"y hay un solo byte cero de relleno antes de cada parte de esta capa." #: i2p2www/pages/site/docs/how/cryptography.html:111 #, python-format msgid "See the ElGamal code." -msgstr "" +msgstr "Vea el código ElGamal." #: i2p2www/pages/site/docs/how/cryptography.html:115 msgid "" @@ -6622,18 +6772,21 @@ msgid "" "[Oakley prime " "for 2048 bit keys]" msgstr "" +"El primo compartido es el [primo Oakley para " +"las claves de 2048 bits]" #: i2p2www/pages/site/docs/how/cryptography.html:122 msgid "or as a hexadecimal value:" -msgstr "" +msgstr "o un valor hexadecimal:" #: i2p2www/pages/site/docs/how/cryptography.html:138 msgid "Using 2 as the generator." -msgstr "" +msgstr "Usando 2 como generador." #: i2p2www/pages/site/docs/how/cryptography.html:142 msgid "Short Exponent" -msgstr "" +msgstr "Exponente corto" #: i2p2www/pages/site/docs/how/cryptography.html:143 #, python-format @@ -6651,6 +6804,16 @@ msgid "" "rescued from the wayback machine," " dated Apr 23, 2008." msgstr "" +"Mientras que el tamaño de exponente estándar es de 2048 bits (256 bytes) " +"y la PrivateKey de " +"I2P es de 256 bytes, usamos un tamaño de exponente corto de 226 bits " +"(28.25 bytes). Esto debería ser seguro de usar con los primos Oakley, vea" +" On Diffie-Hellman Key Agreement with Short Exponents" +" - van Oorschot, Weiner en EuroCrypt 96, y rendimiento de crypto++. Los tests de " +"rendimiento estaban originalmente en %(oldbenchmarks)s " +"(ahora muerto), rescatados de la " +"máquina del tiempo, el 23 de Abril del 2008." #: i2p2www/pages/site/docs/how/cryptography.html:158 #, python-format @@ -6662,13 +6825,18 @@ msgid "" "this sci.crypt thread.\n" "The remainder of the PrivateKey is padded with zeroes." msgstr "" +"También Koshiba & Kurosawa: Short Exponent " +"Diffie-Hellman Problems (PKC 2004, LNCS 2947, pp. 173-186) (texto completo en Google Books) aparentemente " +"los soporta, de acuerdo con este hilo " +"sci.crypt. El resultado del PrivateKey es rellenado con ceros." #: i2p2www/pages/site/docs/how/cryptography.html:167 #: i2p2www/pages/site/docs/how/cryptography.html:264 #: i2p2www/pages/site/docs/how/cryptography.html:343 #: i2p2www/pages/site/docs/how/cryptography.html:382 msgid "Obsolescence" -msgstr "" +msgstr "Obsolescencia " #: i2p2www/pages/site/docs/how/cryptography.html:168 msgid "" @@ -6676,14 +6844,19 @@ msgid "" "transitioning to a longer bit length is to be studied.\n" "It may be quite difficult to make any change backward-compatible." msgstr "" +"Las vulnerabilidades de la red a un ataque ElGamal y el impacto de una " +"transición a un tamaño mayor no han sido aún estudiados. Podría ser muy " +"difícil hacer cambios que fuesen compatibles hacia atrás. " #: i2p2www/pages/site/docs/how/cryptography.html:176 msgid "AES is used for symmetric encryption, in several cases:" -msgstr "" +msgstr "AES es utilizado para el cifrado simétrico en varios casos:" #: i2p2www/pages/site/docs/how/cryptography.html:181 msgid "For transport encryption after DH key exchange" msgstr "" +"Para el cifrado de transporte después del " +"intercambio de la clave DH." #: i2p2www/pages/site/docs/how/cryptography.html:185 #, python-format @@ -6691,6 +6864,8 @@ msgid "" "For end-to-end (destination-to-destination) encryption as a part of ElGamal/AES+SessionTag" msgstr "" +"Para los cifrados de fin a fin (destinación a destinación) como parte de " +"ElGamal/AES+SessionTag" #: i2p2www/pages/site/docs/how/cryptography.html:195 #, python-format @@ -6699,6 +6874,9 @@ msgid "" "test messages sent from the router to itself, through its own " "tunnels." msgstr "" +"Para el cifrado de los mensajes " +"periódicos de pruebas de túnel, enviado desde un ruter a sí mismo a " +"través de sus propios túneles." #: i2p2www/pages/site/docs/how/cryptography.html:200 #, python-format @@ -6714,6 +6892,15 @@ msgid "" " in the\n" "ElGamalAESEngine.getPadding function." msgstr "" +"Usamos AES con claves de 256 bytes y con bloques de 128 bits en modo CBC." +" El rellenado usado está especificado en IETF " +"RFC-2313 (PKCS#5 1.5, sección 8.1 (para bloques de tipo 02)). En este" +" caso, el relleno es creado aleatoriamente en octetos para ajustarse a " +"los bloques de 16 bytes. Específicamente vea [the " +"CBC code] and the Cryptix AES [implementación], al igual que el relleno " +"encontrado en la función ElGamalAESEngine.getPadding." #: i2p2www/pages/site/docs/how/cryptography.html:265 msgid "" @@ -6721,6 +6908,9 @@ msgid "" "transitioning to a longer bit length is to be studied.\n" "It may be quite difficult to make any change backward-compatible." msgstr "" +"Las vulnerabilidades de la red a un ataque AES y el impacto del cambio a " +"unas clave más grande no ha sido estudiado aún. Podría ser realmente " +"difícil hacer cambios que fuesen compatibles hacia atrás." #: i2p2www/pages/site/docs/how/cryptography.html:270 #: i2p2www/pages/site/docs/how/cryptography.html:362 @@ -6733,7 +6923,7 @@ msgstr "Referencias" #: i2p2www/pages/site/docs/how/cryptography.html:273 msgid "Feb. 7, 2006 Status Notes" -msgstr "" +msgstr "Notas de estado, 7 Feb. 2006" #: i2p2www/pages/site/docs/how/cryptography.html:280 #, python-format @@ -6743,10 +6933,14 @@ msgid "" "[DSAEngine].\n" "DSA was chosen because it is much faster for signatures than ElGamal." msgstr "" +"Las firmas son generadas y verificadas con DSA de 1024 bits (L=1024, " +"N=160), al igual que está implementado en [DSAEngine]. DSA fue escogida porque es mucho más " +"rápida para firmar que ElGamal." #: i2p2www/pages/site/docs/how/cryptography.html:286 msgid "The DSA constants" -msgstr "" +msgstr "Las constantes DSA" #: i2p2www/pages/site/docs/how/cryptography.html:337 #, python-format @@ -6756,6 +6950,10 @@ msgid "" "The Signing " "Private Key is 160 bits." msgstr "" +"La clave pública " +"de firma es de 1024 bits. La clave privada de " +"firma es de 160 bits." #: i2p2www/pages/site/docs/how/cryptography.html:344 #, python-format @@ -6765,6 +6963,9 @@ msgid "" "This may be mitigated somewhat by the \"cryptoperiod\", or lifespan of a " "given key." msgstr "" +"NIST 800-57 recomienda un mínimo de (L=2048, " +"N=224) para su uso más allá del 2010. Esto puede mitigarse de alguna " +"forma con el \"cryptoperiod\", o tiempo de vida dado a una clave." #: i2p2www/pages/site/docs/how/cryptography.html:350 msgid "" @@ -6775,6 +6976,11 @@ msgid "" "If a larger prime is chosen for future purposes, this should be a strong " "prime, and we will document the construction process." msgstr "" +"El número primo fue escogido en el " +"2003, y la persona que lo eligió (TheCrypto) no es ya un " +"desarrollador de I2P. Por eso, no sabemos si el primo escogido es un " +"'primo fuerte'. Si en el futuro se elige un nuevo primo, debería ser un " +"primo fuerte y documentaremos el proceso de construcción." #: i2p2www/pages/site/docs/how/cryptography.html:357 msgid "" @@ -6782,16 +6988,19 @@ msgid "" "transitioning to longer keys is to be studied.\n" "It may be quite difficult to make any change backward-compatible." msgstr "" +"Las vulnerabilidades de la red a un ataque DSA y el impacto del cambio a " +"unas clave más grande no ha sido estudiado aún. Podría ser realmente " +"difícil hacer cambios que fuesen compatibles hacia atrás." #: i2p2www/pages/site/docs/how/cryptography.html:365 #: i2p2www/pages/site/docs/how/cryptography.html:367 #, python-format msgid "Meeting %(num)s" -msgstr "" +msgstr "Reuniones %(num)s " #: i2p2www/pages/site/docs/how/cryptography.html:369 msgid "Choosing the constants" -msgstr "" +msgstr "Eligiendo las constantes" #: i2p2www/pages/site/docs/how/cryptography.html:377 #, python-format @@ -6799,6 +7008,8 @@ msgid "" "Hashes within I2P are plain old SHA256, as implemented in\n" "[SHA256Generator]" msgstr "" +"Los hashes en I2P son hashes planos viejos SHA256, como se implementaron " +"en [SHA256Generator]" #: i2p2www/pages/site/docs/how/cryptography.html:383 msgid "" @@ -6806,6 +7017,9 @@ msgid "" "transitioning to a longer hash is to be studied.\n" "It may be quite difficult to make any change backward-compatible." msgstr "" +"Las vulnerabilidades de la red a un ataque SHA-256 y el impacto del " +"cambio a una hash más grande no ha sido estudiado aún. Podría ser " +"realmente difícil hacer cambios que fuesen compatibles hacia atrás." #: i2p2www/pages/site/docs/how/cryptography.html:394 msgid "Transports" @@ -6826,6 +7040,14 @@ msgid "" "forward secrecy\n" "on the transport links." msgstr "" +"En la capa del protocolo más baja, la comunicación entre ruters punto a " +"punto es protegida por la seguridad de la capa de transporte. Ambos " +"transportes usan claves de intercambio de 256 byte (2048 bit) Diffie-" +"Hellman usando el mismo primo y generador " +"compartidos como se especifica arriba para ElGamal, seguido por el " +"cifrado simétrico AES como se describe arriba. Esto proporciona un perfecto" +" secreto en el envío en los enlaces de transporte." #: i2p2www/pages/site/docs/how/cryptography.html:407 msgid "NTCP connections" @@ -6847,18 +7069,32 @@ msgid "" "forward secrecy', while ElGamalAES+SessionTag does not." msgstr "" +"Las conexiones NTCP son negociadas con una implementación 2048 Diffie-" +"Hellman, usando la identidad del ruter para crear un acuerdo/contrato de " +"estación a estación, seguido de algunos campos específicos para " +"protocolos cifrados, con todos los datos subsecuentes cifrados con AES " +"(como arriba). La principal razón para hacer la negociación DH en vez de " +"usar ElGamalAES+SessionTag es que " +"proporciona 'secreto de " +"envío (perfecto)', mientras que ElGamalAES+SessionTag no lo hace." #: i2p2www/pages/site/docs/how/cryptography.html:417 msgid "" "In order to migrate to a more standardized implementation (TLS/SSL or " "even SSH), the following issues must be addressed:" msgstr "" +"Para poder migrar a una implementación más estándar (TLS/SSL o incluso " +"SSH), se deben arreglar los siguientes problemas:" #: i2p2www/pages/site/docs/how/cryptography.html:421 msgid "" "Can we somehow reestablish sessions securely (ala session tags) or do we " "need to do full negotiation each time?" msgstr "" +"¿Podemos restablecer sesiones de forma segura (tipo etuquetas de sesión) " +"o necesitamos hacer una negociación completa cada vez?" #: i2p2www/pages/site/docs/how/cryptography.html:424 msgid "" @@ -6866,11 +7102,14 @@ msgid "" "own RouterInfo structure (which \n" "contains the ElGamal and DSA keys)?" msgstr "" +"¿Podemos simplemente evitar el x509 u ortos formatos de certificados " +"usados en nuestra estructura del RouterInfo (la cual contiene las claves " +"ElGamal y DSA)?" #: i2p2www/pages/site/docs/how/cryptography.html:429 #, python-format msgid "See the NTCP specification for details." -msgstr "" +msgstr "Vea la especificación NTCP para más detalles." #: i2p2www/pages/site/docs/how/cryptography.html:433 msgid "UDP connections" @@ -6888,11 +7127,19 @@ msgid "" "integrity \n" "checking." msgstr "" +"SSU (el transporte UDP) cifra cada paquete con AES256/CBC con un IV " +"explícito y la MAC (HMAC-MD5-128) después de acordar una clave de sesión " +"efímera a través del sistema de intercambio Diffie-Hellman de 2048 bits, " +"autenticación estación a estación con la clave DSA del otro ruter, además" +" cada mensaje de red tiene su propio hash para su comprobar su integridad" +" localmente." #: i2p2www/pages/site/docs/how/cryptography.html:442 #, python-format msgid "See the SSU specification for details." msgstr "" +"Vea las especificaciones de SSU para más " +"detalles." #: i2p2www/pages/site/docs/how/cryptography.html:446 #, python-format @@ -6906,10 +7153,16 @@ msgid "" "the 2005-07-05 status notes\n" "for details." msgstr "" +"CUIDADO - el HMAC-MD5-128 de I2P usado en el SSU aparentemente no es " +"estándar. Aparentemente, una versión anterior de SSU usaba HMAC-SHA256, y" +" después fue cambiada a MD5-128 por razones de rendimiento, pero dejaron " +"el tamaño del buffer de 32 bytes intacto. Vea HMACGenerator.java y las notas de estado del 2005-07-05 para más " +"detalles." #: i2p2www/pages/site/docs/how/elgamal-aes.html:2 msgid "ElGamal/AES + SessionTag Encryption" -msgstr "" +msgstr "Cifrado ElGamal/AES + SessionTag" #: i2p2www/pages/site/docs/how/elgamal-aes.html:3 msgid "February 2011" @@ -6917,7 +7170,7 @@ msgstr "Febrero de 2011" #: i2p2www/pages/site/docs/how/elgamal-aes.html:7 msgid "ElGamal/AES+SessionTags is used for end-to-end encryption." -msgstr "" +msgstr "ElGamal/AES+SessionTags es usado para los cifrados de fin a fin." #: i2p2www/pages/site/docs/how/elgamal-aes.html:11 msgid "" @@ -6931,6 +7184,13 @@ msgid "" "describe \n" "the use of 2048bit ElGamal, AES256, SHA256, and 32 byte nonces." msgstr "" +"Como un sistema basado en mensajes no ordenados y no fiable que es, I2P " +"usa una combinación simple de algoritmos de cifrados simétricos y " +"asimétricos para proporcionar la confidencialidad de los datos y la " +"integridad de los mensajes garlic. En conjunto, la combinación es llamada" +" ElGamal/AES+SessionTags, pero es una forma excesivamente larga de " +"describir el uso de ElGamal de 2048 bits, AES256, SHA256 y nonces de 32 " +"bytes." #: i2p2www/pages/site/docs/how/elgamal-aes.html:19 #: i2p2www/pages/site/docs/how/tech-intro.html:512 @@ -7040,12 +7300,24 @@ msgid "" "A session will continue to exist until all its tags are exhausted or " "expire." msgstr "" +"Las etiquetas de sesión tienen un vida muy corta, después de la cual son " +"descartadas y no se usan más. Además, el número almacenado de ellas por " +"cada clave es limitado, como también está limitado el número de claves - " +"si llegan demasiadas, serán descartados los mensajes nuevos o los viejos." +" El remitente lleva el seguimiento de los mensajes con etiquetas de " +"sesión que pasan a través suyo, y si no hay comunicación suficiente " +"podría descartar los mensajes supuestamente enviados correctamente, " +"volviendo al costoso cifrado ElGamal. Una sesión continuará existiendo " +"hasta que todas las etiquetas hayan expirado." #: i2p2www/pages/site/docs/how/elgamal-aes.html:61 msgid "" "Sessions are unidirectional. Tags are delivered from Alice to Bob,\n" "and Alice then uses the tags, one by one, in subsequent messages to Bob." msgstr "" +"Las sesiones son unidireccionales. Las etiquetas son enviadas desde Alice" +" a Bob, y Alice entonces utiliza las etiquetas, una a una, en los " +"siguientes mensajes hacia Bob." #: i2p2www/pages/site/docs/how/elgamal-aes.html:66 msgid "" @@ -7057,26 +7329,35 @@ msgid "" "Destinations\n" "to each other or a Router by adversaries." msgstr "" +"Las sesiones puede establecerse entre Destinaciones, entre Ruters o entre" +" Ruters y Destinaciones. Cada ruter y destinación mantiene su " +"administrador de claves de sesión para hacer el seguimiento de las claves" +" de sesión y las etiquetas de sesión. Al haber administradores de claves " +"de sesión separados se previene que los adversarios puedan hacer " +"correlación de las múltiples destinaciones que hay entre cada uno o entre" +" ruters." #: i2p2www/pages/site/docs/how/elgamal-aes.html:77 msgid "Message Reception" -msgstr "" +msgstr "Recepción del Mensaje" #: i2p2www/pages/site/docs/how/elgamal-aes.html:78 msgid "" "Each message received has one of two\n" "the two possible conditions:

    " -msgstr "" +msgstr "Cada mensaje recibido tiene una de estas dos posibles condiciones:

    " #: i2p2www/pages/site/docs/how/elgamal-aes.html:84 msgid "" "It is part of an existing session and contains a Session Tag and an AES " "encrypted block" msgstr "" +"Es parte de una sesión ya existente y contiene una etiqueta de sesión y " +"un bloque cifrado AES." #: i2p2www/pages/site/docs/how/elgamal-aes.html:85 msgid "It is for a new session and contains both ElGamal and AES encrypted blocks" -msgstr "" +msgstr "Es para una nueva sesión y contiene los bloques cifrados ElGamal y AES." #: i2p2www/pages/site/docs/how/elgamal-aes.html:88 msgid "" @@ -7086,10 +7367,14 @@ msgid "" "If that fails, it will assume it is for a new session and attempt to\n" "decrypt it using ElGamal." msgstr "" +"Cuando un ruter recibe un mensaje, primero asumirá que es de una sesión " +"ya existente e intentará buscar la etiqueta de sesión y descifrar los " +"datos usando AES. Si esto falla, asumirá que es para una nueva sesión e " +"intentará descifrarlo usando ElGamal." #: i2p2www/pages/site/docs/how/elgamal-aes.html:97 msgid "New Session Message Specification" -msgstr "" +msgstr "Especificaciones de los mensajes de nueva sesión." #: i2p2www/pages/site/docs/how/elgamal-aes.html:98 msgid "" @@ -7097,6 +7382,8 @@ msgid "" "block\n" "and an encrypted AES block." msgstr "" +"Un mensaje de nueva sesión ElGamal contiene dos partes, un bloque cifrado" +" ElGamal y un bloque cifrado AES." #: i2p2www/pages/site/docs/how/elgamal-aes.html:103 msgid "The encrypted message contains:" @@ -7108,11 +7395,11 @@ msgstr "Bloque ElGamal" #: i2p2www/pages/site/docs/how/elgamal-aes.html:128 msgid "The encrypted ElGamal Block is always 514 bytes long." -msgstr "" +msgstr "El bloque cifrado ElGamal es siempre de 514 bytes." #: i2p2www/pages/site/docs/how/elgamal-aes.html:132 msgid "The unencrypted ElGamal data is 222 bytes long, containing:" -msgstr "" +msgstr "Los datos no cifrados ElGamal son de 222 bytes de largo, y contienen:" #: i2p2www/pages/site/docs/how/elgamal-aes.html:164 #, python-format @@ -7124,6 +7411,10 @@ msgid "" " follows;\n" "the IV is the first 16 bytes of the SHA-256 Hash of the Pre-IV." msgstr "" +"La clave de sesión " +"de 32 bytes es el identificador de sesión. El Pre-IV de 32 bytes es usado" +" para generar el IV para el bloque AES siguiente; el IV son los primeros " +"16 bytes del Hash SHA-256 del Pre-IV." #: i2p2www/pages/site/docs/how/elgamal-aes.html:172 #, python-format @@ -7133,6 +7424,9 @@ msgid "" "and the encrypted block is 514 bytes long.\n" "

    " msgstr "" +"El payload de 222 bytes es cifrado usando ElGamal y el bloque cifrado " +"es de 514 bytes de largo." #: i2p2www/pages/site/docs/how/elgamal-aes.html:179 msgid "AES Block" @@ -7140,12 +7434,14 @@ msgstr "Bloque AES" #: i2p2www/pages/site/docs/how/elgamal-aes.html:180 msgid "The unencrypted data in the AES block contains the following:" -msgstr "" +msgstr "Los datos sin cifrar en el bloque AES contienen los siguiente:" #: i2p2www/pages/site/docs/how/elgamal-aes.html:224 #, python-format msgid "2-byte Integer, 0-200" msgstr "" +"Un entero de 2 bytes, " +"0-200" #: i2p2www/pages/site/docs/how/elgamal-aes.html:228 #, python-format @@ -7153,11 +7449,13 @@ msgid "" "That many 32-byte Session Tags" msgstr "" +"Muchas etiquetas de " +"sesión de 32 bytes" #: i2p2www/pages/site/docs/how/elgamal-aes.html:232 #, python-format msgid "4-byte Integer" -msgstr "" +msgstr "Un entero de 4 bytes" #: i2p2www/pages/site/docs/how/elgamal-aes.html:236 #, python-format @@ -7165,10 +7463,14 @@ msgid "" "The 32-byte SHA256 Hash of" " the payload" msgstr "" +"El Hash SHA256 de 32 bytes" +" del payload" #: i2p2www/pages/site/docs/how/elgamal-aes.html:240 msgid "A one-byte value. Normally == 0. If == 0x01, a Session Key follows" msgstr "" +"Un valor de 1 byte. Normalmente == 0. Si == 0x01, lo siguiente es una " +"clave de sesión" #: i2p2www/pages/site/docs/how/elgamal-aes.html:244 #, python-format @@ -7178,20 +7480,25 @@ msgid "" " to replace the old key, and is only present if preceding" " flag is 0x01" msgstr "" +"Una clave de sesión " +"de 32 bytes, para reemplazar la clave vieja, y sólo está presente si la " +"bandera precedente es 0x01" #: i2p2www/pages/site/docs/how/elgamal-aes.html:249 msgid "the data" -msgstr "" +msgstr "los datos" #: i2p2www/pages/site/docs/how/elgamal-aes.html:251 msgid "" "Random data to a multiple of 16 bytes for the total length.\n" " May contain more than the minimum required padding." msgstr "" +"Datos aleatorios múltiplos de 16 bytes hasta el tamaño total. Puede " +"contener más que el relleno mínimo requerido." #: i2p2www/pages/site/docs/how/elgamal-aes.html:256 msgid "Minimum length: 48 bytes" -msgstr "" +msgstr "Tamaño mínimo : 48 bytes" #: i2p2www/pages/site/docs/how/elgamal-aes.html:260 #, python-format @@ -7203,6 +7510,12 @@ msgid "" " bytes.\n" "

    " msgstr "" +"Los datos están entonces Cifrados con " +"AES, usando \n" +"la clave de sesión y el IV (Vector de Inicialización, calculado con el " +"pre-IV) \n" +"desde la sección ElGamal. El tamaño del bloque cifrado con AES \n" +"es variable, pero siempre es un múltiplo de 16 bytes." #: i2p2www/pages/site/docs/how/elgamal-aes.html:269 #, python-format @@ -7210,14 +7523,16 @@ msgid "" "Actual max payload length, and max block length, is less than 64 KB; see " "the I2NP Overview." msgstr "" +"El tamaño de las actuales carga máxima, y tamaño máximo del bloque, es " +"menor de 64 KB; vea el Vistazo a I2NP." #: i2p2www/pages/site/docs/how/elgamal-aes.html:272 msgid "New Session Key is currently unused and is never present." -msgstr "" +msgstr "La nueva clave de sesión actualmente está en desuso y nunca está presente." #: i2p2www/pages/site/docs/how/elgamal-aes.html:277 msgid "Existing Session Message Specification" -msgstr "" +msgstr "Especificación de mensaje de sesión existente." #: i2p2www/pages/site/docs/how/elgamal-aes.html:278 msgid "" @@ -7227,12 +7542,17 @@ msgid "" "contains only an AES encrypted block, and is not preceded by an\n" "ElGamal block." msgstr "" +"Las etiquetas de sesión entregadas exitosamente son recordadas durante \n" +"un periodo breve (actualmente 15 minutos) hasta que se usan o se \n" +"descartan. Se usa una etiqueta empaquetándola en un mensaje de sesión \n" +"existente que sólo contiene un bloque cifrado con AES, y no está " +"precedido por un bloque ElGamal." #: i2p2www/pages/site/docs/how/elgamal-aes.html:286 msgid "" "The existing session message is\n" "as follows:" -msgstr "" +msgstr "El mensaje de sesión existente es como sigue: " #: i2p2www/pages/site/docs/how/elgamal-aes.html:309 #, python-format @@ -7241,10 +7561,13 @@ msgid "" "Tag\n" " previously delivered in an AES block" msgstr "" +"Una etiqueta de " +"sesión de 32-bytes previamente entregada \n" +"en un bloque AES." #: i2p2www/pages/site/docs/how/elgamal-aes.html:314 msgid "As specified above." -msgstr "" +msgstr "Como se especificó arriba." #: i2p2www/pages/site/docs/how/elgamal-aes.html:318 msgid "" @@ -7252,6 +7575,9 @@ msgid "" "the pre-IV. The IV is the first 16 bytes of the SHA-256 Hash of the " "sessionTag." msgstr "" +"La etiqueta de sesión también sirve como pre-IV. El IV (Vector de \n" +"Inicialización) son los primeros 16 bytes del hash SHA-256 de la \n" +"sessionTag (etiqueta de sesión)." #: i2p2www/pages/site/docs/how/elgamal-aes.html:323 msgid "" @@ -7262,6 +7588,13 @@ msgid "" "If the tag is not found, the message is assumed to be a New Session Message." msgstr "" +"Para decodificar un mensaje desde una sesión existente, un router " +"consulta \n" +"la etiqueta de sesión para encontrar una clave de sesión asociada. Si se" +" \n" +"encuentra la etiqueta de sesión, el bloque AES es descifrado usando la " +"clave de sesión asociada. Si no se encuentra la etiqueta, se asume que el" +" mensaje es un nuevo mensaje de sesión." #: i2p2www/pages/site/docs/how/elgamal-aes.html:332 msgid "" @@ -7271,6 +7604,11 @@ msgid "" "significant\n" "impact on overall performance." msgstr "" +"Hay muchas áreas posibles para ajustar los algoritmos del administrador \n" +"de claves de sesión; algunos pueden interactuar con el comportamiento de" +" \n" +"la librería streaming, o tener un impacto significativo en el rendimiento" +" conjunto." #: i2p2www/pages/site/docs/how/elgamal-aes.html:338 msgid "" @@ -7280,18 +7618,30 @@ msgid "" "We currently deliver 40 tags at a time (1280 bytes).\n" "32 (1024 bytes) may be better for tunnel fragmentation." msgstr "" +"La entrega de demasiadas etiquetas de una vez puede imponer un tráfico de" +" \n" +"control sustancial para breves conexiones streaming o datagramas, e \n" +"incrementar la posibilidad de pérdida del mensaje. Actualmente entregamos" +" \n" +"40 etiquetas de una vez (1280 bytes), 32 (1024 bytes) puede ser mejor " +"para \n" +"la fragmentación del túnel." #: i2p2www/pages/site/docs/how/elgamal-aes.html:345 msgid "" "A few tags could be delivered in each of several messages, or lots of " "tags all at once." msgstr "" +"Se podrían entregar unas pocas etiquetas en cada uno de los varios \n" +"mensajes, o muchas etiquetas todas de una vez." #: i2p2www/pages/site/docs/how/elgamal-aes.html:349 msgid "" "It is also important to study and tune\n" "the low-tag thresholds at which more tags are sent." msgstr "" +"También es importante estudiar y ajustar los umbrales bajos de etiquetas " +"en los que se envían más etiquetas." #: i2p2www/pages/site/docs/how/elgamal-aes.html:354 msgid "" @@ -7299,6 +7649,9 @@ msgid "" "mind\n" "the eventual padding to 1KB at the tunnel message layer." msgstr "" +"El número de etiquetas entregadas podría depender del tamaño del \n" +"mensaje, teniendo en cuenta el eventual esquema de relleno de 1KB en la \n" +"capa de mensaje de túnel." #: i2p2www/pages/site/docs/how/elgamal-aes.html:359 msgid "" @@ -7306,12 +7659,16 @@ msgid "" "advisory\n" "on the number of tags required." msgstr "" +"Los clientes podrían enviar una estimación del tiempo de vida de la " +"sesión al router, a modo de aviso del número de etiquetas solicitado." #: i2p2www/pages/site/docs/how/elgamal-aes.html:364 msgid "" "Delivery of too few tags causes the router to fall back to an expensive " "ElGamal encryption." msgstr "" +"La entrega de demasiado pocas etiquetas provoca que el router regrese a " +"un caro cifrado de respaldo ElGamal." #: i2p2www/pages/site/docs/how/elgamal-aes.html:368 msgid "" @@ -7319,6 +7676,9 @@ msgid "" "before using them;\n" "there are tradeoffs for each strategy." msgstr "" +"El router puede asumir como un hecho la entrega de etiquetas de sesión, o" +" esperar acuse de recibo ('acknowledgement') antes de usarlas; cada " +"estrategia tiene sus propios sacrificios." #: i2p2www/pages/site/docs/how/elgamal-aes.html:373 msgid "" @@ -7326,12 +7686,20 @@ msgid "" "padding fields in the ElGamal block\n" "could be used for the entire message, instead of establishing a session." msgstr "" +"Para mensajes muy breves, casi la totalidad de los 222 bytes del pre-IV \n" +"(pre-Vector de Inicialización) y los campos de esquemas de relleno en el " +"bloque ElGamal podrían usarse para el mensaje completo, en lugar de \n" +"para establecer una sesión." #: i2p2www/pages/site/docs/how/elgamal-aes.html:378 msgid "" "Evaluate padding strategy; currently we pad to a minimum of 128 bytes.\n" "Would be better to add a few tags to small messages than pad." msgstr "" +"Evaluar la estrategia de esquema de relleno; actualmente rellenamos hasta" +" \n" +"un mínimo de 128 bytes. Para los mensajes pequeños sería mejor añadirles " +"unas pocas etiquetas que rellenarlos." #: i2p2www/pages/site/docs/how/elgamal-aes.html:383 msgid "" @@ -7343,6 +7711,12 @@ msgid "" "The router currently plays some tricks like this when sending\n" "tunnel test messages to itself." msgstr "" +"Quizá las cosas podrían ser más eficientes si el sistema de etiqueta de " +"sesión fuera bidireccional, así las etiquetas entregadas en la ruta " +"'forward' (directa) podrían usarse en la ruta 'reverse' (inversa), " +"evitando así ElGamal en la respuesta inicial. El router actualmente usa " +"algunos trucos como este cuando se envían mensajes de prueba de túnel a " +"si mismo." #: i2p2www/pages/site/docs/how/elgamal-aes.html:391 #, python-format @@ -7350,6 +7724,8 @@ msgid "" "Change from Session Tags to\n" "a synchronized PRNG." msgstr "" +"Cambiar de las etiquetas de sesión a un " +"PRNG (generador de números pseudo aleatorios) sincronizado." #: i2p2www/pages/site/docs/how/elgamal-aes.html:396 #, python-format @@ -7361,6 +7737,14 @@ msgid "" "and accept a small risk of the random Session Key matching the magic " "number." msgstr "" +"Varias de estas ideas pueden requerir un nuevo tipo de mensaje I2NP " +"(Protocolo de Red I2P), o establecer un distintivo en las instrucciones de entrega, o " +"establecer un número mágico en los primeros pocos bytes del campo de la " +"clave \n" +"de sesión y aceptar un pequeño riesgo de que la clave de sesión aleatoria" +" \n" +"coincida con el número mágico." #: i2p2www/pages/site/docs/how/garlic-routing.html:2 msgid "Garlic Routing" @@ -9142,6 +9526,8 @@ msgid "" "only used locally for\n" "determination of distance." msgstr "" +"Las claves de enrutado nunca se envían por-el-cable en ninguno de los \n" +"mensajes I2NP, sólo se usan localmente para determinar la distancia." #: i2p2www/pages/site/docs/how/network-database.html:325 msgid "Storage, Verification, and Lookup Mechanics" @@ -9199,6 +9585,18 @@ msgid "" "sending it to multiple other floodfills.\n" "This provides a high degree of fault-tolerance." msgstr "" +"El DatabaseStoreMessage (mensaje de almacén de base de datos) debe \n" +"enviarse al router de inundación (`floodfill`, extienden la red I2P al \n" +"desplegarse en inundación portando la base de datos distribuída netDb) \n" +"más cercano al lugar donde se esté guardando la clave de enrutado actual" +" \n" +"para el RouterInfo o el LeaseSet. Actualmente el router de inundación más" +" \n" +"cercano se obtiene mediante una búsqueda en la base de datos local. \n" +"Incluso si ese router de inundación no es en realidad el más cercano, lo" +" \n" +"inundará \"hacia si\" enviándo el mensaje a otros múltiples routers de \n" +"inundación. Esto proporciona un alto grado de tolerencia a fallos." #: i2p2www/pages/site/docs/how/network-database.html:353 msgid "" @@ -9220,6 +9618,25 @@ msgid "" "distant peer had\n" "the netdb item." msgstr "" +"En el Kademlia tradicional, un par (`peer`) haría una búsqueda \"find-" +"closest\" \n" +"(encuentra al más cercano) antes de insertar un elemento en la DHT (tabla" +" de hash dinámica) hacia el objetivo más cercano. Como la operación de \n" +"verificación tenderá a descubrir los routers de inundación (`floodfills`)" +" más \n" +"cercanos si están presentes, un router mejorará rápidamente su \n" +"conocimiento del \"vecindario\" de la DHT para el RouterInfo (información" +" para \n" +"contactar routers) y los LeaseSets (información para contactar destinos)" +" \n" +"que publica regularmente. Aunque I2NP no define un mensaje \"find-" +"closest\", \n" +"si fuera necesario un router simplemente podría hacer una búsqueda " +"iterativa de la clave con el bit menos significativo invertido (es decir," +" la clave ^ 0x01) hasta que no se reciban pares más cercanos en los " +"DatabaseSearchReplyMessages (mensajes de respuesta de búsqueda de la base" +" de datos). Esto asegura que se encontrará al verdadero par más cercano " +"incluso si un par más-distante tiene el elemento netDb." #: i2p2www/pages/site/docs/how/network-database.html:366 msgid "RouterInfo Storage to Floodfills" @@ -9289,7 +9706,7 @@ msgstr "" #: i2p2www/pages/site/docs/how/network-database.html:400 msgid "Flooding" -msgstr "" +msgstr "Inundación" #: i2p2www/pages/site/docs/how/network-database.html:401 msgid "" @@ -9307,6 +9724,22 @@ msgid "" "knowledge of the\n" "DHT \"neighborhood\" for the routing key." msgstr "" +"Después de que un router de inundación reciba un DatabaseStoreMessage \n" +"(mensaje de almacenaje de base de datos) conteniendo un RouterInfo \n" +"(información para contactar routers) o un LeaseSet (información para \n" +"contactar destinos) válido posterior al previamente guardado en una " +"entrada \n" +"de su netDb (base de datos de red distribuída) local, la \"inunda\". Para" +" \n" +"inundar una entrada netDb, consulta varios (actualmente 4) routers de \n" +"inundación (`floodfill`), los más cercanos a la clave de enrutado de la " +"entrada netDb. (La clave de enrutado es el hash SHA256 de la " +"RouterIdentity (identidad del router) o del destino con la fecha " +"(aaaaMMdd) añadida como sufijo). Inundando a aquellos más cercanos a la " +"clave, no los más cercanos a si mismo, el router de inundación se asegura" +" de que el almacenamiento llega al lugar correcto, incluso si el router " +"almacenante no tuvo un buen conocimiento del \"vecindario\" DHT para la " +"clave de enrutado." #: i2p2www/pages/site/docs/how/network-database.html:412 #, python-format @@ -9318,6 +9751,18 @@ msgid "" "(and no need to hide this data anyway).\n" "The other routers do not reply or re-flood, as the Reply Token is zero." msgstr "" +"El router de inundación conecta entonces directamente a cada uno de esos" +" \n" +"pares y les envía un DatabaseStoreMessage I2NP " +"con una \n" +"credencial (`token`) de respueta cero. El mensaje no está cifrado \n" +"extremo-a-extremo con garlic (ajo), ya que esta es una conexión directa," +" \n" +"así que no hay routers intervinientes (y de todas formas no hay necesidad" +" \n" +"de esconder este dato). Los otros routers no responden ni re-inundan, ya" +" \n" +"que la credencial de respuesta es cero." #: i2p2www/pages/site/docs/how/network-database.html:422 msgid "RouterInfo and LeaseSet Lookup" @@ -9332,12 +9777,21 @@ msgid "" "The replies are specified to return via one of the router's inbound " "exploratory tunnels." msgstr "" +"El DatabaseLookupMessage (mensaje de consulta a la base de datos) de \n" +"I2NP se usa para solicitar una entrada netDb \n" +"desde un router de inundación. \n" +"Las consultas se transmiten por uno de los túneles exploratorios de " +"salida del router. Las respuestas están definidas para volver a través de" +" uno de los túneles exploratorios de entrada del router." #: i2p2www/pages/site/docs/how/network-database.html:429 msgid "" "Lookups are generally sent to the two \"good\" (the connection doesn't " "fail) floodfill routers closest to the requested key, in parallel." msgstr "" +"Las consultas generalmente se envían a los dos routers de inundación \n" +"\"buenos\" (en los que la conexión no falla) más próximos a la clave \n" +"solicitada, en paralelo." #: i2p2www/pages/site/docs/how/network-database.html:433 #, python-format @@ -9349,6 +9803,14 @@ msgid "" "I2NP DatabaseSearchReplyMessage\n" "containing a list of other floodfill routers close to the key." msgstr "" +"Si el router de inundación (`floodfill`) encuentra la clave localmente, \n" +"responde con un DatabaseStoreMessage (mensaje de almacenaje en la \n" +"base de datos) de I2NP. Si el router de " +"inundación no encontró la clave \n" +"localmente, responde con un DatabaseSearchReplyMessage (mensaje de \n" +"respuesta a búsqueda en la base de datos) de I2NP conteniendo una \n" +"lista de otros routers de inundación próximos a la clave." #: i2p2www/pages/site/docs/how/network-database.html:441 msgid "" @@ -9359,6 +9821,14 @@ msgid "" "encryption.\n" "RouterInfo lookup encryption may be enabled in a future release." msgstr "" +"Las consultas de LeaseSet (información para contactar destinos) están " +"cifradas extremo-a-extremo con garlic (ajo) desde la versión 0.9.5. Las " +"consultas de RouterInfo (información para contactar routers) no están \n" +"cifradas y por tanto son vulnerables a espionaje por el extremo exterior" +" \n" +"(outbound endpoint, OBEP) del túnel cliente. Esto es debido a lo caro del" +" cifrado ElGamal. El cifrado de la consulta RouterInfo puede que sea " +"habilitado en una futura versión." #: i2p2www/pages/site/docs/how/network-database.html:448 msgid "" @@ -9370,6 +9840,14 @@ msgid "" "Responses to RouterInfo lookups will be encrypted if we enable the lookup" " encryption." msgstr "" +"Desde la versión 0.9.7 las respuestas a una consulta de LeaseSet (un \n" +"DatabaseStoreMessage o un DatabaseSearchReplyMessage) estarán \n" +"cifradas mediante la inclusión de la clave de sesión y la etiqueta en la" +" \n" +"consulta. Esto esconde la respuesta desde la pasarela de entrada (inbound" +" \n" +"gateway, IBGW) del túnel de respuesta. Las respuestas a consultas a de \n" +"RouterInfo serán cifradas si se habilita el cifrado de consultas." #: i2p2www/pages/site/docs/how/network-database.html:455 #, python-format @@ -9377,6 +9855,9 @@ msgid "" "(Reference: Hashing it out in Public Sections " "2.2-2.3 for terms below in italics)" msgstr "" +"(Referencia: Hashing it out in Public " +"(Discutiéndolo en público [juego de palabras]) Secciones 2.2-2.3 para los" +" términos en itálica de debajo)" #: i2p2www/pages/site/docs/how/network-database.html:459 msgid "" @@ -9393,6 +9874,13 @@ msgid "" "Queries were sent through multiple routes simultaneously\n" "to reduce the chance of query failure." msgstr "" +"Debido al relativamente pequeño tamaño de la red y la redundancia de la \n" +"inundación por un factor 8x, las consultas son habitualmente O(1) más " +"bien que O(log n) -- un router es altamente probable que conozca un " +"router de \n" +"inundación suficientemente cercano a la clave para conseguir la respuesta" +" \n" +"en el primer intento." #: i2p2www/pages/site/docs/how/network-database.html:470 msgid "" @@ -9411,6 +9899,23 @@ msgid "" "lookup timeout is reached,\n" "or the maximum number of peers is queried." msgstr "" +"Desede la versión 0.8.9 las consultas iterativas se implementaron " +"sin \n" +"redundancia en la consulta. Esta es una consulta más eficiente y " +"confiable que funcionará mucho mejor cuando no todos los pares floodfill " +"sean \n" +"conocidos, y elimina una seria limitación al crecimiento de la red. Al " +"crecer \n" +"la red y que cada router conozca cólo un pequeño subconjunto de los pares" +" \n" +"floodfill, las consultas llegarán a ser O(log n). Incluso si los pares no" +" devuelven referencias próximas a la clave, la consulta continúa con el " +"par siguiente-al-más-próximo, para añadir robustez, y para prevenir que " +"un \n" +"floodfill malicioso ha un black-holing sobre una parte del espacio clave." +" Las \n" +"consultas continúan hasta que se alcance un tiempo total limite de la \n" +"consulta, se consultó al máximo número de pares." #: i2p2www/pages/site/docs/how/network-database.html:482 msgid "" @@ -9421,10 +9926,20 @@ msgid "" "Given the current size of the network, a router has\n" "detailed knowledge of the neighborhood of the destination ID space." msgstr "" +"Los identificadores (`IDs`) de nodos son verificables en el" +" sentido de que usamos el identificador criptográfico del router (`hash`)" +" \n" +"directamente tanto como identificador (`ID`) de nodo como de clave \n" +"Kademlia. Las respuestas incorrectas que no sean más cercanas a la clave" +" \n" +"de búsqueda por lo general son ignoradas. Dado el actual tamaño de la " +"red, \n" +"un router tiene conocimiento detallado del vecindario del espacio del " +"identicador (`ID`) del destino." #: i2p2www/pages/site/docs/how/network-database.html:491 msgid "RouterInfo Storage Verification" -msgstr "" +msgstr "Verificación del almacenamiento de RouterInfo" #: i2p2www/pages/site/docs/how/network-database.html:492 msgid "" @@ -9436,10 +9951,19 @@ msgid "" "Lookups are end-to-end garlic encrypted to prevent snooping by the " "outbound endpoint(OBEP)." msgstr "" +"Para verificar que un almacenaje fue satisfactorio, un router simplemente" +" \n" +"espera cerca de 10 segundos, y entonces envía una consulta a otro router" +" \n" +"floodfill cercano a la calve (pero no aquel al que el se envió el " +"almacén). Las consultas trasmitieron uno de los túneles exploratorios de " +"salida del router. \n" +"Las consultas están cifradas con garlic (ajo) de extremo-a-extremo para \n" +"prevenir el snooping en el extremo de salida (OutBound End Point, OBEP)." #: i2p2www/pages/site/docs/how/network-database.html:500 msgid "LeaseSet Storage Verification" -msgstr "" +msgstr "Verificación de almacén LeaseSet" #: i2p2www/pages/site/docs/how/network-database.html:501 msgid "" @@ -9454,6 +9978,18 @@ msgid "" "The replies are specified to return via one of the client's inbound " "tunnels." msgstr "" +"Para verificar que el almacenaje fue exitoso, un router simplemente " +"espera \n" +"cerca de 10 segundos, y luego envía una consulta a otro router floodfill" +" \n" +"próximo a la clave (pero no la que se envió al almacen). Las consultas " +"transmiten uno de los túneles cliente de salida para que el destino del " +"LeaseSet sea verificado. Para prevener el snooping por el OBEP dle túnel" +" \n" +"de salida, las consultas están cifradas con garlic (ajo) de \n" +"extremo-a-extremo. Las respuestas están definidas para volver a través de" +" \n" +"uno de los túneles de entrada del cliente." #: i2p2www/pages/site/docs/how/network-database.html:511 msgid "" @@ -9462,6 +9998,11 @@ msgid "" "will be encrypted,\n" "to hide the reply from the inbound gateway (IBGW) of the reply tunnel." msgstr "" +"Desde la versión 0.9.7, las repsuetas para las consultas tanto desde " +"RouterInfo como de LeaseSet (un DatabaseStoreMessage o un \n" +"DatabaseSearchReplyMessage) serán cifradas, para ocultar la respuesta " +"desde la pasarela de entrada (`inbound gateway`, IBGW) del túnel de " +"respuesta." #: i2p2www/pages/site/docs/how/network-database.html:519 msgid "Exploration" @@ -9489,10 +10030,29 @@ msgid "" "The floodfill will then respond only with non-floodfill routers close to " "the requested key." msgstr "" +"La exploración es una forma especial de consulta NetDb, donde un \n" +"router intenta aprender sobre nuevos routers. Hace esto enviando a un " +"router \n" +"floodfill un DatabaseLookupMessage I2NP, en " +"busca de \n" +"una clave aleatoria. Como esta consulta fallará, el floodfill normalmente" +" \n" +"respondería con un DatabaseSearchReplyMessage I2NP conteniendo \n" +"hashes de routers floodfill próximos a la clave. Esto no sería de ayuda, " +"ya que el router solicitante probablemente ya conoce esos floodfills y no" +" sería \n" +"práctico añadir TODOS los routers floodfill al campoco \"no incluír\" de " +"la \n" +"consulta. Para una consulta de exploración, el router solicitante añade " +"un \n" +"hash de router con todo ceros al campo \"no incluír\" del " +"DatabaseLookupMessage de la consulta. El floodfill entonces responderá " +"sólo con routers no-floofill próximos a la clave requerida." #: i2p2www/pages/site/docs/how/network-database.html:534 msgid "Notes on Lookup Responses" -msgstr "" +msgstr "Notas sobre las respuestas de consultas" #: i2p2www/pages/site/docs/how/network-database.html:535 msgid "" @@ -9506,10 +10066,22 @@ msgid "" "requests in parallel, it is\n" "difficult to monitor the performance of the various floodfill routers." msgstr "" +"La respuesta a una solicitud de consulta es o bien un Mensaje de Almacén " +"de Base de Datos (si tiene éxito) o un Mensaje de Respuesta de Búsqueda" +" \n" +"en la Base de Datos (si falla). El DSRM contiene un campo 'from' (desde) " +"en \n" +"el hash del router para indicar la fuente de la respueta; el DSM no. El \n" +"campo 'from' del DSRM está autentificado y pude ser falsificado o " +"inválido. \n" +"No hay otras etiquetas de respuesta. Por lo tanto, cuando se hacen \n" +"múltiples solicitudes en paralelo, es difícill monitorizar el rendimiento" +" de los \n" +"varios routers floodfilll." #: i2p2www/pages/site/docs/how/network-database.html:545 msgid "MultiHoming" -msgstr "" +msgstr "MultiHoming, multihospedaje" #: i2p2www/pages/site/docs/how/network-database.html:547 msgid "" @@ -9527,10 +10099,19 @@ msgid "" "The multihoming function has been verified and is in use by several " "services on the network." msgstr "" +"Las Destinaciones pueden ser alojadas simultáneamente en múltiples " +"ruters, usando las mismas claves privadas y públicas (normalmente " +"almacenadas en los archivos eepPriv.dat). Ya que ambas instancias " +"publicarán periódicamente sus LeaseSets firmados a los pares floodfill, " +"el LeaseSet publicado más recientemente será devuelto al par que hizo la " +"búsqueda en la base de datos. Ya que los LeaseSets tienen (como mucho) " +"10 minutos de vida, si alguno de los ruters se cae, el corte será como " +"mucho de 10 minutos, y normalmente mucho menos tiempo. El sistema de " +"multihoming ha sido verificado y se usa en varios servicios de la red." #: i2p2www/pages/site/docs/how/network-database.html:557 msgid "Threat Analysis" -msgstr "" +msgstr "Análisis de amenazas" #: i2p2www/pages/site/docs/how/network-database.html:558 #, python-format @@ -9538,6 +10119,8 @@ msgid "" "Also discussed on the threat model " "page." msgstr "" +"También se debate en la web de los " +"modelos de amenazas." #: i2p2www/pages/site/docs/how/network-database.html:562 msgid "" @@ -9546,10 +10129,13 @@ msgid "" "bad, slow, or no responses.\n" "Some scenarios are discussed below." msgstr "" +"Un usuario hostil puede intentar dañar la red creando uno o más ruters " +"floodfill y configurándolos para ofrecer respuestas malas, lentas o " +"incluso no ofrecerlas. Algunos escenarios se discuten más abajo." #: i2p2www/pages/site/docs/how/network-database.html:569 msgid "General Mitigation Through Growth" -msgstr "" +msgstr "Mitigación general a través del crecimiento" #: i2p2www/pages/site/docs/how/network-database.html:570 msgid "" @@ -9558,30 +10144,37 @@ msgid "" "impact,\n" "as the network size and number of floodfill routers increase." msgstr "" +"Actualmente hay cientos de ruters floodfill en la red. Para la mayoría de" +" los ataques se va a volver más difícil, o tendrán menos impacto, cuando " +"el tamaño de la red crezca y el número de floodfills aumente." #: i2p2www/pages/site/docs/how/network-database.html:577 msgid "General Mitigation Through Redundancy" -msgstr "" +msgstr "Mitigación general a través de la redundancia" #: i2p2www/pages/site/docs/how/network-database.html:578 msgid "" "Via flooding, all netdb entries are stored on the 8 floodfill routers " "closest to the key." msgstr "" +"A través de los floodfill, todas las entradas de la netdb son almacenadas" +" en los 8 ruters floodfill más cercanos a la clave." #: i2p2www/pages/site/docs/how/network-database.html:583 msgid "Forgeries" -msgstr "" +msgstr "Falsificaciones" #: i2p2www/pages/site/docs/how/network-database.html:584 msgid "" "All netdb entries are signed by their creators, so no router may forge a\n" "RouterInfo or LeaseSet." msgstr "" +"Todas las entradas de la netdb están firmadas por sus creadores, por lo " +"que ningún ruter puede crear un RouterInfo o un LeaseSet." #: i2p2www/pages/site/docs/how/network-database.html:589 msgid "Slow or Unresponsive" -msgstr "" +msgstr "Lento o sin respuestas" #: i2p2www/pages/site/docs/how/network-database.html:590 #, python-format @@ -9592,6 +10185,10 @@ msgid "" "covering various quality metrics for that peer.\n" "The set includes:" msgstr "" +"Cada ruter mantiene un dilatado conjunto de estadísticas en el perfil del par por cada ruter floodfill, " +"con información sobre varias medidas de calidad de ese par. Este conjunto" +" incluye:" #: i2p2www/pages/site/docs/how/network-database.html:597 msgid "Average response time" @@ -9599,19 +10196,21 @@ msgstr "Tiempo medio de respuesta" #: i2p2www/pages/site/docs/how/network-database.html:598 msgid "Percentage of queries answered with the data requested" -msgstr "" +msgstr "Porcentaje de consultas respondidas con los datos solicitados" #: i2p2www/pages/site/docs/how/network-database.html:599 msgid "Percentage of stores that were successfully verified" msgstr "" +"Porcentaje de los almacenamientos que fueron verificados " +"satisfactoriamente" #: i2p2www/pages/site/docs/how/network-database.html:600 msgid "Last successful store" -msgstr "" +msgstr "El último almacenaje exitoso" #: i2p2www/pages/site/docs/how/network-database.html:601 msgid "Last successful lookup" -msgstr "" +msgstr "La última búsqueda exitosa" #: i2p2www/pages/site/docs/how/network-database.html:602 msgid "Last response" @@ -9629,10 +10228,17 @@ msgid "" "avoided,\n" "routers that are only sometimes malicious may be much harder to deal with." msgstr "" +"Cada vez que un ruter necesita determinar cual ruter floodfill está más " +"cercano a cierta clave, utiliza estas medidas para determinar que " +"floodfills son \"buenos\". Estos métodos, y umbrales, usados para " +"determinar \"lo bueno que es\" son relativamente nuevos, y pueden ser " +"revisados y mejorados. Mientras que un ruter que no responda será " +"identificado y evitado rápidamente, los ruters que sólo son maliciosos a " +"veces pueden ser mucho más difíciles de manejar." #: i2p2www/pages/site/docs/how/network-database.html:615 msgid "Sybil Attack (Full Keyspace)" -msgstr "" +msgstr "Ataque Sybil (espacio de claves completo)" #: i2p2www/pages/site/docs/how/network-database.html:616 #, python-format @@ -9641,6 +10247,9 @@ msgid "" "by creating a large number of floodfill routers spread throughout the " "keyspace." msgstr "" +"Un atacante puede crear un ataque Sybil creando " +"un gran número de ruters floodfill repartidos a través del espacio de " +"claves, keyspace." #: i2p2www/pages/site/docs/how/network-database.html:621 #, python-format @@ -9650,6 +10259,9 @@ msgid "" "If successful, this could be an effective DOS attack on the entire " "network." msgstr "" +"(Como ejemplo relacionado, recientemente un investigador creó un gran número de relays Tor.) Si es exitoso, podría " +"ser un ataque DOS efectivo en toda la red." #: i2p2www/pages/site/docs/how/network-database.html:627 msgid "" @@ -9662,6 +10274,13 @@ msgid "" "Some possible responses for the I2P network are listed below, however " "none of them is completely satisfactory:" msgstr "" +"Si los floodfills no se comportan suficientemente mal para ser marcados " +"como \"malos\" usando las medidas del perfil del par descritas antes, " +"sería un escenario muy difícil de manejar. Las respuestas de la red Tor " +"pueden ser mucho más ágiles en el caso de los relays, ya que los relays " +"maliciosos pueden ser eliminados manualmente del consenso. Algunas " +"respuestas factibles para la red I2P son listadas debajo, aunque ninguna " +"de ellas es totalmente satisfactoria:" #: i2p2www/pages/site/docs/how/network-database.html:635 msgid "" @@ -9671,16 +10290,24 @@ msgid "" "download the list and\n" "add it to their local \"blacklist\"." msgstr "" +"Crear una lista de hashes de ruters malos o IPs, y anunciar la lista de " +"varias formas (noticias en la consola, web, forums, etc.); los usuarios " +"tendrían que descargar la lista manualmente y añadirla a \"lista negra\" " +"local." #: i2p2www/pages/site/docs/how/network-database.html:640 msgid "" "Ask everyone in the network to enable floodfill manually (fight Sybil " "with more Sybil)" msgstr "" +"Pedir a todos los usuarios de la red el activar el floodfill manualmente " +"(luchar contra Sybil con más Sybil)" #: i2p2www/pages/site/docs/how/network-database.html:641 msgid "Release a new software version that includes the hardcoded \"bad\" list" msgstr "" +"Liberar una nueva versión del software que incluya la lista \"mala\" " +"inscrustada en el código" #: i2p2www/pages/site/docs/how/network-database.html:642 msgid "" @@ -9688,12 +10315,17 @@ msgid "" " thresholds,\n" "in an attempt to automatically identify the \"bad\" peers." msgstr "" +"Liberar una versión del software nueva que mejore los umbrales y las " +"medidas del perfil de los pares, para intentar identificar los pares " +"\"malos\" automáticamente." #: i2p2www/pages/site/docs/how/network-database.html:646 msgid "" "Add software that disqualifies floodfills if too many of them are in a " "single IP block" msgstr "" +"Añadir una ampliación que descalifique floodfills si hay demasiados de " +"ellos en un único bloque de IPs" #: i2p2www/pages/site/docs/how/network-database.html:647 msgid "" @@ -9706,14 +10338,19 @@ msgid "" "block participation of any particular router or IP in the network,\n" "or even to completely shutdown or destroy the entire network." msgstr "" +"Implementar una lista negra automática basada en suscripciones controlada" +" por un único grupo individual. Esto esencialmente implementaría una " +"parte del modelo de \"consenso\" de Tor. Desafortunadamente le daría a un" +" solo grupo el poder de bloquear la participación de cualquier ruter o IP" +" en la red, o incluso apagar o destruir la red entera." #: i2p2www/pages/site/docs/how/network-database.html:656 msgid "This attack becomes more difficult as the network size grows." -msgstr "" +msgstr "Este ataque se hace más difícil cuanto más grande es la red." #: i2p2www/pages/site/docs/how/network-database.html:662 msgid "Sybil Attack (Partial Keyspace)" -msgstr "" +msgstr "Ataque Sybil (espacio de claves parcial)" #: i2p2www/pages/site/docs/how/network-database.html:663 #, python-format @@ -9728,6 +10365,13 @@ msgid "" "If successful, this could be an effective DOS attack on a particular " "eepsite, for example." msgstr "" +"Un atacante puede montar un ataque Sybil creando " +"un pequeño número de ruters floodfill (8-15) cercanos en el espacio de " +"claves, y distribuir los RouterInfos de esos ruters extensamente. " +"Entonces, todas las búsquedas y almacenamientos de una clave en ese " +"espacio de claves serán dirigidod a uno de los ruters del atacante. Si ha" +" tenido éxito, esto podía provocar un ataque DOS efectivo sobre un " +"eepsite en particular, por ejemplo." #: i2p2www/pages/site/docs/how/network-database.html:672 msgid "" @@ -9740,6 +10384,12 @@ msgid "" "on network\n" "size, is unknown." msgstr "" +"Ya que el espacio de claves está indexado por el hash criptográfico " +"(SHA256) de la clave, un atacante tiene que usar la fuerza bruta para " +"generar repetidamente hashes de routers hasta que tenga suficientes que " +"estén suficientemente cerca de la clave. La cantidad de potencia de " +"cálculo requerida para esto, la cual depende del tamaño de la red, es " +"desconocida. " #: i2p2www/pages/site/docs/how/network-database.html:680 msgid "" @@ -9757,6 +10407,15 @@ msgid "" "after the rotation, the attacking routers would no longer be close\n" "to the target key, or to each other." msgstr "" +"Como una defensa parcial contra este ataque, el algoritmo usado para " +"determinar la \"cercanía\" Kademlia varía con el tiempo. En vez de usar " +"el hash de la clave (por ejemplo H(k)) para determinar la cercanía, " +"usamos el Hash de la clave añadido a la cadena de datos actuales, por " +"ejemplo H(k + YYYYMMDD). En otras palabras, el espacio de claves completo" +" de la netdb \"rota\" cada día a la media noche UTC. Cualquier ataque " +"parcial al espacio de claves tendría que regenerarse cada día, después de" +" cada rotación los ruters atacantes no estarán ya cerca de la clave del " +"objetivo." #: i2p2www/pages/site/docs/how/network-database.html:692 msgid "" @@ -9767,6 +10426,12 @@ msgid "" "and only a few routers are sufficient to \"eclipse\" a portion\n" "of the keyspace within a half hour after rotation." msgstr "" +"Este ataque se hace más difícil según crece la red. Aunque estudios " +"recientes han demostrado que la rotación del espacio de claves no es " +"particularmente efectiva. Un atacante podría pre-calcular numerosos " +"hashes de ruters de antemano, y sólo son necesarios unos pocos de ruters " +"para \"eclipsar\" una parte del espacio de claves en sólo media hora " +"después de la rotación." #: i2p2www/pages/site/docs/how/network-database.html:700 msgid "" @@ -9779,10 +10444,17 @@ msgid "" "(for example netdb \"handoffs\" at midnight)\n" "are a topic for further study." msgstr "" +"Una de las consecuencias de la rotación diaria del espacio de claves es " +"que la base de datos de la red distribuida se queda inaccesible durante " +"unos minutos tras la rotación -- las búsquedas fallarán porque los nuevos" +" ruters \"más cercanos\" no han recibido aún un almacenamiento. El " +"alcance del problema, y los métodos para mitigarlo (por ejemplo con " +"\"handoffs, manos fuera\" de la netdb a media noche) es un tema para " +"futuros estudios." #: i2p2www/pages/site/docs/how/network-database.html:710 msgid "Bootstrap Attacks" -msgstr "" +msgstr "Ataques Bootstrap, de arranque" #: i2p2www/pages/site/docs/how/network-database.html:711 msgid "" @@ -9791,22 +10463,31 @@ msgid "" "or tricking the developers into adding his reseed website\n" "to the hardcoded list in the router." msgstr "" +"Un atacante podría intentar arrancar nuevos ruters dentro de una red " +"aislada o controlada en su mayoría por él tomando control de una web de " +"resiembra, o engañando a los desarrolladores para que añadan su web de " +"resembrado dentro del código del ruter." #: i2p2www/pages/site/docs/how/network-database.html:718 msgid "Several defenses are possible, and most of these are planned:" -msgstr "" +msgstr "Existen varias defensas posibles, y la mayoría ya están planeadas:" #: i2p2www/pages/site/docs/how/network-database.html:722 msgid "" "Disallow fallback from HTTPS to HTTP for reseeding.\n" "A MITM attacker could simply block HTTPS, then respond to the HTTP." msgstr "" +"Desactivar el cambio de HTTPS a HTTP para el resembrado. Un atacante " +"haciendo un MITM podría simplemente bloquear el HTTPS, y entonces " +"responder al HTTP." #: i2p2www/pages/site/docs/how/network-database.html:726 msgid "" "Changing the reseed task to fetch a subset of RouterInfos from\n" "each of several reseed sites rather than using only a single site" msgstr "" +"Cambiar la tarea de resembrado para obtener un subconjunto de RouterInfos" +" desde varias webs de resiembra en vez de usar una única web." #: i2p2www/pages/site/docs/how/network-database.html:730 msgid "" @@ -9814,14 +10495,17 @@ msgid "" "periodically polls reseed websites and verifies that the\n" "data are not stale or inconsistent with other views of the network" msgstr "" +"Creando un servicio de monitoreo de resiembras fuera de la red,que " +"periódicamente pregunte a las webs de resiembra y verifique que los datos" +" no están corruptos o son inconsistentes con otras vistas de la red." #: i2p2www/pages/site/docs/how/network-database.html:735 msgid "Bundling reseed data in the installer" -msgstr "" +msgstr "Incluyendo los datos de resiembra en el instalador" #: i2p2www/pages/site/docs/how/network-database.html:738 msgid "Query Capture" -msgstr "" +msgstr "Captura de peticiones" #: i2p2www/pages/site/docs/how/network-database.html:739 #, python-format @@ -9830,6 +10514,9 @@ msgid "" "(Reference: Hashing it out in Public Sections " "2.2-2.3 for terms below in italics)" msgstr "" +"Vea también búsquedas (Referencia: Hashing it out in Public Secciones 2.2-2.3 para los " +"términos en cursiva de abajo)" #: i2p2www/pages/site/docs/how/network-database.html:744 msgid "" @@ -9838,6 +10525,9 @@ msgid "" "peers to a subset of routers controlled by him by returning their " "references." msgstr "" +"Similar a un ataque bootstrap, un atacante usando un ruter floodfill " +"podría intentar \"dirigir\" a los pares a un subconjunto de ruters " +"controlados por él devolviendo sus referencias." #: i2p2www/pages/site/docs/how/network-database.html:749 msgid "" @@ -9848,6 +10538,12 @@ msgid "" "Exploration results are generally limited to a few router hashes,\n" "and each exploration query is directed to a random floodfill router." msgstr "" +"Esto es raro que funcione vía exploración, porque la exploración es una " +"tarea de baja frecuencia. Los ruters obtienen la mayoría de sus " +"referencias sobre los pares cuando crean los túneles normales. Los " +"resultados de exploración están generalmente limitados a unos pocos " +"hashes de ruters, y cada petición de exploración es dirigida a un ruter " +"floodfill aleatorio. " #: i2p2www/pages/site/docs/how/network-database.html:756 #, python-format @@ -9873,15 +10569,31 @@ msgid "" "Hashing it out in Public\n" "is much more difficult." msgstr "" +"A partir de la versión 0.8.9, se han implementado las búsquedas " +"iterativas. Las referencias de los ruters floodfill devueltas en una " +"respuesta de búsqueda I2NP " +"DatabaseSearchReplyMessage, son seguidas si están más cerca (o la " +"siguiente más cerca) a la clave de búsqueda. El ruter que hace la " +"petición no confía en que las referencias estén más cerca a la clave (por" +" ejemplo, son verificablemente correctas). Además la búsqueda no " +"termina cuando la clave más cercana es encontrada, continúa haciendo " +"peticiones al siguiente nodo más cercano, hasta que termine su tiempo o " +"el número de peticiones. Esto previene que un floodfill malicioso haga un" +" 'agujero negro' a una parte del espacio de claves. Además, la rotación " +"diaria del espacio de claves requiere que el atacante regenere la " +"información de un ruter dentro de la región del espacio de claves " +"deseada. Este diseño asegura que el ataque de captura de peticiones " +"descrito en Hashing it out in Public sea mucho " +"más difícil." #: i2p2www/pages/site/docs/how/network-database.html:775 msgid "DHT-Based Relay Selection" -msgstr "" +msgstr "Selección del Relay basado en DHT" #: i2p2www/pages/site/docs/how/network-database.html:776 #, python-format msgid "(Reference: Hashing it out in Public Section 3)" -msgstr "" +msgstr "(Referencia: Hashing it out in Public Sección 3)" #: i2p2www/pages/site/docs/how/network-database.html:780 #, python-format @@ -9890,10 +10602,14 @@ msgid "" "the peer selection page\n" "for a discussion of the vulnerabilities of peer selection for tunnels." msgstr "" +"Esto no tiene mucho que ver con los floodfill, pero vea la página de selección de pares para ver una " +"discusión de las vulnerabilidades de la selección de los pares para los " +"túneles." #: i2p2www/pages/site/docs/how/network-database.html:786 msgid "Information Leaks" -msgstr "" +msgstr "Fugas de información" #: i2p2www/pages/site/docs/how/network-database.html:787 #, python-format @@ -9901,6 +10617,8 @@ msgid "" "(Reference: In Search of an Anonymous and Secure " "Lookup Section 3)" msgstr "" +"(Referencia: In Search of an Anonymous and Secure " +"Lookup Sección 3)" #: i2p2www/pages/site/docs/how/network-database.html:791 #, python-format @@ -9918,6 +10636,15 @@ msgid "" "are used for tunnels.\n" "Also, peer selection is unrelated to any notion of DHT key-closeness." msgstr "" +"Este estudio soluciona la debilidad en las búsquedas DHT \"Finger Table\"" +" usadas por Torks y NISAN. A primera vista, estos parecen que no se " +"apliquen a I2P. Primero, el uso que hacen Torks y NISAN del DHT es " +"bastante diferente que su uso en I2P. Segundo, las búsquedas en la base " +"de datos de red de I2P sólo están un poco relacionadas con los procesos " +"de selección de pares y de construcción de túneles; sólo los pares " +"previamente conocidos son usados para los túneles. Además, la selección " +"de pares no tiene relación con la noción de cercanía de claves DHT." #: i2p2www/pages/site/docs/how/network-database.html:802 msgid "" @@ -9932,6 +10659,12 @@ msgid "" "more correlative. Of course, a larger network makes a Sybil attack that " "much harder." msgstr "" +"Algunos de estos serán más interesantes cuando la red I2P sea mucho más " +"grande. Ahora mismo, cada ruter conoce una gran porción de la red, con lo" +" que mirando por un RouterInfo en particular en la base de datos de la " +"red no indica que ese ruter se vaya a usar en un túnel. Quizás cuando la " +"red sea 100 veces más grande, la búsqueda sea correlativa. Por supuesto, " +"una red más grande hace un ataque Sybil sea mucho más difícil." #: i2p2www/pages/site/docs/how/network-database.html:810 #, python-format @@ -9951,19 +10684,21 @@ msgstr "" #: i2p2www/pages/site/docs/how/network-database.html:824 msgid "Moved to the netdb discussion page" -msgstr "" +msgstr "Movido a la página de discusión de la netdb" #: i2p2www/pages/site/docs/how/network-database.html:828 msgid "End-to-end encryption of additional netDb lookups and responses." msgstr "" +"Cifrado de fin a fin de las búsquedas y respuestas adicionales en la " +"netDb." #: i2p2www/pages/site/docs/how/network-database.html:832 msgid "Better methods for tracking lookup responses." -msgstr "" +msgstr "Mejores métodos de seguimiento de las respuestas de las búsquedas." #: i2p2www/pages/site/docs/how/peer-selection.html:2 msgid "Peer Profiling and Selection" -msgstr "" +msgstr "Perfilado y selección de pares" #: i2p2www/pages/site/docs/how/peer-selection.html:3 msgid "July 2010" @@ -9971,7 +10706,7 @@ msgstr "Julio de 2010" #: i2p2www/pages/site/docs/how/peer-selection.html:8 msgid "Peer Profiling" -msgstr "" +msgstr "Perfiles de los pares" #: i2p2www/pages/site/docs/how/peer-selection.html:10 #, python-format @@ -9983,14 +10718,21 @@ msgid "" "the peer itself\n" "in the network database." msgstr "" +"La creación de perfiles de los pares, profiling es el proceso de " +"recolectar datos basados en el rendimiento observado de otros " +"ruters o pares. La creación de estos perfiles no usa los datos de " +"rendimiento publicados por el par mismo en la base " +"de datos de la red." #: i2p2www/pages/site/docs/how/peer-selection.html:17 msgid "Profiles are used for two purposes:" -msgstr "" +msgstr "Los perfiles se usan con dos fines:" #: i2p2www/pages/site/docs/how/peer-selection.html:19 msgid "Selecting peers to relay our traffic through, which is discussed below" msgstr "" +"Para seleccionar pares para enviar nuestro tráfico a través, lo que se " +"discute más abajo." #: i2p2www/pages/site/docs/how/peer-selection.html:20 #, python-format @@ -9999,12 +10741,16 @@ msgid "" "database storage and queries,\n" "which is discussed on the network database page" msgstr "" +"Para elegir pares de un conjunto de ruters floodfill para usar los " +"servicios de almacenamiento y consultas de la base de datos de la red, lo" +" que se discute en la página de la base de datos de" +" la red" #: i2p2www/pages/site/docs/how/peer-selection.html:27 #: i2p2www/pages/site/docs/how/peer-selection.html:187 #: i2p2www/pages/site/docs/tunnels/implementation.html:286 msgid "Peer Selection" -msgstr "" +msgstr "Selección de pares" #: i2p2www/pages/site/docs/how/peer-selection.html:28 msgid "" @@ -10018,6 +10764,14 @@ msgid "" "whether they seem to be overloaded or otherwise unable to perform what\n" "they agree to reliably." msgstr "" +"La selección de pares es el proceso de escoger qué ruters de la " +"red queremos para pasar nuestros mensajes a través (o a cuales pares les " +"pedimos permiso para unir nuestros túneles). Para llevar esto acabo, " +"llevamos el seguimiento de como funciona cada par (el \"perfil\" del par)" +" y usamos estos datos para estimar cómo son de rápidos, cuando serán " +"capaces de aceptar nuestras peticiones y de saber cuando están " +"sobrecargados o cuando no son capaces de hacer con fiabilidad lo que " +"acordaron." #: i2p2www/pages/site/docs/how/peer-selection.html:38 #, python-format @@ -10033,6 +10787,13 @@ msgid "" "timing attacks\n" "more difficult." msgstr "" +"A diferencia de otras redes anónimas, en I2P el ancho de banda indicado " +"no es de fiar y es sólo usado para evitar que esos pares anuncien " +"anchos de banda insuficientes para rutar los túneles. Toda laa selección " +"de los pares se hace a través de lso perfiles. Esto evita ataques simples" +" basados en pares que indican un gran ancho de banda para intentar " +"capturar un gran número de túneles. También hace más difíciles los ataques de sincronización." #: i2p2www/pages/site/docs/how/peer-selection.html:50 msgid "" @@ -10041,6 +10802,9 @@ msgid "" "of client and exploratory tunnels, and a tunnel lifetime is only 10 " "minutes." msgstr "" +"La selección de pares se hace frecuentemente, ya que el ruter mantiene un" +" gran número de túneles clientes y exploratorios, y la vida de un túnel " +"es de sólo 10 minutos." #: i2p2www/pages/site/docs/how/peer-selection.html:56 msgid "Further Information" @@ -10056,6 +10820,11 @@ msgid "" "See below for notes on minor changes since the " "paper was published." msgstr "" +"Para más información vea el artículo Peer Profiling " +"and Selection in the I2P Anonymous Network presentado en el PET-CON 2009.1. Mire más " +"abajo para ver los cambios menores o las notas desde que el artículo " +"fue publicado." #: i2p2www/pages/site/docs/how/peer-selection.html:65 msgid "Profiles" @@ -10076,6 +10845,13 @@ msgid "" "gathered\n" "can be found in the code." msgstr "" +"Cada par tiene un conjunto de datos recogidos sobre ellos, incluyendo " +"estadísticas sobre cuánto tardan en responder a una petición a la base de" +" datos de la red, con qué frecuencia fallan sus túneles, y cuántos nuevos" +" pares son capaces de presentarnos, y también datos simples como cuándo " +"supimos de ellos por última vez o cuándo fue el uĺtimo error de " +"comunicación. Los datos obtenidos específicos pueden encontrarse en el código." #: i2p2www/pages/site/docs/how/peer-selection.html:75 msgid "" @@ -10089,10 +10865,17 @@ msgid "" "thus allowing a router to quickly re-integrate into the network after " "startup." msgstr "" +"Los perfiles son bastante pequeños, unos pocos KB. Para controlar el uso " +"de la memoria usada, el tiempo de expiración de los perfiles disminuye " +"cuando el número de perfiles aumenta. Los perfiles se mantienen en la " +"memoria hasta que el ruter se apaga, entonces se escriben al disco duro. " +"Al inicio, los perfiles son leídos para que el ruter no necesite " +"reiniciar todos los perfiles, permitiendo al ruter integrarse rápidamente" +" en la red después del arranque." #: i2p2www/pages/site/docs/how/peer-selection.html:85 msgid "Peer Summaries" -msgstr "" +msgstr "Resúmenes de los pares" #: i2p2www/pages/site/docs/how/peer-selection.html:86 msgid "" @@ -10103,6 +10886,11 @@ msgid "" " well \n" "integrated into the network it is, and whether it is failing." msgstr "" +"Aunque los perfiles por sí mismos puede considerarse un resumen del " +"rendimiento de los pares, para tener una selección efectiva de los pares " +"partimos cada resumen en cuatro valores simples, indicando la velocidad " +"del par, su capacidad, cómo de bien está integrado en la red y cuándo " +"fallan." #: i2p2www/pages/site/docs/how/peer-selection.html:93 msgid "Speed" @@ -10116,6 +10904,10 @@ msgid "" "this estimate it just looks at\n" "performance in the previous minute." msgstr "" +"El cálculo de la velocidad se hace simplemente mirando el perfil y " +"calculando cuantos datos podemos enviar o recibir a través de túnel de un" +" par durante un minuto. Para esta estimación simplemente mira el " +"rendimiento en el minuto anterior." #: i2p2www/pages/site/docs/how/peer-selection.html:101 msgid "Capacity" @@ -10134,6 +10926,13 @@ msgid "" "more than later activity,\n" "statistics up to 48 hours old may be included." msgstr "" +"El cálculo de la capacidad simplemente mira en el perfil y estima el " +"número de túneles en los que aceptará participar en un periodo de tiempo " +"dado. Para esta estimación mira cuantos peticiones de construcción de " +"túneles ha aceptado, denegado y tirado, y cuantos túneles de los " +"aceptados han fallado después. Las actividades recientes importan más que" +" las demás, pueden ser incluidas hasta estadísticas de hasta 48 horas de " +"viejas." #: i2p2www/pages/site/docs/how/peer-selection.html:113 msgid "" @@ -10147,10 +10946,17 @@ msgid "" "peers, and uses that probability in the capacity calculation.\n" "Drops and test failures are weighted much higher than rejections." msgstr "" +"Reconocer y evitar los pares no fiables e inalcanzables es de importancia" +" crítica. Desafortunadamente, ya que la creación de los túneles requiere " +"la participación de varios pares, es difícil identificar positivamente la" +" causa de una petición caída o un fallo en la prueba. El ruter asigna una" +" probabilidad de fallo a cada para, y usa esa probabilidad en el cálculo " +"de la capacidad. Las caídas y los fallos de prueba pesan mucho más que " +"las denegaciones." #: i2p2www/pages/site/docs/how/peer-selection.html:123 msgid "Peer organization" -msgstr "" +msgstr "Organización de los pares" #: i2p2www/pages/site/docs/how/peer-selection.html:124 msgid "" @@ -10160,10 +10966,13 @@ msgid "" "three\n" "groups - fast, high capacity, and standard." msgstr "" +"Como se ha mencionado arriba, nos sumergimos en el perfil de cada par " +"para hacer unos pocos cálculos, y baso en esos cálculos, organizamos cada" +" par dentro de estos tres grupos - rápido, con capacidad y estándar." #: i2p2www/pages/site/docs/how/peer-selection.html:130 msgid "The groupings are not mutually exclusive, nor are they unrelated:" -msgstr "" +msgstr "Los grupos no se excluyen mutuamente, y están relacionados entre ellos:" #: i2p2www/pages/site/docs/how/peer-selection.html:134 msgid "" @@ -10171,6 +10980,8 @@ msgid "" "or \n" "exceeds the median of all peers." msgstr "" +"Un par es considerado de \"alta capacidad\" si los cálculos cumplen o " +"exceden la media de todos los pares." #: i2p2www/pages/site/docs/how/peer-selection.html:138 msgid "" @@ -10178,10 +10989,12 @@ msgid "" "their \n" "speed calculation meets or exceeds the median of all peers." msgstr "" +"Un par es considerado \"rápido\" si ya es de \"alta capacidad\", y los " +"cálculos de velocidad cumplen o exceden la media de todos los pares." #: i2p2www/pages/site/docs/how/peer-selection.html:142 msgid "A peer is considered \"standard\" if it is not \"high capacity\"" -msgstr "" +msgstr "Un par es considerado \"estándar/normal\" si no es de \"alta capacidad\"" #: i2p2www/pages/site/docs/how/peer-selection.html:145 #, python-format @@ -10189,14 +11002,16 @@ msgid "" "These groupings are implemented in the router's\n" "ProfileOrganizer." msgstr "" +"Estas agrupaciones están implementadas en el ProfileOrganizer del ruter." #: i2p2www/pages/site/docs/how/peer-selection.html:150 msgid "Group size limits" -msgstr "" +msgstr "Límites del tamaño de los grupos" #: i2p2www/pages/site/docs/how/peer-selection.html:151 msgid "The size of the groups may be limited." -msgstr "" +msgstr "El tamaño de los grupos puede estar limitado." #: i2p2www/pages/site/docs/how/peer-selection.html:156 msgid "" @@ -10204,6 +11019,8 @@ msgid "" "If there would be more, only the ones with the highest speed rating are " "placed in the group." msgstr "" +"El grupo rápido está limitado a 30 pares. Si hubiese más, sólo los que " +"tuviesen las mayores velocidades permanecerían en el grupo." #: i2p2www/pages/site/docs/how/peer-selection.html:160 msgid "" @@ -10212,6 +11029,9 @@ msgid "" "If there would be more, only the ones with the highest capacity rating " "are placed in the group." msgstr "" +"El grupo de alta capacidad está limitado a 75 pares (incluido el grupo " +"rápido). Si hubiese más, sólo los que tuviesen las mayores capacidades " +"permanecerían en el grupo." #: i2p2www/pages/site/docs/how/peer-selection.html:164 msgid "" @@ -10222,16 +11042,23 @@ msgid "" "RouterInfos and 500 peer profiles\n" "(including those in the fast and high capacity groups)" msgstr "" +"El grupo estándar no tiene un límite fijado, pero de alguna forma es " +"menor que el número de RouterInfos almacenados en la base de datos de la " +"red local. En un ruter activo de la red actual, puede haber como 1000 " +"RouterInfoes y 500 perfiles de pares (incluyendo auqellos en los grupos " +"rápidos y de alta capacidad)" #: i2p2www/pages/site/docs/how/peer-selection.html:172 msgid "Recalculation and Stability" -msgstr "" +msgstr "Nuevos cálculos y estabilidad" #: i2p2www/pages/site/docs/how/peer-selection.html:173 msgid "" "Summaries are recalculated, and peers are resorted into groups, every 45 " "seconds." msgstr "" +"Cada 45 segundos, los resúmenes son re-calculados, y los pares son " +"recolocados en grupos. " #: i2p2www/pages/site/docs/how/peer-selection.html:177 msgid "" @@ -10242,20 +11069,26 @@ msgid "" " them, which increases their speed and capacity ratings,\n" "which reinforces their presence in the group." msgstr "" +"Los grupos tienden a ser bastante estables, esto es, no hay mucha " +"\"agitación\" en las clasificaciones tras cada nuevo cálculo." #: i2p2www/pages/site/docs/how/peer-selection.html:188 msgid "The router selects peers from the above groups to build tunnels through." msgstr "" +"Los ruters seleccionan pares de los grupos anteriores para construir " +"túneles a través de ellos." #: i2p2www/pages/site/docs/how/peer-selection.html:193 msgid "Peer Selection for Client Tunnels" -msgstr "" +msgstr "Selección de pares para los túneles cliente" #: i2p2www/pages/site/docs/how/peer-selection.html:194 msgid "" "Client tunnels are used for application traffic, such as for HTTP proxies" " and web servers." msgstr "" +"Los túneles cliente se usan para el tráfico de las aplicaciones, como los" +" proxies HTTP y los servidores web." #: i2p2www/pages/site/docs/how/peer-selection.html:198 msgid "" @@ -10267,10 +11100,16 @@ msgid "" "There is no bias toward selecting peers that were previously participants" " in a tunnel for the same client." msgstr "" +"Para reducir la propensión a algunos ataques, e incrementar el rendimiento, los" +" pares para la construcción de los túneles cliente se eligen " +"aleatoriamente del grupo más pequeño, el cual es el grupo \"rápido\". No " +"existe una tendencia hacia la selección de pares que anteriormente hayan " +"participado en un túnel para el mismo cliente." #: i2p2www/pages/site/docs/how/peer-selection.html:206 msgid "Peer Selection for Exploratory Tunnels" -msgstr "" +msgstr "Selección de pares para los túneles exploratorios" #: i2p2www/pages/site/docs/how/peer-selection.html:207 msgid "" @@ -10282,6 +11121,11 @@ msgid "" "they are called \"exploratory\".\n" "These tunnels are usually low-bandwidth." msgstr "" +"Los túneles exploratorios son usados para propósitos administrativos del " +"ruter, como el tráfico de la base de datos de la red y los túneles " +"cliente de prueba. También son usados para contactar con ruters " +"anteriormente no contactados, que es por lo que se llaman " +"\"exploratorios\". Estos túneles son normalmente de bajo ancho de banda." #: i2p2www/pages/site/docs/how/peer-selection.html:215 msgid "" @@ -10296,6 +11140,11 @@ msgid "" "There is no bias toward selecting peers that were previously participants" " in an exploratory tunnel." msgstr "" +"Los pares para construir los túneles exploratorios son elegidos " +"normalmente aleatoriamente del grupo estándar. En su lugar, si la tasa de" +" éxito de esos intentos de construcción es baja comparada con la tasa de " +"éxito exitosa de construcción, el ruter seleccionará un promedio " +"balanceado aleatoriamente de pares del grupo de alta capacidad." #: i2p2www/pages/site/docs/how/peer-selection.html:223 msgid "" @@ -10305,6 +11154,10 @@ msgid "" "all peers,\n" "until the build success rate becomes too low." msgstr "" +"Ya que el grupo estándar incluye una gran parte de todos los pares que el" +" ruter conoce, los túneles exploratorios son construidos esencialmente a " +"través de una selección aleatoria de todos los pares, hasta que la tasa " +"de éxito de construcción sea demasiada baja." #: i2p2www/pages/site/docs/how/peer-selection.html:231 msgid "Restrictions" @@ -10315,10 +11168,12 @@ msgid "" "To prevent some simple attacks, and for performance, there are the " "following restrictions:" msgstr "" +"Para prevenir algunos ataques simples, y para mejorar el rendimiento, " +"existen las siguientes restricciones:" #: i2p2www/pages/site/docs/how/peer-selection.html:236 msgid "Two peers from the same /16 IP space may not be in the same tunnel." -msgstr "" +msgstr "Dos pares en el mismo espacio de IPs /16 no deben estar en el mismo túnel." #: i2p2www/pages/site/docs/how/peer-selection.html:239 msgid "" @@ -10328,15 +11183,17 @@ msgstr "" #: i2p2www/pages/site/docs/how/peer-selection.html:242 msgid "Peers with extremely low bandwidth are not used." -msgstr "" +msgstr "Los pares con el ancho de banda extremadamente bajo no son usados." #: i2p2www/pages/site/docs/how/peer-selection.html:245 msgid "Peers for which a recent connection attempt failed are not used." msgstr "" +"Los pares para los que un intento de conexión reciente ha fallado no son " +"usados." #: i2p2www/pages/site/docs/how/peer-selection.html:252 msgid "Peer Ordering in Tunnels" -msgstr "" +msgstr "Orden de los pares en los túneles" #: i2p2www/pages/site/docs/how/peer-selection.html:253 #, python-format @@ -10347,24 +11204,32 @@ msgid "" "More information is on the tunnel " "page." msgstr "" +"Los pares son ordenados dentro de los túneles para hacer frente al ataque del predecesor (actualización del 2008). Hay más información en" +" la página del túnel." #: i2p2www/pages/site/docs/how/peer-selection.html:268 msgid "Continue to analyze an tune speed and capacity calculations as necessary" msgstr "" +"Continuar analizando y afinando los cálculos de capacidad y velocidad " +"según las necesidades." #: i2p2www/pages/site/docs/how/peer-selection.html:271 msgid "" "Implement a more aggressive ejection strategy if necessary to control " "memory usage as the network grows" msgstr "" +"Implementar una estrategia de expulsión más agresiva si se necesita para " +"controlar el uso de memoria según crezca la red." #: i2p2www/pages/site/docs/how/peer-selection.html:274 msgid "Evaluate group size limits" -msgstr "" +msgstr "Evaluar el tamaño de los límites de los grupos" #: i2p2www/pages/site/docs/how/peer-selection.html:277 msgid "Use GeoIP data to include or exclude certain peers, if configured" -msgstr "" +msgstr "Usar datos GeoIP para incluir o excluir ciertos pares, si se configura" #: i2p2www/pages/site/docs/how/peer-selection.html:283 #, python-format @@ -10375,42 +11240,46 @@ msgid "" "please keep in mind the following minor changes in I2P since the paper's " "publication:" msgstr "" +"Para aquellos leyendo el estudio Peer Profiling and " +"Selection in the I2P Anonymous Network, por favor, tengan en cuenta " +"los siguientes cambios menores en I2P desde la publicación de dicho " +"estudio." #: i2p2www/pages/site/docs/how/peer-selection.html:289 msgid "The Integration calculation is still not used" -msgstr "" +msgstr "Todavía no se usa el cálculo de integración" #: i2p2www/pages/site/docs/how/peer-selection.html:290 msgid "In the paper, \"groups\" are called \"tiers\"" -msgstr "" +msgstr "En el estudio, a los \"grupos\" se les llama \"tiers\"/\"niveles\"" #: i2p2www/pages/site/docs/how/peer-selection.html:291 msgid "The \"Failing\" tier is no longer used" -msgstr "" +msgstr "El nivel \"Fallando\" no se usa más." #: i2p2www/pages/site/docs/how/peer-selection.html:292 msgid "The \"Not Failing\" tier is now named \"Standard\"" -msgstr "" +msgstr "El nivel \"no fallando\" se llama ahora \"estándar\"" #: i2p2www/pages/site/docs/how/peer-selection.html:301 msgid "One Cell Enough" -msgstr "" +msgstr "Una célula basta" #: i2p2www/pages/site/docs/how/peer-selection.html:303 msgid "Tor Entry Guards" -msgstr "" +msgstr "Entry Guards de Tor" #: i2p2www/pages/site/docs/how/peer-selection.html:305 msgid "Murdoch 2007 Paper" -msgstr "" +msgstr "Estudio Murdoch 2007" #: i2p2www/pages/site/docs/how/peer-selection.html:307 msgid "Tune-up for Tor" -msgstr "" +msgstr "Ajustes para Tor" #: i2p2www/pages/site/docs/how/peer-selection.html:309 msgid "Low-resource Routing Attacks Against Tor" -msgstr "" +msgstr "Ataques de enrutado de bajo recurso contra Tor" #: i2p2www/pages/site/docs/how/tech-intro.html:2 msgid "Introducing I2P" @@ -11331,7 +12200,7 @@ msgid "" msgstr "" "Toda esta información es firmada par la parte publicadora y verificada " "por cualquier ruter I2P que use o almacene la información. Además, los " -"datos contienen información de la fecha para evitar el almacenamiento de " +"datos contienen información de la hora para evitar el almacenamiento de " "entradas antiguas y posibles ataques. Esto es por que I2P empaqueta el " "código necesario para mantener la fecha correcta, a veces consultando " "algunos servidores SNTP (por defecto " #: i2p2www/pages/site/docs/how/tech-intro.html:1007 -#, fuzzy, python-format +#, python-format msgid "" "PyBit is a Bittorrent client written in Python.\n" "It is hosted on %(pybit)s " msgstr "" -"PyBit es un cliente Bittorrent escrito en python. Se aloja en http://%(pybit)s/ " #: i2p2www/pages/site/docs/how/tech-intro.html:1015 msgid "" @@ -13233,7 +14099,7 @@ msgstr "Ataques de fuerza bruta" #: i2p2www/pages/site/docs/how/threat-model.html:124 #: i2p2www/pages/site/docs/how/threat-model.html:185 msgid "Timing attacks" -msgstr "Ataques de fecha" +msgstr "Ataques de sincronización" #: i2p2www/pages/site/docs/how/threat-model.html:125 #: i2p2www/pages/site/docs/how/threat-model.html:220 @@ -14859,7 +15725,7 @@ msgstr "" #: i2p2www/pages/site/docs/how/tunnel-routing.html:2 #: i2p2www/pages/site/docs/how/tunnel-routing.html:6 msgid "Tunnel Overview" -msgstr "" +msgstr "Introducción a los túenels." #: i2p2www/pages/site/docs/how/tunnel-routing.html:3 #: i2p2www/pages/site/docs/tunnels/unidirectional.html:3 @@ -14872,6 +15738,9 @@ msgid "" "with\n" "links to more technical pages, details, and specifications." msgstr "" +"Esta página contiene una introducción a la terminología y funcionamiento " +"de los túneles I2P, con enlaces a páginas más técnicas, detalles y " +"especificaciones." #: i2p2www/pages/site/docs/how/tunnel-routing.html:12 #, python-format @@ -14889,23 +15758,42 @@ msgid "" "to forward it to the gateway router for one of Bob's current inbound \n" "tunnels, which in turn passes it to Bob." msgstr "" +"Como se ha explicado brevemente en el class=\"marksource tag\">%(intro)s\">introductionclass=\"marksource tag\">, I2P " +"construye \"túneles\" virtuales -class=\"marksource newline\" title=\"New" +" line\"> caminos temporales y unidireccionales a través de una secuencia " +"de ruters. Estos class=\"marksource newline\" title=\"New line\"> túneles" +" estan clasificados como túneles de entrada (sonde todo " +"class=\"marksource newline\" title=\"New line\"> va hacia el creador del " +"túnel) o túneles de salida class=\"marksource newline\" title=\"New " +"line\"> (donde el creador del túnel envía los mensajes lejos de él). " +"Cuando Alice class=\"marksource newline\" title=\"New line\"> quiere " +"enviar un mensaje a Bob, ella (normalmente) lo envía a uno de " +"lass=\"marksource newline\" title=\"New line\"> sus túneles de salida ya " +"existentes con las instrucciones para el punto final de ese túnel " +"class=\"marksource newline\" title=\"New line\"> para que sea enviado al " +"ruter gateway hasta los túneles de entrada de Bob class=\"marksource " +"newline\" title=\"New line\">, que por turnos lo llevarán hasta Bob." #: i2p2www/pages/site/docs/how/tunnel-routing.html:25 msgid "Alice connecting through her outbound tunnel to Bob via his inbound tunnel" msgstr "" +"Alice conectando a través de su túnel de salida hacia Bob vía su túnel de" +" entrada" #: i2p2www/pages/site/docs/how/tunnel-routing.html:27 msgid "Outbound Gateway" -msgstr "" +msgstr "Gateway de salida" #: i2p2www/pages/site/docs/how/tunnel-routing.html:28 msgid "Outbound Participant" -msgstr "" +msgstr "Participante de salida" #: i2p2www/pages/site/docs/how/tunnel-routing.html:29 #: i2p2www/pages/site/docs/tunnels/implementation.html:131 msgid "Outbound Endpoint" -msgstr "" +msgstr "Punto final de salida" #: i2p2www/pages/site/docs/how/tunnel-routing.html:30 #: i2p2www/pages/site/docs/tunnels/implementation.html:140 @@ -14914,15 +15802,15 @@ msgstr "Salida entrante" #: i2p2www/pages/site/docs/how/tunnel-routing.html:31 msgid "Inbound Participant" -msgstr "" +msgstr "Participante de entrada" #: i2p2www/pages/site/docs/how/tunnel-routing.html:32 msgid "Inbound Endpoint" -msgstr "" +msgstr "Punto final de entrada" #: i2p2www/pages/site/docs/how/tunnel-routing.html:36 msgid "Tunnel vocabulary" -msgstr "" +msgstr "Vocabulario de los túneles" #: i2p2www/pages/site/docs/how/tunnel-routing.html:38 #, python-format @@ -14933,12 +15821,18 @@ msgid "" "network database. For outbound tunnels, the\n" "gateway is the originating router. (e.g. both A and D above)" msgstr "" +"Túnel puerta de salida, gateway - el primer ruter en un túnel. " +"Para los túneles de entrada, este es el mencionado en el LeaseSet " +"publicado en la base de datos de la red. Para " +"los túneles de salida, la gateway es el ruter original (ej, A y D arriba)" #: i2p2www/pages/site/docs/how/tunnel-routing.html:44 msgid "" "Tunnel endpoint - the last router in a tunnel. (e.g. both C and F" " above)" msgstr "" +"Túnel punto final, endpoint - el último ruter en un túnel (ej, C y" +" F arriba)" #: i2p2www/pages/site/docs/how/tunnel-routing.html:45 msgid "" @@ -14946,22 +15840,30 @@ msgid "" "gateway or\n" "endpoint (e.g. both B and E above)" msgstr "" +"Túnel participante - todos los ruters en un túnel excepto la " +"puerta de salida o el punto final (ej, B y E arriba)" #: i2p2www/pages/site/docs/how/tunnel-routing.html:49 msgid "" "n-Hop tunnel - a tunnel with a specific number of inter-router " "jumps, e.g.:" msgstr "" +"Túnel de n saltos - un túnel con un número específico de saltos " +"entre ruters, por ejemplo:" #: i2p2www/pages/site/docs/how/tunnel-routing.html:51 msgid "0-hop tunnel - a tunnel where the gateway is also the endpoint" msgstr "" +"Túnel de 0 saltos - un túnel donde la puerta de slaida, gateway, " +"es también el punto final, endpoint." #: i2p2www/pages/site/docs/how/tunnel-routing.html:52 msgid "" "1-hop tunnel - a tunnel where the gateway talks directly to the " "endpoint" msgstr "" +"Túnel de 1 salto - un túnel donde la puerta de salida habla " +"directamente con el punto final." #: i2p2www/pages/site/docs/how/tunnel-routing.html:53 msgid "" @@ -14970,6 +15872,9 @@ msgid "" "tunnel participant. (the above diagram includes two 2-hop tunnels - one\n" "outbound from Alice, one inbound to Bob)" msgstr "" +"Túnel de 2 (o más) saltos - un túnel donde hay al menos un túnel " +"intermedio participante, (el diagrama de arriba incluye dos túneles de 2 " +"saltos - uno de salida desde Alice, uno de entrada hacia Bob)" #: i2p2www/pages/site/docs/how/tunnel-routing.html:60 #, python-format @@ -14980,10 +15885,14 @@ msgid "" "router.\n" "Chosen randomly by the tunnel creator." msgstr "" +"ID del túnel - Un entero de 4 bytes " +"diferente para cada salto en un túnel, y único a lo largo de todos los " +"túneles en un ruter. Elegido aleatoriamente por el creador del túnel." #: i2p2www/pages/site/docs/how/tunnel-routing.html:67 msgid "Tunnel Build Information" -msgstr "" +msgstr "Infomación de la construcción del túnel" #: i2p2www/pages/site/docs/how/tunnel-routing.html:68 #, python-format @@ -14994,10 +15903,14 @@ msgid "" "Tunnel Build Message\n" "to accomplish their tasks:" msgstr "" +"A los ruters con los tres roles (puerta de salida, participante, punto " +"final) le son dados diferentes piezas de información en el mensaje de creación de túnel inicial para" +" poder lleva a cabo sus tareas:" #: i2p2www/pages/site/docs/how/tunnel-routing.html:75 msgid "The tunnel gateway gets:" -msgstr "" +msgstr "El túnel de puerta de salida obtiene:" #: i2p2www/pages/site/docs/how/tunnel-routing.html:77 #: i2p2www/pages/site/docs/how/tunnel-routing.html:97 @@ -15008,6 +15921,9 @@ msgid "" "encrypting\n" "messages and instructions to the next hop" msgstr "" +"Una clave de cifrado de túnel - una clave privada AES para " +"cifrar los mensajes, y las instrucciones para el siguiente salto." #: i2p2www/pages/site/docs/how/tunnel-routing.html:81 #: i2p2www/pages/site/docs/how/tunnel-routing.html:101 diff --git a/i2p2www/translations/es/LC_MESSAGES/priority.po b/i2p2www/translations/es/LC_MESSAGES/priority.po index 3f6d1f4e..9022cf89 100644 --- a/i2p2www/translations/es/LC_MESSAGES/priority.po +++ b/i2p2www/translations/es/LC_MESSAGES/priority.po @@ -14,8 +14,8 @@ msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" "POT-Creation-Date: 2013-09-04 14:19+0000\n" -"PO-Revision-Date: 2013-09-04 14:25+0000\n" -"Last-Translator: str4d \n" +"PO-Revision-Date: 2013-09-05 12:43+0000\n" +"Last-Translator: trolly\n" "Language-Team: Spanish " "(http://www.transifex.com/projects/p/I2P/language/es/)\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" @@ -70,14 +70,14 @@ msgid "" "maintainers/+archive/i2p\">the I2P Launchpad site\n" "have been tested and should work on x86/x86_64 platforms running:" msgstr "" -"Los paquetes alijados en la web de I2P en Launchpad han sido " "probados y deberían funcionar en las plataformas x86/x86_64 que " "ejecutan:" #: i2p2www/pages/downloads/debian.html:11 msgid "Ubuntu (Precise 12.04 and newer)" -msgstr "Ubuntu (Precise 12.04 y posterior)" +msgstr "Ubuntu (Precise 12.04 y posteriores)" #: i2p2www/pages/downloads/debian.html:13 msgid "" @@ -106,7 +106,7 @@ msgid "" "derivatives (Try this if you're not using Debian)" msgstr "" "Opción 1: Versiones recientes de Ubuntu y sus " -"derivados (Prueba este si no utulizas Debian)" +"derivados (Pruebe este si no utiliza Debian)" #: i2p2www/pages/downloads/debian.html:24 msgid "Option 2: Debian (including Debian-derivatives)" @@ -126,7 +126,7 @@ msgid "" " Linux Mint & Trisquel" msgstr "" "Instrucciones para Ubuntu Precise Pangolin (y más nuevos) y derivados " -"como " +"como Linux Mint & Trisquel" #: i2p2www/pages/downloads/debian.html:29 msgid "Adding the PPA via the command line and installing I2P" @@ -142,7 +142,7 @@ msgid "" "gpg key that the repository has been signed with. The GPG key ensures\n" "that the packages have not been tampered with since being built." msgstr "" -"Este comando añadirá el PPA a tu /etc/apt/sources.list.d y descargará la " +"Este comando añadirá el PPA a su /etc/apt/sources.list.d y descargará la " "clave gpg del repositorio que lo ha firmado. La clave GPG asegura que los" " paquetes no han sido modificados desde que se crearon." @@ -164,7 +164,7 @@ msgstr "" #: i2p2www/pages/downloads/debian.html:112 #: i2p2www/pages/downloads/debian.html:137 msgid "You are now ready to install I2P!" -msgstr "Ya puede instalar I2P" +msgstr "¡Ya usted listo para instalar I2P!" #: i2p2www/pages/downloads/debian.html:53 msgid "Adding the PPA Using Synaptic" @@ -193,7 +193,7 @@ msgid "" "Add Source. Click the Close button then " "Reload." msgstr "" -"Pulse en la pestaña deOtras Fuentes y pulse Añadir. " +"Pulse en la pestaña deOtras Fuentes y pulse Añadir. " "Pegue ppa:i2p-maintainers/i2p en la línea del campo de APT y" " pulse Añadir Fuente. Pulse el botón de Cerrar y " "entonces Recargar." @@ -218,13 +218,13 @@ msgid "" "part of starting I2P and configuring " "it for your system." msgstr "" -"Cuando finalice el proceso de instalación pude pasar a la siguiente parte" -" de arrancando I2P para configurar " -"I2P en su sistema." +"Cuando finalice el proceso de instalación pude pasar a la siguiente " +"parte, arrancando I2P, para configurar" +" I2P en su sistema." #: i2p2www/pages/downloads/debian.html:82 msgid "Instructions for Debian Lenny and newer" -msgstr "Instrucciones para Debian Lenny y posterior" +msgstr "Instrucciones para Debian Lenny y posteriores" #: i2p2www/pages/downloads/debian.html:84 msgid "" @@ -239,9 +239,9 @@ msgid "" "The steps below should be performed with root access (i.e., switching\n" "user to root with \"su\" or by prefixing each command with \"sudo\")." msgstr "" -"Los siguientes pasos deberían hacerse con acceso root (por ejemplo " -"cambiando al usuario root con \"su\" o ejecutando los comandos con " -"\"sudo\")" +"Los siguientes pasos deberían hacerse con acceso de administrador (por " +"ejemplo cambiando al usuario root con \"su\" o ejecutando los comandos " +"con \"sudo\")" #: i2p2www/pages/downloads/debian.html:92 msgid "Add the GPG key that signs the repository with the following command:" @@ -259,7 +259,7 @@ msgstr "" #: i2p2www/pages/downloads/debian.html:103 msgid "Notify your package manager of the new PPA by entering" -msgstr "Avise a si gestor de paquetes del nuevo PPA ejeutando" +msgstr "Avise a su gestor de paquetes del nuevo PPA ejeutando" #: i2p2www/pages/downloads/debian.html:105 msgid "" @@ -277,8 +277,8 @@ msgid "" " of starting I2P and configuring it " "for your system." msgstr "" -"Después de la instalación puede pasar al siguiente paso iniciandoI2P, y confugurar su sistema." +"Después de la instalación puede pasar al siguiente paso, iniciandoI2P, y configurar su sistema." #: i2p2www/pages/downloads/debian.html:120 msgid "Instructions for Non-Linux / Non-x86" @@ -290,9 +290,9 @@ msgid "" "user to root with \"su\" or by prefixing each command with " "\"sudo\")." msgstr "" -"Los siguientes pasos deberían hacerse con acceso root (por ejemplo " -"cambiando al usuario root con \"su\" o ejecutando los " -"comandos con \"sudo\")" +"Los siguientes pasos deberían hacerse con acceso de administraor (por " +"ejemplo cambiando al usuario root con \"su\" o ejecutando " +"los comandos con \"sudo\")" #: i2p2www/pages/downloads/debian.html:128 #, python-format @@ -302,7 +302,7 @@ msgid "" "Alternatively, there are unofficial packages available here for armel, armhf, and kfreebsd." msgstr "" -"Descargue el paquete de i2p-router desde el i2p-router desde el PPA. También hay paquetes no oficiales aquí para armel, armhf y kfreebsd." @@ -335,7 +335,7 @@ msgid "" "Using these I2P packages the I2P router can be started in the following\n" "three ways:" msgstr "" -"Para arrancar el ruter I2P tras instalar los paquetes puede hacerlo de " +"Para arrancar el ruter I2P tras instalar los paquetes puede hacerlo de " "tres formas:" #: i2p2www/pages/downloads/debian.html:160 @@ -346,9 +346,9 @@ msgid "" "not use\n" "sudo or run it as root!)" msgstr "" -""on demand" usando el script i2prouter. Simplemente ejecutando" -" "i2prouter start" en la terminal. (Nota: " -"¡No utilice sudo o lo ejecute como root!)" +""on demand" usando el script i2prouter. Simplemente ejecute " +""i2prouter start" en la terminal. (Nota: " +"¡No utilice sudo, ¡no lo ejecute como root!)" #: i2p2www/pages/downloads/debian.html:167 msgid "" @@ -360,10 +360,10 @@ msgid "" "use sudo or run it as root!)" msgstr "" ""on demand" sin el sservicio wrapper de java" -" (se necesita en sistemas no-Linux/no-x86) ejecutando \"i2prouter-" -"nowrapper\". (Nota: ¡No utilice sudo o lo " -"ejecute como root!)" +"href=\"http://wrapper.tanukisoftware.com/\">servicio wrapper de java " +"(se necesita en sistemas no-Linux/no-x86) ejecutando \"i2prouter-" +"nowrapper\". (Nota: ¡No utilice sudo, ¡no " +"lo ejecute como root!)" #: i2p2www/pages/downloads/debian.html:175 msgid "" @@ -389,8 +389,8 @@ msgid "" "you may find portforward.com to be" " helpful." msgstr "" -"Cuando instale por primera vez, recuerde ajustar su " -"AT/cortafuegos si puede. Los puertos a abrir pueden verse en ajustar su " +"NAT/cortafuegos. Los puertos a abrir pueden verse en la web de configuración de la " "red en la consola del ruter. Si necesita un guía para abrir sus " "puertos, la web portforward.com " @@ -418,7 +418,7 @@ msgid "" msgstr "" "Si desea navegar a una eepsite desde su navegador eche un vistazo a la " "web configuración del proxy del " -"navegador para ver un tutorial sencillo." +"navegador para ver un manual sencillo." #: i2p2www/pages/downloads/list.html:2 i2p2www/pages/downloads/select.html:12 #: i2p2www/pages/global/nav.html:3 @@ -451,9 +451,7 @@ msgstr "" "\n" "Java Runtime 1.5 o mayor. (recomendados Oracle Java " "Version 6/7, OpenJDK 6/7, o IcedTea6/7)\n" -"
    \n" -"IcedTea6/7)
    " "Determine aquí su versión de java o ejecute java -version en" " la terminal.\n" @@ -512,13 +510,10 @@ msgid "" " On some platforms you may be able to right-click and select\n" " "Open with Java"." msgstr "" -"Descargue el archivo y pulse dos veces sobre él (si funciona) o\n" -" escriba java -jar i2pinstall_%(i2pversion)s.jar en una " -"terminal para ejecutar\n" -" el instalador.\n" -" En algunos sistemas debería poder pulsar botón derecho sobre el " -"archivo y seleccionar\n" -" "Abrir con Java"." +"Descargue el archivo y pulse dos veces sobre él (si funciona) o escriba " +"java -jar i2pinstall_%(i2pversion)s.jar en una terminal para" +" ejecutar el instalador. En algunos sistemas debería poder pulsar botón " +"derecho sobre el archivo y seleccionar "Abrir con Java"." #: i2p2www/pages/downloads/list.html:92 #, python-format @@ -574,13 +569,12 @@ msgid "" " run the GUI installer or headless install as above." msgstr "" "También puede descargar las fuentes desde monotone o a través de Git dese git.repo.i2p or Github.\n" -"
    \n" -"Ejecute (tar xjvf i2psource_%(i2pversion)s.tar.bz2 ; cd " -"i2p-%(i2pversion)s ; ant pkg) y después ejecute el instalador " -"gráfico o la instalación headless como más arriba." +"#getting-the-i2p-code\">monotone o a través de Git desde git.repo.i2p o Github.
    Ejecute (tar xjvf " +"i2psource_%(i2pversion)s.tar.bz2 ; cd i2p-%(i2pversion)s ; ant " +"pkg) y después ejecute el instalador gráfico o la instalación " +"headless como más arriba." #: i2p2www/pages/downloads/list.html:157 #, python-format @@ -610,10 +604,9 @@ msgid "" "which has further instructions." msgstr "" "Después de ejecutar el instalador en Windows simplemente pulse en el " -"botón \"Start I2P\" \n" -"lo cual abrirá la consola del" -" ruter,\n" -"donde encontrará mas instrucciones." +"botón \"Start I2P\" lo cual abrirá la consola del ruter, donde " +"encontrará mas instrucciones." #: i2p2www/pages/downloads/list.html:174 msgid "" @@ -631,7 +624,8 @@ msgid "" " is not supported,\n" "start the router with \"sh runplain.sh\" instead." msgstr "" -"En los sistemas basados en Unix I2P puede ser ejecutado como un servicio\n" +"En los sistemas basados en Unix, I2P puede ser ejecutado como un servicio" +"\n" "usando el script \"i2prouter\" localizado en la carpeta seleccionada para" " I2P.\n" "Entrando a esa carpeta en al terminal y ejecutando \"sh i2prouter " @@ -639,10 +633,9 @@ msgstr "" "debería mostrar el estado del ruter. Los argumentos \"start\", \"stop\" y" " \"restart\"\n" "controlan el servicio. A la consola del ruter\n" -"puede accederse en la localización usual.\n" -"Para usuarios de Opensolaris y otros sistemas donde el 'wrapper' (i2psvc)" -" no está soportado,\n" +"href=\"http://localhost:7657/index.jsp\">consola del ruter puede " +"accederse en la localización usual. Para los usuarios de Opensolaris y " +"otros sistemas donde el 'wrapper' (i2psvc) no está soportado,\n" "ejecute el ruter con \"sh runplain.sh\"." #: i2p2www/pages/downloads/list.html:185 @@ -657,13 +650,11 @@ msgid "" "configuration page." msgstr "" "Cuando instale I2P por primera vez, por favor recuerde ajustar su " -"NAT/cortafuegos\n" -"si puede, sin olvidarse de los puertos que I2P abre a Internet,\n" -"descritos aquí.\n" -"Si ha abierto con éxito el puerto TCP de entrada en su NAT/cortafuegos, " -"abra también el puerto TCP de \n" -"entrada en la página de " -"configuración." +"NAT/cortafuegos si puede, sin olvidarse de los puertos que I2P abre a" +" Internet, descritos aquí. Si ha abierto " +"con éxito el puerto TCP de entrada en su NAT/cortafuegos, abra también el" +" puerto TCP de entrada en la página de configuración." #: i2p2www/pages/downloads/list.html:193 msgid "" @@ -672,12 +663,9 @@ msgid "" "as the default settings of 96 KBps down / 40 KBps up are fairly slow." msgstr "" "Además, por favor revise y ajuste su configuración de ancho de " -"banda en la \n" -"página de configuración," -"\n" -"ya que la configuración por defecto de 96 KBps de descarga / 40 KBps de " -"subida es \n" -"bastante lenta." +"banda en la página de " +"configuración, ya que la configuración por defecto de 96 KBps de " +"descarga / 40 KBps de subida es bastante lenta." #: i2p2www/pages/downloads/list.html:203 msgid "Updates from earlier releases:" @@ -689,7 +677,7 @@ msgstr "Están disponibles actualizaciones manuales y automáticas." #: i2p2www/pages/downloads/list.html:210 msgid "Automatic updates" -msgstr "Actualizaciones Auutomáticas" +msgstr "Actualizaciones Automáticas" #: i2p2www/pages/downloads/list.html:212 msgid "" @@ -712,10 +700,9 @@ msgid "" "and should use the manual update method below." msgstr "" "Debido a un fallo en la versión 0.7.6, aquellos en los cuales su primera " -"instalación \n" -"es esta versión y no han actualizado manualmente pueden obtener el error " -"\"downloaded version is not greater than current version\", y deben usar " -"la actualización manual de abajo." +"instalación e I2P es esta versión y no han actualizado manualmente pueden" +" obtener el error \"downloaded version is not greater than current " +"version\", y deben usar la actualización manual de abajo." #: i2p2www/pages/downloads/list.html:226 #, python-format @@ -741,9 +728,9 @@ msgid "" "receive the release." msgstr "" "Si utiliza la versión 0.6.1.30 o anterior, por favor lea las instrucciones\n" -"para obtener información importante de como configurar el ruter para " -"descargar las actualizaciones automáticamente." +"href=\"%(instructions)s\">instrucciones para obtener información " +"importante de como configurar el ruter para descargar las actualizaciones" +" automáticamente." #: i2p2www/pages/downloads/list.html:243 #, python-format @@ -764,7 +751,7 @@ msgstr "" #: i2p2www/pages/downloads/list.html:251 msgid "Alternately, you can use the manual method specified below." -msgstr "De otra forma puede usar el método manual especificado mas abajo." +msgstr "Por otro lado, puede usar el método manual especificado mas abajo." #: i2p2www/pages/downloads/list.html:261 msgid "Manual updates" @@ -781,7 +768,7 @@ msgid "" " NOT need to unzip that file." msgstr "" "Descargue el archivo en su carpeta de instalación de I2P y renómbrelo " -"como i2pupdate.zip. (alternativamente, puede obtener el código al " +"como i2pupdate.zip. (Alternativamente, puede obtener el código al " "igual que arriba y ejecutar \"ant updater\", y entonces copiar el " "archivo resultante i2pupdate.zip a la carpeta de instalación de I2P). NO" " necesita descomprimir este archivo .zip." @@ -802,8 +789,8 @@ msgid "" "The file is signed by zzz,\n" "whose key is here." msgstr "" -"El archivo está firmado por zzz,\n" -"cuya clave está aquí." +"El archivo está firmado por zzz, cuya clave " +"está aquí." #: i2p2www/pages/downloads/list.html:300 msgid "Previous Releases" @@ -819,7 +806,7 @@ msgid "" "and within the I2P network on %(echelon)s." msgstr "" -"Versiones anteriores están disponibles en Google " "Code y Launchpad\n" "y dentro de la red I2P en %(echelon)s." @@ -841,8 +828,9 @@ msgid "" "To claim the bounty the author must not be paid by other organizations\n" "or teams for this work (e.g. GSoC students are not valid)." msgstr "" -"Para reclamar esta recompensa el autor no debe ser pagado por este " -"trabajo por ninguna otra organización (por ejemplo GSoC no son válidos)." +"Para reclamar esta recompensa, el autor no debe ser pagado por este " +"trabajo por ninguna otra organización (por ejemplo, los GSoC no son " +"válidos)." #: i2p2www/pages/global/bounty.html:29 #, python-format @@ -852,7 +840,7 @@ msgid "" "donation, \n" "marking the amount for the %(donatename)s bounty!" msgstr "" -"La precio de las recompensas puede aumentar si hay más donaciones. ¿Cree " +"El valor de las recompensas puede aumentar si hay más donaciones. ¿Cree " "que esto es importante? ¡Añada sus donaciones" " indicando la cantidad que destina a las %(donatename)s recompensas!" @@ -894,7 +882,7 @@ msgstr "Varios" #: i2p2www/pages/global/footer.html:19 i2p2www/pages/site/links.html:2 msgid "Links" -msgstr "Links" +msgstr "Enlaces" #: i2p2www/pages/global/footer.html:20 msgid "Impressum" @@ -906,7 +894,7 @@ msgstr "Camisetas" #: i2p2www/pages/global/footer.html:26 msgid "Europe" -msgstr "Europea" +msgstr "Europa" #: i2p2www/pages/global/footer.html:27 msgid "USA" @@ -922,7 +910,7 @@ msgstr "Saltar navegación" #: i2p2www/pages/global/layout.html:32 msgid "I2P Logo" -msgstr "Logo I2P" +msgstr "Logo de I2P" #: i2p2www/pages/global/layout.html:32 i2p2www/pages/site/index.html:3 msgid "The Invisible Internet Project" @@ -945,7 +933,7 @@ msgstr "Esta página fue actualizada por última vez el %(lastupdated)s." #: i2p2www/pages/global/layout.html:64 #, python-format msgid "This page is accurate for router version %(accuratefor)s." -msgstr "Esta página está diseñada para la versión de router %(accuratefor)s." +msgstr "Esta página está diseñada para la versión de ruter %(accuratefor)s." #: i2p2www/pages/global/macros:21 msgid "Previous" @@ -957,11 +945,11 @@ msgstr "Siguiente" #: i2p2www/pages/global/macros:43 msgid "Posted in" -msgstr "Publicado el" +msgstr "Publicado en" #: i2p2www/pages/global/nav.html:4 msgid "About" -msgstr "Sobre" +msgstr "Acerca de" #: i2p2www/pages/global/nav.html:6 msgid "Introduction to I2P" @@ -1005,7 +993,7 @@ msgstr "Modelo de amenazas" #: i2p2www/pages/global/nav.html:24 msgid "Garlic routing" -msgstr "Garlic routing" +msgstr "Garlic routing, enrutado Garlic" #: i2p2www/pages/global/nav.html:25 msgid "Network database" @@ -1045,11 +1033,11 @@ msgstr "API" #: i2p2www/pages/global/nav.html:46 i2p2www/pages/global/nav.html:77 msgid "Streaming library" -msgstr "Librería de transmisión" +msgstr "Librería de streaming o transmisión" #: i2p2www/pages/global/nav.html:47 msgid "Ministreaming library" -msgstr "Librería de minitransmisión" +msgstr "Librería de ministreaming" #: i2p2www/pages/global/nav.html:48 i2p2www/pages/global/nav.html:71 msgid "Datagrams" @@ -1133,7 +1121,7 @@ msgstr "Equipo" #: i2p2www/pages/global/nav.html:96 msgid "Hall of Fame" -msgstr "Pódium" +msgstr "Podium" #: i2p2www/pages/global/nav.html:97 msgid "Academic papers and peer review" @@ -1141,7 +1129,7 @@ msgstr "Documentos académicos y revisión por pares" #: i2p2www/pages/global/nav.html:98 msgid "Presentations, tutorials and articles" -msgstr "Presentaciones, artículos y tutoriales" +msgstr "Presentaciones, artículos y manuales" #: i2p2www/pages/global/nav.html:99 msgid "Contact us" @@ -1157,7 +1145,7 @@ msgstr "Preguntas frecuentes" #: i2p2www/pages/global/nav.html:105 msgid "How to browse I2P" -msgstr "Como navegar I2P" +msgstr "Como navegar en I2P" #: i2p2www/pages/global/nav.html:106 msgid "Glossary" @@ -1253,11 +1241,11 @@ msgstr "Idioma" #: i2p2www/pages/meetings/index.html:4 msgid "I2P Meetings ATOM Feed" -msgstr "ATOM feed de reuniones de I2P" +msgstr "ATOM feed de las reuniones de I2P" #: i2p2www/pages/meetings/index.html:7 msgid "Logs of past I2P meetings" -msgstr "Registros de las reuniones pasadas de I2P" +msgstr "Registros de las reuniones de I2P pasadas" #: i2p2www/pages/meetings/index.html:9 msgid "Meetings are currently on hold until a more suitable time can be chosen." @@ -1278,7 +1266,7 @@ msgstr "" #: i2p2www/pages/meetings/show.html:2 #, python-format msgid "I2P Development Meeting %(id)s" -msgstr "Reuniones %(id)s de desarrollo de I2P" +msgstr "Reuniones %(id)s de desarrollo de I2P" #: i2p2www/pages/meetings/show.html:10 msgid "Full IRC Log" @@ -1317,7 +1305,7 @@ msgstr "" " var\">%(bibtex)s\">BibTeX source pageclass=\"marksource tag\"> for " "examples.class=\"marksource tag\">
    class=\"marksource newline\" " "title=\"New line\">\n" -"Recuerde de incluir las URLs si es posible:class=\"marksource newline\" " +"Recuerde incluir las URLs si es posible:class=\"marksource newline\" " "title=\"New line\">\n" "class=\"marksource tag\">%(citeseer)s\">offline papers are less usefulclass=\"marksource " @@ -1349,7 +1337,7 @@ msgstr "" #: i2p2www/pages/site/contact.html:13 msgid "Channel list:" -msgstr "Lista de Canales:" +msgstr "Lista de canales:" #: i2p2www/pages/site/contact.html:15 msgid "General i2p discussion" @@ -1374,9 +1362,9 @@ msgid "" "href=\"http://%(zzz)s\">I2P developer forum. This is usually the best" " place to start with inquiries, if the dev IRC channel is inactive." msgstr "" -"La mayoría de discusiones sobre el desarrollo de I2P ocurre en el foro de desarrollo de I2P. Este es " -"normalmente el mejor lugar para preguntar, si el canal IRC está inactivo." +"normalmente el mejor lugar para preguntar si el canal IRC está inactivo." #: i2p2www/pages/site/contact.html:27 msgid "Mailing lists" @@ -1417,7 +1405,7 @@ msgid "" "email address." msgstr "" "Para cancelar o cambiar las opciones de la suscripción a la lista de " -"mails, vaya a la página de información de la lista (enlace debajo) y " +"emails, vaya a la página de información de la lista (enlace debajo) y " "escriba el email de su suscripción." #: i2p2www/pages/site/contact.html:43 @@ -1442,7 +1430,7 @@ msgid "" " available via NNTP as well." msgstr "" "¿No te gustan las mailing lists? Entonces esto es para ti. Todas las " -"listas de mail están disponibles también por NNTP." +"listas de email están disponibles también por NNTP." #: i2p2www/pages/site/contact.html:58 msgid "Group-List-mapping:" @@ -1574,7 +1562,7 @@ msgid "" "How can I access the web console from my other machines or password " "protect it?" msgstr "" -"¿Cómo puedo acceder a la consola web desde máquinas remotas y cómo lo " +"¿Cómo puedo acceder a la consola web desde máquinas remotas y cómo la " "protejo con contraseña?" #: i2p2www/pages/site/faq.html:35 i2p2www/pages/site/faq.html:474 @@ -1667,7 +1655,7 @@ msgid "" msgstr "" "Aunque se sabe que I2P se ha ejecutado en un pc tan exiguo como un " "Pentium II con 64Mb de RAM, tendrá una experiencia mucho mas gratificante" -" en un Pentium III ( o mas nuevo) con 128MB de RAM (o más). Puede " +" en un Pentium III ( o más nuevo) con 128MB de RAM (o más). Puede " "encontrar una tabla comparativa" " de rendimientos de varios JREs en http://%(trac)s/wiki/java, " @@ -1681,7 +1669,7 @@ msgid "" msgstr "" "I2P ha sido probado en Linux, Windows, FreeBSD ( vea la nota de abajo), OSX y Opensolaris. Se está trabajando " -"para llevar I2P a la plataforma Android" +"para llevar I2P a la plataforma Android." #: i2p2www/pages/site/faq.html:65 msgid "Here are some places, pick one or more." @@ -1707,7 +1695,7 @@ msgid "" msgstr "" "La suscripción por defecto es http://www.i2p2.i2p/hosts.txt que raramente" " se actualiza. Si no tiene otra suscripción, a menudo tendrá que utilizar" -" el servicio de \\\"salto\\\" que es poco molesto." +" el servicio de \\\"salto\\\" que es un poco molesto." #: i2p2www/pages/site/faq.html:87 msgid "" @@ -1789,8 +1777,8 @@ msgid "" msgstr "" "Intente usar OpenJDK o Java de Sun/Oracle si está disponible en su " "sistema. Puede ver la versión instalada en su sistema ejecutando " -"java -version en la terminal.El rendimiento tiende a sufrir " -"con otras implementaciones de java." +"java -version en la terminal. El rendimiento tiende a sufrir" +" con otras implementaciones de java." #: i2p2www/pages/site/faq.html:138 msgid "" @@ -1847,9 +1835,9 @@ msgid "" "If it's pegged, this could be a bug. Look in the logs for clues." msgstr "" "¿Es simplemente el uso de CPU mayor del que le gustaría, o lleva mucho " -"tiempo clavado en 100%?\n" -"Si está clavado, esto podría ser un fallo (`bug`). Busque pistas en los " -"registros (`logs`)." +"tiempo fijo al 100%?\n" +"Si está fijo, esto podría ser un fallo, 'bug'. Busque pistas en los " +"registros, 'logs'." #: i2p2www/pages/site/faq.html:167 #, python-format @@ -1880,7 +1868,7 @@ msgid "" "href=\"http://localhost:7657/configadvanced.jsp\">configadvanced.jsp." msgstr "" "Si su librería jbigi nativa funciona bien, el uso excesivo de la CPU " -"podría ser debido al tráfico enrutado de los túneles usados. Esto usa CPU" +"podría ser debido al tráfico enrutado de los túneles usados. Este usa CPU" " porque en cada salto se debe decodificar una capa del cifrado. Puede " "limitar el tráfico usado de dos formas - reduciendo el ancho de banda " "compartido en Distribución - Todo el tráfico sobre I2P está cifrado en múltiples" " capas. Usted no conoce el contenido de ningún mensaje, ni su origen o\n" -"destino. Todo el tráfico que enrute es interno a red I2P si usted no es " -"un \n" +"destino. Todo el tráfico que enrute es interno a la red I2P si usted no " +"es un \n" "nodo de salida (`outproxy`). Su única alternativa " "es \n" "rehusar a enrutar cualquier tráfico, configurando su ancho de " "banda \n" -"compartido o su máximo de túneles participantes a 0 (vea arriba). Estaría" -" \n" +"compartido, o su máximo de túneles participantes a 0 (vea arriba). " +"Estaría \n" "bien si no lo hace, debería ayudar a la red enrutando el tráfico de " "otros. Más \n" "de 95% usuarios enrutan tráfico para otros." @@ -1996,14 +1984,14 @@ msgid "" msgstr "" "El enlace de resiembra cambió hace unos años. Si es su primera " "instalación y ha instalado una versión vieja (0.6.1.30 o anterior), o no " -"ha ejecutado I2P durante mucho tiempo , debe cambiar el enlace y entonces" -" pulsar \\\"Resembrar\\\" en la consola para encontrar otros rutes. " +"ha ejecutado I2P durante mucho tiempo, debe cambiar el enlace y entonces " +"pulsar \\\"Resembrar\\\" en la consola para encontrar otros rutes. " "Después de tener el ruter funcionando, en configadvanced.jsp," " añada la línea i2p.reseedURL=http://netdb.i2p2.de/ o " "i2p.reseedURL=http://i2pdb.tin0.de/netDb/ (cualquiera debería " -"funcionar), y entonces pulse en \\\"Aplicar\\\", entonces pulse el enlace" -" \\\"Resembrar\\\" a la izquierda." +"funcionar), y entonces pulse en \\\"Aplicar\\\", después pulse el enlace " +"\\\"Resembrar\\\" a la izquierda." #: i2p2www/pages/site/faq.html:248 #, python-format @@ -2077,12 +2065,11 @@ msgid "" msgstr "" "No. Al contrario que Tor, los" " \n" -"\"nodos de salida\" o los \"proxys externos\" (`outproxies`) no son una " +"\"nodos de salida\" o los \"proxys externos\", 'outproxies' no son una " "parte \n" -"inherente de la red. Sólo voluntarios que hayan configuradio y ejecutado" -" \n" -"aplicaciones separadas repetirán tráfico a la Interneet regular. Hay muy," -" muy\n" +"inherente de la red. Sólo voluntarios que hayan configurado y ejecutado \n" +"aplicaciones separadas repetirán tráfico a la Internet regular. Hay muy, " +"muy\n" "pocos de estos." #: i2p2www/pages/site/faq.html:283 @@ -2104,7 +2091,7 @@ msgid "" "on the regular Internet, you should probably try Tor." msgstr "" -"Vea arriba. Hay muy pocos proxys al exterior HTTP (`outproxies`), no son" +"Vea arriba. Hay muy pocos proxys al exterior HTTP \"outproxies\", no son" " \n" "una parte inherente de la red, y pueden no estar activos. Además, los \n" "antiguos outproxies squid.i2p, true.i2p, y krabs.i2p se han desvanecido. " @@ -2117,9 +2104,9 @@ msgstr "" "exterior \n" "a `false.i2p' (sólo). Luego pare y reinice el eepProxy. Si no funciona, " "el \n" -"proxy al exterior no está activo. No es un fallo de IP2. Si su razón " +"proxy al exterior no está activo. No es un fallo de I2P. Si su razón " "principal \n" -"para suar una red anónima es acceder anónimamente a sitios en la \n" +"para usar una red anónima es acceder anónimamente a sitios en la \n" "Internet regular, probablemente debería probar con Tor." @@ -2277,10 +2264,10 @@ msgid "" "There is additional discussion about this on %(zzz)s." msgstr "" -"Además puede tener problemas por la confabulación del operador del " -"outproxy y operadores de otros servicios de I2P si utiliza los mismos " -"túneles (\\\"shared clients\\\"). Hay una discusión adicional sobre esto " -"en %(zzz)s." +"Además puede tener problemas por la confabulación entre el operador del " +"outproxy y los operadores de otros servicios de I2P si utiliza los mismos" +" túneles (\\\"shared clients\\\"). Hay una discusión adicional sobre esto" +" en %(zzz)s." #: i2p2www/pages/site/faq.html:368 msgid "" @@ -2294,8 +2281,8 @@ msgstr "" "A menos que su proxy al exterior haya sido configurado para el servicio " "al \n" "que quieres conectarse, esto no puede hacerse. Hay sólo tres tipos de \n" -"proxys al exterior (`outproxies`) ejecutandose en este instante: HTTP, \n" -"HTTPS, e email. Observe que no hay un proxy al exterior SOCKS. Si se \n" +"proxys al exterior, 'outproxies', ejecutándose en este instante: HTTP, \n" +"HTTPS, y email. Observe que no hay un proxy al exterior SOCKS. Si se \n" "requiere este tipo de servicio, pruebe con Tor." @@ -2312,7 +2299,7 @@ msgstr "" "Si consideramos cada eepsite que ha sido creada, sí, la mayoría de ellas " "están caídas. La gente y las eepsites van y vienen. Una buena forma de " "comenzar en I2P es ver la lista de las eepsites que están funcionando. %(eepstatus)s una la lista de las eepsites " +" href=\"%(eepstatus)s\">%(eepstatus)s Una la lista de las eepsites " "activas. " #: i2p2www/pages/site/faq.html:385 @@ -2563,7 +2550,7 @@ msgid "" "\n" "extremely dangerous." msgstr "" -"Además muchas aplicaciones tienen fugas de información sensible, " +"Además, muchas aplicaciones tienen fugas de información sensible, " "información que podría identificarle en Internet. I2P sólo filtra los " "datos de conexión, pero si el programa que ejecuta envía esta " "información, I2P no tiene forma de proteger su anonimato. Por ejemplo, " @@ -2634,7 +2621,7 @@ msgid "" msgstr "" "(opcional pero recomendado) UDP de entrada hacia el puerto indicado en" " la página de " -"configuración desde ubicaciones arbitrarias" +"configuración desde ubicaciones arbitrarias" #: i2p2www/pages/site/faq.html:561 msgid "" @@ -2646,7 +2633,7 @@ msgid "" msgstr "" "(opcional pero recomendado) TCP de entrada hacia el puerto indicado en" " la página de " -"configuración desde ubicaciones arbitrarias.
    TCP de entrada " +"configuración desde ubicaciones arbitrarias.
    TCP de entrada " "puede estar deshabilitado en la página de configuración" @@ -2658,8 +2645,8 @@ msgid "" "server you specify)" msgstr "" "Puerto 123 de salida UDP, permitiendo respuestas
    Este es " -"necesario para la sincronización del reloj de I2P ( via SNTP- consultando" -" un host SNTP aleatorio en pool.ntp.org u otro servidor que especifique)" +"necesario para la sincronización del reloj de I2P (via SNTP- consultando " +"un host SNTP aleatorio en pool.ntp.org u otro servidor que especifique)" #: i2p2www/pages/site/faq.html:578 msgid "" @@ -2880,7 +2867,7 @@ msgstr "" "incrementa hasta 31999 buscando un puerto libre. Para cambiarlo vea la documentación del wrapper. Para mas información vea mas abajo." +"href=\"#port32000\">más abajo." #: i2p2www/pages/site/faq.html:707 msgid "" @@ -2893,7 +2880,7 @@ msgstr "" "32000: Canal de conexión local para el servicio wrapper. Para" " cambiarlo vea la decumentación del wrapper.. Para mas información " -"vea mas abajo." +"vea más abajo." #: i2p2www/pages/site/faq.html:719 msgid "" @@ -2910,7 +2897,7 @@ msgstr "" "Los puertos locales de I2P y los puertos de I2PTunnel no necesitan ser " "accesibles desde máquinas remotas, pero *deberían* ser accesibles " "localmente. Además puede crear también puertos adicionales para " -"instancias I2PTunnel vía http://localhost:7657/i2ptunnel/ ( y a su vez, " +"instancias I2PTunnel vía http://localhost:7657/i2ptunnel/ (y a su vez, " "necesitará permitir en su cortafuegos el acceso local, pero no remoto, a " "no ser que lo desee así)." @@ -2928,8 +2915,8 @@ msgid "" "only hurts you - don't do it)." msgstr "" "Resumiendo, nada necesita ser accesible por pares remotos que no hayan " -"sido solicitados, pero, si puede configurar son NAT/cortafuegos para " -"permitir conexiones de entrada UDP y TCP hacia lospuertos de escucha de salida, " "tendrá mejor rendimiento. También necesitará ser capaz de enviar paquetes" " UDP de salida a pares remotos arbitrarios ( bloqueando IPs " @@ -2952,7 +2939,7 @@ msgid "" msgstr "" "El servicio wrapper java Tunaki que usamos abre este puerto " "—escuchando en localhost—para poder comunicarse con " -"aplicaciones dentro de la JVM máquina virtual de java. Cuando la JVM " +"aplicaciones dentro de la JVM, máquina virtual de java. Cuando la JVM " "arranca se la da una clave para poder conectarse al wrapper. Después de " "que la JVM establezca la conexión con el wrapper, el wrapper rechaza " "cualquier conexión adicional." @@ -2989,8 +2976,8 @@ msgid "" "things,\n" "if your firewall limits outbound traffic, and blocked the reseed request." msgstr "" -"Un síntoma típico de resembrado fallido es el indicador \"Conocidos\" ( " -"en la parte izquierda del la consola del ruter) mostrando un valor muy " +"Un síntoma típico de resembrado fallido es el indicador \"Conocidos\" (en" +" la parte izquierda del la consola del ruter) mostrando un valor muy " "pequeño (normalmente menos de 5) que no aumenta.. Esto puede ocurrir, " "además de por otras razones, si su cortafuegos limita el tráfico de " "salida, y ha bloqueado las solicitudes de resembrado." @@ -3001,7 +2988,7 @@ msgstr "Para resembrar el ruter I2P manualmente haga lo siguiente:" #: i2p2www/pages/site/faq.html:767 msgid "Stop your I2P router" -msgstr "Para el ruter I2P" +msgstr "Parar el ruter I2P" #: i2p2www/pages/site/faq.html:770 msgid "" @@ -3015,7 +3002,7 @@ msgstr "" msgid "Save a dozen \"routerInfo\" files to your I2P \"netDb\" directory" msgstr "" "Guarde una docena de archivos \"routerInfo\" en el directorio \"netDb\" " -"de su I2P" +"de I2P" #: i2p2www/pages/site/faq.html:780 msgid "Start your I2P router" @@ -3042,7 +3029,7 @@ msgid "" msgstr "" "\n" "En el intento de hacer que I2P funcione en el mayor número de sistemas " -"posibles, hasta I2P 0.8.9 usamos un wrapper java compilado " "por FreeBSD 6.x. Si recibe este error lo mas probable es que le falten " "las librerías necesarias. Esas librerías pueden instalarse siguiendo los " @@ -3104,7 +3091,7 @@ msgid "" "On Linux based systems, you can echo 0 > " "/proc/sys/net/ipv6/bindv6only" msgstr "" -"En sistemas basados en Linix puede ejecutar echo 0 > " +"En sistemas basados en Linux puede ejecutar echo 0 > " "/proc/sys/net/ipv6/bindv6only" #: i2p2www/pages/site/faq.html:825 @@ -3199,6 +3186,9 @@ msgid "" "intended to protect communication against dragnet surveillance, and " "monitoring by third parties such as ISPs.\n" msgstr "" +"I2P es una red anónima superpuesta - una red dentro de otra red. Ha sido " +"creada para proteger las comunicaciones contra la vigilancia y el " +"monitoreo por parte de terceras partes como los ISPs.\n" #: i2p2www/pages/site/index.html:18 msgid "" @@ -3206,6 +3196,9 @@ msgid "" "oppressed people, journalists and whistle-blowers - as well as the " "average person.\n" msgstr "" +"I2P es usado por mucha gente que se preocupa de su privacidad: " +"activistas, personas oprimidas, periodistas y personas que denuncian la " +"corrupción - aunque también por la gente común.\n" #: i2p2www/pages/site/index.html:21 msgid "" @@ -3213,6 +3206,9 @@ msgid "" "The continued goal of I2P is to make attacks more and more expensive to " "mount.\n" msgstr "" +"El anonimato no es una variable binaria, no es 'si o no'. Ninguna red " +"puede ser \"perfectamente anónima\". El fin de I2P es hacer que los " +"ataques sean más y más caros de llevar a cabo.\n" #: i2p2www/pages/site/index.html:24 msgid "" @@ -3230,10 +3226,13 @@ msgid "" " the network increases and with ongoing academic review. Help spread the " "word!\n" msgstr "" +"I2P es un trabajo en curso. Su anonimato se volverá más fuerte según " +"crezca el tamaño de lar red y aumenten los estudios académicos. ¡Ayude a " +"correr la voz!\n" #: i2p2www/pages/site/index.html:31 msgid "Read more…" -msgstr "Leer mas…" +msgstr "Leer más…" #: i2p2www/pages/site/index.html:36 msgid "What can you do with I2P?" @@ -3245,6 +3244,8 @@ msgid "" "Email: Integrated web mail interface," " plugin for serverless email." msgstr "" +"EmailInterfaz de correo web " +"integrado, pluguin para emails sin servidor, 'serverless'." #: i2p2www/pages/site/index.html:44 #, python-format @@ -3252,6 +3253,8 @@ msgid "" "Web browsing: Anonymous " "websites, gateways to and from the public Internet." msgstr "" +"Navegación web Webs anónimas, " +"gateways o puertas de salida, desde y hacia el Internet público." #: i2p2www/pages/site/index.html:49 #, python-format @@ -3259,6 +3262,8 @@ msgid "" "Blogging and forums: " "Blogging and Syndie plugins." msgstr "" +"Blogs y foros Blogs y " +"pluguins Syndie." #: i2p2www/pages/site/index.html:54 #, python-format @@ -3266,6 +3271,8 @@ msgid "" "Website hosting: Integrated" " anonymous web server." msgstr "" +"Alojamiento web Servidor " +"web anónimo integrado. " #: i2p2www/pages/site/index.html:59 #, python-format @@ -3273,6 +3280,8 @@ msgid "" "Real-time chat: Instant " "messaging and IRC clients." msgstr "" +"Chat en tiempo real " +"Mensajería instantánea y clientes IRC." #: i2p2www/pages/site/index.html:64 #, python-format @@ -3280,6 +3289,8 @@ msgid "" "File sharing: ED2K and " "Gnutella clients, integrated BitTorrent client." msgstr "" +"Intercambio de archivos " +"Clientes ED2K y Gnutella, cliente de BitTorrent integrado." #: i2p2www/pages/site/index.html:69 #, python-format @@ -3287,6 +3298,9 @@ msgid "" "Decentralized file " "storage: Tahoe-LAFS distributed filesystem plugin." msgstr "" +"Almacenamiento de " +"archivos descentralizado Pluguin para el sistema de archivos " +"distribuido Tahoe-LAFS." #: i2p2www/pages/site/index.html:74 #, python-format @@ -3309,7 +3323,7 @@ msgid "" " I2P." msgstr "" "Vea también la web con a href=\"%(media)s\">enlaces a presentaciones, " -"vídeos, y tutoriales sobre I2P." +"vídeos, y manuales sobre I2P." #: i2p2www/pages/site/links.html:12 msgid "Friends of I2P" diff --git a/i2p2www/translations/fr/LC_MESSAGES/about.po b/i2p2www/translations/fr/LC_MESSAGES/about.po index 3680ef0a..55d8ebf5 100644 --- a/i2p2www/translations/fr/LC_MESSAGES/about.po +++ b/i2p2www/translations/fr/LC_MESSAGES/about.po @@ -10,7 +10,7 @@ msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" "POT-Creation-Date: 2013-09-01 03:42+0000\n" -"PO-Revision-Date: 2013-08-11 16:29+0000\n" +"PO-Revision-Date: 2013-09-04 23:57+0000\n" "Last-Translator: Boxoa590\n" "Language-Team: French " "(http://www.transifex.com/projects/p/I2P/language/fr/)\n" @@ -204,18 +204,13 @@ msgstr "" "être inaccessibles à tout moment.
    " #: i2p2www/pages/site/about/browser-config.html:83 -#, fuzzy, python-format +#, python-format msgid "" "By default, I2P comes with two outproxies configured: " "%(http)s\n" "(an HTTP-only proxy) and %(https)s (an HTTPS proxy\n" "routed through Tor." msgstr "" -"D'origine, I2P est livré avec deux outproxies configurés : " -"false.i2p\n" -"(un proxy HTTP-seulement) et outproxyng.h2ik.i2p (un proxy " -"HTTPS\n" -"acheminé à travers Tor." #: i2p2www/pages/site/about/browser-config.html:88 msgid "" @@ -686,6 +681,27 @@ msgid "" "the \n" "receiver's threat model." msgstr "" +"Pour anonymiser les messages envoyés, chaque application cliente fait " +"construire à son \"routeur\" I2P\n" +"quelques \"tunnels\" entrants et " +"sortants - une\n" +"séquence de pairs qui passent des messages dans un sens (vers et à partir" +" du client,\n" +"respectivement). À son tour, quand un client veut envoyer un message à un" +" autre client,\n" +"le client transmet ce message sur l'un des tunnels sortants ciblant l'un " +"des\n" +"tunnels entrants d'autres clients, pour finalement atteindre la " +"destination. Chaque\n" +"participant au réseau choisit la longueur de ses tunnels, et, ce faisant," +"\n" +"fait un compromis entre anonymat, latence, et débit, en fonction de leurs" +"\n" +"besoins propres. Le résultat est que le nombre de pairs relayant chaque " +"message\n" +"d'extrémité en extrémité soit le strict minimum nécessaire pour répondre " +"au modèle de menace\n" +"à la fois de l'expéditeur et du récepteur." #: i2p2www/pages/site/about/intro.html:33 #, python-format @@ -709,10 +725,12 @@ msgstr "" #, python-format msgid "More details about how I2P works are available." msgstr "" +"Plus de détails sur la façon dont I2P fonctionne sont disponibles." #: i2p2www/pages/site/about/intro.html:48 msgid "What can you do with it?" -msgstr "" +msgstr "Que pouvez-vous faire avec ?" #: i2p2www/pages/site/about/intro.html:50 #, python-format @@ -728,6 +746,17 @@ msgid "" " \n" "forward them towards a specific TCP/IP address." msgstr "" +"Dans le réseau I2P, les applications ne sont pas restreintes dans la " +"façon dont elles peuvent\n" +"communiquer - celles qui utilisent habituellement UDP peut faire usage de" +" la fonctionnalité I2P\n" +"de base, et celles qui utilisent généralement TCP peuvent utiliser le " +"protocole bibliothèque streaming\n" +"TCP-like. Nous avons une application pont TCP/I2P générique\n" +"(\"I2PTunnel\") qui permet aux gens de " +"transmettre des flux TCP\n" +"dans le réseau I2P ainsi que de recevoir des flux depuis le réseau et\n" +"de les transmettre vers une adresse TCP / IP spécifique." #: i2p2www/pages/site/about/intro.html:60 msgid "" @@ -803,10 +832,28 @@ msgid "" "describes \n" "our schedule." msgstr "" +"L'équipe de développement I2P est un groupe " +"ouvert, bienvenue à tous\n" +"ceux qui sont intéressés à s'impliquer , et" +" tout\n" +"le code est open source. Le noyau I2P SDK et" +"\n" +"la mise en œuvre actuelle du routeur sont faites en Java (qui marche " +"actuellement avec\n" +"soleil et kaffe, support gcj prévu pour plus tard), et il y a une\n" +"API basée sur socket simple pour accéder au " +"réseau depuis\n" +"d'autres langues (avec une bibliothèque en langage C, tandis que Python " +"et Perl sont\n" +"en  développement). Le réseau est activement développé et n'a pas encore " +"atteint\n" +"la version 1.0, mais l'actuelle feuille de " +"route décrit\n" +"notre calendrier." #: i2p2www/pages/site/about/media.html:2 i2p2www/pages/site/about/media.html:4 msgid "Presentations on I2P" -msgstr "" +msgstr "Présentations sur I2P" #: i2p2www/pages/site/about/media.html:5 #, python-format @@ -815,21 +862,26 @@ msgid "" "Links to research papers on I2P are available here." msgstr "" +"Ce qui suit sont des liens vers des présentations, des vidéos et des " +"tutoriels sur I2P. Des liens vers des documents de recherche sur I2P sont" +" disponibles ici." #: i2p2www/pages/site/about/media.html:8 #, python-format msgid "To request an addition to this page, please send to %(email)s." -msgstr "" +msgstr "Pour demander un ajout à cette page, s'il vous plaît envoyez à %(email)s." #: i2p2www/pages/site/about/media.html:11 msgid "" "\n" "Newest links are at the bottom of each section." msgstr "" +"\n" +"Les nouveaux liens sont au bas de chaque section." #: i2p2www/pages/site/about/media.html:16 msgid "Presentations" -msgstr "" +msgstr "Présentations" #: i2p2www/pages/site/about/media.html:19 #, python-format @@ -839,6 +891,10 @@ msgid "" "transcript\n" "Lance James (0x90), February 2002." msgstr "" +"IIP Présentation à Codecon\n" +"audio MP3\n" +"transcription\n" +"Lance James (0x90), Février 2002." #: i2p2www/pages/site/about/media.html:27 #, python-format @@ -848,6 +904,10 @@ msgid "" "slides\n" "Lance James (0x90), September 2002." msgstr "" +"Présentation IIP à ToorCon⏎\n" +"audio MP3⏎\n" +"diapositives⏎\n" +" Lance James (0x90), Septembre 2002." #: i2p2www/pages/site/about/media.html:35 #, python-format @@ -858,6 +918,11 @@ msgid "" "To Be or I2P (PDF presentation),\n" "Jens Kubieziel, 24C3 Berlin, December 28, 2007." msgstr "" +"Être ou I2P (To Be or I2P)\n" +"(Vidéo Youtube)\n" +"Une introduction à la communication anonyme avec I2P.\n" +"To Be or I2P(PDF présentation) ,\n" +"Jens Kubieziel, 24C3 Berlin, le 28 Décembre 2007." #: i2p2www/pages/site/about/media.html:44 #, python-format @@ -866,6 +931,9 @@ msgid "" "Lars Schimmer,\n" "March 14-15, 2009" msgstr "" +"Vidéo du discours I2P à Chemnitz Linux Tag ,\n" +"Lars Schimmer,\n" +"14 au 15 mars 2009" #: i2p2www/pages/site/about/media.html:50 #, python-format @@ -875,6 +943,10 @@ msgid "" "\"Hackers for Human Rights\".\n" "MP3 audio" msgstr "" +"HOPE New York 17 Juillet 2010 - Bref aperçu de I2P par zzz, à la fin de " +"l'exposé de Adrian Hong\n" +"\"Des hackers pour les droits de l'homme\".\n" +"audio MP3 " #: i2p2www/pages/site/about/media.html:56 #, python-format @@ -882,6 +954,9 @@ msgid "" "Into the I2P Darknet: Welcome to Cipherspace\n" "Adrian Crenshaw. Schmoocon Firetalk, January 2011" msgstr "" +"Into the I2P Darknet : Bienvenue au Cipherspace " +"\n" +"Adrian Crenshaw. Schmoocon Firetalk, Janvier 2011" #: i2p2www/pages/site/about/media.html:61 #, python-format @@ -893,6 +968,13 @@ msgid "" " 2011.\n" "I2P covered from 10:00 to 20:00 in the video." msgstr "" +"Utiliser la technologie pour faire avancer la " +"liberté\n" +"(Vidéo Youtube)\n" +"Eric Johnson. \n" +"a href=\"http://agora.io/etienne\"> Agora I/O Unconference, le 27 " +"Mars 2011. \n" +"I2P couvert de 10:00 à 20:00 dans la vidéo." #: i2p2www/pages/site/about/media.html:69 #, python-format @@ -900,6 +982,8 @@ msgid "" "The Bright side of darknets, FOSSCOMM Patras May " "2011" msgstr "" +"Le côté lumineux des darknets (The Bright side of " +"darknets), FOSSCOMM Patras mai 2011" #: i2p2www/pages/site/about/media.html:73 #, python-format @@ -909,6 +993,11 @@ msgid "" "Adrian Crenshaw, AIDE, July " "11-15, 2011." msgstr "" +"Faiblesses communes du darknet (Common Darknet " +"Weaknesses)\n" +"(Vidéo Youtube)\n" +"Adrian Crenshaw, AIDE, 11-15 " +"Juillet 2011." #: i2p2www/pages/site/about/media.html:79 #, python-format @@ -916,6 +1005,8 @@ msgid "" "I2P / Tor Workshop Notes\n" "Adrian Crenshaw. DEF CON 19, Las Vegas, August 6, 2011." msgstr "" +" I2P / Tor notes d'atelier\n" +"Adrian Crenshaw. DEF CON 19, Las Vegas, 6 Août 2011." #: i2p2www/pages/site/about/media.html:84 #, python-format @@ -927,16 +1018,24 @@ msgid "" "Slides (ppt)\n" "Adrian Crenshaw. DEF CON 19, Las Vegas, August 7, 2011." msgstr "" +" Cipherspaces / Darknets : un aperçu des stratégies " +"d'attaque -\n" +"DEF CON Live version (vidéo Youtube) ,\n" +"Version \"Studio\" (vidéo Youtube) ,\n" +"Diapositives (ppt)\n" +"Adrian Crenshaw. DEF CON 19, Las Vegas, 7 Août 2011." #: i2p2www/pages/site/about/media.html:94 msgid "" "Modern cipherspace ecosystems, 0x375 " "0x06 4/11/2011" msgstr "" +"Ecosystèmes cipherspace modernes, 0x375" +" 0x06 4/11/2011" #: i2p2www/pages/site/about/media.html:100 msgid "Tutorials" -msgstr "" +msgstr "Tutorials" #: i2p2www/pages/site/about/media.html:103 #, python-format @@ -946,6 +1045,10 @@ msgid "" "This guide will show you how to install I2P in Windows XP.\n" "By Telecomix" msgstr "" +"Tutorial I2P sous Windows\n" +"(Vidéo Youtube)\n" +"Ce guide va vous montrer comment installer I2P sous Windows XP.\n" +"Par Telecomix" #: i2p2www/pages/site/about/media.html:111 #, python-format @@ -955,6 +1058,11 @@ msgid "" "This will guide you through how to install I2P on a Debian Linux System.\n" "By Telecomix" msgstr "" +"Tutorial I2P Debian\n" +"(Vidéo Youtube)\n" +"Cela vous guidera à travers l'installation de I2P sur un système Debian " +"Linux.\n" +"Par Telecomix" #: i2p2www/pages/site/about/media.html:119 #, python-format @@ -964,6 +1072,11 @@ msgid "" "How to set up an anonymous web site in I2P.\n" "By Telecomix" msgstr "" +"Comment mettre en place un site anonyme dans I2P" +"\n" +"(Vidéo Youtube)\n" +"Comment mettre en place un site web anonyme dans I2P.\n" +"Par Telecomix" #: i2p2www/pages/site/about/media.html:126 #, python-format @@ -974,6 +1087,11 @@ msgid "" "irc.telecomix.i2p.\n" "By Telecomix" msgstr "" +"Tutorial I2P Mac OS X\n" +"(Vidéo Youtube)\n" +"Un tutorial sur la façon d'exécuter I2P sur Mac OS X et comment se " +"connecter à irc.telecomix.i2p.\n" +"Par Telecomix" #: i2p2www/pages/site/about/media.html:133 #, python-format @@ -984,6 +1102,11 @@ msgid "" "Agent Felix Atari of the Telecomix Crypto Munitions Bureau.\n" "By Telecomix" msgstr "" +"Felix Atari explique les principes de base de " +"I2P\n" +"(Vidéo Youtube)\n" +"Agent Felix Atari du Telecomix Crypto Munitions Bureau.\n" +"Par Telecomix" #: i2p2www/pages/site/about/media.html:140 #, python-format @@ -994,6 +1117,11 @@ msgid "" "This tutorial shows how to install and configure software needed to " "access I2P." msgstr "" +" Comment aller sur I2P, le darknet P2P anonyme " +"(Installeur Windows) \n" +"(Vidéo Youtube)\n" +"Ce tutoriel montre comment installer et configurer le logiciel nécessaire" +" pour accéder à I2P." #: i2p2www/pages/site/about/media.html:146 #, python-format @@ -1002,6 +1130,9 @@ msgid "" "(Youtube Video)\n" "How to install I2P on Ubuntu." msgstr "" +"Comment se connecter à I2P\n" +"(Vidéo Youtube)\n" +"Comment installer I2P sur Ubuntu." #: i2p2www/pages/site/about/media.html:152 #, python-format @@ -1011,6 +1142,10 @@ msgid "" "Adrian Crenshaw.\n" "January 2011" msgstr "" +"Installation du logiciel darknet I2P sous Linux\n" +"(Vidéo)\n" +"Adrian Crenshaw.\n" +"janvier 2011" #: i2p2www/pages/site/about/media.html:159 #, python-format @@ -1019,6 +1154,9 @@ msgid "" "(Youtube Video)\n" "Adrian Crenshaw.\n" msgstr "" +"Courte animation du routage en oignon\n" +"(Vidéo Youtube)\n" +"Adrian Crenshaw.\n" #: i2p2www/pages/site/about/media.html:167 msgid "Articles and Interviews" @@ -1115,7 +1253,7 @@ msgstr "" #: i2p2www/pages/site/about/team.html:15 msgid "Project Manager" -msgstr "" +msgstr "Chef de projet" #: i2p2www/pages/site/about/team.html:17 msgid "point of contact of last resort" @@ -1123,7 +1261,7 @@ msgstr "" #: i2p2www/pages/site/about/team.html:20 msgid "Treasurer" -msgstr "" +msgstr "Trésorier" #: i2p2www/pages/site/about/team.html:22 msgid "manage donations / accounts / bounties" @@ -1131,11 +1269,11 @@ msgstr "" #: i2p2www/pages/site/about/team.html:25 msgid "PR manager" -msgstr "" +msgstr "Responsable des relations publiques" #: i2p2www/pages/site/about/team.html:27 msgid "press contact, manages public relations and affairs" -msgstr "" +msgstr "contact presse, gère les relations publiques et les affaires" #: i2p2www/pages/site/about/team.html:30 #, python-format @@ -1152,16 +1290,16 @@ msgstr "" #: i2p2www/pages/site/about/team.html:37 msgid "manage the project mirrors" -msgstr "" +msgstr "gére les miroirs du projet" #: i2p2www/pages/site/about/team.html:40 #, python-format msgid "Monotone guru" -msgstr "" +msgstr "Monotone guru" #: i2p2www/pages/site/about/team.html:42 msgid "manage the public monotone repositories" -msgstr "" +msgstr "gére les référentiels monotones publics" #: i2p2www/pages/site/about/team.html:45 msgid "Packager; Linux" @@ -1356,7 +1494,7 @@ msgstr "" #: i2p2www/pages/site/about/team.html:149 msgid "eMule client over I2P" -msgstr "" +msgstr "Client eMule sur I2P" #: i2p2www/pages/site/about/team.html:152 #, python-format @@ -1385,7 +1523,7 @@ msgstr "" #: i2p2www/pages/site/about/team.html:167 msgid "SAM" -msgstr "" +msgstr "SAM" #: i2p2www/pages/site/about/team.html:169 msgid "SAM maintainer" @@ -1397,11 +1535,11 @@ msgstr "" #: i2p2www/pages/site/about/team.html:174 msgid "C++ Router" -msgstr "" +msgstr "Routeur C++" #: i2p2www/pages/site/about/team.html:177 msgid "Console Translations" -msgstr "" +msgstr "Traductions console" #: i2p2www/pages/site/about/team.html:179 msgid "Chinese" @@ -1409,7 +1547,7 @@ msgstr "Chinois" #: i2p2www/pages/site/about/team.html:183 msgid "Dutch" -msgstr "" +msgstr "Néerlandais" #: i2p2www/pages/site/about/team.html:187 msgid "French" @@ -1433,7 +1571,7 @@ msgstr "Arabe" #: i2p2www/pages/site/about/team.html:207 msgid "Other languages" -msgstr "" +msgstr "Autres langues" #: i2p2www/pages/site/about/team.html:210 msgid "Contributors" diff --git a/i2p2www/translations/fr/LC_MESSAGES/priority.po b/i2p2www/translations/fr/LC_MESSAGES/priority.po index 6c368032..f675faa7 100644 --- a/i2p2www/translations/fr/LC_MESSAGES/priority.po +++ b/i2p2www/translations/fr/LC_MESSAGES/priority.po @@ -10,8 +10,8 @@ msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" "POT-Creation-Date: 2013-09-04 14:19+0000\n" -"PO-Revision-Date: 2013-09-04 14:25+0000\n" -"Last-Translator: str4d \n" +"PO-Revision-Date: 2013-09-04 23:49+0000\n" +"Last-Translator: Boxoa590\n" "Language-Team: French " "(http://www.transifex.com/projects/p/I2P/language/fr/)\n" "Plural-Forms: nplurals=2; plural=(n > 1)\n" @@ -560,6 +560,10 @@ msgid "" "from\n" " str4d's eepsite." msgstr "" +"Le fichier ci-dessus est l'actuelle version construite.\n" +"La version dev la plus récente est 0.9.7-20_b1-API18, et est disponible " +"depuis\n" +"le Eepsite de str4d." #: i2p2www/pages/downloads/list.html:122 msgid "" @@ -568,6 +572,11 @@ msgid "" "installing\n" " the other." msgstr "" +"Les versions release et dev des APK de I2P ne sont pas compatibles, car " +"elles⏎\n" +"sont signées respectivement par zzz et str4d. Désinstallez l'une avant " +"d'installer⏎\n" +"l'autre." #: i2p2www/pages/downloads/list.html:132 msgid "Source package" @@ -947,7 +956,7 @@ msgstr "Faire un don" #: i2p2www/pages/global/layout.html:29 msgid "Skip navigation" -msgstr "" +msgstr "Passer la navigation" #: i2p2www/pages/global/layout.html:32 msgid "I2P Logo" @@ -2405,6 +2414,12 @@ msgid "" " currently up.\n" "%(eepstatus)s tracks active eepsites." msgstr "" +"Si vous considérez chaque eepsite qui aie jamais été créé, oui, la " +"plupart d'entre eux sont en hors d'accès - down -.\n" +"Les gens et les eepsites vont et viennent.\n" +"Une bonne façon de se lancer dans I2P est de vérifier une liste de " +"eepsites qui sont actuellement en place.\n" +"%(eepstatus)s piste les eepsites actifs." #: i2p2www/pages/site/faq.html:385 msgid "" @@ -3376,6 +3391,10 @@ msgid "" "intended to protect communication against dragnet surveillance, and " "monitoring by third parties such as ISPs.\n" msgstr "" +"I2P est un réseau superposé anonyme - un réseau au sein d'un réseau. Il " +"est destiné à protéger les communications contre la surveillance par " +"rafle - dragnet surveillance -, et la surveillance par des tiers tels que" +" les fournisseurs de services Internet.\n" #: i2p2www/pages/site/index.html:18 msgid "" @@ -3383,6 +3402,9 @@ msgid "" "oppressed people, journalists and whistle-blowers - as well as the " "average person.\n" msgstr "" +"I2P est utilisé par beaucoup de gens qui se soucient de leur vie privée :" +" des militants, des peuples opprimés, des journalistes et des " +"dénonciateurs - ainsi que la personne ordinaire.\n" #: i2p2www/pages/site/index.html:21 msgid "" @@ -3390,6 +3412,9 @@ msgid "" "The continued goal of I2P is to make attacks more and more expensive to " "mount.\n" msgstr "" +"L'anonymat n'est pas un booléen. Aucun réseau ne peut être \"parfaitement" +" anonyme\". L'objectif continu de I2P est de rendre les attaques de plus " +"en plus coûteuses à monter.\n" #: i2p2www/pages/site/index.html:24 msgid "" @@ -3407,6 +3432,9 @@ msgid "" " the network increases and with ongoing academic review. Help spread the " "word!\n" msgstr "" +"I2P est un travail en cours. Son anonymat deviendrra d'autant plus fort " +"que la taille du réseau augmente et avec les études académique en cours. " +"Faites passer le mot !\n" #: i2p2www/pages/site/index.html:31 msgid "Read more…" @@ -3422,6 +3450,8 @@ msgid "" "Email: Integrated web mail interface," " plugin for serverless email." msgstr "" +"Email Interface web mail intégrée, " +"plugin pour email sans serveur." #: i2p2www/pages/site/index.html:44 #, python-format @@ -3429,6 +3459,8 @@ msgid "" "Web browsing: Anonymous " "websites, gateways to and from the public Internet." msgstr "" +"Navigation web : Sites web " +"anonymes, passerelles vers et depuis l'Internet public." #: i2p2www/pages/site/index.html:49 #, python-format @@ -3436,6 +3468,8 @@ msgid "" "Blogging and forums: " "Blogging and Syndie plugins." msgstr "" +"Blogging et forums " +"Plugins pour Blogging et Syndie." #: i2p2www/pages/site/index.html:54 #, python-format @@ -3443,6 +3477,8 @@ msgid "" "Website hosting: Integrated" " anonymous web server." msgstr "" +"Hébergement de sites web : " +"Serveur web anonyme intégré." #: i2p2www/pages/site/index.html:59 #, python-format @@ -3450,6 +3486,8 @@ msgid "" "Real-time chat: Instant " "messaging and IRC clients." msgstr "" +"Tchat en temps réel : " +"Messagerie instantanée et clients IRC." #: i2p2www/pages/site/index.html:64 #, python-format @@ -3457,6 +3495,8 @@ msgid "" "File sharing: ED2K and " "Gnutella clients, integrated BitTorrent client." msgstr "" +"Partage de fichiers : Clients " +"ED2K et Gnutella, client BitTorrent intégré." #: i2p2www/pages/site/index.html:69 #, python-format @@ -3464,6 +3504,8 @@ msgid "" "Decentralized file " "storage: Tahoe-LAFS distributed filesystem plugin." msgstr "" +"Stockage de fichiers" +" décentralisé : Plugin pour système de fichiers distribué Tahoe-LAFS." #: i2p2www/pages/site/index.html:74 #, python-format From 8ad831043eeaca7afde78d5765ca0255442d5ad0 Mon Sep 17 00:00:00 2001 From: str4d Date: Mon, 9 Sep 2013 12:21:50 +0000 Subject: [PATCH 622/650] Updated legacy /papers redirect --- i2p2www/legacy.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/i2p2www/legacy.py b/i2p2www/legacy.py index 2c41cbd4..0900923a 100644 --- a/i2p2www/legacy.py +++ b/i2p2www/legacy.py @@ -10,6 +10,7 @@ LEGACY_FUNCTIONS_MAP={ 'download': {'function': 'downloads_list', 'params': {}}, 'installation': {'function': 'downloads_list', 'params': {}}, 'meetings': {'function': 'meetings_index', 'params': {}}, + 'papers': {'function': 'papers_list', 'params': {}}, 'statusnotes': {'function': 'blog_index', 'params': {}}, } @@ -86,7 +87,6 @@ LEGACY_PAGES_MAP={ 'ntcp': 'docs/transport/ntcp', 'ntcp_discussion': 'docs/discussions/ntcp', 'othernetworks': 'comparison/other-networks', - 'papers': 'research/papers', 'performance-history': 'about/performance/history', 'performance': 'about/performance/future', 'plugin_spec': 'docs/spec/plugin', From 542443e59317c3d66e9e46733cb6cec3fecf8f11 Mon Sep 17 00:00:00 2001 From: kytv Date: Tue, 10 Sep 2013 21:19:37 +0000 Subject: [PATCH 623/650] Add meeting 226 --- i2p2www/meetings/logs/226.log | 264 ++++++++++++++++++++++++++++++++++ i2p2www/meetings/logs/226.rst | 17 +++ 2 files changed, 281 insertions(+) create mode 100644 i2p2www/meetings/logs/226.log create mode 100644 i2p2www/meetings/logs/226.rst diff --git a/i2p2www/meetings/logs/226.log b/i2p2www/meetings/logs/226.log new file mode 100644 index 00000000..bf26e2ad --- /dev/null +++ b/i2p2www/meetings/logs/226.log @@ -0,0 +1,264 @@ +20:00:31 0) hi +20:00:38 1) website revamp (str4d) +20:00:55 2) console home page request for http://open4you.i2p/ +20:01:03 Title: open4you.i2p (at open4you.i2p) +20:01:11 3) disable outproxy (topiltzin / dg) +20:01:20 4) netdb project update (hottuna) +20:01:23 0) hi +20:01:25 hi +20:01:30 hi +20:01:35 hi +20:01:42 more info and links at http://zzz.i2p/topics/1460 +20:01:55 let's try something new and limit each agenda item to 15 minutes +20:02:00 Title: zzz.i2p: Meeting Tues. Sept. 10, 8 PM UTC (at zzz.i2p) +20:02:03 1) website revamp (str4d) +20:02:07 go str4d +20:04:12 skipping 1) for now +20:04:17 2) console home page request for http://open4you.i2p/ +20:04:21 Title: open4you.i2p (at open4you.i2p) +20:04:28 is the open4you requester here? +20:05:53 skipping 2) for now +20:05:59 3) disable outproxy (topiltzin / dg) +20:06:05 go dg or topiltzin +20:06:05 \o +20:06:13 I'll take it first. +20:06:50 Hi all, I've been mulling this over for some time: I think the outproxy for HTTP (and possibly HTTPS) being included by default isn't aligned with our goals; +20:07:25 most of the time, when asked on IRC about outproxying, community members recommend Tor and not to touch the outproxy for many/any uses +20:07:38 "we leave that to Tor" is something that's thrown around a lot +20:08:22 the outproxy is centralized which is obviously a big issue, there's problems with Tor having thousands of exit nodes even, let alone us having just one +20:08:43 security issues aside, it's a usability problem. What if someone trying to use I2P thinks I2P is just really slow because google.com loads slow? Oh, and it's in German? Huh? +20:09:14 We haven't built in the code for outproxying as a 'real' measure for a reason: we don't want to do it and hidden services are our target +20:09:58 I feel we're putting users at risk by inserting the outproxy by default and (possibly) confusing their perception of what I2P is and what it does. +20:10:04 iniial pitch over +20:10:17 topiltzin, you have anything to add? +20:10:52 that's a good list; I can also see KillYourTV 's point that the functionality should not be removed +20:11:22 ok let's throw it open to comments from others +20:11:23 but I strongly agree with dg that it's better to steer users away from using i2p for clearnet surfing +20:12:17 Someone (Pseudonemo) has suggested an explanation page as to why clearnet websites will not load and possibly a Tor recommendation. +20:12:19 a plugin that outproxies via tor locally would be nice.. +20:12:45 welterde: funny you say this.. jtor was introduced by ioerror to zzz a few weeks back. +20:13:26 dg: yeah.. that's what I was thinking about.. should be much cleaner than having to rely on an external running component +20:13:52 So, thoughts? +20:13:54 Usually the only time I observe topic of I2P's in discussion is answering questions like "Why doesnt it work like I want it to?" and supplying alternatives like Meeh's outproxy or just using Tor. Having the option for the outproxy is a good thing, and having users knowing that there is such an option is also nice. +20:13:56 I'm against removing it - it's a limited feature, yes, but what it does it actually does pretty well. We won't improve the usability of it by disabling it. We'll just make things harder and more confusing. +20:14:45 I think overall I agree with zzz (since my entrance) +20:14:58 perhaps when we have a better solution (a tor plugin) then we could disable echelon;s by default +20:15:19 options are always good, and I use the outproxies a lot, I know of course not to trust outproxies communications +20:15:21 Why should we do something that we (mostly) acknowledge is something Tor is better for? It seems like we're letting down people by even trying, it's a false impression. A well designed explanation page could ease the confusion/hardness +20:15:46 I don't suggest we remove the capability, just the default +20:15:47 sounds like dg is mainly describing a documentation / education problem, that won't be fixed by disabling it. +20:16:24 it would not be fixed but would be avoided +20:16:31 I don't know why the user should be trusting a third party by installing I2P +20:16:36 i2ptunnel is scary and I'd rather not have to point people in there to turn it on +20:16:36 Some people do not use tor and will not use tor for various reasons. They can have use for an I2P outproxy. +20:17:12 kytv's proposal to have a warning page that makes things clear would be a proper solution, no? +20:17:16 dg you are right, EpicCoffee too +20:17:26 On rare occasions I use the outproxy, mostly to check out links sent in i2prc +20:17:42 I understand we can say "well, the user should read" or similar but.. should we let them shoot themselves in the foot so easily? +20:17:49 like me EpicCoffee +20:17:51 to look at it another way, while it's on by default on the i2p side, it always takes affirmative action by the user to enable it in the browser. So you could say it is not on by default now, if you consider the browser too. +20:18:09 If the link cannot be loaded through the outproxy, I am unlikely to load it through the clearnet. +20:18:32 it takes affirmative action to browse eepsites, it is still confusing. If someone is aware of the risks, they can add the outproxy. +20:18:37 *** trolly_ is now known as trolly +20:18:37 Or load the maybe-coming tor plugin +20:18:49 I'm sure I'm not alone in this. +20:18:49 lol +20:18:55 does eche|on have an opinion? +20:19:03 This isn't an attack on echelon either but should we be trusting a single person with all outproxy traffic? +20:19:12 Regardless of who it is, it's a single point and a single person +20:19:37 would you rather trust one person you somewhat know, or 3000 people you don't? +20:19:41 An assumption could easily be made that I2P is performing a tor like mechanism +20:19:57 3000 people I don't +20:20:10 coming up on the 15 minute mark. do we have any sort of consensus? anybody else that has a thought on this? +20:20:34 imho we shouldn't disable it until we have the tor plugin +20:20:37 I think dg is primarily arguing from the perspective of new users. They don't know eche|on. +20:20:51 +1 Pseudonemo +20:20:59 *I* know eche|on, as a result, I don't mind the outproxy much but yes. +20:21:04 welterde: I can agree on this compromise. +20:21:21 nobody should use an outproxy for anything sensitive. that should be a given lol. +20:21:22 Let's leave it there? +20:21:33 assuming a tor plugin is in the works at all.. which it isn't +20:21:54 ok, interesting topic, thanks for bringing it up dg. May be worth talking about again after a while, whether we have a tor plugin or not +20:21:59 it is an education problem so it would be best to solve it through education +20:22:16 zzz: no problem, thank you. +20:22:39 any volunteers to look at the education / documentation issue and propose some improvements? +20:22:42 topiltzin: I don't think I would like a tor plugin in i2p. My opinion on that is I don't like/trust tor. +20:22:55 EpicCoffee: moved topic, save for next time :) +20:23:16 last call for volunteers and then we are done with this topic +20:23:43 ok then. +20:24:04 skipping 4) as hottuna is not here +20:24:04 lets circle back to 1), is str4d here? +20:24:45 skipping 1) again +20:24:49 * EpicCoffee must be oblivious to the "list" +20:25:01 EpicCoffee: you weren't here for the start, will pm. +20:25:09 2) open4you.i2p, which we will discuss whether or not the requestor is here. +20:25:12 ah thank you dg +20:25:13 open4you are you here? +20:25:15 EpicCoffee: channel is logged real-time http://killyourtv.i2p/irclogs/%23i2p-dev.2013-09-10.log +20:25:54 the request is at the bottom of http://zzz.i2p/topics/1429 +20:26:03 Title: zzz.i2p: 0.9.8 Release Summary (at zzz.i2p) +20:26:44 as a refresher, since we haven't done this in a while, my personal guidelines are at http://zzz.i2p/topics/236 +20:26:49 Title: zzz.i2p: How to get my Eepsite added to the Router Console home page (at zzz.i2p) +20:27:09 has anybody used this site? Does anybody have any thoughts about putting it on the console? +20:27:30 If open4you doesn't turn up, can I propose one? +20:27:31 loading the guidelines now +20:27:36 I like that the operator is upfront about what he can and cannot guarantee +20:28:08 *** trolly is now known as trolly_ +20:28:14 but besides that (positive) impression there isn't much to say... +20:28:15 we are considering open4you only today, at least in item 2). If you like you can have a new item 5) dg +20:28:28 I believe there should be available hosting on i2p, however I'm not sure I would trust a host lol. I'm conflicted on the hosting topic so I'll step aside on this one +20:28:29 zzz: ok, thx +20:28:42 his TOS looks ok to me +20:29:03 it's a new category not currently on the console so that's a plus +20:29:03 i know of no clients from open4you.i2p so I can't vouch for it but if the owner can turn up another time, I'm fine with discussing it again +20:29:56 no vouches makes me suspicious +20:30:24 the recent FreedomHosting thing makes eepsite hosting interesting +20:31:13 I get the gist this is free, right? +20:31:19 do we have any questions that the requestor must answer for us to make a decision? or can we make a decision today? +20:31:33 I didnt see whether it was free or not. the faq is only in russian. +20:31:45 it's free +20:31:45 If it's free, why not? There's no risk of a scam and it's definitely of 'interest'. +20:31:49 "9 months work free web hosting in i2p." +20:31:58 sorry guys, I was under the impression it was bitcoin +20:32:19 still, we have no idea if it actually works +20:32:46 Should we bite the bullet and find a volunteer to test it at some point from now to the release? +20:32:55 If it doesn't work, we pull it +20:33:15 I'm inclined to say yes now. I don't know what one person testing it would prove. We can always pull it later. +20:33:33 well, testing it at least works. There's not much else we can test. +20:33:39 I would hope people are at least vaguely aware of the trust issues involved in hosting +20:33:41 yeah, I'm also a yes. +20:34:10 there's no reason it shouldn't work. For one, I dont see any evidence of an automated process. +20:34:12 Any other votes? +20:34:26 it seems to be email drivne +20:34:28 driven +20:34:43 last call for opinions / objections +20:34:57 by works I mean whether the operator will actually do what he says he will do +20:35:14 do we have any testimonies from users on open4you? +20:35:22 as opposed to set up an eepsite and abandon it +20:35:24 no +20:35:28 psi: none, that's the problem +20:35:31 topiltzin: if that happens, we can remove it. +20:35:39 the owner is at least somewhat active as he requested +20:35:48 I'm for it. +20:35:53 yeah, i'd say not to go ahead with endorsement , first we get a test user in +20:35:56 my guess is he has almost no business so far. Let's give him a trial period of a couple of I2P releases with it in the console, and if its bogus then we pull it +20:36:09 or... if we endorse put a big fat warning on it +20:36:10 zzz: +1 +20:36:27 hmm +20:36:33 zzz has a good point +20:36:42 but... still +20:36:49 psi: it is free +20:36:56 psi pls clarify are you objecting or not +20:36:56 I'll email him the next few days +20:36:58 oh? it is? +20:37:04 yes +20:37:08 i am voicing caution +20:37:13 no objection +20:37:16 I guess I might as well put zab.i2p back up +20:37:22 I thought it was bitcoin but it isn't +20:37:25 It's free so.. I don't care much about testimonies yet +20:37:30 :) +20:37:40 topiltzin: You for or against? +20:37:52 abstaining +20:38:00 sounds like we have no objections and it's approved? if I'm wrong please speak up +20:38:01 I will test his hosting the next few days though +20:38:05 2 for, 0 against +20:38:12 abstain +20:38:19 abstain +20:38:26 im curious how files are transferred to open4you hosting account +20:38:47 EpicCoffee: ftp (huh?) or via a control panel it seems. +20:39:07 sftp? +20:39:18 ok I'll email him to get a logo and check the stuff into the console. Any of you so inclined, please sign up and report back +20:39:34 if it's bogus or doesnt work, we can always pull it just before the release. +20:39:35 "1 GB of available space, php5, mysql, ftp access, 3 tunnel \ 2 hop" +20:39:40 +1 +20:39:48 psi: doubt it.. +20:40:01 and that ends item 2) +20:40:18 no sign of hottuna or str4d so we're on to 5) dg's request +20:40:20 dg go +20:40:29 although it should work better over i2p (you know.. passive/active mode and so for ftp..) +20:41:36 I propose http://salt.i2p/ (not my site, efkt's) for inclusion in the router console. salt.i2p contains; a helpful, large wiki of eepsites and guides; xmpp; an IRC channel which is probably most active one on IRC2p +20:41:51 Title: salted (at salt.i2p) +20:42:00 It provides a lot of eepsite 'starting points' and is SFW. +20:42:02 ill say +1 for salt +20:42:07 I like the salt wiki +20:42:16 yep, #salt pwnz +1 +20:42:18 salt has grown to be a great resource for me and others in the community +20:42:28 the channel is #salt ftr +20:42:52 we really can only take requests from the eepsite owner. Could you ask him to apply following the guidelines on http://zzz.i2p/topics/236 ? then we can consider it for 0.9.9 +20:42:54 +1.. pretty much what that old wiki used to be now.. +20:43:06 Title: zzz.i2p: How to get my Eepsite added to the Router Console home page (at zzz.i2p) +20:43:33 I'm not familiar with the site +20:43:55 I don't think we want to start adding sites w/o permission +20:44:14 He was active not long ago, he may shoot up in a second +20:44:23 I agree with not adding w/o permission +20:44:34 figured it was worth a shot though +20:44:43 paging efkt +20:44:49 You have my permission as long as everyone's happy with it. I created the site with some of I2P's possible policies and ideas in mind about what content is appropriate for I2P. Im open to discussion if you don't like some of what might be there (Just saying) +20:44:53 efkt is the owner of salt? I presume such based on observations. +20:44:59 Yes, EpicCoffee. +20:45:10 Thus the disclaimer on the front page, explicit policies about gore/pr0n/etc +20:45:43 The wiki is not open to edit unless we end up knowing you, so it is unlikely to be vandalized. +20:46:03 * EpicCoffee also points out the salt xmpp +20:46:17 the XMPP is popular too and comes with guides. :) +20:46:50 yeah salt is pretty damn great.. has a real community feel to it +20:46:59 if you want to do it right now please answer the following questions. If it's too much to do now we can discuss in about 6 weeks before the next release +20:47:00 so long as users of it realize the admins can see what is said if not encrypted (I think the wiki article on it highly encourages otr) +20:47:06 We have enough XMPP servers floating around that in the future it might not be a bad idea to list a few in the console. Most of us running servers have S2S happening. +20:47:07 - An email address +20:47:07 - The URL to link to +20:47:07 - The URL of your English terms of service if available or necessary +20:47:07 - If the site is not in English, a brief description of the site in English +20:47:07 - (Optional) A URL to a transparent png icon to display. Size must be 32x32 (subject to change). If no icon is provided the icon will be "toopie". We will copy this icon into the router console source and serve it locally. +20:47:10 - If an icon is provided, the license of the image. +20:47:12 - (Optional) A one or two-word label in English. If not provided we will use example.i2p +20:47:14 - (Optional) a few words or a sentence in English for a popup (tooltip) +20:48:19 efkt@mail.i2p +20:48:23 site: http://salt.i2p +20:48:27 Title: salted (at salt.i2p) +20:48:38 site terms of service - Theres a disclaimer on the front page: http://salt.i2p +20:48:43 Title: salted (at salt.i2p) +20:49:15 I dont have a 32x32 icon to provide speedily but it would be the same as our favicon, a black star with transparent or white background +20:49:47 label name can be simply "salt" +20:49:59 efkt I can make a quick 32x32 icon if you want. well as quick as i2p will allow lol +20:50:25 we can give you a week for the icon :) +20:50:32 how long has the site been up? +20:50:34 EpicCoffee: If you like. Its just like the favicon - the black "anarchist star", you see the same kind of shape all over google images. It takes only a moment really +20:50:40 zzz: august 2012, IIRC +20:51:21 http://salt.i2p/wiki/index.php/Main_Page#Tutorials +20:51:21 Honestly, I'm very surprised I get so many users unable to reach the site as its not part of the default addressbook (or the XMPP) - Yet we get a lot of newcomers being directed there through IRC. Sorry to step off topic. +20:51:35 Title: Salted Wiki (at salt.i2p) +20:51:41 zzz: Oh, and the blurb "Cryptomunitions and tutorials' +20:51:46 Yeah, it's a problem (in addition to the annoying addressbook-not-found bug) when introducing users. +20:52:20 anybody on the console home page is automatically added to the default address book +20:52:42 Oh. That will be helpful for anyone who is new to I2P coming to IRC2P to explore. +20:52:52 one headache solved :) +20:52:59 1/2. +20:53:05 no xmpp.salt.i2p ;) +20:53:32 efkt to me your terms of service are insufficient for a wiki that we would recommend, as it describes only what you are not responsible for. It does not say what type of content if any is disallowed. +20:54:03 If anything goes then I cannot support the request. +20:54:04 zzz: Even though noone is allowed to edit the wiki, at all, unless I have personally vetted them and given them an account? +20:54:19 efkt: I believe he's saying the actual rules are unclear. pr0n, etc. +20:54:41 Hrm. +20:54:53 there are no rules stated at all. +20:54:56 32X32 blackstar.jpg, base64 encoded: http://pastethis.i2p/show/5437/ +20:54:57 Title: Paste #5437 | LodgeIt! (at pastethis.i2p) +20:55:00 wrt allowed content +20:55:54 I can easily add something. It's not a problem, only mulling over what "extra" things to add - Content such as Gore, Rape, Torture, Snuff, or weird sex will never be allowed on the site +20:56:23 so, family friendly - safe for work etc? +20:56:53 I don't think we should ask you to draft a content ToS in the next 30 seconds. Want to think about it and come back in a few weeks? +20:57:06 At this time no I cannot say salt is family friendly or safe for work. The onionland page explicitly links to drug onions. +20:57:43 zzz: Yes, I'd like that at least - Id rather work with everyone and produce something desirable that's useful to I2P +20:59:22 EpicCoffee: any image hosts on i2p? +20:59:24 my philosophy is that anything similar to postman's tracker rules are acceptable. +20:59:24 I don't want to tell you how to run your site or how to write your rules. You do what you like and then we'll decide if we want it in the console. +20:59:24 but you can survey the links we have now and get a feel +21:00:36 we're past 15 minutes so can we ask you to come back in a few weeks? Any site that has that much support from the folks here I think would be a good addition to the console, if you can work out the ToS stuff. +21:01:36 I'm happy to work out a ToS, and to talk about anything on the site the community feels doesn't belong. Thanks zzz. Yes that's fine +21:02:13 great. glad to hear about a new site I wasn't familiar with. I'll check it out. email me or post on zzz.i2p when you pull it all together +21:02:19 and that's the end of 5) +21:02:25 last call for str4d for 1) +21:02:36 hottuna still not here for 4) +21:02:47 * zzz warms up the baffer +21:03:50 * zzz *bafs* the meeting closed +21:07:16 thanks everybody, good meeting diff --git a/i2p2www/meetings/logs/226.rst b/i2p2www/meetings/logs/226.rst new file mode 100644 index 00000000..4febe3d8 --- /dev/null +++ b/i2p2www/meetings/logs/226.rst @@ -0,0 +1,17 @@ +I2P dev meeting, September 10, 2013 @ 20:00 UTC +=============================================== + +Quick recap +----------- + +* **Present:** + dbowie, + dg, + efkt, + EpicCoffee, + Pseudonemo, + psi, + topiltzin, + trolly, + welterde, + zzz From f4517184959671b7cf0d65837f8eb6efe6f3dc68 Mon Sep 17 00:00:00 2001 From: str4d Date: Mon, 16 Sep 2013 12:35:51 +0000 Subject: [PATCH 624/650] Updated translations --- i2p2www/translations/de/LC_MESSAGES/docs.po | 33 +- i2p2www/translations/es/LC_MESSAGES/docs.po | 1864 ++++++++++++++--- i2p2www/translations/fr/LC_MESSAGES/about.po | 33 +- .../translations/fr/LC_MESSAGES/comparison.po | 219 +- .../translations/sv_SE/LC_MESSAGES/blog.po | 60 +- .../sv_SE/LC_MESSAGES/priority.po | 453 ++-- 6 files changed, 2138 insertions(+), 524 deletions(-) diff --git a/i2p2www/translations/de/LC_MESSAGES/docs.po b/i2p2www/translations/de/LC_MESSAGES/docs.po index d80b31fd..ecf97c4d 100644 --- a/i2p2www/translations/de/LC_MESSAGES/docs.po +++ b/i2p2www/translations/de/LC_MESSAGES/docs.po @@ -5,6 +5,7 @@ # Translators: # amiga4000 , 2008 # D.A. Loader, 2013 +# Ashoka , 2013 # SteinQuadrat, 2013 # zeroflag , 2013 msgid "" @@ -12,8 +13,8 @@ msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" "POT-Creation-Date: 2013-08-30 23:32+0000\n" -"PO-Revision-Date: 2013-08-12 10:33+0000\n" -"Last-Translator: str4d \n" +"PO-Revision-Date: 2013-09-16 07:16+0000\n" +"Last-Translator: Ashoka \n" "Language-Team: German " "(http://www.transifex.com/projects/p/I2P/language/de/)\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" @@ -31,11 +32,11 @@ msgstr "" #: i2p2www/pages/site/docs/spec/geoip.html:3 #: i2p2www/pages/site/docs/transport/ssu.html:3 msgid "May 2013" -msgstr "" +msgstr "May 2013" #: i2p2www/pages/site/docs/index.html:6 msgid "How does I2P work" -msgstr "" +msgstr "Wie I2p funktioniert" #: i2p2www/pages/site/docs/index.html:8 msgid "Following is an index to the technical documentation for I2P." @@ -75,11 +76,11 @@ msgstr "" #: i2p2www/pages/site/docs/tunnels/implementation.html:67 #: i2p2www/pages/site/docs/tunnels/unidirectional.html:6 msgid "Overview" -msgstr "" +msgstr "Übersicht" #: i2p2www/pages/site/docs/index.html:29 msgid "Technical Introduction" -msgstr "" +msgstr "Technische Einleitung" #: i2p2www/pages/site/docs/index.html:30 msgid "A Less-Technical Introduction" @@ -87,7 +88,7 @@ msgstr "" #: i2p2www/pages/site/docs/index.html:31 msgid "Threat model and analysis" -msgstr "" +msgstr "Bedrohungsszenario und Analysen" #: i2p2www/pages/site/docs/index.html:32 msgid "Comparisons to other anonymous networks" @@ -118,7 +119,7 @@ msgstr "" #: i2p2www/pages/site/docs/index.html:42 msgid "Plugins Overview" -msgstr "" +msgstr "Plugins Übersicht" #: i2p2www/pages/site/docs/index.html:43 msgid "Plugin Specification" @@ -126,7 +127,7 @@ msgstr "" #: i2p2www/pages/site/docs/index.html:44 msgid "Router software updates" -msgstr "" +msgstr "Router Software Updates" #: i2p2www/pages/site/docs/index.html:45 #: i2p2www/pages/site/docs/applications/bittorrent.html:2 @@ -238,26 +239,28 @@ msgstr "" #: i2p2www/pages/site/docs/index.html:110 msgid "End-to-End Encryption" -msgstr "" +msgstr "Ende zu Ende Verschlüsselung" #: i2p2www/pages/site/docs/index.html:111 msgid "How client messages are end-to-end encrypted by the router." msgstr "" +"Wie Client Nachrichten durch den Router \"Ende zu Ende\" verschlüsselt " +"werden." #: i2p2www/pages/site/docs/index.html:113 msgid "ElGamal/AES+SessionTag encryption" -msgstr "" +msgstr "ElGamal/AES + SessionTag Verschlüsselung" #: i2p2www/pages/site/docs/index.html:114 #: i2p2www/pages/site/docs/index.html:147 msgid "ElGamal and AES cryptography details" -msgstr "" +msgstr "ElGamal und AES Verschlüsselungsdetails" #: i2p2www/pages/site/docs/index.html:117 #: i2p2www/pages/site/docs/how/tech-intro.html:15 #: i2p2www/pages/site/docs/how/tech-intro.html:329 msgid "Network Database" -msgstr "" +msgstr "Netzwerk Datenbank" #: i2p2www/pages/site/docs/index.html:118 msgid "" @@ -279,7 +282,7 @@ msgstr "" #: i2p2www/pages/site/docs/index.html:125 msgid "Router Message Protocol" -msgstr "" +msgstr "Router Nachrichten Protokoll" #: i2p2www/pages/site/docs/index.html:126 msgid "" @@ -303,7 +306,7 @@ msgstr "" #: i2p2www/pages/site/docs/how/tech-intro.html:14 #: i2p2www/pages/site/docs/how/tech-intro.html:228 msgid "Tunnels" -msgstr "" +msgstr "Tunnel" #: i2p2www/pages/site/docs/index.html:140 msgid "" diff --git a/i2p2www/translations/es/LC_MESSAGES/docs.po b/i2p2www/translations/es/LC_MESSAGES/docs.po index 1f9d576d..69c01839 100644 --- a/i2p2www/translations/es/LC_MESSAGES/docs.po +++ b/i2p2www/translations/es/LC_MESSAGES/docs.po @@ -14,7 +14,7 @@ msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" "POT-Creation-Date: 2013-08-30 23:32+0000\n" -"PO-Revision-Date: 2013-09-08 09:34+0000\n" +"PO-Revision-Date: 2013-09-16 12:13+0000\n" "Last-Translator: trolly\n" "Language-Team: Spanish " "(http://www.transifex.com/projects/p/I2P/language/es/)\n" @@ -598,7 +598,7 @@ msgid "" "traditional DNS." msgstr "" "El libro de direcciones es un sistema de nombres asegurado mediante \n" -"web-of-trust, distribuído, y legible por humanos, que tan solo sacrifica " +"web-of-trust, distribuido, y legible por humanos, que tan solo sacrifica " "el \n" "que los nombres sean globalmente únicos, obligando a que sólo lo sean\n" "localmente. Mientras todos los mensajes en I2P son criptográficamente \n" @@ -675,7 +675,7 @@ msgid "" msgstr "" "El proxy HTTP que realiza consultas al router" " \n" -"y dirige al usuario a servicios remotos distribuídos (`jump`)\n" +"y dirige al usuario a servicios remotos distribuidos (`jump`)\n" "para asistirle con las consultas fallidas." #: i2p2www/pages/site/docs/naming.html:60 @@ -692,7 +692,7 @@ msgid "" "HTTP jump services which provide their own" " lookups and redirection." msgstr "" -"Servicios distribuídos (`jump`) HTTP que " +"Servicios distribuidos (`jump`) HTTP que " "proporcionan \n" "sus propias consultas y redirecciones." @@ -819,7 +819,7 @@ msgid "" msgstr "" "Si el router falla en la resolución del nombre de servidor, el proxy \n" "HTTP devuelve una página de error al usuario con enlaces a varios \n" -"servicios distribuídos (`jump`). Mire debajo para más detalles." +"servicios distribuidos (`jump`). Mire debajo para más detalles." #: i2p2www/pages/site/docs/naming.html:130 #: i2p2www/pages/site/docs/spec/configuration.html:77 @@ -882,7 +882,8 @@ msgid "" "hosts.\n" "Presence on this list does not imply endorsement." msgstr "" -"Los operadores de estos servicios pueden tener variadas políticas para \n" +"Los operadores de estos servicios pueden tener diferentes políticas para" +" \n" "listar servidores. La presencia en esta lista no implica su respaldo." #: i2p2www/pages/site/docs/naming.html:170 @@ -1342,8 +1343,8 @@ msgid "" "IRC\n" "clients, distributed file storage, wikis, and more." msgstr "" -"Ahora hay plugins disponibles que soportan email distribuído, blogs, \n" -"clientes IRC, almacenamiento de ficheros distribuído, wikis y más." +"Ahora hay plugins disponibles que soportan email distribuido, blogs, \n" +"clientes IRC, almacenamiento de ficheros distribuido, wikis y más." #: i2p2www/pages/site/docs/plugins.html:19 msgid "Benefits to i2p users and app developers:" @@ -1517,7 +1518,7 @@ msgstr "" "para buscar actualizaciones para todos los plugins. Se comprobará si hay" " \n" "actualizaciones para los plugins automáticamente cuando se actualice a \n" -"una nueva versión de I2P (sin incluír las versiones de desarrollo)." +"una nueva versión de I2P (sin incluir las versiones de desarrollo)." #: i2p2www/pages/site/docs/plugins.html:122 msgid "Development" @@ -1543,8 +1544,8 @@ msgid "" "developed\n" "specifically as examples." msgstr "" -"Vea también las fuentes de los plugins desarrollados por varias personas." -" \n" +"Vea también las fuentes de los plugins desarrollados por diferentes " +"personas. \n" "Algunos plugins como snowman, fueron " "desarrollados específicamente \n" @@ -1594,7 +1595,7 @@ msgid "" " the\n" "class cache; a full router restart is required." msgstr "" -"Las actualizaciones de un plugin con jars (no wars) incluídos, no serán \n" +"Las actualizaciones de un plugin con jars (no wars) incluidos, no serán \n" "reconocidas si el plugin ya se está ejecutando, ya que requiere usar \n" "trucos en el cargador de clases ('class') para limpiar la caché de " "clases;\n" @@ -2443,7 +2444,8 @@ msgstr "" "proporcionados por las librerías Java JSON-RPC " "2.0. Una lista de \n" -"implementaciones de JSON-RPC para varios idiomas puede encontrarse en \n" +"implementaciones de JSON-RPC para diferentes lenguajes puede encontrarse " +"en \n" "el wiki de JSON-" "RPC." @@ -3233,7 +3235,7 @@ msgid "" "to build a TCP tunnel that usually is used for SSL and HTTPS." msgstr "" "Crea un túnel HTTP y usa el método de petición HTTP \"CONNECT\" para \n" -"construír un túnel TCP que normalmente se usa para SSL y HTTPS." +"construir un túnel TCP que normalmente se usa para SSL y HTTPS." #: i2p2www/pages/site/docs/api/i2ptunnel.html:129 msgid "" @@ -3513,7 +3515,7 @@ msgid "" "developers of anonymity and security software to have the safety of\n" "our end users foremost in our minds." msgstr "" -"... hay una razón por la que ambos, los humanos y otros, hemos construído" +"... hay una razón por la que ambos, los humanos y otros, hemos construido" " \n" "y abandonado los proxys SOCKS. Rebotar el tráfico arbitrario es " "simplemente \n" @@ -4428,10 +4430,9 @@ msgid "" "See the NTCP discussion page for details." msgstr "" "Otro área de investigación es la interacción de la librería streaming con" -" las \n" -"capas de transporte NTCP (NIO TCP) y SSU (UDP Seguro Semiconfiable). \n" -"Para mayor detale Vea la página de discusión " -"sobre NTCP." +" las capas de transporte NTCP (TCP basado en NIO) y SSU (UDP Seguro \n" +"Semiconfiable). Para mayor detale Vea la página " +"de discusión sobre NTCP." #: i2p2www/pages/site/docs/api/streaming.html:488 msgid "" @@ -4985,7 +4986,7 @@ msgid "" "are described below, and are subject to change.\n" "Contact the I2P developers if you wish to develop a client supporting DHT." msgstr "" -"El soporte DHT (tabla de hash dinámica) está incluído en el cliente " +"El soporte DHT (tabla de hash dinámica) está incluido en el cliente " "i2psnark \n" "desde la versión 0.9.2. Las diferencias preliminares con la BEP 5 \n" @@ -5091,8 +5092,8 @@ msgid "" "destination hash exclusive-ORed with the port." msgstr "" "Requisito de identificador (`ID`) de nodo seguro: Para hacer más " -"difíciles varios de los ataques DHT (tabla de hash distribuída) los " -"primeros 4 bytes \n" +"difíciles diferentes ataques DHT (tabla de hash distribuida) los primeros" +" 4 bytes \n" "del identificador de nodo (`ID`) deben coincidir con los primeros 4 bytes" " del identificador criptográfico (`hash`) del destino, y los siguientes 2" " bytes del identificador de nodo deben coincidir con los siguientes 2 " @@ -6065,7 +6066,7 @@ msgstr "" "simplemente puede crear arbitrariamente un alto número de pares (`peers`)" " \n" "y \"votar\" con cada uno para conquistar un determinado nombre. Métodos " -"prueba-de-trabajo pueden usarse para hacer la identidad no-gratuíta, pero" +"prueba-de-trabajo pueden usarse para hacer la identidad no-gratuita, pero" " al crecer la red, la carga necesaria para contactar con todos para " "realizar una \n" "votación en línea no es plausible, o si no se consulta a la red completa " @@ -6218,7 +6219,7 @@ msgstr "" "ETag y las últimas cabeceras modificadas es arriesgado porque expone la " "última vez que solicitó los datos. Otros han sugerido pedir sólo claves" " \n" -"específicas (similar a lo que otros servicios distribuídos ('jump') " +"específicas (similar a lo que otros servicios distribuidos ('jump') " "hacen, pero \n" "de una forma más automatizada), posiblemente a un coste superior en \n" "anonimato." @@ -9587,7 +9588,7 @@ msgid "" msgstr "" "El DatabaseStoreMessage (mensaje de almacén de base de datos) debe \n" "enviarse al router de inundación (`floodfill`, extienden la red I2P al \n" -"desplegarse en inundación portando la base de datos distribuída netDb) \n" +"desplegarse en inundación portando la base de datos distribuida netDb) \n" "más cercano al lugar donde se esté guardando la clave de enrutado actual" " \n" "para el RouterInfo o el LeaseSet. Actualmente el router de inundación más" @@ -9729,7 +9730,7 @@ msgstr "" "(información para contactar routers) o un LeaseSet (información para \n" "contactar destinos) válido posterior al previamente guardado en una " "entrada \n" -"de su netDb (base de datos de red distribuída) local, la \"inunda\". Para" +"de su netDb (base de datos de red distribuida) local, la \"inunda\". Para" " \n" "inundar una entrada netDb, consulta varios (actualmente 4) routers de \n" "inundación (`floodfill`), los más cercanos a la clave de enrutado de la " @@ -9878,9 +9879,17 @@ msgstr "" "inundación por un factor 8x, las consultas son habitualmente O(1) más " "bien que O(log n) -- un router es altamente probable que conozca un " "router de \n" -"inundación suficientemente cercano a la clave para conseguir la respuesta" +"inundación suficientemente cercano a la clave para obtener la respuesta \n" +"en el primer intento. En versiones anteriores a la 0.8.9, los routers " +"usaban \n" +"una redundancia de consulta de dos (esto es, se realizaban dos consultas" " \n" -"en el primer intento." +"en paralelo a direferentes pares), y ni el enrutado recursivo ni " +"el \n" +"iterativo estaba implementado para las consultas. Las peticiones " +"se \n" +"enviaban a través de múltiples rutas simultáneamente para " +"reducir la posibilidad de fallo de consulta." #: i2p2www/pages/site/docs/how/network-database.html:470 msgid "" @@ -9901,21 +9910,21 @@ msgid "" msgstr "" "Desede la versión 0.8.9 las consultas iterativas se implementaron " "sin \n" -"redundancia en la consulta. Esta es una consulta más eficiente y " -"confiable que funcionará mucho mejor cuando no todos los pares floodfill " -"sean \n" -"conocidos, y elimina una seria limitación al crecimiento de la red. Al " -"crecer \n" -"la red y que cada router conozca cólo un pequeño subconjunto de los pares" -" \n" -"floodfill, las consultas llegarán a ser O(log n). Incluso si los pares no" -" devuelven referencias próximas a la clave, la consulta continúa con el " -"par siguiente-al-más-próximo, para añadir robustez, y para prevenir que " -"un \n" -"floodfill malicioso ha un black-holing sobre una parte del espacio clave." -" Las \n" -"consultas continúan hasta que se alcance un tiempo total limite de la \n" -"consulta, se consultó al máximo número de pares." +"redundancia en la consulta. Esta es una consulta más eficiente y fiable, " +"que \n" +"funcionará mucho mejor cuando no sean conocidos todos los pares de \n" +"inundación (`floodfill peers`), y elimina una seria limitación al " +"crecimiento de \n" +"la red. Al crecer la red y que cada router conozca sólo un pequeño \n" +"subconjunto de los pares de inundación, las consultas llegarán a ser " +"O(log n). Incluso si los pares no devuelven referencias más cercanas a la" +" clave, la \n" +"consulta continúa con el par más-próximo-a-continuación, para añadir \n" +"robustez, y para prevenir que un par de inundación malicioso acapare " +"(`black-holing`) una parte del espacio de la clave. Las consultas " +"continúan \n" +"hasta que se alcance el total del tiempo límite de la consulta o se haya " +"consultado al número de pares máximo." #: i2p2www/pages/site/docs/how/network-database.html:482 msgid "" @@ -9926,20 +9935,20 @@ msgid "" "Given the current size of the network, a router has\n" "detailed knowledge of the neighborhood of the destination ID space." msgstr "" -"Los identificadores (`IDs`) de nodos son verificables en el" -" sentido de que usamos el identificador criptográfico del router (`hash`)" -" \n" -"directamente tanto como identificador (`ID`) de nodo como de clave \n" +"Los identificadores (`IDs`) de nodos son verificables en " +"aquellos [nodos] en los que usamos el identificador criptográfico del " +"router (`hash`) directamente tanto como identificador (`ID`) de nodo y " +"como clave \n" "Kademlia. Las respuestas incorrectas que no sean más cercanas a la clave" " \n" -"de búsqueda por lo general son ignoradas. Dado el actual tamaño de la " +"de búsqueda son ignoradas por lo general. Dado el actual tamaño de la " "red, \n" "un router tiene conocimiento detallado del vecindario del espacio del " "identicador (`ID`) del destino." #: i2p2www/pages/site/docs/how/network-database.html:491 msgid "RouterInfo Storage Verification" -msgstr "Verificación del almacenamiento de RouterInfo" +msgstr "Verificación del almacenamiento de la RouterInfo" #: i2p2www/pages/site/docs/how/network-database.html:492 msgid "" @@ -9951,19 +9960,18 @@ msgid "" "Lookups are end-to-end garlic encrypted to prevent snooping by the " "outbound endpoint(OBEP)." msgstr "" -"Para verificar que un almacenaje fue satisfactorio, un router simplemente" +"Para verificar que un almacenamiento fue exitoso, un router simplemente " +"espera cerca de 10 segundos, entonces envía una consulta a otro router de" " \n" -"espera cerca de 10 segundos, y entonces envía una consulta a otro router" -" \n" -"floodfill cercano a la calve (pero no aquel al que el se envió el " -"almacén). Las consultas trasmitieron uno de los túneles exploratorios de " -"salida del router. \n" -"Las consultas están cifradas con garlic (ajo) de extremo-a-extremo para \n" -"prevenir el snooping en el extremo de salida (OutBound End Point, OBEP)." +"inundación (`floodfill`) cercano a la clave (pero no al que se envió el \n" +"almacenamiento). Las consultas establecieron uno de los túneles \n" +"exploratorios de salida del router. Las consultas están cifradas \n" +"extremo-a-extremo con garlic (ajo) para prevenir la vigilancia en el " +"extremo exterior (OutBound End Point, OBEP)." #: i2p2www/pages/site/docs/how/network-database.html:500 msgid "LeaseSet Storage Verification" -msgstr "Verificación de almacén LeaseSet" +msgstr "Verificación del almacenamiento del LeaseSet" #: i2p2www/pages/site/docs/how/network-database.html:501 msgid "" @@ -9978,18 +9986,15 @@ msgid "" "The replies are specified to return via one of the client's inbound " "tunnels." msgstr "" -"Para verificar que el almacenaje fue exitoso, un router simplemente " -"espera \n" -"cerca de 10 segundos, y luego envía una consulta a otro router floodfill" -" \n" -"próximo a la clave (pero no la que se envió al almacen). Las consultas " -"transmiten uno de los túneles cliente de salida para que el destino del " -"LeaseSet sea verificado. Para prevener el snooping por el OBEP dle túnel" -" \n" -"de salida, las consultas están cifradas con garlic (ajo) de \n" -"extremo-a-extremo. Las respuestas están definidas para volver a través de" -" \n" -"uno de los túneles de entrada del cliente." +"Para verificar que el almacenamiento fue exitoso, un router simplemente \n" +"espera cerca de 10 segundos, y luego envía una consulta a otro router de " +"inundación (`floodfill`) cercano a la clave (pero no al que se envió el " +"almacenamiento). Las consultas establecieron uno de los túneles de salida" +" del cliente para el destino del LeaseSet (grupo de túneles para un " +"destino) que se está verificando. Para prevenir la vigilancia en el OBEP " +"(extremo exterior) del túnel de salida, las consultas están cifradas\n" +"extremo-a-extremo con garlic (ajo). Se especifica a las respuestas que " +"vuelvan a través de uno de los túneles de entrada del cliente." #: i2p2www/pages/site/docs/how/network-database.html:511 msgid "" @@ -9998,9 +10003,9 @@ msgid "" "will be encrypted,\n" "to hide the reply from the inbound gateway (IBGW) of the reply tunnel." msgstr "" -"Desde la versión 0.9.7, las repsuetas para las consultas tanto desde " +"Desde la versión 0.9.7, las respuestas tanto para las consultas de " "RouterInfo como de LeaseSet (un DatabaseStoreMessage o un \n" -"DatabaseSearchReplyMessage) serán cifradas, para ocultar la respuesta " +"DatabaseSearchReplyMessage) estarán cifradas para ocultar la respuesta " "desde la pasarela de entrada (`inbound gateway`, IBGW) del túnel de " "respuesta." @@ -10030,29 +10035,29 @@ msgid "" "The floodfill will then respond only with non-floodfill routers close to " "the requested key." msgstr "" -"La exploración es una forma especial de consulta NetDb, donde un \n" -"router intenta aprender sobre nuevos routers. Hace esto enviando a un " -"router \n" -"floodfill un DatabaseLookupMessage I2NP, en " -"busca de \n" -"una clave aleatoria. Como esta consulta fallará, el floodfill normalmente" +"La exploración es una forma especial de consulta netDb, donde un \n" +"router intenta aprender sobre nuevos routers. Esto lo hace enviando a un " +"router de inundación (`floodfill`) un DatabaseLookupMessage I2NP, \n" +"en busca de una clave aleatoria. Como esta consulta fallará, el router de" +" inundación normalmente respondería con un DatabaseSearchReplyMessage \n" +"I2NP conteniendo los identificacadores " +"criptográficos (`hashes`) \n" +"de routers de inundación cercanos a la clave. Esto no sería de ayuda ya \n" +"que el router solicitante probablemente ya conoce esos routers de \n" +"inundación, y no sería práctico añadirlos a TODOS al campo \"no incluir\"" +" de \n" +"la consulta. Para una petición de exploración, el router solicitante " +"añade un \n" +"identificador criptográfico (`hash`) de router, con todo ceros, al campo" " \n" -"respondería con un DatabaseSearchReplyMessage I2NP conteniendo \n" -"hashes de routers floodfill próximos a la clave. Esto no sería de ayuda, " -"ya que el router solicitante probablemente ya conoce esos floodfills y no" -" sería \n" -"práctico añadir TODOS los routers floodfill al campoco \"no incluír\" de " -"la \n" -"consulta. Para una consulta de exploración, el router solicitante añade " -"un \n" -"hash de router con todo ceros al campo \"no incluír\" del " -"DatabaseLookupMessage de la consulta. El floodfill entonces responderá " -"sólo con routers no-floofill próximos a la clave requerida." +"\"no incluir\" del DatabaseLookupMessage de la consulta. El router de \n" +"inundación entonces responderá sólo con routers no-de-inundación \n" +"cercanos a la clave solicitada." #: i2p2www/pages/site/docs/how/network-database.html:534 msgid "Notes on Lookup Responses" -msgstr "Notas sobre las respuestas de consultas" +msgstr "Notas sobre las respuestas a consultas" #: i2p2www/pages/site/docs/how/network-database.html:535 msgid "" @@ -10066,18 +10071,16 @@ msgid "" "requests in parallel, it is\n" "difficult to monitor the performance of the various floodfill routers." msgstr "" -"La respuesta a una solicitud de consulta es o bien un Mensaje de Almacén " -"de Base de Datos (si tiene éxito) o un Mensaje de Respuesta de Búsqueda" -" \n" -"en la Base de Datos (si falla). El DSRM contiene un campo 'from' (desde) " -"en \n" -"el hash del router para indicar la fuente de la respueta; el DSM no. El \n" -"campo 'from' del DSRM está autentificado y pude ser falsificado o " -"inválido. \n" -"No hay otras etiquetas de respuesta. Por lo tanto, cuando se hacen \n" -"múltiples solicitudes en paralelo, es difícill monitorizar el rendimiento" -" de los \n" -"varios routers floodfilll." +"La respuesta a una solicitud de consulta es o bien (si tiene éxito) un " +"mensaje de alcemacenamiento en la base de datos (DSM), o (si falla) un " +"mensaje de respuesta de búsqueda en la base de datos (DSRM). El DSRM \n" +"contiene un campo 'from' (desde) en el hash del router para indicar la " +"fuente de la respueta; el DSM no. El campo 'from' (desde) del DSRM no " +"está \n" +"autentificado y pude ser vigilado o inválido. No hay otras etiquetas de " +"respuesta. Por lo tanto, cuando se hacen múltiples solicitudes en " +"paralelo, es difícill monitorizar el rendimiento de los diferentes " +"routers de inundación." #: i2p2www/pages/site/docs/how/network-database.html:545 msgid "MultiHoming" @@ -15910,7 +15913,7 @@ msgstr "" #: i2p2www/pages/site/docs/how/tunnel-routing.html:75 msgid "The tunnel gateway gets:" -msgstr "El túnel de puerta de salida obtiene:" +msgstr "El túnel puerta de salida obtiene:" #: i2p2www/pages/site/docs/how/tunnel-routing.html:77 #: i2p2www/pages/site/docs/how/tunnel-routing.html:97 @@ -15921,7 +15924,7 @@ msgid "" "encrypting\n" "messages and instructions to the next hop" msgstr "" -"Una clave de cifrado de túnel - una Clave de cifrado de túnel - una clave privada AES para " "cifrar los mensajes, y las instrucciones para el siguiente salto." @@ -15934,6 +15937,9 @@ msgid "" "double-encrypting\n" "the IV to the next hop" msgstr "" +"Clave IV del túnel - Una clave privada AES para " +"cifrar doblemente el IV hasta el siguiente salto." #: i2p2www/pages/site/docs/how/tunnel-routing.html:85 #: i2p2www/pages/site/docs/how/tunnel-routing.html:105 @@ -15944,6 +15950,9 @@ msgid "" "encrypting\n" "the reply to the tunnel build request" msgstr "" +"Clave de repuesta - Una clave privada AES para " +"cifrar la respuesta a la petición de construcción del túnel." #: i2p2www/pages/site/docs/how/tunnel-routing.html:89 #: i2p2www/pages/site/docs/how/tunnel-routing.html:109 @@ -15951,37 +15960,44 @@ msgid "" "reply IV - the IV for encrypting the reply to the tunnel build " "request" msgstr "" +"IV de respuesta - El IV para cifrar la respuesta de la petición de" +" construcción del túnel." #: i2p2www/pages/site/docs/how/tunnel-routing.html:90 msgid "tunnel id - 4 byte integer (inbound gateways only)" msgstr "" +"ID del túnel - In entero de 4 bytes (sólo para las puertas de " +"slaida de entrada)" #: i2p2www/pages/site/docs/how/tunnel-routing.html:91 msgid "" "next hop - what router is the next one in the path (unless this is" " a 0-hop tunnel, and the gateway is also the endpoint)" msgstr "" +"Siguiente salto - Cual es el siguiente ruter en el camino (a no " +"ser que sea un túnel de 0 saltos, y la puerta de salida sea también el " +"punto final)" #: i2p2www/pages/site/docs/how/tunnel-routing.html:92 #: i2p2www/pages/site/docs/how/tunnel-routing.html:112 msgid "next tunnel id - The tunnel ID on the next hop" -msgstr "" +msgstr "ID del túnel siguiente - La ID del túnel en el siguiente salto" #: i2p2www/pages/site/docs/how/tunnel-routing.html:95 msgid "All intermediate tunnel participants get:" -msgstr "" +msgstr "Todos los túneles intermedios participantes obtienen:" #: i2p2www/pages/site/docs/how/tunnel-routing.html:110 msgid "tunnel id - 4 byte integer" -msgstr "" +msgstr "ID del túnel - Un entero de 4 bytes" #: i2p2www/pages/site/docs/how/tunnel-routing.html:111 msgid "next hop - what router is the next one in the path" -msgstr "" +msgstr "Siguiente salto - cuál es el siguiente ruter en el camino" #: i2p2www/pages/site/docs/how/tunnel-routing.html:115 msgid "The tunnel endpoint gets:" -msgstr "" +msgstr "El túnel punto final obtiene:" #: i2p2www/pages/site/docs/how/tunnel-routing.html:117 #, python-format @@ -15991,6 +16007,9 @@ msgid "" "encrypting\n" "messages and instructions to the the endpoint (itself)" msgstr "" +"Una clave de cifrado de túnel - una clave privada AES para " +"cifrar los mensajes e instrucciones para el punto final (para sí mismo)" #: i2p2www/pages/site/docs/how/tunnel-routing.html:121 #, python-format @@ -16000,6 +16019,9 @@ msgid "" "double-encrypting\n" "the IV to the endpoint (itself)" msgstr "" +"Una clave IV de túnel - una clave privada AES para " +"cifrar dos veces el IV para el punto final (en sí mismo)" #: i2p2www/pages/site/docs/how/tunnel-routing.html:125 #, python-format @@ -16009,28 +16031,40 @@ msgid "" "encrypting\n" "the reply to the tunnel build request (outbound endpoints only)" msgstr "" +"IV de respuesta - una clave privada AES para " +"cifrar la respuesta para la petición de construcción del túnel (sólo para" +" los puntos finales de salida)" #: i2p2www/pages/site/docs/how/tunnel-routing.html:129 msgid "" "reply IV - the IV for encrypting the reply to the tunnel build " "request (outbound endpoints only)" msgstr "" +"IV de respuesta - el IV para cifrar la respuesta para la petición " +"de construcción del túnel (sólo para los puntos finales de salida)" #: i2p2www/pages/site/docs/how/tunnel-routing.html:130 msgid "tunnel id - 4 byte integer (outbound endpoints only)" msgstr "" +"ID del túnel - Un entero de 4 bytes (sólo para los puntos finales " +"de salida)" #: i2p2www/pages/site/docs/how/tunnel-routing.html:131 msgid "" "reply router - the inbound gateway of the tunnel to send the reply" " through (outbound endpoints only)" msgstr "" +"ruter de respuesta - para enviar la respuesta a través de la " +"puerta de salida del túnel de entrada (sólo puntos finales de salida)" #: i2p2www/pages/site/docs/how/tunnel-routing.html:132 msgid "" "reply tunnel id - The tunnel ID of the reply router (outbound " "endpoints only)" msgstr "" +"ID del túnel de respuesta - El ID del túnel del ruter de respuesta" +" (sólo para puntos finales de salida)" #: i2p2www/pages/site/docs/how/tunnel-routing.html:137 #, python-format @@ -16038,10 +16072,12 @@ msgid "" "Details are in the\n" "tunnel creation specification." msgstr "" +"Los detalles están en las especificaciones" +" de creación de túneles." #: i2p2www/pages/site/docs/how/tunnel-routing.html:142 msgid "Tunnel pooling" -msgstr "" +msgstr "Agrupación de túneles" #: i2p2www/pages/site/docs/how/tunnel-routing.html:143 #, python-format @@ -16054,10 +16090,16 @@ msgid "" "The pools used by the router itself are called \"exploratory tunnels\".\n" "The pools used by applications are called \"client tunnels\"." msgstr "" +"Varios túneles pueden ser agrupados en un \"grupo de túneles\" para algún" +" fin en particular como se describe en las especificaciones de túneles. " +"Los grupos de túneles usados por el ruter mismo se llaman \"túneles " +"exploratorios\". Los grupos de túneles usados por las aplicaciones se " +"llaman \"túneles cliente\"." #: i2p2www/pages/site/docs/how/tunnel-routing.html:154 msgid "Tunnel length" -msgstr "" +msgstr "Tamaño del túnel" #: i2p2www/pages/site/docs/how/tunnel-routing.html:155 #, python-format @@ -16081,10 +16123,26 @@ msgid "" "I2CP options.\n" "The maximum number of hops in a tunnel is 7." msgstr "" +"Como se menciona arriba, a cada una de los solicitudes de cliente a las \n" +"que sus routers proporcionan túneles, incluyen al menos un cierto número" +" \n" +"de saltos. La decisión acerca del número de routers a tener en los " +"túneles de entrada y salida del cliente, tiene un efecto importante en la" +" latencia, la eficiencia, la fiabilidad, y el anonimato proporcionados " +"por I2P - cuantos \n" +"más pares (`peers`) tengan que atravesar los mensajes, más tardarán en \n" +"llegar allí y más probable será que uno de esos routers falle \n" +"prematuramente. Cuantos menos routers en un túnel, más fácil es para un \n" +"adversario montar ataques de análisis de tráfico y socavar el anonimato " +"de \n" +"alguien. Las longitudes de los túneles se especifican por los clientes a" +" \n" +"través de las opciones I2CP. El número \n" +"máximo de saltos en un túnel es 7." #: i2p2www/pages/site/docs/how/tunnel-routing.html:171 msgid "0-hop tunnels" -msgstr "" +msgstr "Túneles de 0-saltos" #: i2p2www/pages/site/docs/how/tunnel-routing.html:172 msgid "" @@ -16102,10 +16160,22 @@ msgid "" "but could show similar information (though would be slightly harder to " "mount)." msgstr "" +"Sin routers remotos en un túnel, el usuario tiene una denegabilidad " +"plausible \n" +"muy básica (ya que ninguno de nosotros sabe con seguridad si el par que \n" +"les envió el mensaje no estaba simplemente reenviándolo al formar parte \n" +"del túnel). Sin embargo, sería realmente fácil montar un ataque de " +"análisis \n" +"estadístico y observar que los mensajes apuntando a un destino específico" +" siempre son enviados a través de una única pasarela (`gateway`). El " +"análisis estadístico contra túneles de salida de 0-saltos son más " +"complejos, pero \n" +"podrían mostrar una información similar (aunque sería ligeramente más \n" +"difícil de montar)." #: i2p2www/pages/site/docs/how/tunnel-routing.html:182 msgid "1-hop tunnels" -msgstr "" +msgstr "Túneles de 1-salto" #: i2p2www/pages/site/docs/how/tunnel-routing.html:183 #, python-format @@ -16121,10 +16191,19 @@ msgid "" "be able\n" "to mount the above statistical traffic analysis attack." msgstr "" +"Con sólo un router remoto en un túnel, el usuario tiene tanto " +"denegabilidad plausible como anonimato básico, siempre que no se esté " +"enfrentando a un adversario interno (como se describe en el modelo de amenaza).\n" +"Sin embargo, si el adversario está ejecutando un número suficiente de \n" +"routers de forma que el único router remoto del túnel sea con frecuencia " +"uno \n" +"de aquellos comprometidos, será capaz de montar el ataque de análisis \n" +"estadístico de tráfico descrito anteriormente." #: i2p2www/pages/site/docs/how/tunnel-routing.html:192 msgid "2-hop tunnels" -msgstr "" +msgstr "Túneles de 2-saltos" #: i2p2www/pages/site/docs/how/tunnel-routing.html:193 msgid "" @@ -16134,10 +16213,14 @@ msgid "" "compromised\n" "to mount it." msgstr "" +"Con dos o más routers remotos en un túnel, los costes de montar el ataque" +" \n" +"de análisis de tráfico aumentan, ya que muchos routers remotos tendrían \n" +"que estar comprometidos para montarlo." #: i2p2www/pages/site/docs/how/tunnel-routing.html:199 msgid "3-hop (or more) tunnels" -msgstr "" +msgstr "Túneles de 3 (o más)-saltos" #: i2p2www/pages/site/docs/how/tunnel-routing.html:200 #, python-format @@ -16148,10 +16231,16 @@ msgid "" "also conclude that more than 3 hops does not provide additional " "protection." msgstr "" +"Para reducir la susceptibilidad a algunos " +"ataques, se recomiendan \n" +"3 o más saltos para el mayor nivel de protección. Además, estudios \n" +"recientes concluyen que más de 3 saltos no proporcionan protección \n" +"adicional." #: i2p2www/pages/site/docs/how/tunnel-routing.html:208 msgid "Tunnel default lengths" -msgstr "" +msgstr "Longitudes predeterminadas de los túneles" #: i2p2www/pages/site/docs/how/tunnel-routing.html:209 #, python-format @@ -16161,10 +16250,16 @@ msgid "" "I2CP options.\n" "Most applications use 2 or 3 hops as their default." msgstr "" +"El router usa túneles de 2-saltos de forma predeterminada para sus \n" +"túneles exploratorios. Las configuraciones por defecto de los túneles de " +"cliente son establecidas \n" +"por la aplicación usando las opciones " +"I2CP. La mayoría de las aplicaciones usa 2 o 3 saltos como su " +"configuración por defecto." #: i2p2www/pages/site/docs/how/tunnel-routing.html:218 msgid "Tunnel testing" -msgstr "" +msgstr "Comprobación de túneles" #: i2p2www/pages/site/docs/how/tunnel-routing.html:219 #, python-format @@ -16180,6 +16275,15 @@ msgid "" "capacity rating in the peer " "profile." msgstr "" +"Todos los túneles son probados periódicamente por sus creadores \n" +"mediante la transmisión de un DeliveryStatusMessage (mensaje de estado de" +" entrega) sobre un túnel de salida, ligado a otro túnel de entrada \n" +"(probando ambos túneles a la vez). Si falla un número concreto \n" +"de pruebas consecutivas, se marca como no funcional. Si se usó para un " +"túnel de entrada de cliente, se crea un nuevo LeaseSet (grupo de túneles " +"hacia un destino). Además, los fallos en las pruebas de túneles se " +"reflejan en el ratio de capacidad " +"en el perfil del par (`peer`)." #: i2p2www/pages/site/docs/how/tunnel-routing.html:230 msgid "Tunnel creation" @@ -16201,6 +16305,19 @@ msgid "" "Details are in the\n" "tunnel creation specification." msgstr "" +"La creación de túneles se realiza mediante el enrutamiento garlic (ajo) \n" +"de un mensaje de construcción de túnel hacia un router, requiriendole \n" +"que participe en el túnel (proporcionándole toda la información " +"necesaria, \n" +"como la anteriormente descrita, junto con un certificado, que ahora mismo" +" es un certificado 'null' (vacío), pero que soportará hashcash (un " +"sistema de \n" +"prueba de trabajo) u otros certificados no-gratuitos cuando sea " +"necesario). \n" +"Ese router reenvía el mensaje al siguiente salto en el túnel. Los " +"detalles están en las especificaciones de " +"creación de túneles." #: i2p2www/pages/site/docs/how/tunnel-routing.html:245 #, python-format @@ -16212,6 +16329,14 @@ msgid "" "tunnel specification.\n" "The IV of each hop is encrypted with a separate key as explained there." msgstr "" +"El cifrado multi-capa es realizado por el cifrado garlic (ajo) de los mensajes de " +"túnel. Los detalles están en la \n" +"especificación de túneles. El IV (vector " +"de \n" +"inicialización) de cada salto está cifrado con una clave aparte, como se" +" \n" +"explica allí." #: i2p2www/pages/site/docs/how/tunnel-routing.html:257 msgid "" @@ -16219,10 +16344,14 @@ msgid "" "garlic wrapping a number of tests into cloves, testing individual tunnel\n" "participants separately, etc." msgstr "" +"Podrían usarse otras técnicas de evaluación de túneles, tales como la \n" +"envoltura garlic (`ajo`) de un número de pruebas en forma de dientes \n" +"(`cloves`, del ajo), comprobando separadamente a los participantes \n" +"individuales en los túneles, etc." #: i2p2www/pages/site/docs/how/tunnel-routing.html:263 msgid "Move to 3-hop exploratory tunnels defaults." -msgstr "" +msgstr "Cambiar a configuración predeterminada de túneles de 3-saltos." #: i2p2www/pages/site/docs/how/tunnel-routing.html:267 msgid "" @@ -16230,6 +16359,10 @@ msgid "" "options specifying the pooling, mixing, and chaff generation settings may" " be implemented." msgstr "" +"En una versión de un futuro lejano, opciones especificando las " +"configuraciones de acumulación, mezclado y generación de datos de relleno" +" criptográficamente descartables (`chaff`) podrían ser implementadas ser " +"implementadas." #: i2p2www/pages/site/docs/how/tunnel-routing.html:272 msgid "" @@ -16238,16 +16371,19 @@ msgid "" "tunnel's lifetime may be implemented (e.g. no more than 300 messages or\n" "1MB per minute)." msgstr "" +"En una versión de un futuro lejano, límites en la cantidad y tamaño de " +"los mensajes permitidos durante la vida del túnel podrían ser " +"implementadas (ej. no más de 300 mensajes o 1 MB por minuto)." #: i2p2www/pages/site/docs/how/tunnel-routing.html:284 #: i2p2www/pages/site/docs/tunnels/unidirectional.html:15 msgid "Tunnel specification" -msgstr "" +msgstr "Especificación de túneles" #: i2p2www/pages/site/docs/how/tunnel-routing.html:286 #: i2p2www/pages/site/docs/tunnels/unidirectional.html:17 msgid "Tunnel creation specification" -msgstr "" +msgstr "Especificación de creación de túneles" #: i2p2www/pages/site/docs/how/tunnel-routing.html:288 msgid "Unidirectional tunnels" @@ -16255,7 +16391,7 @@ msgstr "Túneles unidireccionales" #: i2p2www/pages/site/docs/how/tunnel-routing.html:290 msgid "Tunnel message specification" -msgstr "" +msgstr "Especificación de mensajes de túnel" #: i2p2www/pages/site/docs/how/tunnel-routing.html:292 msgid "Garlic routing" @@ -16263,7 +16399,7 @@ msgstr "Garlic routing" #: i2p2www/pages/site/docs/how/tunnel-routing.html:294 msgid "ElGamal/AES+SessionTag" -msgstr "" +msgstr "ElGamal/AES+SessionTag (etiqueta de sesión)" #: i2p2www/pages/site/docs/how/tunnel-routing.html:296 msgid "I2CP options" @@ -16293,6 +16429,21 @@ msgid "" "authorization\n" "for some tunnels to be used." msgstr "" +"El Protocolo de Cliente de I2P (I2CP) revela una fuerte separación de \n" +"intereses entre el router y cualquier cliente que quiera comunicarse a \n" +"través de la red. Habilita mensajería segura y asíncrona mediante el " +"envío y \n" +"recepción de mensajes sobre un único socket TCP, sin exponer nunca clave " +"privada alguna y autentificándose a si mismo ante el router sólo a través" +" de \n" +"firmas. Con I2CP, una aplicación cliente le dice al router quienes son " +"ellos \n" +"(su \"destino\"), qué compromisos de equlibrio en anonimato, fiabilidad, " +"y latencia hacer, y dónde enviar los mensajes. A cambio el router usa " +"I2CP \n" +"para decirle al cliente cuándo ha llegado algún mensaje, y para solicitar" +" \n" +"autorización para que sean usados algunos túneles." #: i2p2www/pages/site/docs/protocol/i2cp.html:18 #, python-format @@ -16305,6 +16456,14 @@ msgid "" "contains the\n" "router itself and the router-side of I2CP." msgstr "" +"El propio protocolo sólo ha sido implementado en Java para proporcionar " +"el \n" +"Cliente SDK. El SDK (Kit de Desarrollo de " +"Software) \n" +"está publicado en el paquete i2p.jar, que implementa el lado-del-cliente " +"de \n" +"I2CP. Los clientes nunca deben necesitar acceder al paquete router.jar, \n" +"que contiene al propio router y el lado-del-router de I2CP." #: i2p2www/pages/site/docs/protocol/i2cp.html:26 #, python-format @@ -16317,6 +16476,12 @@ msgid "" "Together, implementing I2CP and the streaming library would be a sizable " "task." msgstr "" +"Aunque implementar el lado del cliente de I2CP en un lenguaje no-Java \n" +"ciertamente es posible, un cliente no-Java también tendría que " +"implementar \n" +"la librería streaming para conexiones " +"estilo-TCP. \n" +"Implementar I2CP y la librería streaming sería una tarea considerable." #: i2p2www/pages/site/docs/protocol/i2cp.html:33 #, python-format @@ -16333,6 +16498,17 @@ msgid "" "ministreaming.jar and streaming.jar.\n" "So there are several options for both Java and non-Java applications." msgstr "" +"Las aplicaciones pueden aprovecharse de la base I2CP además de las \n" +"librerías streaming y datagram mediante el uso de \n" +"los protocolos Mensajería Anónima Simple (SAM) o " +"BOB, que \n" +"no requieren clientes para tratar con cualquier clase de criptografía. \n" +"Además, los clientes pueden acceder a la red por uno de los varios proxys" +" - HTTP, CONNECT, y SOCKS 4/4a/5. A modo de alternativa, los clientes " +"Java pueden acceder a esas librerías en ministreaming.jar y " +"streaming.jar. \n" +"Así que hay varias opciones para aplicaciones tanto Java como no-Java." #: i2p2www/pages/site/docs/protocol/i2cp.html:45 #, python-format @@ -16349,6 +16525,21 @@ msgid "" "Session Configurations, and" " management of those keys." msgstr "" +"El cifrado extremo-a-extremo del lado-del-cliente (cifrando los datos " +"sobre la \n" +"conexión I2CP) fue deshabilitada en la versión 0.6 de I2P, dejando en su" +" \n" +"lugar un cifrado extremo-a-extremo " +"ElGamal/AES que \n" +"está implementado en el router. La única criptografía que las librerías " +"del \n" +"cliente todavía deben implementar es la firma de la clave publico/privada \n" +"DSA (algoritmo de firma digital) para LeaseSets (grupo de túneles \n" +"para un destino) y Configuraciones de sesión, y " +"la gestión de esas claves." #: i2p2www/pages/site/docs/protocol/i2cp.html:58 msgid "" @@ -16363,19 +16554,30 @@ msgid "" "router\n" "through an internal JVM interface." msgstr "" +"En una instalación I2P standard, el puerto 7654 se usa por clientes de " +"Java \n" +"externos para comunicarse con el router local vía I2CP. Por defecto, el " +"router\n" +"se liga a la dirección 127.0.0.1. Para ligarse a 0.0.0.0, establezca la " +"opción \n" +"de la configuración avanzada del router " +"i2cp.tcp.bindAllInterfaces=true \n" +"y reinicie. Los clientes en la misma JVM (Máquina Virtual Java), pasan " +"los \n" +"mensajes directamente al router a través de una interfaz JVM interna." #: i2p2www/pages/site/docs/protocol/i2cp.html:67 msgid "I2CP Protocol Specification" -msgstr "" +msgstr "Especificación del protocolo I2CP" #: i2p2www/pages/site/docs/protocol/i2cp.html:68 #, python-format msgid "Now on the I2CP Specification page." -msgstr "" +msgstr "Ahora sobre la página de la Especificación I2CP." #: i2p2www/pages/site/docs/protocol/i2cp.html:73 msgid "I2CP Initialization" -msgstr "" +msgstr "Inicialización I2CP" #: i2p2www/pages/site/docs/protocol/i2cp.html:74 #, python-format @@ -16394,6 +16596,21 @@ msgid "" "The client may now initiate or receive connections from other I2P " "destinations." msgstr "" +"Cuando un cliente conecta con el router, primero envía un único byte de \n" +"versión de protocolo (0x2A). Entonces envía un mensaje GetDate \n" +"(obtener fecha) y espera la respuesta del mensaje SetDate (configurar fecha). \n" +"A continuación, envía un mensaje " +"CreateSession (crear sesión) \n" +"conteniendo la sesión de configuración. Seguidamente espera un \n" +"RequestLeaseSet Message " +"(mensaje de solicitud de LeaseSet) desde \n" +"el router, indicando que los túneles de entrada han sido erigidos y \n" +"responden con un CreateLeaseSetMessage (mensaje de creación de \n" +"LeaseSet) conteniendo el LeaseSet firmado. El cliente puede ahora iniciar" +" \n" +"o recibir conexiones desde otros destinos I2P." #: i2p2www/pages/site/docs/protocol/i2cp.html:83 msgid "I2CP Options" @@ -16408,25 +16625,33 @@ msgid "" "a ReconfigureSession " "Message." msgstr "" +"Las siguientes opciones se pasan tradicionalmente al router a través de " +"un \n" +"SessionConfig " +"(configuración de la sesión) contenida en \n" +"un mensaje CreateSession " +"(crear sesión) o un \n" +"Mensaje " +"ReconfigureSession (reconfiguración de sesión)." #: i2p2www/pages/site/docs/protocol/i2cp.html:90 msgid "Router-side Options" -msgstr "" +msgstr "Opciones del lado-del-router" #: i2p2www/pages/site/docs/protocol/i2cp.html:95 #: i2p2www/pages/site/docs/protocol/i2cp.html:438 msgid "As Of Release" -msgstr "" +msgstr "Desde la versión" #: i2p2www/pages/site/docs/protocol/i2cp.html:96 #: i2p2www/pages/site/docs/protocol/i2cp.html:439 msgid "Recommended Arguments" -msgstr "" +msgstr "Parámetros recomendados" #: i2p2www/pages/site/docs/protocol/i2cp.html:97 #: i2p2www/pages/site/docs/protocol/i2cp.html:440 msgid "Allowable Range" -msgstr "" +msgstr "Rango permitible" #: i2p2www/pages/site/docs/protocol/i2cp.html:105 #: i2p2www/pages/site/docs/protocol/i2cp.html:118 @@ -16441,7 +16666,7 @@ msgstr "" #: i2p2www/pages/site/docs/protocol/i2cp.html:256 #, python-format msgid "number from %(from)s to %(to)s" -msgstr "" +msgstr "número desde %(from)s hasta %(to)s" #: i2p2www/pages/site/docs/protocol/i2cp.html:106 #: i2p2www/pages/site/docs/protocol/i2cp.html:128 @@ -16464,6 +16689,10 @@ msgid "" "currently recommended, as this is untested and is incompatible with older" " releases." msgstr "" +"Número de túneles dentro. El límite fue aumentado desde 6 a 16 en la \n" +"versión 0.9; sin embargo, los números mayores de 6 actualmente no están " +"recomendados ya que esto no está comprobado y es incompatible con \n" +"versiones más antiguas." #: i2p2www/pages/site/docs/protocol/i2cp.html:119 #: i2p2www/pages/site/docs/protocol/i2cp.html:176 @@ -16473,15 +16702,15 @@ msgstr "Sin límite" #: i2p2www/pages/site/docs/protocol/i2cp.html:121 msgid "Number of tunnels out" -msgstr "" +msgstr "Número de túneles hacia fuera" #: i2p2www/pages/site/docs/protocol/i2cp.html:130 msgid "Length of tunnels in" -msgstr "" +msgstr "Longitud de túneles de entrada." #: i2p2www/pages/site/docs/protocol/i2cp.html:139 msgid "Length of tunnels out" -msgstr "" +msgstr "Longitud de túneles de salida.." #: i2p2www/pages/site/docs/protocol/i2cp.html:148 msgid "" @@ -16492,6 +16721,15 @@ msgid "" "\n" "The default variance was 1 prior to release 0.7.6." msgstr "" +"Cantidad aleatoria a añadir o sustraer a la longitud de los túneles " +"entrantes. \n" +"Un número positivo significa añadir una cantidad aletoria de 0 a x ambos" +" \n" +"incluidos. Un número negativo -x significa añadir una cantidad aleatoria " +"de \n" +"-x a x ambos incluidos. El router limitará la longitud total del túnel de" +" 0 a 7 \n" +"ambos incluidos. La varianza por defecto era 1 antes de la versión 0.7.6." #: i2p2www/pages/site/docs/protocol/i2cp.html:163 msgid "" @@ -16502,14 +16740,27 @@ msgid "" "\n" "The default variance was 1 prior to release 0.7.6." msgstr "" +"Cantidad aleatoria a añadir o sustraer a la longitud de los túneles " +"salientes. \n" +"Un número positivo x significa añadir una cantidad aleatoria de 0 a x " +"ambos \n" +"incluidos. Un número negativo -x significa añadir una cantidad de -x a x" +" \n" +"ambos incluidos. El router limitará la longitud total del túnel de 0 a 7 " +"ambos \n" +"incluidos. La varianza por defecto era 1 antes de la versión 0.7.6." #: i2p2www/pages/site/docs/protocol/i2cp.html:178 msgid "Number of redundant fail-over for tunnels in" msgstr "" +"Número de túneles de respaldo (`fail-over`) redundantes para túneles " +"entrantes" #: i2p2www/pages/site/docs/protocol/i2cp.html:187 msgid "Number of redundant fail-over for tunnels out" msgstr "" +"Número de túneles de respaldo (`fail-over`) redundantes para túneles " +"salientes" #: i2p2www/pages/site/docs/protocol/i2cp.html:196 msgid "" @@ -16517,18 +16768,24 @@ msgid "" "use the first few characters of the Base64 hash of the destination by " "default." msgstr "" +"Nombre del túnel - usado por lo general en routerconsole, que usara los \n" +"primeros pocos caracteres del identificador criptográfico (`hash`) Base64" +" del \n" +"destino por defecto." #: i2p2www/pages/site/docs/protocol/i2cp.html:208 msgid "Name of tunnel - generally ignored unless inbound.nickname is unset." msgstr "" +"Nombre del túnel - ignorado por lo general a menos que inbound.nickname " +"(apodo entrante) no esté establecido." #: i2p2www/pages/site/docs/protocol/i2cp.html:217 msgid "If incoming zero hop tunnel is allowed" -msgstr "" +msgstr "Si es de entrada están permitidos los túneles de cero saltos" #: i2p2www/pages/site/docs/protocol/i2cp.html:226 msgid "If outgoing zero hop tunnel is allowed" -msgstr "" +msgstr "Si es de salida están permitidos los túneles de cero saltos" #: i2p2www/pages/site/docs/protocol/i2cp.html:235 #: i2p2www/pages/site/docs/protocol/i2cp.html:247 @@ -16536,16 +16793,22 @@ msgid "" "Number of IP bytes to match to determine if\n" "two routers should not be in the same tunnel. 0 to disable." msgstr "" +"El número de bytes de la IP para comparar y determinar si los dos ruters " +"están en el mismo túnel. 0 para deshabilitarlo" #: i2p2www/pages/site/docs/protocol/i2cp.html:259 msgid "" "Priority adjustment for outbound messages.\n" "Higher is higher priority." msgstr "" +"Ajustes de prioridades para los mensajes de salida. Más alto indica más " +"prioridad." #: i2p2www/pages/site/docs/protocol/i2cp.html:271 msgid "Should generally be set to true for clients and false for servers" msgstr "" +"Generalmente suele ser verdadero para los clientes y falso para los " +"servidores" #: i2p2www/pages/site/docs/protocol/i2cp.html:280 msgid "" @@ -16553,6 +16816,9 @@ msgid "" "None implemented in 0.8.1; the streaming lib default is None as of 0.8.1," " the client side default is None as of 0.9.4" msgstr "" +"Asegurarse de que está desactivado; None fue implementado en 0.8.1; la " +"librería de straming por defecto es None como en 0.8.1, la parte cliente " +"es None como en 0.9.4" #: i2p2www/pages/site/docs/protocol/i2cp.html:292 #: i2p2www/pages/site/docs/protocol/i2cp.html:571 @@ -16560,12 +16826,16 @@ msgid "" "If true, the router just sends the MessagePayload instead\n" "of sending a MessageStatus and awaiting a ReceiveMessageBegin." msgstr "" +"Si es verdadero, el ruter simplemente envía el MessagePayload, en lugar " +"de enviar MessageStatus y esperar por un ReceiveMessageBegin." #: i2p2www/pages/site/docs/protocol/i2cp.html:304 msgid "" "Comma-separated list of Base 64 Hashes of peers to build tunnels through;" " for debugging only" msgstr "" +"Lista separada por comas de los Hashes Base 64 de los pares con los que " +"construir túneles para pasar a través; sólo para depuración" #: i2p2www/pages/site/docs/protocol/i2cp.html:313 #: i2p2www/pages/site/docs/protocol/i2cp.html:325 @@ -16574,6 +16844,8 @@ msgid "" "If the client is running in the same JVM as a router, this option is not " "required." msgstr "" +"Para autorización, si es requerida por el ruter. Si el cliente utiliza la" +" misma versión de la JVM que el ruter, no se necesita esta opción." #: i2p2www/pages/site/docs/protocol/i2cp.html:337 msgid "" @@ -16581,12 +16853,17 @@ msgid "" "For clients with relatively low bandwidth per-client-pair (IRC, some UDP " "apps), this may be set lower." msgstr "" +"Número de etiquetas de sesión ElGamal/AES para enviar de golpe. Para los " +"clientes con anchos de baja relativamente bajos para el par cliente (IRC," +" algunas aplicaciones UDP), esto valor puede ser más bajo." #: i2p2www/pages/site/docs/protocol/i2cp.html:349 msgid "" "Minimum number of ElGamal/AES Session Tags before we send more.\n" "Recommended: approximately tagsToSend * 2/3" msgstr "" +"Número mínimo de etiquetas de sesión ElGamal/AES antes de que enviemos " +"más. Recomendado: aproximadamente 'tagsToSend * 2/3'" #: i2p2www/pages/site/docs/protocol/i2cp.html:361 msgid "" @@ -16596,6 +16873,11 @@ msgid "" " servers\n" "with long connection times." msgstr "" +"Poner como falso para que nunca se construya una LeaseSet de respuesta . " +"Para los clientes que no publican sus LeaseSet , esta opción tiene que " +"ser verdadera para que las repuestas sean posibles. Se recomienda también" +" usar \"true\", verdadero, para los servidores multi-hospedados con " +"tiempos de conexión largos." #: i2p2www/pages/site/docs/protocol/i2cp.html:368 msgid "" @@ -16607,14 +16889,19 @@ msgid "" "the far-end client and the floodfill.\n" "There are several cases where \"false\" may be appropriate:" msgstr "" +"Poniéndolo en \"false\", falso, puede ahorrar bastante ancho de banda de " +"salida, especialmente si el cliente está configurado para usar un gran " +"número de túneles de entrada (Leases). Si las respuestas son aún " +"necesarias, esto puede cambiar la carga a el cliente más lejano final y " +"en el floodfill. Hay varios casos donde \"false\" podría ser apropiado:" #: i2p2www/pages/site/docs/protocol/i2cp.html:376 msgid "Unidirectional communication, no reply required" -msgstr "" +msgstr "Dirección unidireccional, no se necesita respuesta" #: i2p2www/pages/site/docs/protocol/i2cp.html:377 msgid "LeaseSet is published and higher reply latency is acceptable" -msgstr "" +msgstr "El LeaseSet está publicado y un latencia de respuesta mayor es aceptable" #: i2p2www/pages/site/docs/protocol/i2cp.html:378 msgid "" @@ -16629,6 +16916,13 @@ msgid "" "after expiration.\n" "HTTP servers may fit these requirements." msgstr "" +"El LeaseSet está publicado, el cliente es un \"servidor\", todas las " +"conexiones son de entrada, por lo que la destinación lejana que se está " +"conectanda ya tiene el leaseset, obviamente. Las conexiones o son cortas," +" o son aceptables para la latencia o conexiones de larga duración para " +"incrementar temporalmente mientras que la otra descarga de nuevo el " +"LeaseSet después de expirar. Los servidores HTTP puede encajar en estos " +"requerimientos." #: i2p2www/pages/site/docs/protocol/i2cp.html:396 msgid "" @@ -16636,6 +16930,9 @@ msgid "" "in the \"unknown options\" properties of the inbound tunnel pool's " "settings." msgstr "" +"Cualquier otra opción con el prefijo \"inbound\" es almacenada en las " +"\"opciones desconocidas\" del grupo de configuraciones del túnel de " +"entrada." #: i2p2www/pages/site/docs/protocol/i2cp.html:408 msgid "" @@ -16643,12 +16940,18 @@ msgid "" "in the \"unknown options\" properties of the outbound tunnel pool's " "settings." msgstr "" +"Cualquier otra opción con el prefijo \"outbound\" es almacenada en las " +"\"opciones desconocidas\" del grupo de configuraciones del túnel de " +"salida." #: i2p2www/pages/site/docs/protocol/i2cp.html:415 msgid "" "Note: Large quantity, length, or variance settings may cause significant " "performance or reliability problems." msgstr "" +"Nota: Una gran cantidad de configuraciones, el tamaño o variaciones en " +"las configuraciones pueden causar bastantes problemas en el rendimiento o" +" en la seguridad." #: i2p2www/pages/site/docs/protocol/i2cp.html:419 msgid "" @@ -16657,6 +16960,10 @@ msgid "" "This is primarily useful for nicknames.\n" "Prior to that release, options with multi-byte characters were corrupted." msgstr "" +"Nota: A partir de la versión 0.7.7, los nombres de opciones y los valores" +" tienen que usar UTF-8. Esto es útil principalmente para los apodos. " +"Antes de esa versión, las opciones con caracteres multi-byte estaban " +"corruptas." #: i2p2www/pages/site/docs/protocol/i2cp.html:425 msgid "" @@ -16666,10 +16973,15 @@ msgid "" "The streaming lib should also pass these options through to I2CP.\n" "Other implementations may have different defaults." msgstr "" +"Las siguientes opciones son interpretadas por la parte cliente, y serán " +"interpretadas si pasan a la I2PSession a través de la llamada " +"I2PClient.createSession(). La librería de streaming también debería pasar" +" estas opciones a través de I2CP. Otras implementaciones pueden tener " +"otros valores por defecto." #: i2p2www/pages/site/docs/protocol/i2cp.html:433 msgid "Client-side Options" -msgstr "" +msgstr "Opciones de la parte cliente" #: i2p2www/pages/site/docs/protocol/i2cp.html:451 msgid "" @@ -16677,6 +16989,9 @@ msgid "" "If the client is running in the same JVM as a router, this option is " "ignored, and the client connects to that router internally." msgstr "" +"Hostname del ruter. Si el cliente se ejecuta en la misma JVM como un " +"ruter, esta opción es ignorada, y el cliente se conecta al ruter " +"internamente." #: i2p2www/pages/site/docs/protocol/i2cp.html:463 msgid "" @@ -16684,6 +16999,9 @@ msgid "" "If the client is running in the same JVM as a router, this option is " "ignored, and the client connects to that router internally." msgstr "" +"Puerto I2CP del ruter. Si el cliente se ejecuta en la misma JVM como un " +"ruter, esta opción es ignorada, y el cliente se conecta al ruter " +"internamente." #: i2p2www/pages/site/docs/protocol/i2cp.html:475 msgid "" @@ -16691,50 +17009,59 @@ msgid "" "If the client is running in the same JVM as a router, this option is " "ignored, and the client connects to that router internally." msgstr "" +"Conectar con el ruter usando SSL. Si el cliente se está ejecutando en la " +"misma JVM que el ruter esta opción es ignorada, y el cliente conecta con " +"el ruter internamente." #: i2p2www/pages/site/docs/protocol/i2cp.html:487 msgid "Gzip outbound data" -msgstr "" +msgstr "Gzip los datos de salida" #: i2p2www/pages/site/docs/protocol/i2cp.html:496 msgid "Reduce tunnel quantity when idle" -msgstr "" +msgstr "Reducir la cantidad de túneles cuando está inactivo" #: i2p2www/pages/site/docs/protocol/i2cp.html:505 msgid "Close I2P session when idle" -msgstr "" +msgstr "Cerrar las sesiones I2P cuando esté inactivo" #: i2p2www/pages/site/docs/protocol/i2cp.html:512 #: i2p2www/pages/site/docs/protocol/i2cp.html:521 #, python-format msgid "%(num)s minimum" -msgstr "" +msgstr "mínimo %(num)s" #: i2p2www/pages/site/docs/protocol/i2cp.html:514 msgid "(ms) Idle time required (default 20 minutes, minimum 5 minutes)" msgstr "" +"(ms) el tienpo inactivo requerido (por defecto 20 minutos, mínimo 5 " +"minutos)" #: i2p2www/pages/site/docs/protocol/i2cp.html:523 msgid "(ms) Idle time required (default 30 minutes)" -msgstr "" +msgstr "(ms) tiempo inactivo requerido (por defecto 30 minutos)" #: i2p2www/pages/site/docs/protocol/i2cp.html:532 msgid "Tunnel quantity when reduced (applies to both inbound and outbound)" msgstr "" +"Cantidad de túneles cuando se reduce el número (se aplica tanto a los de " +"entrada como a los de salida)" #: i2p2www/pages/site/docs/protocol/i2cp.html:541 msgid "Encrypt the lease" -msgstr "" +msgstr "Cifrar el lease" #: i2p2www/pages/site/docs/protocol/i2cp.html:550 msgid "Base64 SessionKey (44 characters)" -msgstr "" +msgstr "Clave de sesión Base64 (44 caracteres)" #: i2p2www/pages/site/docs/protocol/i2cp.html:559 msgid "" "Guaranteed is disabled;\n" "None implemented in 0.8.1; None is the default as of 0.9.4" msgstr "" +"Asegurarse de que está desactivado; None fue implementado en 0.8.1; None " +"es el valor por defecto en 0.9.4" #: i2p2www/pages/site/docs/protocol/i2cp.html:578 msgid "" @@ -16743,10 +17070,15 @@ msgid "" "Anything other than case-insensitive \"true\" is interpreted as false.\n" "All option names are case-sensitive." msgstr "" +"Nota: todos los argumentos, incluyendo los números, son cadenas de " +"caracteres. Los valores True/false son cadenas de caracteres y son " +"sensibles a las mayúsculas o minúsculas. Cualquier otro que no sea " +"\"true\" en minúsculas será interpretado como falso. Todas los nombres de" +" opciones son sensibles a las mayúsculas/minúsculas." #: i2p2www/pages/site/docs/protocol/i2cp.html:584 msgid "I2CP Payload Data Format and Multiplexing" -msgstr "" +msgstr "Formato de los datos del payload I2CP y de Multiplexing" #: i2p2www/pages/site/docs/protocol/i2cp.html:585 #, python-format @@ -16768,6 +17100,19 @@ msgid "" "datagrams\n" "to work reliably in the presence of multiple channels." msgstr "" +"El mensaje de fin a fin manejado por I2CP (por ejemplo los dato enviados " +"por el cliente en el SendMessageMessage y recibido por " +"el cliente en un MessagePayloadMessage) están " +"comprimidos con gzip con una cabecera de inicio de 10 bytes con 0x1F " +"0x8B 0x08 como se especifica en el RFC 1952. A partir de la" +" versión 0.7.1, I2P usa partes ignoradas de la cabecera gzip para incluir" +" el protocolo, el puerto desde, y la información del puerto hacia, con lo" +" que se soporta streamings y datagramas en la misma destinación, y " +"permite peticiones/respuestas usando datagramas para trabajar de forma " +"segura en presencia de múltiples canales." #: i2p2www/pages/site/docs/protocol/i2cp.html:599 msgid "" @@ -16775,6 +17120,9 @@ msgid "" "i2cp.gzip=false\n" "turns the gzip effort setting to 0, which may save a little CPU." msgstr "" +"La función gzip puede apagarse completamente, aunque si se pone la opción" +" i2cp.gzip=false, se cambia el valor de esfuerzo de gzip a 0, lo que " +"puede ahorrar un poco de CPU." #: i2p2www/pages/site/docs/protocol/i2cp.html:605 #: i2p2www/pages/site/docs/protocol/i2np.html:33 @@ -16795,45 +17143,56 @@ msgstr "Opciones de gzip" #: i2p2www/pages/site/docs/protocol/i2cp.html:621 msgid "I2P Source port (Gzip mtime)" -msgstr "" +msgstr "Puerto de origen I2P (mtime de Gzip)" #: i2p2www/pages/site/docs/protocol/i2cp.html:626 msgid "I2P Destination port (Gzip mtime)" -msgstr "" +msgstr "Puerto de destino de I2p (mtime de Gzip)" #: i2p2www/pages/site/docs/protocol/i2cp.html:631 msgid "Gzip xflags" -msgstr "" +msgstr "Zflags de Gzip" #: i2p2www/pages/site/docs/protocol/i2cp.html:636 msgid "I2P Protocol (6 = Streaming, 17 = Datagram, 18 = Raw Datagrams) (Gzip OS)" msgstr "" +"Protocolo I2P (6= Streaming, 17 = Datagram, 18 = Raw Datagrams) (OS de " +"Gzip)" #: i2p2www/pages/site/docs/protocol/i2cp.html:640 msgid "" "Data integrity is verified with the standard gzip CRC-32 as\n" "specified by RFC 1952." msgstr "" +"La integridad de los datos es verificada con el estándar gzip CRC-32 como" +" es especificado por el RFC 1952." #: i2p2www/pages/site/docs/protocol/i2cp.html:648 msgid "Implement I2CP and the streaming library in another programming language." msgstr "" +"Implementar I2CP y la librería de streaming en otro lenguaje de " +"programación." #: i2p2www/pages/site/docs/protocol/i2cp.html:652 msgid "Is the initial Get Date / Set Date handshake required?" -msgstr "" +msgstr "¿Es necesario el handshake inicial Get Date / Set Date?" #: i2p2www/pages/site/docs/protocol/i2cp.html:656 msgid "" "The current authorization mechanism could be modified to use hashed " "passwords." msgstr "" +"El mecanismo actual de autorización puede modificarse para usar " +"contraseñas 'hashed'." #: i2p2www/pages/site/docs/protocol/i2cp.html:660 msgid "" "Private Keys are included in the Create Lease Set message,\n" "are they really required? Revocation is unimplemented." msgstr "" +"Las claves privadas están incluidas en el mensaje Create Lease Set, ¿son " +"requeridos de verdad? La revocación está implementada." #: i2p2www/pages/site/docs/protocol/i2cp.html:665 #, python-format @@ -16846,6 +17205,12 @@ msgid "" "That document also references the\n" "Common Data Structures Specification Version 0.9." msgstr "" +"Algunas mejoras pueden ser capaces de usar los mensajes previamente " +"definidos pero no implementados. Para más referencias, aquí está la especificación del protocolo 2CP versión 0.9 (PDF)," +" del 28 de Agosto del 2003. Este documento también hace referencia al Especificación de las estructuras de datos comunes , " +"Common Data Structures Specification, Versión 0.9. " #: i2p2www/pages/site/docs/protocol/i2np.html:6 msgid "I2P Network Protocol" @@ -16862,6 +17227,11 @@ msgid "" "multiple\n" "common transports supported." msgstr "" +"El protocolo de red de I2P (I2NP), el cual está intercalado entre I2CP \n" +"(Protocolo de Cliente I2P) y los diferentes protocolos de transporte I2P," +" administra el enrutado y mezclado de los mensajes entre routers, así " +"como la seleccion de qué transportes se usan cuando se comunica con un " +"par (`peer`) para el que hay múltiples transportes comunes soportados." #: i2p2www/pages/site/docs/protocol/i2np.html:15 msgid "I2NP Definition" @@ -16877,6 +17247,12 @@ msgid "" "Priority is only used locally at the origin, i.e. when queuing for " "outbound delivery." msgstr "" +"Los mensajes I2PN (Protocolo de red I2P) pueden usarse para los mensajes " +"punto a punto, router a router, de un solo salto. Al cifrar y envolver " +"los mensajes dentro de otros mensajes, pueden ser enviados de forma " +"segura a través de múltiples saltos hasta el destino final. Las " +"prioridades sólo se usan localmente, en el origen, es decir cuando se " +"hacen colas para entregas salientes." #: i2p2www/pages/site/docs/protocol/i2np.html:23 #, python-format @@ -16887,6 +17263,10 @@ msgid "" "for the current priority settings.\n" "Priority queueing implementation may vary." msgstr "" +"Las prioridades listadas abajo pueden no ser actuales y están sujetas a " +"cambios. Vea el OutNetMessage Javadocs " +"para las prioridades actuales de las opciones. La implementación de las " +"prioridades de las colas puede cambiar." #: i2p2www/pages/site/docs/protocol/i2np.html:30 msgid "Message Format" @@ -16908,15 +17288,15 @@ msgstr "Expiración" #: i2p2www/pages/site/docs/protocol/i2np.html:36 #: i2p2www/pages/site/docs/protocol/i2np.html:93 msgid "Payload Length" -msgstr "" +msgstr "Tamaño de la carga" #: i2p2www/pages/site/docs/protocol/i2np.html:37 msgid "Checksum" -msgstr "" +msgstr "Checksum" #: i2p2www/pages/site/docs/protocol/i2np.html:38 msgid "Payload" -msgstr "" +msgstr "Carga" #: i2p2www/pages/site/docs/protocol/i2np.html:41 #, python-format @@ -16930,6 +17310,13 @@ msgid "" "perfectly aligned,\n" "So the message must nominally fit in 63 fragments." msgstr "" +"Aunque el máximo tamaño de carga normalmente es de 64 KB, el tamaño \n" +"está restringido adicionalmente por el método de fragmentación de \n" +"mensajes I2NP (Protocolo de Red I2P) en múltiples mensajes de túnel de \n" +"1 KB, como se describe en la página de " +"implementación de túnel. El número máximo de fragmentos es 64, y el " +"mensaje podría no estar pefectamente alineado, así que el mensaje debe " +"ajustarse nominalmente en 63 fragmentos." #: i2p2www/pages/site/docs/protocol/i2np.html:49 msgid "" @@ -16939,6 +17326,10 @@ msgid "" "Therefore the maximum size is approximately 956 + (62 * 996) = 62708 " "bytes, or 61.2 KB." msgstr "" +"El tamaño máximo de un fragmento inicial es de 956 bytes (asumiendo el \n" +"modo de entrega del TÚNEL); el tamaño máximo de un fragmento de " +"continuación es de 996 bytes. Por lo tanto el tamaño máximo es de \n" +"aproximadamente 956 + (62 * 996) = 62708 bytes, o 61,2 KB." #: i2p2www/pages/site/docs/protocol/i2np.html:55 msgid "" @@ -16947,6 +17338,10 @@ msgid "" "increased in a future release.\n" "The SSU limit is approximately 32 KB." msgstr "" +"Además, los transportes pueden tener restricciones adicionales. NTCP (TCP" +" basado en NIO) limita actualmente a 16KB - 6 = 16378 bytes, pero esto se" +" incrementará en una versión futura. El límite SSU (UDP Seguro " +"Semiconfiable) es aproximadamente de 32 KB." #: i2p2www/pages/site/docs/protocol/i2np.html:61 msgid "" @@ -16958,6 +17353,13 @@ msgid "" "Therefore the current datagram limit is about 10KB. This limit will be\n" "increased in a future release." msgstr "" +"Observe que estos no son los límites para datagramas que el cliente ve, " +"ya \n" +"que el router puede empaquetar juntos un LeaseSet (grupo de túneles para " +"un destino) de repuesta y/o etiquetas de sesión, junto con el mensaje del" +" cliente, en un mensaje garlic (ajo). El LeaseSet y las etiquetas juntas " +"pueden añadir unos 5,5 KB. Por lo tanto el límite de datagrama actual es " +"de alrededor de 10 KB. Este límite se incrementará en una versión futura." #: i2p2www/pages/site/docs/protocol/i2np.html:69 msgid "Message Types" @@ -16974,6 +17376,18 @@ msgid "" "therefore may not be in the same queue unless the\n" "first hops happen to be on the same peer." msgstr "" +"Las prioridades numeradas-más-elevadas, son prioridades más altas. La \n" +"mayoría del tráfico son TunnelDataMessages (Mensajes de Datos de Túnel, \n" +"prioridad 400), así que cualquier cosa por encima de 400 es esencialmente" +" \n" +"de alta prioridad, y cualquier cosa por debajo es de baja prioridad. " +"Observe \n" +"también que muchos de los mensajes están por lo general enrutados a \n" +"través de túneles exploratorios, no túneles de cliente, y por lo tanto " +"pueden \n" +"no estar en la misma cola a menos que los primeros saltos resulte que se" +" \n" +"produzcan en el mismo par (`peer`)." #: i2p2www/pages/site/docs/protocol/i2np.html:81 msgid "" @@ -16982,6 +17396,11 @@ msgid "" "DeliveryStatusMessage, which is wrapped in a GarlicMessage,\n" "which is wrapped in a DataMessage." msgstr "" +"Además, no todos los tipos de mensaje se envían sin encriptar. Por\n" +"ejemplo, cuando probamos un túnel, el router envuelve un \n" +"DeliveryStatusMessage (mensaje de estado de la entrega), que es \n" +"envuelto a su vez en un GarlicMessage (mensaje ajo), que a su vez es \n" +"envuelto en un DataMessage (mensaje de datos)." #: i2p2www/pages/site/docs/protocol/i2np.html:91 msgid "Message" @@ -17001,17 +17420,20 @@ msgstr "Comentarios" #: i2p2www/pages/site/docs/protocol/i2np.html:103 msgid "May vary" -msgstr "" +msgstr "Puede variar" #: i2p2www/pages/site/docs/protocol/i2np.html:109 msgid "" "Size is 65 + 32*(number of hashes) where typically, the hashes for\n" "three floodfill routers are returned." msgstr "" +"El tamaño es 65 + 32*(número de hashes) donde típicamente, los hashes \n" +"(identificadores criptográficos) para tres routers de inundación " +"(`floodfill`) son devueltos." #: i2p2www/pages/site/docs/protocol/i2np.html:118 msgid "Varies" -msgstr "" +msgstr "Varía" #: i2p2www/pages/site/docs/protocol/i2np.html:120 msgid "" @@ -17022,22 +17444,33 @@ msgid "" "RouterInfo\n" "as we approach release 1.0." msgstr "" +"La prioridad puede variar. El tamaño es de 898 bytes para un LeaseSet de " +"2-leases (túneles hacia un destino) típico. Las estructuras de RouterInfo" +" están comprimidas, y el tamaño varía, sin embargo hay un esfuerzo " +"continuo para reducir la cantidad de datos publicados en RouterInfo \n" +"al aproximarnos a la versión 1.0." #: i2p2www/pages/site/docs/protocol/i2np.html:134 msgid "Priority may vary on a per-destination basis" -msgstr "" +msgstr "La prioridad puede variar dependiendo del destino." #: i2p2www/pages/site/docs/protocol/i2np.html:144 msgid "" "Used for message replies, and for testing tunnels - generally wrapped in " "a GarlicMessage" msgstr "" +"Usado para respuestas de mensaje, y para probar túneles - por lo general" +" \n" +"envuelto en un GarlicMessage (mensaje ajo)." #: i2p2www/pages/site/docs/protocol/i2np.html:152 msgid "" "Generally wrapped in a DataMessage -\n" "but when unwrapped, given a priority of 100 by the forwarding router" msgstr "" +"Envuelto por lo general en un DataMessage (mensaje de datos) - pero " +"cuando está desenvuelto, se le da una prioridad de 100 por el router " +"reenviante." #: i2p2www/pages/site/docs/protocol/i2np.html:179 msgid "" @@ -17046,27 +17479,35 @@ msgid "" "reduced to 200 as of release 0.6.1.33.\n" "Outbound gateway messages (i.e. those originated locally) remains at 400." msgstr "" +"El mensaje más común. La prioridad para participantes en el túnel, " +"extremos de salida, y pasarelas (`gateways`) de entrada, se redujo a 200 " +"desde la versión 0.6.1.33. Los mensajes de pasarela de salida (es decir, " +"aquellos originados localmente) permanecen en 400." #: i2p2www/pages/site/docs/protocol/i2np.html:199 msgid "Shorter TunnelBuildMessage as of 0.7.12" msgstr "" +"Un TunnelBuildMessage (mensaje de establecimiento de túnel) más corto " +"desde la versión 0.7.12" #: i2p2www/pages/site/docs/protocol/i2np.html:207 msgid "Shorter TunnelBuildReplyMessage as of 0.7.12" msgstr "" +"Un TunnelBuildReplyMessage (mensaje de respuesta de establecimiento de " +"túnel) más corto desde la versión 0.7.12" #: i2p2www/pages/site/docs/protocol/i2np.html:210 #, python-format msgid "Others listed in 2003 Spec" -msgstr "" +msgstr "Otros están listados en la Especificación 2003" #: i2p2www/pages/site/docs/protocol/i2np.html:216 msgid "Obsolete, Unused" -msgstr "" +msgstr "Obsoleto, sin usar" #: i2p2www/pages/site/docs/protocol/i2np.html:220 msgid "Full Protocol Specification" -msgstr "" +msgstr "Especificación completa del protocolo" #: i2p2www/pages/site/docs/protocol/i2np.html:221 #, python-format @@ -17076,6 +17517,10 @@ msgid "" "Common Data Structure Specification " "page." msgstr "" +"En la página de la Especificación I2NP.\n" +"Vea también la página de la Especificación de la estructura de datos " +"comunes." #: i2p2www/pages/site/docs/protocol/i2np.html:228 msgid "" @@ -17085,6 +17530,10 @@ msgid "" "further.\n" "This is a topic for further research, analysis and testing." msgstr "" +"No está claro si el actual esquema de prioridad es generalmente efectivo," +" y si las prioridades para diferentes mensajes deben seguir siendo " +"ajustadas. Este es un tema para posterior investigación, análisis y " +"pruebas." #: i2p2www/pages/site/docs/protocol/index.html:2 msgid "Protocol Stack" @@ -17096,6 +17545,8 @@ msgid "" "Here is the protocol stack for I2P.\n" "See also the Index to Technical Documentation." msgstr "" +"Aquí está la pila de protocolo para I2P.\n" +"Vea también el Índice a la documentación técnica." #: i2p2www/pages/site/docs/protocol/index.html:12 msgid "" @@ -17103,6 +17554,9 @@ msgid "" "The capabilities are listed below, starting at the bottom of the protocol" " stack." msgstr "" +"Cada una de las capas en la pila proporciona capacidades extra. Las \n" +"capacidades están listadas debajo, comenzando en el fondo de la pila de \n" +"protocolo." #: i2p2www/pages/site/docs/protocol/index.html:18 msgid "Internet Layer:" @@ -17113,6 +17567,9 @@ msgid "" "IP: Internet Protocol, allow addressing hosts on the regular internet and" " routing packets across the internet using best-effort delivery." msgstr "" +"IP: Protocolo de Internet, permite redireccionar hacia servidores en la \n" +"Internet regular y enrutar paquetes a través de Internet usando entrega " +"de mejor-esfuerzo (`best-effort`, sin garantías)" #: i2p2www/pages/site/docs/protocol/index.html:23 msgid "Transport Layer:" @@ -17123,12 +17580,16 @@ msgid "" "TCP: Transmission Control Protocol, allow reliable, in-order delivery of " "packets across the internet." msgstr "" +"TCP: Protocolo de Control de Transmisiones, permite la entrega de \n" +"paquetes confiable y ordenada a través de Internet." #: i2p2www/pages/site/docs/protocol/index.html:27 msgid "" "UDP: User Datagram Protocol, allow unreliable, out-of-order delivery of " "packets across the internet." msgstr "" +"UDP: Protocolo de Datagrama de Usuario, permite entrega de paquetes no \n" +"confiable y desordenada a través de Internet." #: i2p2www/pages/site/docs/protocol/index.html:30 msgid "" @@ -17138,18 +17599,26 @@ msgid "" "Two protocols are implemented to provide these capabilities. NTCP builds " "on top of TCP, while SSU uses UDP." msgstr "" +"Capa de Transporte I2P: proporciona conexiones cifradas entre 2 " +"routers I2P. Estos no son aún anónimos, esta es estrictamente una \n" +"conexión salto-a-salto. Se implementaron dos protocolos para \n" +"proporcionar estas capacidades. NTCP (TCP basado en NIO) \n" +"se construye encima de TCP, mientras que SSU (UDP Seguro \n" +"Semiconfiable) usa UDP." #: i2p2www/pages/site/docs/protocol/index.html:35 msgid "NIO-based TCP" -msgstr "" +msgstr "TCP basado-en-NIO" #: i2p2www/pages/site/docs/protocol/index.html:37 msgid "Secure Semi-reliable UDP" -msgstr "" +msgstr "UDP Seguro Semi-confiable" #: i2p2www/pages/site/docs/protocol/index.html:40 msgid "I2P Tunnel Layer: provide full encrypted tunnel connections." msgstr "" +"Capa de Túnel I2P: proporciona conexiones de túnel con cifrado " +"completo." #: i2p2www/pages/site/docs/protocol/index.html:42 #, python-format @@ -17162,6 +17631,13 @@ msgid "" "\n" "so it will be forwarded." msgstr "" +"Mensajes de túnel: Los mensajes de \n" +"túnel son mensajes grandes que contienen mensajes cifrados I2NP (vea " +"debajo), e instrucciones cifradas para su entrega. El cifrado está " +"dividido en \n" +"capas. El primer salto descifrará el mensaje de túnel y leerá una parte. " +"Otra parte puede aún ser cifrada (con otra clave), así que será " +"reenviada." #: i2p2www/pages/site/docs/protocol/index.html:48 #, python-format @@ -17170,12 +17646,17 @@ msgid "" " used to pass messages through multiple routers. These I2NP messages are " "combined in tunnel messages." msgstr "" +"Mensajes de I2NP: Los mensajes de Protocolo de \n" +"Red I2P se usan para pasar mensajes a múltiples routers. Estos mensajes " +"I2NP se combinan en mensajes de túnel." #: i2p2www/pages/site/docs/protocol/index.html:53 msgid "" "I2P Garlic Layer: provide encrypted and anonymous end-to-end I2P " "message delivery." msgstr "" +"Capa Garlic (ajo) de I2P: proporciona entrega de mensajes I2P \n" +"extremo-a-extremo cifrada y anónima" #: i2p2www/pages/site/docs/protocol/index.html:55 #, python-format @@ -17184,6 +17665,11 @@ msgid "" " wrapped in each other and used to ensure encryption between two tunnels " "and are passed along from source to destination, keeping both anonymous." msgstr "" +"Mensajes I2NP: Los mensajes de Protocolo de Red " +"I2P se envuelven unos en otros y se usan para asegurar el cifrado \n" +"entre dos túneles, y se transmiten desde la fuente al destino manteniendo" +" a \n" +"ambos anónimos." #: i2p2www/pages/site/docs/protocol/index.html:61 msgid "" @@ -17193,12 +17679,21 @@ msgid "" "However, each of these layers adds additional functionality, to allow " "applications simple and convenient I2P usage." msgstr "" +"Las capas siguientes estrictamente hablando ya no forman parte de la pila" +" \n" +"del Protocolo I2P, no son parte de la funcionalidad central del 'router " +"I2P'. \n" +"Sin embargo, cada una de estas capas añade funcionalidad adicional, que \n" +"permite a las aplicaciones un uso simple y conveniente de I2P." #: i2p2www/pages/site/docs/protocol/index.html:67 msgid "" "I2P Client Layer: allow any client to use I2P functionality, " "without requiring the direct use of the router API." msgstr "" +"Capa de cliente I2P: permite a cualquier cliente usar las \n" +"funcionalidades de I2P, sin requerir el uso directo de la API (Interfaz " +"de Programación de Aplicaciones) del router." #: i2p2www/pages/site/docs/protocol/index.html:69 #, python-format @@ -17207,12 +17702,19 @@ msgid "" "asynchronous messaging over I2P by communicating messages over the I2CP " "TCP socket." msgstr "" +"I2CP: El Protocolo de Cliiente I2P, permite una" +" \n" +"mensajería segura y asíncrona sobre I2P mediante la comunicación de " +"mensajes sobre el socket TCP de I2CP." #: i2p2www/pages/site/docs/protocol/index.html:74 msgid "" "I2P End-to-end Transport Layer: allow TCP- or UDP-like " "functionality on top of I2P." msgstr "" +"Capa de transporte extremo-a-extremo: permite funcionalidades del" +" \n" +"tipo-TCP o tipo-UDP encima de I2P." #: i2p2www/pages/site/docs/protocol/index.html:76 #, python-format @@ -17221,6 +17723,9 @@ msgid "" "TCP-like streams over I2P. This allows easier porting of existing " "applications to I2P." msgstr "" +"Librería de Streaming: una implementación " +"de streams tipo TCP sobre I2P. Es to permite importar fácilemente " +"aplicaciones ya existentes a I2P." #: i2p2www/pages/site/docs/protocol/index.html:80 #, python-format @@ -17229,21 +17734,28 @@ msgid "" "like messages over I2P. This allows easier porting of existing " "applications to I2P." msgstr "" +"Librería de Datagramas: un a implementación" +" de mensajes tipo UDP sobre I2P. Esto permite importar más fácilmente " +"aplicaciones ya existentes a I2P." #: i2p2www/pages/site/docs/protocol/index.html:85 msgid "" "I2P Application Interface Layer: additional (optional) libraries " "allowing easier implementations on top of I2P." msgstr "" +"Capa del interfaz para aplicaciones I2P: librerías adicionales " +"(opcionales) que permiten implementaciones más fáciles sobre I2P." #: i2p2www/pages/site/docs/protocol/index.html:93 msgid "I2P Application Proxy Layer: proxy systems." -msgstr "" +msgstr "Capa proxy para las aplicaciones I2P: sistemas proxy." #: i2p2www/pages/site/docs/protocol/index.html:95 #, python-format msgid "HTTP Client/Server, IRC Client, SOCKS, Streamr" msgstr "" +"Servidor/Cliente HTTP, cliente IRC , SOCKS, " +"Streamr." #: i2p2www/pages/site/docs/protocol/index.html:99 msgid "" @@ -17251,14 +17763,17 @@ msgid "" "a large number of applications on top of I2P.\n" "We can order this based on the I2P stack layer they use." msgstr "" +"Finalmente, la que puede puede ser considerada la 'capa de aplicación" +" de I2P', es un gran número de aplicaciones sobre I2P. Podemos " +"ordenar esto basándonos en las capas I2P que usan." #: i2p2www/pages/site/docs/protocol/index.html:104 msgid "Streaming/datagram applications: i2psnark, Syndie, i2phex..." -msgstr "" +msgstr "Aplicaciones de streaming/datagramas: i2psnark, Syndie, i2phex..." #: i2p2www/pages/site/docs/protocol/index.html:105 msgid "SAM/BOB applications: IMule, i2p-bt, i2prufus, Robert..." -msgstr "" +msgstr "Aplicaciones SAM/BOB: IMule, i2p-bt, i2prufus, Robert..." #: i2p2www/pages/site/docs/protocol/index.html:106 #, python-format @@ -17266,12 +17781,16 @@ msgid "" "Other I2P applications: Syndie, EepGet, plugins..." msgstr "" +"Otras aplicaciones I2P: Syndie, EepGet, complementos... " #: i2p2www/pages/site/docs/protocol/index.html:107 msgid "" "Regular applications: Jetty, Apache, Monotone, CVS, browsers, " "e-mail..." msgstr "" +"Aplicaciones regulares: Jetty, Apache, Monotone, CVS, navegadores," +" correo..." #: i2p2www/pages/site/docs/protocol/index.html:111 msgid "I2P Network stack" @@ -17279,15 +17798,15 @@ msgstr "Pila de red I2P" #: i2p2www/pages/site/docs/protocol/index.html:113 msgid "Figure 1: The layers in the I2P Network stack." -msgstr "" +msgstr "Figura 1: Las capas en la pila de red de I2P." #: i2p2www/pages/site/docs/protocol/index.html:118 msgid "Note: SAM/SAMv2 can use both the streaming lib and datagrams." -msgstr "" +msgstr "Nota: SAM/SAMv2 puede usar la librería de streaming y de datagramas." #: i2p2www/pages/site/docs/spec/blockfile.html:2 msgid "I2P Blockfile Specification" -msgstr "" +msgstr "Especificaciones del Blockfile, archivo de bloqueo, de I2P" #: i2p2www/pages/site/docs/spec/blockfile.html:3 msgid "January 2012" @@ -17295,7 +17814,7 @@ msgstr "Enero de 2012:" #: i2p2www/pages/site/docs/spec/blockfile.html:6 msgid "Blockfile and Hosts Database Specification" -msgstr "" +msgstr "Especificaciones de la base de datos de hosts y del Blockfile" #: i2p2www/pages/site/docs/spec/blockfile.html:8 #, python-format @@ -17305,6 +17824,9 @@ msgid "" "and the tables in the hostsdb.blockfile used by the Blockfile Naming Service." msgstr "" +"Este documento especifica el formato del blockfile de I2P y las tablas en" +" el hostsdb.blockfile usadas por el Servicio de " +"Nombres del Blockfile." #: i2p2www/pages/site/docs/spec/blockfile.html:14 msgid "" @@ -17321,6 +17843,16 @@ msgid "" " format, and the blockfile provides\n" "approximately 10x reduction in lookup times." msgstr "" +"El blockfile proporciona búsquedas rápidas de destinaciones en un formato" +" compacto. Ya que el gasto de recursos de la página blockfile es " +"substancial, las destinaciones son almacenadas en forma binaria en vez de" +" Base64 como en el formato hosts.txt. Además, el blockfile proporciona la" +" capacidad de almacenaje arbitrario de metadatos para cada entrada (como " +"la fecha añadida, origen y comentarios) . Los metadatos pueden ser usados" +" en el futuro para proporcionar características avanzadas en la libreta " +"de direcciones. El espacio de almacenamiento del blockfile sólo aumenta " +"un poco con respecto al formato hosts.txt, y el blockfile proporciona un " +"ahorro de 10x en los tiempos de búsqueda." #: i2p2www/pages/site/docs/spec/blockfile.html:24 #, python-format @@ -17333,10 +17865,16 @@ msgid "" "First we will define the file format, then the use of that format by the " "BlockfileNamingService." msgstr "" +"Un blockfile es solamente el almacenaje de múltiples mapas ordenados " +"(pares de valores de claves), implementado como skiplists, listas de " +"omitidos. El formato blockfile fue adoptado de la base de datos Blockfile Metanotion. Primero " +"definimos el formato de archivo, entonces usamos ese formato para el " +"BlockfileNamingService, servicio de nombres blockfile." #: i2p2www/pages/site/docs/spec/blockfile.html:32 msgid "Blockfile Format" -msgstr "" +msgstr "Formato Blockfile" #: i2p2www/pages/site/docs/spec/blockfile.html:33 msgid "" @@ -17349,6 +17887,12 @@ msgid "" "The metaindex skiplist is always at page 2, i.e. starting at byte 1024 in" " the file." msgstr "" +"Las especificaciones originales del blockfile fueron modificadas para " +"añadir números mágicos a cada página. El archivo está estructurado en " +"páginas de 1024 bytes. Las páginas se numeran empezando por 1. El " +"\"superbloque\" siempre está en la página 1, por ejemplo, empezando en el" +" byte 0 del archivo. El metaíndice skiplist está siempre en la página 1, " +"por ejemplo, empezando en el byte 1024 del archivo." #: i2p2www/pages/site/docs/spec/blockfile.html:40 msgid "" @@ -17356,26 +17900,34 @@ msgid "" "All 4-byte integer values (page numbers) are signed and negative values " "are illegal." msgstr "" +"Todos los valores enteros de 2 bytes son sin signo. Todos los valores " +"enteros de 4 bytes (números de página) tienen signo y los valores " +"negativos son ilegales." #: i2p2www/pages/site/docs/spec/blockfile.html:45 msgid "" "The database is designed to be opened and accessed by a single thread.\n" "The BlockfileNamingService provides synchronization." msgstr "" +"La base de datos está diseñada para ser abierta y accedida por un solo " +"hilo. El BlockfileNamingService proporciona la sincronización." #: i2p2www/pages/site/docs/spec/blockfile.html:50 msgid "Superblock format:" -msgstr "" +msgstr "Formato del Superblock, superbloque:" #: i2p2www/pages/site/docs/spec/blockfile.html:65 msgid "Skip list block page format:" -msgstr "" +msgstr "Formato del bloque de página de skiplist:" #: i2p2www/pages/site/docs/spec/blockfile.html:80 msgid "" "Skip level block page format is as follows.\n" "All levels have a span. Not all spans have levels." msgstr "" +"El formato del bloque de página del nivel de salto, skip level, es como " +"sigue. Todos los niveles tienen un span, o segmento. No todos los " +"segmentos tienen niveles." #: i2p2www/pages/site/docs/spec/blockfile.html:95 msgid "" @@ -17385,10 +17937,15 @@ msgid "" "Key/value structures are sorted by key within each span.\n" "Spans other than the first span may not be empty." msgstr "" +"El formato del segmento de omisión del bloque de página es como sigue. " +"Las estructuras clave/valor están ordenadas por la clave dentro de cada " +"segmento a través de todos los segmentos. Las estructuras clave/valor " +"están ordenadas por la clave entre cada segmento. Los segmentos " +"diferentes del primer segmento pueden que no estén vacíos." #: i2p2www/pages/site/docs/spec/blockfile.html:112 msgid "Span Continuation block page format:" -msgstr "" +msgstr "Formato del bloqye de página de la continuación del segmento." #: i2p2www/pages/site/docs/spec/blockfile.html:123 msgid "" @@ -17401,14 +17958,22 @@ msgid "" "Key and value data may be split across pages.\n" "Max key and value lengths are 65535 bytes." msgstr "" +"El formato de estructura clave/valor es como sigue. Los tramos de clave \n" +"y valor no deben ser divididos entre las páginas, es decir, todos estos 4" +" bytes deben estar en la misma página. Si no hay suficiente espacio, los " +"últimos 1-3 bytes de la página quedan sin uso y estos tramos estarán en " +"la posición 8 en la página de continuación. Los datos de clave y valor " +"pueden ser divididos entre las páginas. Los tamaños máximos de clave y " +"valor son \n" +"de 65535 bytes." #: i2p2www/pages/site/docs/spec/blockfile.html:139 msgid "Free list block page format:" -msgstr "" +msgstr "Formato de página de bloque de lista libre:" #: i2p2www/pages/site/docs/spec/blockfile.html:151 msgid "Free page block format:" -msgstr "" +msgstr "Formato de bloque de página libre:" #: i2p2www/pages/site/docs/spec/blockfile.html:160 msgid "" @@ -17417,10 +17982,14 @@ msgid "" "The key is the name of the skiplist and the value is the page index of " "the skiplist." msgstr "" +"El metaíndice (situado en la página 2) es un mapeado de cadenas US-ASCII" +" \n" +"a enteros de 4-bytes. La clave es el nombre de la lista de omisión \n" +"y el valor es el índice de páginas de la lista de omisión." #: i2p2www/pages/site/docs/spec/blockfile.html:165 msgid "Blockfile Naming Service Tables" -msgstr "" +msgstr "Tablas del servicio de nombres de ficheros de bloque" #: i2p2www/pages/site/docs/spec/blockfile.html:166 msgid "" @@ -17428,10 +17997,13 @@ msgid "" "\n" "The maximum number of entries per span is 16." msgstr "" +"Las tablas creadas y usadas por el BlockfileNamingService (servicio de " +"nombres de ficheros de bloque) son como sigue. El número máximo de " +"entradas por segmento es de 16." #: i2p2www/pages/site/docs/spec/blockfile.html:171 msgid "Properties Skiplist" -msgstr "" +msgstr "Lista de omisión de propiedades" #: i2p2www/pages/site/docs/spec/blockfile.html:172 #, python-format @@ -17442,7 +18014,7 @@ msgstr "" #: i2p2www/pages/site/docs/spec/blockfile.html:184 msgid "Reverse Lookup Skiplist" -msgstr "" +msgstr "Lista de omisión de consultas inversas" #: i2p2www/pages/site/docs/spec/blockfile.html:185 #, python-format @@ -17454,7 +18026,7 @@ msgstr "" #: i2p2www/pages/site/docs/spec/blockfile.html:199 msgid "hosts.txt, userhosts.txt, and privatehosts.txt Skiplists" -msgstr "" +msgstr "Listas de omisión hosts.txt, userhosts.txt, y privatehosts.txt" #: i2p2www/pages/site/docs/spec/blockfile.html:200 msgid "" @@ -17462,22 +18034,27 @@ msgid "" "the hosts for that database.\n" "The keys/values in these skiplists are as follows:" msgstr "" +"Para cada base de datos con servidores, hay una lista de omisión que \n" +"contiene los servidores para esa base de datos. Las claves/valores en \n" +"estas listas de omisión son como sigue:" #: i2p2www/pages/site/docs/spec/blockfile.html:211 msgid "The DestEntry Properties typically contains:" -msgstr "" +msgstr "Las propiedades DestEntry típicamente contienen:" #: i2p2www/pages/site/docs/spec/blockfile.html:220 msgid "Hostname keys are stored in lower-case and always end in \".i2p\"." msgstr "" +"Las claves de nombre de servidor se guardan en minúsculas y siempre \n" +"acaban en \".i2p\"." #: i2p2www/pages/site/docs/spec/common-structures.html:2 msgid "Common structure Specification" -msgstr "" +msgstr "Especificación de estructura común" #: i2p2www/pages/site/docs/spec/common-structures.html:6 msgid "Data types Specification" -msgstr "" +msgstr "Especificación de tipos de datos" #: i2p2www/pages/site/docs/spec/common-structures.html:7 #, python-format @@ -17487,10 +18064,13 @@ msgid "" "I2NP, I2CP,\n" "SSU, etc." msgstr "" +"Este documento decribe algunos tipos de datos comunes a todos los \n" +"protocolos I2P, como I2NP, I2CP, SSU, etc." #: i2p2www/pages/site/docs/spec/common-structures.html:17 msgid "Represents a non-negative integer.\n" -msgstr "" +msgstr "Representa un entero no-negativo.\n" #: i2p2www/pages/site/docs/spec/common-structures.html:20 #: i2p2www/pages/site/docs/spec/common-structures.html:31 @@ -17520,6 +18100,8 @@ msgstr "Contenido" #: i2p2www/pages/site/docs/spec/common-structures.html:21 msgid "1 to 8 bytes in network byte order representing an unsigned integer\n" msgstr "" +"Bytes del 1 al 8 en el orden de bytes de la red representando un entero " +"no firmado\n" #: i2p2www/pages/site/docs/spec/common-structures.html:27 msgid "" @@ -17527,14 +18109,19 @@ msgid "" "timezone.\n" "If the number is 0, the date is undefined or null.\n" msgstr "" +"El número de milisegundos desde la medianoche del 1 de enero de 1970 en \n" +"la zona horaria GMT. Si el número es 0, la fecha no está definida o está " +"vacía.\n" #: i2p2www/pages/site/docs/spec/common-structures.html:32 msgid "8 byte Integer\n" -msgstr "" +msgstr "Entero de 8 bytes\n" #: i2p2www/pages/site/docs/spec/common-structures.html:38 msgid "Represents a UTF-8 encoded string.\n" msgstr "" +"Representa una cadena codificada en UTF-8.\n" +"\n" #: i2p2www/pages/site/docs/spec/common-structures.html:42 msgid "" @@ -17544,20 +18131,27 @@ msgid "" "UTF-8 encoded character array.\n" "Length limit is 255 bytes (not characters). Length may be 0.\n" msgstr "" +"1 o más bytes donde el primer byte es el número de bytes (¡no de \n" +"caracteres!) en la cadena, y los bytes restantes entre 0-255 son la " +"matriz \n" +"de caracteres codificados en UTF-8 no terminada en caracter vacío. El \n" +"límite de tamaño es de 255 bytes (no caracteres). El tamaño puede ser 0.\n" #: i2p2www/pages/site/docs/spec/common-structures.html:50 msgid "" "A boolean value, supporting null/unknown representation\n" "0=false, 1=true, 2=unknown/null\n" msgstr "" +"Un valor booleano, que soporta representación vacío/desconocido\n" +"0=falso, 1=verdadero, 2=desconocido/vacío\n" #: i2p2www/pages/site/docs/spec/common-structures.html:55 msgid "1 byte Integer\n" -msgstr "" +msgstr "Entero de 1 byte\n" #: i2p2www/pages/site/docs/spec/common-structures.html:59 msgid "Deprecated - unused\n" -msgstr "" +msgstr "Desechado - sin uso\n" #: i2p2www/pages/site/docs/spec/common-structures.html:65 #, python-format @@ -17566,6 +18160,9 @@ msgid "" "exponent, not the primes, which are constant and defined in\n" "the cryptography specification.\n" msgstr "" +"Esta estructura se usa en el cifrado ElGamal representando sólo el " +"exponente, no los primos, que son constantes y definidos en la \n" +"especificación de criptografía.\n" #: i2p2www/pages/site/docs/spec/common-structures.html:70 #: i2p2www/pages/site/docs/spec/common-structures.html:83 @@ -17579,10 +18176,13 @@ msgid "" "exponent, not the primes which are constant and defined in\n" "the cryptography specification.\n" msgstr "" +"Esta estructura se usa en el cifrado ElGamal representando sólo el " +"exponente, no los primos, que son constantes y definidos en la \n" +"especificación de criptografía.\n" #: i2p2www/pages/site/docs/spec/common-structures.html:91 msgid "This structure is used for AES256 encryption and decryption.\n" -msgstr "" +msgstr "Esta estructura se usa para el cifrado y descifrado AES256\n" #: i2p2www/pages/site/docs/spec/common-structures.html:95 #: i2p2www/pages/site/docs/spec/common-structures.html:143 @@ -17596,6 +18196,8 @@ msgid "" "This structure is used for verifying DSA signatures.\n" msgstr "" +"Esta estructura se usa para verificar firmas DSA.\n" #: i2p2www/pages/site/docs/spec/common-structures.html:107 msgid "128 bytes\n" @@ -17607,6 +18209,8 @@ msgid "" "This structure is used for creating DSA signatures.\n" msgstr "" +"Esta estructura se usa para crear firmas DSA.\n" #: i2p2www/pages/site/docs/spec/common-structures.html:119 msgid "20 bytes\n" @@ -17618,6 +18222,8 @@ msgid "" "This structure represents the DSA " "signature of some data.\n" msgstr "" +"Esta estructura representa la firma DSA de algunos datos.\n" #: i2p2www/pages/site/docs/spec/common-structures.html:131 msgid "40 bytes\n" @@ -17625,7 +18231,7 @@ msgstr "40 bytes\n" #: i2p2www/pages/site/docs/spec/common-structures.html:139 msgid "Represents the SHA256 of some data.\n" -msgstr "" +msgstr "Representa el SHA256 de algunos datos.\n" #: i2p2www/pages/site/docs/spec/common-structures.html:151 msgid "A random number\n" @@ -17634,16 +18240,20 @@ msgstr "Un número aleatorio\n" #: i2p2www/pages/site/docs/spec/common-structures.html:163 msgid "Defines an identifier that is unique to each router in a tunnel.\n" msgstr "" +"Define un identificador que es único para cada enrutador (`router`) en un" +" túnel.\n" #: i2p2www/pages/site/docs/spec/common-structures.html:167 msgid "4 byte Integer\n" -msgstr "" +msgstr "Entero de 4 bytes\n" #: i2p2www/pages/site/docs/spec/common-structures.html:175 msgid "" "A certificate is a container for various receipts or proof of works used " "throughout the I2P network.\n" msgstr "" +"Un certificado es un contenedor para diferentes recibos de pruebas de " +"trabajo usados a lo largo de la red I2P.\n" #: i2p2www/pages/site/docs/spec/common-structures.html:179 msgid "" @@ -17651,12 +18261,20 @@ msgid "" " followed by a 2 Integer specifying the " "size of the certificate payload, then that many bytes.\n" msgstr "" +"Un entero de 1 byte especificando el tipo " +"de certificado, \n" +"seguido por un entero de 2 bytes " +"especificando \n" +"el tamaño de la carga del certificado, después de muchos bytes.\n" #: i2p2www/pages/site/docs/spec/common-structures.html:205 msgid "" "For Router Identities, the " "Certificate is always NULL, no others are currently implemented." msgstr "" +"Para las identidades de los " +"routers, el certificado siempre está VACÍO, ningún otro está " +"implementado actualmente." #: i2p2www/pages/site/docs/spec/common-structures.html:209 #, python-format @@ -17664,6 +18282,9 @@ msgid "" "For Garlic Cloves, the " "Certificate is always NULL, no others are currently implemented." msgstr "" +"Para los dientes del ajo, el" +" \n" +"certificado siempre esta VACÍO, ningún otro está implementado actualmente." #: i2p2www/pages/site/docs/spec/common-structures.html:213 #, python-format @@ -17671,6 +18292,9 @@ msgid "" "For Garlic Messages, the Certificate " "is always NULL, no others are currently implemented." msgstr "" +"Para los mensajes ajo, el certificado" +" \n" +"está siempre VACÍO, ningún otro está implementado actualmente." #: i2p2www/pages/site/docs/spec/common-structures.html:217 msgid "" @@ -17679,26 +18303,37 @@ msgid "" "however non-NULL certs are not widely used, and any checking is left to " "the application-level." msgstr "" +"Para los destinos, el certificado " +"puede \n" +"estar no-VACÍO, sin embargo los certicados no-VACÍOS no son usados \n" +"ampliamente, y cualquier comprobación se deja para el nivel de aplicación." #: i2p2www/pages/site/docs/spec/common-structures.html:228 msgid "A set of key/value mappings or properties\n" -msgstr "" +msgstr "Un conjunto de mapeados o propiedades de clave/valor\n" #: i2p2www/pages/site/docs/spec/common-structures.html:232 msgid "A 2-byte size Integer followed by a series of String=String; pairs\n" msgstr "" +"Un entero de tamaño 2-bytes seguido de una serie de pares String=String;\n" +"\n" #: i2p2www/pages/site/docs/spec/common-structures.html:259 msgid "" "The encoding isn't optimal - we either need the '=' and ';' characters, " "or the string lengths, but not both" msgstr "" +"La codificación no es óptima - bien necesitamos los caracteres '=' y ';'" +" o los \n" +"tamaños de cadena, pero no ambos" #: i2p2www/pages/site/docs/spec/common-structures.html:263 msgid "" "Some documentation says that the strings may not include '=' or ';' but " "this encoding supports them" msgstr "" +"Alguna documentación dice que las cadenas no pueden incluir '=' or ';' " +"pero esta codificación los soporta" #: i2p2www/pages/site/docs/spec/common-structures.html:267 msgid "" @@ -17708,6 +18343,12 @@ msgid "" "UTF-8 strings in a RouterInfo options mapping in a I2NP Database Store " "Message will be corrupted." msgstr "" +"Las cadenas están definidas para ser UTF-8 menos en la implementación " +"actual, I2CP (protocolo de cliente I2P) usa UTF-8 pero I2NP (protocolo de" +" red I2P) no. Por ejemplo, las cadenas UTF-8 de un mapeado de opciones \n" +"de RouterInfo (información para alcanzar el router) en un " +"DatabaseStoreMessage \n" +"(mensaje de almacenaje de base de datos) I2NP, estarán corruptos." #: i2p2www/pages/site/docs/spec/common-structures.html:273 msgid "" @@ -17715,26 +18356,36 @@ msgid "" "RouterInfo)\n" "must be sorted by key so that the signature will be invariant." msgstr "" +"Los mapeados contenidos en mensajes I2NP (es decir, en un \n" +"RouterAddress (dirección del router) o RouterInfo) deben ser ordenados " +"mediante las claves, de forma que la firma será invariante." #: i2p2www/pages/site/docs/spec/common-structures.html:278 msgid "" "Key and value string length limits are 255 bytes (not characters) each, " "plus the length byte. Length byte may be 0." msgstr "" +"Los límites de tamaño de cadenas de clave y valor son 255 bytes (no " +"caracteres) \n" +"cada una, más el byte de tamaño. El byte de tamaño puede ser 0." #: i2p2www/pages/site/docs/spec/common-structures.html:282 msgid "" "Total length limit is 65535 bytes, plus the 2 byte size field, or 65537 " "total." msgstr "" +"El límite total de tamaño es de 65535 bytes, más el campo de tamaño de \n" +"2 bytes, es decir 65537 bytes en total." #: i2p2www/pages/site/docs/spec/common-structures.html:291 msgid "Common structure specification" -msgstr "" +msgstr "Especificación de estructura común" #: i2p2www/pages/site/docs/spec/common-structures.html:295 msgid "Defines the way to uniquely identify a particular router\n" msgstr "" +"Define el camino para identificar de forma única a un enrutador " +"(`router`) en particular.\n" #: i2p2www/pages/site/docs/spec/common-structures.html:299 msgid "" @@ -17742,18 +18393,26 @@ msgid "" "href=\"#type_SigningPublicKey\">SigningPublicKey and then a Certificate\n" msgstr "" +"Clave pública (`Publickey`) seguida por \n" +"Clave pública firmante " +"(`SigningPublicKey`) y después un Certificado\n" #: i2p2www/pages/site/docs/spec/common-structures.html:336 msgid "" "The certificate for a RouterIdentity is currently unused and is always " "NULL." msgstr "" +"El certificado para un RouterIdentity actualmente no se usa y es siempre " +"NULL." #: i2p2www/pages/site/docs/spec/common-structures.html:344 msgid "" "A Destination defines a particular endpoint to which messages can be " "directed for secure delivery.\n" msgstr "" +"Una Destinación define un punto final en particular al cual pueden ser " +"enviados los mensajes para su entrega segura.\n" #: i2p2www/pages/site/docs/spec/common-structures.html:348 msgid "" @@ -17761,12 +18420,17 @@ msgid "" "href=\"#type_SigningPublicKey\">SigningPublicKey and then a Certificate\n" msgstr "" +"La PublicKey, clave pública seguida por " +"una SigningPublicKey, clave de firma " +"pública y entonces un Certificado\n" #: i2p2www/pages/site/docs/spec/common-structures.html:396 msgid "" "Defines the authorization for a particular tunnel to receive messages " "targeting a Destination.\n" msgstr "" +"Define si un túnel en particular tiene los permisos para recibir mensajes" +" apuntando a una Destinación.\n" #: i2p2www/pages/site/docs/spec/common-structures.html:400 msgid "" @@ -17775,6 +18439,10 @@ msgid "" "router, then the TunnelId, and finally an " "end Date\n" msgstr "" +"Identificador criptográfico (`hash`) SHA256 de" +" la RouterIdentity del router \n" +"pasarela (`gateway`), luego el TunnelId, y" +" finalmente una fecha de expiración.\n" #: i2p2www/pages/site/docs/spec/common-structures.html:431 msgid "Total size: 44 bytes" @@ -17795,6 +18463,22 @@ msgid "" "keyed under the SHA256 of the contained Destination.\n" msgstr "" +"Contiene todos los leases (túneles " +"asignados) para algún destino \n" +"en particular \n" +"actualmente autorizados, la PublicKey " +"(clave pública) con la que los \n" +"mensajes ajo (`garlic`) pueden ser cifrados, y luego la SigningPublicKey (clave pública de " +"firmado) \n" +"que puede usarse para revocar esta versión de la estructura en " +"particular. \n" +"El LeaseSet (grupo de leases para un " +"mismo destino) es \n" +"una de las dos estructuras guardadas en la base de datos de red (siendo " +"la otra RouterInfo), \n" +"y se cierra bajo la clave SHA256 del destino que contiene.\n" #: i2p2www/pages/site/docs/spec/common-structures.html:447 msgid "" @@ -17809,6 +18493,19 @@ msgid "" "bytes signed by the Destination's SigningPrivateKey" msgstr "" +"El destino, seguido de una PublicKey (clave pública) para el cifrado, " +"luego una SigningPublicKey (clave " +"pública de firmado) que puede usarse para revocar esta versión \n" +"del LeaseSet (conjunto de leases hacia " +"el mismo destino), después un entero de 1 " +"byte especificando cuantas estructuras de Lease (túnel asingnado a un destino) hay en el" +" conjunto, seguido por estructuras \n" +"de Lease reales, y finalmente una firma de los bytes anteriores realizada por " +"la SigningPrivateKey del destino" #: i2p2www/pages/site/docs/spec/common-structures.html:539 msgid "" @@ -17825,12 +18522,15 @@ msgid "" "It is currently generated anew at every router startup, it is not " "persistent." msgstr "" +"La clave de cifrado se usa para el cifrado extremo-a-extremo ElGamal/AES+SessionTag. Actualmente se genera" +" de nuevo en todos los arranques del router, no es persistente." #: i2p2www/pages/site/docs/spec/common-structures.html:549 msgid "" "The signature may be verified using the signing public key of the " "destination." -msgstr "" +msgstr "La firma puede verificarse usando la clave pública de firmado del destino." #: i2p2www/pages/site/docs/spec/common-structures.html:553 msgid "" @@ -17839,6 +18539,10 @@ msgid "" "It is currently generated anew at every router startup, it is not " "persistent." msgstr "" +"La clave_de_firmado actualmente está sin uso. Estaba pensada para la " +"evocación del LeaseSet (conjunto de leases para el mismo destino), que \n" +"está sin implementar. Actualmente se genera de nuevo en todos los " +"arranques del router, no es persistente." #: i2p2www/pages/site/docs/spec/common-structures.html:557 msgid "" @@ -17852,6 +18556,17 @@ msgid "" "increment the expiration\n" "of the oldest Lease by at least 1 ms in that case." msgstr "" +"La expiración más temprana de entre todos los Leases (túneles con destino" +" \n" +"asignado) se trata como una marca de tiempo o versión del LeaseSet \n" +"(conjunto de leases para un mismo destino). Los routers por lo general no" +" \n" +"aceptarán el almacenaje de un LeaseSet a menos que sea \"más nuevo\" que" +" \n" +"el actual. Tome precauciones cuando publique un nuevo LeaseSet donde el \n" +"Lease más antiguo sea el mismo que el Lease más antiguo del anterior \n" +"LeaseSet. En ese caso, el router que lo publica generalmente debe \n" +"incrementar la fecha de expiración del Lease más antiguo en al menos 1 ms." #: i2p2www/pages/site/docs/spec/common-structures.html:564 msgid "" @@ -17864,12 +18579,21 @@ msgid "" "This is an implementation detail and not part of the structures " "specification." msgstr "" +"Con anterioridad a la versión 0.9.7, cuando se incluía (un LeaseSet) en " +"un mensaje DatabaseStore (almacenaje en base de datos) enviado por el " +"router de origen, el router establecía todas las expiraciones de leases " +"publicadas al mismo valor, aquel del lease con la expiración más " +"temprana. Desde la versión 0.9.7, el router publica la fecha real de " +"expiración para cada lease. Esto es un detalle de implementación y no " +"parte de la especificación de estructuras." #: i2p2www/pages/site/docs/spec/common-structures.html:578 msgid "" "This structure defines the means to contact a router through a transport " "protocol.\n" msgstr "" +"Esta estructura define los medios para contactar con un router " +"(enrutador) a través de un protocolo de transporte.\n" #: i2p2www/pages/site/docs/spec/common-structures.html:582 msgid "" @@ -17883,10 +18607,25 @@ msgid "" "specific options necessary to establish the connection, such as\n" "IP address, port number, email address, URL, etc.\n" msgstr "" +"Un entero de 1 byte definiendo el coste " +"relativo de usar la dirección, \n" +"donde 0 es gratis y 255 es caro, seguido de la fecha de expiración tras la cual la dirección no " +"debe \n" +"ser usada, o si está vacía, la dirección nunca expira. Después de eso " +"viene una cadena que \n" +"define el protocolo de transporte que usa la dirección de este router. " +"Finalmente hay un \n" +"Mapeado que contiene todas las opciones " +"específicas de transporte necesarias para \n" +"establecer la conexión, tales como IP, dirección, número de puerto, " +"dirección de correo electrónico, URL, etc.\n" #: i2p2www/pages/site/docs/spec/common-structures.html:617 msgid "Cost is typically 5 or 6 for SSU, and 10 or 11 for NTCP." msgstr "" +"El coste típicamente es 5 o 6 para SSU (UDP seguro semiconfiable), y 10 u" +" 11 para NTCP (TCP basado en NIO)." #: i2p2www/pages/site/docs/spec/common-structures.html:621 msgid "" @@ -17897,6 +18636,14 @@ msgid "" "Implementing expiration (or another use for these bytes) will be a " "backwards-incompatible change." msgstr "" +"La fecha de expiración actualmente está sin uso, siempre vacía (todo \n" +"ceros). Desde la versión 0.9.3, la fecha de expiración se asume que es " +"cero \n" +"y no se guarda, asi que cualquier fecha de expiración no-cero fallará en " +"la \n" +"verificación de firma de RouterInfo. Implementar una fecha de expiración " +"(u \n" +"otro uso para estos bytes) será un cambio incompatible hacia atrás." #: i2p2www/pages/site/docs/spec/common-structures.html:634 msgid "" @@ -17907,12 +18654,23 @@ msgid "" "\n" "the contained RouterIdentity.\n" msgstr "" +"Define todos los datos que un router quiere publicar para que la red los " +"vea. \n" +"La RouterInfo es una de las dos " +"estructuras guardadas en \n" +"la base de datos de red (siendo la otra el LeaseSet), y se cierra bajo \n" +"la clave SHA256 de la RouterIdentity que contiene.\n" #: i2p2www/pages/site/docs/spec/common-structures.html:639 msgid "" "RouterIdentity followed by the Date, when the entry was published\n" msgstr "" +"La RouterIdentity seguida de la fecha de publicación de la entrada \n" +"\n" #: i2p2www/pages/site/docs/spec/common-structures.html:718 msgid "" @@ -17921,12 +18679,18 @@ msgid "" "This is currently unused. It was intended for a form of restricted " "routes, which is unimplemented.\n" msgstr "" +"El entero tamaño_del_par (`peer`) puede estar seguido a una lista de \n" +"muchos de esos identificadores criptográficos (`hashes`) de routers. \n" +"Actualmente esto no se usa. Estaba pensado como una forma de rutas \n" +"restringidas, que no está implementada.\n" #: i2p2www/pages/site/docs/spec/common-structures.html:723 msgid "" "The signature may be verified using the signing public key of the " "router_ident.\n" msgstr "" +"La firma puede ser verificada usando la clave pública de firmado de \n" +"router_ident (identificador del enrutador).\n" #: i2p2www/pages/site/docs/spec/common-structures.html:731 #, python-format @@ -17934,10 +18698,12 @@ msgid "" "Defined in the Tunnel Message " "Specification.\n" msgstr "" +"Definido en la especificación de " +"mensaje de túnel.\n" #: i2p2www/pages/site/docs/spec/configuration.html:2 msgid "Configuration File Specification" -msgstr "" +msgstr "Especificación de fichero de configuración" #: i2p2www/pages/site/docs/spec/configuration.html:7 msgid "" @@ -17947,6 +18713,12 @@ msgid "" "files,\n" "and links to detailed documentation where available." msgstr "" +"Esta página proporciona una especificación general de los archivos de \n" +"configuración de I2P, usados por el router y diferentes aplicaciones. " +"También \n" +"da una visión general de la información contenida en los diferentes " +"ficheros, \n" +"y enlaces a la documentación detallada donde esté disponible." #: i2p2www/pages/site/docs/spec/configuration.html:15 msgid "General Format" @@ -17959,6 +18731,9 @@ msgid "" "Java Properties\n" "with the following exceptions:" msgstr "" +"Un fichero de configuración I2P está formateado como se especifica en las" +" propiedades de Java con las siguientes " +"excepciones:" #: i2p2www/pages/site/docs/spec/configuration.html:22 msgid "Encoding must be UTF-8" @@ -17969,40 +18744,49 @@ msgid "" "Does not use or recognize any escapes, including '\\', so lines may not " "be continued" msgstr "" +"No usa o reconoce caracteres de escape alguno, incluyendo '\\', por lo " +"que las líneas no pueden ser continuadas" #: i2p2www/pages/site/docs/spec/configuration.html:24 msgid "'#' or ';' starts a comment, but '!' does not" -msgstr "" +msgstr "'#' o ';' inician un comentario, pero '!' no" #: i2p2www/pages/site/docs/spec/configuration.html:25 msgid "" "'#' starts a comment in any position but ';' must be in column 1 to start" " a comment" msgstr "" +"'#' inicia un comentario en cualquier posición pero ';' debe estar en \n" +"la columna 1 para iniciar un comentario" #: i2p2www/pages/site/docs/spec/configuration.html:26 msgid "Leading and trailing whitespace is not trimmed on keys" -msgstr "" +msgstr "Los espacios en blanco incial y final no están recortados en las claves" #: i2p2www/pages/site/docs/spec/configuration.html:27 msgid "Leading and trailing whitespace is trimmed on values" -msgstr "" +msgstr "Los espacios en blanco incial y final están recortados en los valores" #: i2p2www/pages/site/docs/spec/configuration.html:28 msgid "'=' is the only key-termination character (not ':' or whitespace)" -msgstr "" +msgstr "'=' es el único caracter de final-de-clave (no ':' o el espacio en blanco)" #: i2p2www/pages/site/docs/spec/configuration.html:29 msgid "" "Lines without '=' are ignored. It does not store the key with a value of " "\"\"" msgstr "" +"Las líneas sin '=' son ignoradas. No se guarda la clave con un valor de " +"\"\"" #: i2p2www/pages/site/docs/spec/configuration.html:30 msgid "" "As there are no escapes, keys may not contain '#', '=', or '\n" "', or start with ';'" msgstr "" +"Como no hay caracteres de escape, las claves no pueden contener \n" +"'#', '=', o '\n" +"', o comenzar con ';'" #: i2p2www/pages/site/docs/spec/configuration.html:31 msgid "" @@ -18010,12 +18794,21 @@ msgid "" "', or start or end with '\r" "' or whitespace" msgstr "" +"Como no hay caracteres de escape, los valores no pueden contener \n" +"'#' o '\n" +"', o un inicio o final con '\r" +"' o un espacio en blanco" #: i2p2www/pages/site/docs/spec/configuration.html:34 msgid "" "The file need not be sorted, but most applications do sort by key when\n" "writing to the file, for ease of reading and manual editing." msgstr "" +"El fichero no necesita ser ordenado, pero la mayoría de las aplicaciones" +" \n" +"lo ordenan por claves cuando escriben en el fichero, para facilitar la " +"lectura o \n" +"la edición manual." #: i2p2www/pages/site/docs/spec/configuration.html:39 #, python-format @@ -18026,10 +18819,17 @@ msgid "" "serialized format for I2P protocols specified in\n" "Mapping." msgstr "" +"Las lecturas y escrituras están implementadas en las \n" +" loadProps() y storeProps() de DataHelper (cargar" +" propiedades y \n" +"guardar propiedades del ayudante de datos). Observe que el formato de \n" +"fichero es significativamente diferente que el formato serializado para \n" +"protocolos I2P especificado en el mapeado." #: i2p2www/pages/site/docs/spec/configuration.html:48 msgid "Core library and router" -msgstr "" +msgstr "Librería principal y router" #: i2p2www/pages/site/docs/spec/configuration.html:50 msgid "Clients" @@ -18037,36 +18837,38 @@ msgstr "Clientes" #: i2p2www/pages/site/docs/spec/configuration.html:51 msgid "Configured via /configclients in the router console." -msgstr "" +msgstr "Configurado mediante /configclients en la consola del router." #: i2p2www/pages/site/docs/spec/configuration.html:55 msgid "Logger" -msgstr "" +msgstr "Registrador (`logger`)" #: i2p2www/pages/site/docs/spec/configuration.html:56 msgid "Configured via /configlogging in the router console." -msgstr "" +msgstr "Configurado mediante /configlogging en la consola del router." #: i2p2www/pages/site/docs/spec/configuration.html:60 msgid "Individual Plugin" -msgstr "" +msgstr "Complemento (`plugin`) individual" #: i2p2www/pages/site/docs/spec/configuration.html:61 #, python-format msgid "See the plugin specification." msgstr "" +"Vea la especificación de plugins " +"(complementos)." #: i2p2www/pages/site/docs/spec/configuration.html:66 msgid "Enable/disable for each installed plugin." -msgstr "" +msgstr "Habilitar/deshabilitar para cada complemento (`plugin`) instalado" #: i2p2www/pages/site/docs/spec/configuration.html:70 msgid "Router" -msgstr "Ruter" +msgstr "Router" #: i2p2www/pages/site/docs/spec/configuration.html:71 msgid "Configured via /configadvanced in the router console." -msgstr "" +msgstr "Configurado mediante /configadvanced en la consola del router." #: i2p2www/pages/site/docs/spec/configuration.html:75 msgid "Applications" @@ -18074,39 +18876,43 @@ msgstr "Aplicaciones" #: i2p2www/pages/site/docs/spec/configuration.html:78 msgid "See documentation in SusiDNS." -msgstr "" +msgstr "Vea la documentación en SusiDNS." #: i2p2www/pages/site/docs/spec/configuration.html:83 msgid "Configured via the application gui." msgstr "" +"Configurado mediante la GUI (interfaz gráfica de usuario) de la " +"aplicación." #: i2p2www/pages/site/docs/spec/configuration.html:88 msgid "Configured via the /i2ptunnel application in the router console." -msgstr "" +msgstr "Configurado mediante la aplicación /i2ptunnel en la consola del router." #: i2p2www/pages/site/docs/spec/configuration.html:92 msgid "Router Console" -msgstr "" +msgstr "Consola del router" #: i2p2www/pages/site/docs/spec/configuration.html:93 msgid "The router console uses the router.config file." -msgstr "" +msgstr "La consola del router usa el fichero `router.config`." #: i2p2www/pages/site/docs/spec/configuration.html:98 msgid "See post on zzz.i2p." -msgstr "" +msgstr "Vea el post en `zzz.i2p`. " #: i2p2www/pages/site/docs/spec/datagrams.html:2 msgid "Datagram Specification" -msgstr "" +msgstr "Especificación de datagrama" #: i2p2www/pages/site/docs/spec/datagrams.html:6 msgid "See the Datagrams page for an overview of the Datagrams API." msgstr "" +"Vea la página de datagramas para tener una visión general del la API \n" +"(interfaz de programación de aplicaciones) de datagramas." #: i2p2www/pages/site/docs/spec/datagrams.html:12 msgid "Non-Repliable Datagrams" -msgstr "" +msgstr "Datagramas no-respondibles" #: i2p2www/pages/site/docs/spec/datagrams.html:13 msgid "" @@ -18118,10 +18924,16 @@ msgid "" "They are not handled by the datagram API.\n" "However, SAM and the I2PTunnel classes support \"raw datagrams\"." msgstr "" +"Los datagramas no-respondibles no tienen dirección 'from' (desde) y no \n" +"están autentificados. Se les llama datagramas \"raw\" (crudos). \n" +"Estrictamente hablando, no son \"datagramas\" en absoluto, tan solo son \n" +"datos crudos. No están gestionados por la API de datagramas. Sin embargo," +" SAM (mensajería simple anónima) y las clases I2PTunnel \n" +"soportan \"raw datagrams\"." #: i2p2www/pages/site/docs/spec/datagrams.html:21 msgid "Format" -msgstr "" +msgstr "Formato" #: i2p2www/pages/site/docs/spec/datagrams.html:31 #, python-format @@ -18133,16 +18945,23 @@ msgid "" "currently limit messages to about 32 KB, although this may be raised in " "the future." msgstr "" +"La longitud es limitada por las capas más bajas de los protocolos - las " +"especificaciones de los mensajes de " +"túnel limita los mensajes a alrededor de 61,2 KB y los transportes actualmente limitan los mensajes " +"a alrededro de 32 KB, aunque esto puede aumentarse en el futuro." #: i2p2www/pages/site/docs/spec/datagrams.html:40 msgid "Repliable Datagrams" -msgstr "" +msgstr "Datagramas respondibles" #: i2p2www/pages/site/docs/spec/datagrams.html:41 msgid "" "Repliable datagrams contain a 'from' address and a signature. These add " "427 bytes of overhead." msgstr "" +"Los datagramas respondibles tiene una dirección 'desde' y una firma. Esto" +" añade 427 bytes de carga." #: i2p2www/pages/site/docs/spec/datagrams.html:91 #, python-format @@ -18153,24 +18972,32 @@ msgid "" "limited to about\n" "31.5 KB." msgstr "" +"La longitud es limitada por las capas más bajas de los protocolos - los " +"transportes actualmente limitan los " +"mensajes a 32 KB , por lo que la lingitud de los datos está limitada a " +"alrededor de 31.5 KB." #: i2p2www/pages/site/docs/spec/datagrams.html:97 msgid "See important notes above about the reliability of large datagrams." msgstr "" +"Vea las notas importantes arriba sobre la seguridad de los datagramas " +"largos." #: i2p2www/pages/site/docs/spec/geoip.html:2 msgid "GeoIP File Specification" -msgstr "" +msgstr "Especificación del archivo GeoIP" #: i2p2www/pages/site/docs/spec/geoip.html:8 msgid "" "This page specifies the format of the various GeoIP files,\n" "used by the router to look up a country for an IP." msgstr "" +"Esta página especifica el formato de varios archivos GEoIP, usados por el" +" ruter para buscar el país de una IP." #: i2p2www/pages/site/docs/spec/geoip.html:14 msgid "Country Name (countries.txt) Format" -msgstr "" +msgstr "Formato del nombre del país (countries.txt)" #: i2p2www/pages/site/docs/spec/geoip.html:15 msgid "" @@ -18178,10 +19005,12 @@ msgid "" "public sources.\n" "For example:" msgstr "" +"Este formato es generado fácilmente a partir de archivos de datos " +"disponibles en fuentes públicas. Por ejemplo:" #: i2p2www/pages/site/docs/spec/geoip.html:33 msgid "IPv4 (geoip.txt) Format" -msgstr "" +msgstr "Format IPv4 (geoip.txt)" #: i2p2www/pages/site/docs/spec/geoip.html:34 msgid "" @@ -18189,44 +19018,50 @@ msgid "" "available from many public sources.\n" "For example:" msgstr "" +"Este formato es tomado prestado de Tor y es fácilmete generado desde " +"archivos de datos disponibles en fuentes públicas. Por ejemplo:" #: i2p2www/pages/site/docs/spec/geoip.html:54 msgid "IPv6 (geoipv6.dat.gz) Format" -msgstr "" +msgstr "Formato IPv6 (geoipv6.dat.gz)" #: i2p2www/pages/site/docs/spec/geoip.html:55 msgid "" "This is a compressed binary format designed for I2P.\n" "The file is gzipped. Ungzipped format:" msgstr "" +"Este es un formato binario comprimido diseñado para I2P. El archivo es " +"comprimido con gzip. Formato descomprimido:" #: i2p2www/pages/site/docs/spec/geoip.html:71 msgid "NOTES:" -msgstr "" +msgstr "NOTAS:" #: i2p2www/pages/site/docs/spec/streaming.html:2 msgid "Streaming Library Specification" -msgstr "" +msgstr "Especificación de la librería de streaming" #: i2p2www/pages/site/docs/spec/streaming.html:6 msgid "See the Streaming page for an overview of the Streaming Library." msgstr "" +"Vea la página sobre streaming para ver una introducción a la librería de " +"srteaming." #: i2p2www/pages/site/docs/spec/streaming.html:11 msgid "Packet Format" -msgstr "" +msgstr "Formato de paquete" #: i2p2www/pages/site/docs/spec/streaming.html:12 msgid "The format of a single packet in the streaming protocol is:" -msgstr "" +msgstr "El formato para un sólo paquete en el protocolo de streaming es:" #: i2p2www/pages/site/docs/spec/streaming.html:35 msgid "Length" -msgstr "" +msgstr "Longitud" #: i2p2www/pages/site/docs/spec/streaming.html:83 msgid "Flags and Option Data Fields" -msgstr "" +msgstr "Flags/Banderas y opciones de los campos de datos" #: i2p2www/pages/site/docs/spec/streaming.html:84 msgid "" @@ -18236,10 +19071,14 @@ msgid "" "area\n" "in the given order." msgstr "" +"El campo de banderas especifica algunos metadatos sobre el paquete, y a " +"su vez requiere que se incluyan ciertos datos adicionales. Cualquier " +"estructura de datos epecificada tiene que ser añadida al area de las " +"opciones en el orden siguiente." #: i2p2www/pages/site/docs/spec/updates.html:2 msgid "I2P Software Update Specification" -msgstr "" +msgstr "Especificación de la actualización de I2P" #: i2p2www/pages/site/docs/spec/updates.html:7 msgid "" @@ -18249,6 +19088,12 @@ msgid "" "There is a hardcoded backup URL pointing to the project website, in case\n" "the default project news host goes down." msgstr "" +"I2P usa un sistema simple, pero seguro, para las actualizaciones " +"automáticas del software. La consola del ruter periódicamente descarga un" +" archivo de noticias desde una URL de I2P configurable. Hay una URL de " +"respaldo incluida en el código del programa apuntando a la web del " +"proyecto, en caso de que el servidor de noticias que está por defecto se " +"cayese." #: i2p2www/pages/site/docs/spec/updates.html:14 msgid "" @@ -18259,6 +19104,11 @@ msgid "" "If the version is higher than the router's version number, it will\n" "display an indication to the user that an update is available." msgstr "" +"El contenido del archivo de noticias se muestra en la página principal de" +" la consola del ruter. Además, el archivo de noticias contiene el número " +"de versión más reciente de la aplicación. Si la versión es mayor que la " +"versión del ruter usado, mostrará una indicación al usuario de que hay " +"una actualización disponible." #: i2p2www/pages/site/docs/spec/updates.html:21 msgid "" @@ -18266,14 +19116,16 @@ msgid "" "version\n" "if configured to do so." msgstr "" +"El ruter opcionalmente puede descargar la nueva versión o descargarla e " +"instalarla. Si se ha configurado para ello." #: i2p2www/pages/site/docs/spec/updates.html:26 msgid "News File Specification" -msgstr "" +msgstr "Especificación del archivo de noticias" #: i2p2www/pages/site/docs/spec/updates.html:27 msgid "The news.xml file may contain the following elements:" -msgstr "" +msgstr "El archivo news.xml puede ocntener los siguientes elementos:" #: i2p2www/pages/site/docs/spec/updates.html:35 msgid "" @@ -18283,6 +19135,10 @@ msgid "" " and are\n" "currently unused." msgstr "" +"Los elementos pueden incluirse dentro de los comentarios XML para " +"prevenir su interpretación por parte de los navegadores. El elemento " +"i2p.release y la versión son necesarios. Todos los demás son opcionales y" +" actualmente no se usan." #: i2p2www/pages/site/docs/spec/updates.html:41 msgid "" @@ -18291,10 +19147,13 @@ msgid "" "It does not specify the URL of the update, the checksum, or any other " "information." msgstr "" +"La fuente de las noticias sólo es confiable para indicar la nueva versión" +" disponible. No especifica la URL de la actualización, el checksum o " +"cualquier otra información." #: i2p2www/pages/site/docs/spec/updates.html:47 msgid "Update File Specification" -msgstr "" +msgstr "Especificación del archivo de actualizaciones" #: i2p2www/pages/site/docs/spec/updates.html:48 msgid "" @@ -18302,6 +19161,9 @@ msgid "" "is simply a zip file with a prepended 56 byte header.\n" "The header contains:" msgstr "" +"El archivo firmado de actualizaciones, tradicionalmente llamado " +"i2pupdate.sud, no es más que un archivo zip con una cabecera de 56 bytes " +"antepuesta. La cabecera contiene:" #: i2p2www/pages/site/docs/spec/updates.html:54 #, python-format @@ -18309,10 +19171,14 @@ msgid "" "A 40-byte DSA " "signature" msgstr "" +"Una firma DSA de 40 " +"bytes" #: i2p2www/pages/site/docs/spec/updates.html:57 msgid "A 16-byte I2P version in UTF-8, padded with trailing zeroes if necessary" msgstr "" +"La versión de I2P de 16 bytes en UTF-8, rellenada con ceros si es " +"necesario." #: i2p2www/pages/site/docs/spec/updates.html:62 #, python-format @@ -18324,6 +19190,11 @@ msgid "" "which has a hardcoded default list of keys of the current project release" " managers." msgstr "" +"La firma sólo cubre el archivo zip - no la versión antepuesta. La firma " +"tiene que coincidir una de las claves públicas " +"DSA configuradas en el ruter, el cual tiene en el código las claves " +"de los administradores actuales del proyecto." #: i2p2www/pages/site/docs/spec/updates.html:68 msgid "" @@ -18331,6 +19202,9 @@ msgid "" "separators are\n" "'-', '_', and '.', and all other characters are ignored." msgstr "" +"Para comparar las versiones, los campos de versiones contienen [0-9]*, " +"los separadores de campos son '-', '_', y '.', y los demás caracteres son" +" ignorados." #: i2p2www/pages/site/docs/spec/updates.html:73 msgid "" @@ -18343,10 +19217,16 @@ msgid "" "signature.\n" "This prevents spoofing of the version number in the header." msgstr "" +"A partir de la versión 0.8.8, la versión tiene también que ser " +"especificada como un comentario en el archivo zip en UTF-8, sin ceros a " +"la derecha. El ruter actualizándose verifica que la versión en la " +"cabecera (no cubierta por la firma) coincide con la versión en el " +"comentario del archivo zip, el cual si está cubierto por la firma. Esto " +"previene la falsificación del número de versión en la cabecera." #: i2p2www/pages/site/docs/spec/updates.html:81 msgid "Download and Installation" -msgstr "" +msgstr "Descarga e instalación" #: i2p2www/pages/site/docs/spec/updates.html:82 msgid "" @@ -18363,10 +19243,19 @@ msgid "" "verifes that the zip file comment matches the header version, as " "explained above." msgstr "" +"El ruter primero descarga la cabecera del archivo de actualización de una" +" lista configurable de URLs de I2P, usando el cliente HTTP y el proxy " +"incluidos en él, y comprueba si la versión es más nueva. Esto soluciona " +"el problema de que los servidores no tengan el último archivo. Entonces " +"el ruter descarga el archivo de la actualización completa. El ruter " +"verifica que la versión del archivo es más nueva antes de instalarlo. " +"También, por supuesto, verifica la firma, y verifica que el comentario " +"del archivo zip coincida con la versión de la cabecera, como se ha " +"explicado antes." #: i2p2www/pages/site/docs/spec/updates.html:93 msgid "The zip file is extracted in the base $I2P installation directory." -msgstr "" +msgstr "El archivo zip es extraído en el directorio base de instalación de $i2P." #: i2p2www/pages/site/docs/spec/updates.html:97 msgid "" @@ -18386,6 +19275,9 @@ msgid "" "will\n" "be extracted from jbigi.jar." msgstr "" +"A partir de la versión 0.8.7, el ruter borrará los archivos libjbigi.so y" +" libjcpuid.so si el archivo zip contiene un archivo lib/jbigi.jar, para " +"que los nuevos archivos sean extraídos desde jbigi.jar." #: i2p2www/pages/site/docs/spec/updates.html:111 msgid "" @@ -18393,44 +19285,52 @@ msgid "" "the router will\n" "delete the files listed there. The format is:" msgstr "" +"A partir de la versión 0.8.12, el archivo zip contiene un archivo " +"deletelist.txt, el ruter borrará los archivos listados ahí. Su formato " +"es:" #: i2p2www/pages/site/docs/spec/updates.html:116 msgid "One file name per line" -msgstr "" +msgstr "Un nombre de archivo en cada línea" #: i2p2www/pages/site/docs/spec/updates.html:117 msgid "" "All file names are relative to the installation directory; no absolute " "file names allowed, no files starting with \"..\"" msgstr "" +"Los nombres de archivos son relativos al directorio de instalación; no se" +" permiten nombres de archivos absolutos, ni archivos que comiencen por " +"\"..\"" #: i2p2www/pages/site/docs/spec/updates.html:118 msgid "Comments start with '#'" -msgstr "" +msgstr "Los comentarios comienzan con '#'" #: i2p2www/pages/site/docs/spec/updates.html:121 msgid "The router will then delete the deletelist.txt file." -msgstr "" +msgstr "El ruter borrará entonces el archivo deletelist.txt." #: i2p2www/pages/site/docs/spec/updates.html:126 msgid "New \"su3\" Update File Specification" -msgstr "" +msgstr "Nueva especificación para el archivo de actualizaciones \"su3\"" #: i2p2www/pages/site/docs/spec/updates.html:128 msgid "This specification is preliminary and is not yet implemented." -msgstr "" +msgstr "Esta es una especificación preliminar y aún no está implementada." #: i2p2www/pages/site/docs/spec/updates.html:132 msgid "Issues with existing .sud/.su2 format:" -msgstr "" +msgstr "Problemas con el formato .sud/.su2 existente." #: i2p2www/pages/site/docs/spec/updates.html:134 msgid "No magic number or flags" -msgstr "" +msgstr "Sin números mágicos o banderas" #: i2p2www/pages/site/docs/spec/updates.html:137 msgid "No way to specify compression, pack200 or not, or signing algo" msgstr "" +"No hay forma de especificar compresión, pack200 o no, o algoritmo de " +"firma." #: i2p2www/pages/site/docs/spec/updates.html:140 msgid "" @@ -18438,40 +19338,52 @@ msgid "" "to be in the zip file comment (for router files) or in the plugin.config\n" "file (for plugins)" msgstr "" +"La versión no está cubierta por la firma, lo que se consigue requiriendo " +"que esté en el comentario del archivo zip (para los archivos del ruter) o" +" en el archivo plugin.config (para los aomplementos)" #: i2p2www/pages/site/docs/spec/updates.html:145 msgid "Signer not specified so verifier must try all known keys" msgstr "" +"El firmante no se especifica, por lo que el que lo verifica tiene que " +"conocer todas las claves" #: i2p2www/pages/site/docs/spec/updates.html:148 msgid "Signature-before-data format requires two passes to generate file" msgstr "" +"El formato de firma-antes-que-datos requiere 2 pasadas para generar el " +"archivo." #: i2p2www/pages/site/docs/spec/updates.html:154 msgid "Goals:" -msgstr "" +msgstr "Objetivos:" #: i2p2www/pages/site/docs/spec/updates.html:157 msgid "Fix above problems" -msgstr "" +msgstr "Arreglas los problemas anteriores" #: i2p2www/pages/site/docs/spec/updates.html:160 msgid "Migrate to more secure signature algorithm" -msgstr "" +msgstr "Cambiar a un algoritmo de firma más seguro" #: i2p2www/pages/site/docs/spec/updates.html:163 msgid "" "Keep version info in same format and offset for compatibility with\n" "existing version checkers" msgstr "" +"Mantener la información de versión en el mismo formato y lugar para que " +"siga siendo compatible con las versiones de los los verificadores ya " +"existentes" #: i2p2www/pages/site/docs/spec/updates.html:169 msgid "Specification:" -msgstr "" +msgstr "Especificación:" #: i2p2www/pages/site/docs/spec/updates.html:217 msgid "All unused fields must be set to 0 for compatibility with future versions." msgstr "" +"Por compatibilidad, todos los campos no usados tienen que ser 0 en las " +"futuras versiones." #: i2p2www/pages/site/docs/spec/updates.html:224 msgid "" @@ -18480,6 +19392,10 @@ msgid "" "update method.\n" "This development effort is ongoing and should be completed by late 2013." msgstr "" +"La red puede crecer demasiado como para actualizar por HTTP. El cliente " +"de torrents integrado i2psnark puede usarse como un método de " +"actualización distribuido. Este esfuerzo de desarrollo continúa, y " +"debería estar completo en el 2013." #: i2p2www/pages/site/docs/spec/updates.html:229 msgid "" @@ -18487,18 +19403,21 @@ msgid "" "There is currently no provision for updates of an embedded router lacking" " the router console." msgstr "" +"El mecanismo de actualización del ruter es parte de la web de la consola " +"de ruter. Por el momento no hay posibilidad de actualizar un ruter " +"embebido que carezca de la consola del ruter." #: i2p2www/pages/site/docs/transport/index.html:2 msgid "Transport Overview" -msgstr "" +msgstr "Introducción al los Transportes" #: i2p2www/pages/site/docs/transport/index.html:3 msgid "April 2013" -msgstr "" +msgstr "Abril 2013" #: i2p2www/pages/site/docs/transport/index.html:6 msgid "Transports in I2P" -msgstr "" +msgstr "Transportes den I2P" #: i2p2www/pages/site/docs/transport/index.html:8 msgid "" @@ -18510,36 +19429,45 @@ msgid "" "contacted \n" "is the one who should receive a given message." msgstr "" +"Un \"transporte\" en I2P es un método para la comunicación directa de " +"punto a punto entre dos ruters. Los transportes tienen que proporcionar " +"confidencialidad e integridad contra adversarios externos a la vez que se" +" aseguran de que el ruter contactado es el que recibe el mensaje " +"indicado." #: i2p2www/pages/site/docs/transport/index.html:16 msgid "" "I2P supports multiple transports simultaneously.\n" "There are two transports currently implemented:" msgstr "" +"I2P soporta múltiples transportes a la vez. Actualmente hay dos " +"transportes implementados:" #: i2p2www/pages/site/docs/transport/index.html:21 #, python-format msgid "NTCP, a Java New I/O (NIO) TCP transport" -msgstr "" +msgstr "NTCP, un nuevo transporte I/O (NIO) TCP en Java" #: i2p2www/pages/site/docs/transport/index.html:22 #, python-format msgid " SSU, or Secure Semireliable UDP" -msgstr "" +msgstr "a href=\"%(ssu)s\">SSU, o UDP seguro semi-fiable" #: i2p2www/pages/site/docs/transport/index.html:25 msgid "" "Each provides a \"connection\" paradigm, with authentication,\n" "flow control, acknowledgments and retransmission." msgstr "" +"Cada uno proporciona un modelo de \"conexión\", con autenticación control" +" de flujo, contestaciones y retransmisión." #: i2p2www/pages/site/docs/transport/index.html:31 msgid "Transport Services" -msgstr "" +msgstr "Servicios de trasnporte" #: i2p2www/pages/site/docs/transport/index.html:33 msgid "The transport subsystem in I2P provides the following services:" -msgstr "" +msgstr "El sub-sistema de transportes en I2P proporciona los siguientes servicios:" #: i2p2www/pages/site/docs/transport/index.html:37 msgid "" @@ -18547,28 +19475,33 @@ msgid "" "that the router publishes as its global contact information (the " "RouterInfo)" msgstr "" +"Mantener un conjunto de direcciones de ruters, una o más por cada " +"transporte, que el ruter publicará como su información de contacto global" +" (el RouterInfo)" #: i2p2www/pages/site/docs/transport/index.html:41 msgid "Selection of the best transport for each outgoing message" -msgstr "" +msgstr "Selección del mejor transporte para cada mensaje saliente" #: i2p2www/pages/site/docs/transport/index.html:42 msgid "Queueing of outbound messages by priority" -msgstr "" +msgstr "Poner en cola los mensajes salientes según la prioridad" #: i2p2www/pages/site/docs/transport/index.html:43 msgid "" "Bandwidth limiting, both outbound and inbound, according to router " "configuration" msgstr "" +"Límite de ancho de banda, de entrada y de salida, de acuerdo con la " +"configuración del ruter." #: i2p2www/pages/site/docs/transport/index.html:44 msgid "Setup and teardown of transport connections" -msgstr "" +msgstr "Configuración y desmontaje de las conexiones de trasnporte" #: i2p2www/pages/site/docs/transport/index.html:45 msgid "Encryption of point-to-point communications" -msgstr "" +msgstr "Cifrado de las comunicaciones de fin a fin." #: i2p2www/pages/site/docs/transport/index.html:46 msgid "" @@ -18577,26 +19510,34 @@ msgid "" "and communication of threshold status to the router so it may make " "operational changes based on the status" msgstr "" +"Mantenimiento y límites de conexión para cada transporte, implementación " +"de varios umbrales para esos límites, y la comunicación del estado de " +"esos umbrales al ruter para que pueda hacer cambios operacionales basados" +" en su estado." #: i2p2www/pages/site/docs/transport/index.html:50 msgid "Firewall port opening using UPnP (Universal Plug and Play)" -msgstr "" +msgstr "Abrir puertos en el cortafuegos usando UPnP (Universal Plug and Play)" #: i2p2www/pages/site/docs/transport/index.html:51 msgid "Cooperative NAT/Firewall traversal" -msgstr "" +msgstr "NAT/Cortafuegos cooperativo trasversal" #: i2p2www/pages/site/docs/transport/index.html:52 msgid "" "Local IP detection by various methods, including UPnP, inspection of " "incoming connections, and enumeration of network devices" msgstr "" +"Detección de la IP local por varios métodos, incluyendo UPnP, inspección " +"de los paquetes entrantes y enumeración de los dispositivos de red" #: i2p2www/pages/site/docs/transport/index.html:53 msgid "" "Coordination of firewall status and local IP, and changes to either, " "among the transports" msgstr "" +"Coordinación del estado del cortafuegos y la IP local, y sus cambios, a " +"lo largo de los transportes " #: i2p2www/pages/site/docs/transport/index.html:54 #: i2p2www/pages/site/docs/transport/ssu.html:32 @@ -18604,12 +19545,16 @@ msgid "" "Communication of firewall status and local IP, and changes to either, to " "the router and the user interface" msgstr "" +"Coordinación del estado del cortafuegos y la IP local, y sus cambios, con" +" el ruter y el interfaz del usuario" #: i2p2www/pages/site/docs/transport/index.html:55 msgid "" "Determination of a consensus clock, which is used to periodically update " "the router's clock, as a backup for NTP" msgstr "" +"Determinación de un reloj consensuado, que se usa para actualizar " +"periódicamente el reloj del ruter, como respaldo para NTP" #: i2p2www/pages/site/docs/transport/index.html:56 msgid "" @@ -18617,10 +19562,13 @@ msgid "" "whether it was recently connected,\n" "and whether it was reachable in the last attempt" msgstr "" +"Mantenimiento del estado de cada par, incluyendo cuando está conectado, " +"si se ha conectado recientemente y si estaba accesible en el último " +"intento." #: i2p2www/pages/site/docs/transport/index.html:60 msgid "Qualification of valid IP addresses according to a local rule set" -msgstr "" +msgstr "Calificación de una IP válida de acuerdo con un grupo de normas locales." #: i2p2www/pages/site/docs/transport/index.html:61 msgid "" @@ -18628,10 +19576,13 @@ msgid "" " router,\n" "and refusing outbound and inbound connections to those peers" msgstr "" +"Honrar las listas manuales y automáticas mantenidas por el ruter de los " +"pares baneados, y denegar las conexiones entrantes o salientes a esos " +"pares" #: i2p2www/pages/site/docs/transport/index.html:68 msgid "Transport Addresses" -msgstr "" +msgstr "Direcciones de trasnporte" #: i2p2www/pages/site/docs/transport/index.html:70 msgid "" @@ -18640,16 +19591,22 @@ msgid "" "These addresses constitute the advertised contact points, and are " "published by the router to the network database." msgstr "" +"El sistema de transporte mantiene un conjunto de direcciones de ruters, " +"cada cual lista un método de transporte, IP y puerto. Estas direcciones " +"constituyen los puntos de contactos anunciados, y son re-publicados por " +"el ruter en la base de datos de la red." #: i2p2www/pages/site/docs/transport/index.html:75 msgid "Typical scenarios are:" -msgstr "" +msgstr "Los espenarios típicos son:" #: i2p2www/pages/site/docs/transport/index.html:77 msgid "" "A router has no published addresses, so it is considered \"hidden\" and " "cannot receive incoming connections" msgstr "" +"Un ruter no tiene direcciones publicadas, con lo que es considerado " +"\"oculto\" y no puede recibir conexiones entrantes" #: i2p2www/pages/site/docs/transport/index.html:78 #, python-format @@ -18659,6 +19616,10 @@ msgid "" "peers or \"introducers\" who will assist in NAT traversal (see the SSU spec for details)" msgstr "" +"Un ruter esta bloqueado por el cortafuegos, y por lo tanto publica una " +"dirección SSU la cual contiene una lista de pares cooperantes o " +"\"introductores\" que ayudarán con el NAT transversal (vea a " +"href=\"%(ssu)s\">la especificación SSU para más detalles)" #: i2p2www/pages/site/docs/transport/index.html:82 msgid "" @@ -18666,10 +19627,13 @@ msgid "" "NTCP and SSU addresses containing\n" "directly-accessible IP and ports." msgstr "" +"Un ruter no esta bloqueado por el firewall o sus puertos NAT están " +"abiertos; publica ambas direcciones, NTCP y SSU, que contiene la IP y los" +" puertos accesibles." #: i2p2www/pages/site/docs/transport/index.html:88 msgid "Transport Selection" -msgstr "" +msgstr "Selección del transporte" #: i2p2www/pages/site/docs/transport/index.html:90 #, python-format @@ -18686,6 +19650,13 @@ msgid "" "datagrams\n" "etc.)." msgstr "" +"El sistema de transporte entrega los mensajes " +"I2NP. El transporte seleccionado para cualquier mensaje es " +"independiente de los protocolos de las capas superiores y sus contenidos " +"(los mensajes del ruter o cliente, si alguna aplicación externa estaba " +"usado conexiones TCP o UDP a I2P, si la capa superior usaba a " +"href=\"%(streaming)s\">la librería de streaming o los datagramas, etc)" #: i2p2www/pages/site/docs/transport/index.html:104 msgid "" @@ -18695,48 +19666,60 @@ msgid "" "the message for delivery.\n" "A transport may refuse to bid." msgstr "" +"Para cada mensaje saliente, el sistema de transporte solicita \"ofertas\"" +" de cada transporte. El transporte que ofrece el valor más bajo (mejor) " +"gana la apuesta y recibe el mensaje para ser entregado. Un transporte " +"puede negarse a apostar." #: i2p2www/pages/site/docs/transport/index.html:110 msgid "Whether a transport bids, and with what value, depend on numerous factors:" msgstr "" +"Si un transporte apuesta o no, y con qué valor, depende de numerosos " +"factores:" #: i2p2www/pages/site/docs/transport/index.html:114 msgid "Configuration of transport preferences" -msgstr "" +msgstr "Configuarión de las preferencias de trasnporte" #: i2p2www/pages/site/docs/transport/index.html:115 msgid "Whether the transport is already connected to the peer" -msgstr "" +msgstr "Si el transporte ya está conectado al par" #: i2p2www/pages/site/docs/transport/index.html:116 msgid "" "The number of current connections compared to various connection limit " "thresholds" msgstr "" +"El número de las conexiones actuales comparado con varios límites de " +"conexión." #: i2p2www/pages/site/docs/transport/index.html:117 msgid "Whether recent connection attempts to the peer have failed" -msgstr "" +msgstr "Si un intento de conexión reciente ha fallado" #: i2p2www/pages/site/docs/transport/index.html:118 msgid "" "The size of the message, as different transports have different size " "limits" msgstr "" +"El tamaño del mensaje, ya que diferentes transportes tienen diferentes " +"límites de tamaño" #: i2p2www/pages/site/docs/transport/index.html:119 msgid "" "Whether the peer can accept incoming connections for that transport, as " "advertised in its RouterInfo" msgstr "" +"Si el par puede aceptar conexiones entrantes para ese transporte, como se" +" indica en su RouterInfo" #: i2p2www/pages/site/docs/transport/index.html:120 msgid "Whether the connection would be indirect (requiring introducers) or direct" -msgstr "" +msgstr "Si la conexión debería ser indirecta (requiriendo introductores) o directa" #: i2p2www/pages/site/docs/transport/index.html:121 msgid "The peer's transport preference, as advertised in its RouterInfo" -msgstr "" +msgstr "El transporte preferido por el par, como se anuncia en el RouterInfo" #: i2p2www/pages/site/docs/transport/index.html:124 msgid "" @@ -18744,24 +19727,29 @@ msgid "" "connected by a single transport\n" "at any one time. However, this is not a requirement." msgstr "" +"En general, los valores de las ofertas son seleccionados para que los " +"ruters sólo estén conectados a un solo transporte a la vez. Aunque esto " +"no es obligatorio." #: i2p2www/pages/site/docs/transport/index.html:131 msgid "New Transports and Future Work" -msgstr "" +msgstr "Nuevos transportes y trabajos futuros" #: i2p2www/pages/site/docs/transport/index.html:133 msgid "Additional transports may be developed, including:" -msgstr "" +msgstr "Puede que se desarrollen transportes adicionales, incluyendo:" #: i2p2www/pages/site/docs/transport/index.html:138 msgid "A TLS/SSH look-alike transport" -msgstr "" +msgstr "Un transporte que parezca TLS/SSH" #: i2p2www/pages/site/docs/transport/index.html:139 msgid "" "An \"indirect\" transport for routers that are not reachable by all other" " routers (one form of \"restricted routes\")" msgstr "" +"Un transporte \"indirecto\" para los ruters que no sean accesibles por " +"todos los otros ruters (una forma de \"ruters restringidos\")" #: i2p2www/pages/site/docs/transport/index.html:142 #, python-format @@ -18772,6 +19760,11 @@ msgid "" "single IPV4 address.\n" "See this thread for discussion." msgstr "" +"IPV6: Los trasnportes existentes tienen que ser mejorados para soportar " +"múltiples direcciones dentro de un mismo transporte, incluyendo " +"direcciones IPV6. Actualmente, un transporte puede que sólo anuncie una " +"dirección IPV4. Vea este hilo para su " +"discosión." #: i2p2www/pages/site/docs/transport/index.html:148 msgid "" @@ -18783,6 +19776,12 @@ msgid "" "connection limits, and by\n" "routers that are behind restrictive state firewalls (restricted routes)." msgstr "" +"Seguimos trabajando para ajustar los límites de las conexiones de cada " +"transporte. I2P está diseñado como una \"red mesh\", donde se asume que " +"cada ruter puede conectar con cualquier otro ruter. Esta asunción puede " +"ser falsa para los ruter que han excedido los límites de conexiones, y " +"para los ruters detrás de cortafuegos de estado restrictivos (rutas " +"restringidas)." #: i2p2www/pages/site/docs/transport/index.html:155 msgid "" @@ -18794,6 +19793,12 @@ msgid "" "on the Java heap,\n" "that assumption is difficult to verify." msgstr "" +"Los actuales límites de la conexión son más altos para SSU (UDP seguro \n" +"semiconfiable) que para NTCP (TCP basado en NIO), partiendo de asumir \n" +"que los requisitos de memoria para una conexión NTCP son mayores que \n" +"para una SSU. Sin embargo, como los buffers (prealmacenamiento) NTCP " +"están parcialmente en el kernel (núcleo del sistema) y los buffers SSU " +"están en la pila de Java, esa asunción es difícil de verificar." #: i2p2www/pages/site/docs/transport/index.html:162 #, python-format @@ -18802,10 +19807,15 @@ msgid "" "Obfuscation\n" "and see how transport-layer padding may improve things." msgstr "" +"Analice Breaking and Improving Protocol " +"Obfuscation (rompiendo y \n" +"mejorando el protocolo de ofuscación) y vea como usar datos de relleno \n" +"(descartables criptográficamente) en la capa-de-transporte puede mejorar " +"las cosas." #: i2p2www/pages/site/docs/transport/ntcp.html:6 msgid "NTCP (NIO-based TCP)" -msgstr "" +msgstr "NTCP (TCP basado-en-NIO)" #: i2p2www/pages/site/docs/transport/ntcp.html:8 #, python-format @@ -18817,6 +19827,13 @@ msgid "" "Java NIO (new I/O) does not suffer from the 1 thread per connection " "issues of the old TCP transport." msgstr "" +"NTCP es uno de los dos transportes " +"implementados actualmente en I2P. El otro es SSU." +" NTCP es \n" +"un transporte Java basado-en-NIO presentado en la versión 0.6.1.22 de " +"I2P. \n" +"La (API) NIO (nueva entrada/salida) de Java no adolece de los problemas \n" +"con 1 hilo por conexión del antiguo transporte TCP." #: i2p2www/pages/site/docs/transport/ntcp.html:15 msgid "" @@ -18826,6 +19843,13 @@ msgid "" "or when the firewall status changes.\n" "Now you can enable inbound TCP without a static IP or dyndns service." msgstr "" +"Por defecto, NTCP usa la IP/puerto autodetectados por SSU. Cuando esté \n" +"habilitado en config.jsp, SSU notificará/reiniciará NTCP cuando cambie " +"una \n" +"dirección externa o cuando cambie el estado del cortafuegos (`firewall`)." +"\n" +"Ahora puede habilitar la conexión TCP entrante sin una IP estática o un \n" +"servicio DynDNS." #: i2p2www/pages/site/docs/transport/ntcp.html:23 msgid "" @@ -18833,14 +19857,18 @@ msgid "" "SSU code)\n" "because it uses the underlying Java TCP transport for reliable delivery." msgstr "" +"El código de NTCP dentro de I2P es relativamente ligero (1/4 del tamaño " +"del \n" +"código de SSU) porque usa el transporte TCP Java subyacente para una " +"entrega fiable." #: i2p2www/pages/site/docs/transport/ntcp.html:29 msgid "NTCP Protocol Specification" -msgstr "" +msgstr "Especificación del protocolo NTCP" #: i2p2www/pages/site/docs/transport/ntcp.html:31 msgid "Standard Message Format" -msgstr "" +msgstr "Formato de mensaje standard" #: i2p2www/pages/site/docs/transport/ntcp.html:32 msgid "" @@ -18849,6 +19877,11 @@ msgid "" "checksum.\n" "The unencrypted message is encoded as follows:" msgstr "" +"Después del establecimiento, el trasporte NTCP envía mensajes " +"individuales \n" +"I2NP (protocolo de red I2P), con un identificador criptográfico " +"(`checksum`). \n" +"El mensaje no cifrado está codificado como de la siguiente manera:" #: i2p2www/pages/site/docs/transport/ntcp.html:42 msgid "" @@ -18861,6 +19894,15 @@ msgid "" "The IV for AES/256/CBC encryption is the last 16 bytes of the previous " "encrypted message." msgstr "" +"Los datos entonces están cifrados con AES/256/CBC (cadena de cifrado \n" +"por bloques con el standard avanzado de encriptación de 256 bits). La " +"clave \n" +"de sesión para el cifrado se negocia durante el establecimiento (usando \n" +"Diffie-Hellman de 2048 bits). El establecimiento entre dos routers " +"(enrutadores) está implementado en la clase EstablishState (estado del\n" +"establecimiento) y detallado debajo. El IV (vector de inicialización) " +"para el \n" +"cifrado AES/256/CBC son los últimos 16 bytes del anterior mensaje cifrado." #: i2p2www/pages/site/docs/transport/ntcp.html:50 msgid "" @@ -18870,16 +19912,28 @@ msgid "" "Therefore the maximum data size is currently 16 KB - 6, or 16378 bytes.\n" "The minimum data size is 1." msgstr "" +"Son necesarios datos de relleno (desechables criptográficamente) de entre" +" \n" +"0-15 bytes para llevar el tamaño total del mensaje (incluyendo el `tamaño" +" \n" +"seis` y los bytes del identificador criptográfico (`checksum`)) a un " +"múltiplo de 16. El tamaño máximo de mensaje actualmente es de 16 KB. Por " +"lo tanto el tamaño de dato máximo actualmente es de 16 KB - 6, o lo que " +"es \n" +"lo mismo 16378 bytes. El tamaño mínimo de dato es de 1 byte." #: i2p2www/pages/site/docs/transport/ntcp.html:58 msgid "Time Sync Message Format" -msgstr "" +msgstr "Formato de mensaje de sincronización de horaria" #: i2p2www/pages/site/docs/transport/ntcp.html:59 msgid "" "One special case is a metadata message where the sizeof(data) is 0. In\n" "that case, the unencrypted message is encoded as:" msgstr "" +"Un caso especial es un mensaje de metadatos donde el `sizeof(data)` \n" +"(tamañode(dato)) sea 0. En ese caso, el mensaje no cifrado esta " +"codificado como:" #: i2p2www/pages/site/docs/transport/ntcp.html:70 msgid "" @@ -18887,10 +19941,14 @@ msgid "" " minute intervals.\n" "The message is encrypted just as standard messages are." msgstr "" +"Longitud total: 16 bytes. El mensaje de sincronización horaria se envía \n" +"aproximadamente en intervalos de 15 minutos. El mensaje se cifra tal como" +" \n" +"se hace con los mensajes standard." #: i2p2www/pages/site/docs/transport/ntcp.html:76 msgid "Checksums" -msgstr "" +msgstr "Identificadores criptográficos (`checksums`)" #: i2p2www/pages/site/docs/transport/ntcp.html:77 #, python-format @@ -18898,10 +19956,13 @@ msgid "" "The standard and time sync messages use the Adler-32 checksum\n" "as defined in the ZLIB Specification." msgstr "" +"Los mensajes standard y de sincronización horaria usan el identificador \n" +"criptográfico (`checksum`) Adler-32 tal como se define en la \n" +"especificación ZLIB." #: i2p2www/pages/site/docs/transport/ntcp.html:83 msgid "Establishment Sequence" -msgstr "" +msgstr "Secuencia de establecimiento" #: i2p2www/pages/site/docs/transport/ntcp.html:84 msgid "" @@ -18911,30 +19972,38 @@ msgid "" "Then, DSA signatures of the critical data are exchanged to confirm the " "connection." msgstr "" +"En el estado de establecimiento, hay una secuencia de mensaje de 4-fases" +" \n" +"para intercambiar claves DH y firmas. En los dos primeros mensajes hay un" +" \n" +"intercambio Diffie Hellman de 2048-bits. Luego, las firmas DSA de los \n" +"datos críticos se intercambian para confirmar la conexión." #: i2p2www/pages/site/docs/transport/ntcp.html:98 msgid "Legend:" -msgstr "" +msgstr "Leyenda:" #: i2p2www/pages/site/docs/transport/ntcp.html:99 msgid "256 byte DH public keys" -msgstr "" +msgstr "Claves públicas DH de 256 bytes" #: i2p2www/pages/site/docs/transport/ntcp.html:103 msgid "timestamps (4 bytes, seconds since epoch)" msgstr "" +"Marcas de tiempo (4 bytes, segundos desde epoch (época, origen de tiempo " +"UNIX))" #: i2p2www/pages/site/docs/transport/ntcp.html:104 msgid "32 byte Session key" -msgstr "" +msgstr "Clave de sesión de 32 bytes" #: i2p2www/pages/site/docs/transport/ntcp.html:105 msgid "2 byte size of Alice identity to follow" -msgstr "" +msgstr "Identidad Alice de 2 bytes de tamaño a seguir" #: i2p2www/pages/site/docs/transport/ntcp.html:108 msgid "DH Key Exchange" -msgstr "" +msgstr "Intercambio de clave DH" #: i2p2www/pages/site/docs/transport/ntcp.html:109 #, python-format @@ -18943,6 +20012,10 @@ msgid "" "uses the same shared prime (p) and generator (g) as that used for I2P's\n" "ElGamal encryption." msgstr "" +"El intercambio de clave DH de 2048-bits inicial usa los mismos primo (p) " +"y \n" +"generador (g) compartidos que los usados por el cifrado ElGamal de I2P." #: i2p2www/pages/site/docs/transport/ntcp.html:115 msgid "" @@ -18951,50 +20024,61 @@ msgid "" "routers,\n" "is marked in bold." msgstr "" +"El intercambio de clave DH consiste en un determinado número de pasos, \n" +"mostrados debajo. El mapeado entre estos pasos y los mensajes enviados \n" +"entre los routers (enrutadores) I2P, está marcado en negrita." #: i2p2www/pages/site/docs/transport/ntcp.html:121 msgid "" "Alice generates a secret 226-bit integer x. She then calculates X =" " g^x mod p." msgstr "" +"Alice genera un entero x de 226-bits secreto. Luego calcula X = g^x" +" mod p." #: i2p2www/pages/site/docs/transport/ntcp.html:122 msgid "Alice sends X to Bob (Message 1)." -msgstr "" +msgstr "Alice envía X a Bob (mensaje 1)." #: i2p2www/pages/site/docs/transport/ntcp.html:123 msgid "" "Bob generates a secret 226-bit integer y. He then calculates Y = " "g^y mod p." msgstr "" +"Bob genera un entero y de 226-bits secreto. Luego calcula Y = g^y " +"mod p." #: i2p2www/pages/site/docs/transport/ntcp.html:124 msgid "Bob sends Y to Alice.(Message 2)" -msgstr "" +msgstr "Bob envía Y a Alice (mensaje 2)." #: i2p2www/pages/site/docs/transport/ntcp.html:125 msgid "Alice can now compute sessionKey = Y^x mod p." -msgstr "" +msgstr "Alice puede ahora calcular sessionKey = Y^x mod p." #: i2p2www/pages/site/docs/transport/ntcp.html:126 msgid "Bob can now compute sessionKey = X^y mod p." -msgstr "" +msgstr "Bob puede ahora calcular sessionKey = X^y mod p." #: i2p2www/pages/site/docs/transport/ntcp.html:127 msgid "" "Both Alice and Bob now have a shared key sessionKey = g^(x*y) mod " "p." msgstr "" +"Ambos, Alice y Bob, tienen una clave compartida sessionKey = " +"g^(x*y) mod p." #: i2p2www/pages/site/docs/transport/ntcp.html:129 msgid "" "The sessionKey is then used to exchange identities in Message 3 " "and Message 4." msgstr "" +"La sessionKey (clave de sesión) se usa entonces para intercambiar \n" +"identidades en el mensaje 3 y el mensaje 4." #: i2p2www/pages/site/docs/transport/ntcp.html:133 msgid "Message 1 (Session Request)" -msgstr "" +msgstr "Mensaje 1 (solicitud de sesión)" #: i2p2www/pages/site/docs/transport/ntcp.html:134 #, python-format @@ -19008,21 +20092,28 @@ msgid "" "network database.\n" "Alice sends Bob:" msgstr "" +"Esta es la solicitud DH. Alice tiene ya la RouterIdentity " +"(identidad del \n" +"router) de Bob, la dirección IP, y el puerto, tal como los contiene su \n" +"RouterInfo " +"(información del router), que estaba publicada en la \n" +"base de datos de red. Alice envía a Bob:" #: i2p2www/pages/site/docs/transport/ntcp.html:147 #: i2p2www/pages/site/docs/transport/ntcp.html:190 #: i2p2www/pages/site/docs/transport/ntcp.html:270 #: i2p2www/pages/site/docs/transport/ntcp.html:353 msgid "Size:" -msgstr "" +msgstr "Tamaño:" #: i2p2www/pages/site/docs/transport/ntcp.html:149 msgid "Contents:" -msgstr "" +msgstr "Contenidos:" #: i2p2www/pages/site/docs/transport/ntcp.html:167 msgid "256 byte X from Diffie Hellman" -msgstr "" +msgstr "X de 256 bytes desde Diffie Hellman" #: i2p2www/pages/site/docs/transport/ntcp.html:169 #, python-format @@ -19030,46 +20121,54 @@ msgid "" "SHA256 Hash(X) xored with SHA256 Hash(Bob's Router Identity)" msgstr "" +"`SHA256 Hash(X) XORedado con SHA256 Hash(RouterIdentity de" +" Bob)`\n" +"[HXxorHI]" #: i2p2www/pages/site/docs/transport/ntcp.html:176 #: i2p2www/pages/site/docs/transport/ntcp.html:257 #: i2p2www/pages/site/docs/transport/ntcp.html:334 msgid "Notes:" -msgstr "" +msgstr "Notas:" #: i2p2www/pages/site/docs/transport/ntcp.html:177 msgid "" "Bob verifies HXxorHI using his own router hash. If it does not verify,\n" "Alice has contacted the wrong router, and Bob drops the connection." msgstr "" +"Bob verifica HXxorHI usando su propio hash de router. Si no se verifica, " +"Alice ha contactado el router equivocado, y Bob corta la conexión." #: i2p2www/pages/site/docs/transport/ntcp.html:183 msgid "Message 2 (Session Created)" -msgstr "" +msgstr "Mensaje 2 (sesión creada)" #: i2p2www/pages/site/docs/transport/ntcp.html:184 msgid "This is the DH reply. Bob sends Alice:" -msgstr "" +msgstr "Esta es la respuesta DH. Bob envía a Alice:" #: i2p2www/pages/site/docs/transport/ntcp.html:192 #: i2p2www/pages/site/docs/transport/ntcp.html:272 #: i2p2www/pages/site/docs/transport/ntcp.html:355 msgid "Unencrypted Contents:" -msgstr "" +msgstr "Contenidos no cifrados:" #: i2p2www/pages/site/docs/transport/ntcp.html:214 #: i2p2www/pages/site/docs/transport/ntcp.html:248 msgid "256 byte Y from Diffie Hellman" -msgstr "" +msgstr "Y de 256 bytes desde Diffie Hellman" #: i2p2www/pages/site/docs/transport/ntcp.html:216 msgid "SHA256 Hash(X concatenated with Y)" -msgstr "" +msgstr "SHA256 Hash(X concatenado con Y)." #: i2p2www/pages/site/docs/transport/ntcp.html:219 #: i2p2www/pages/site/docs/transport/ntcp.html:304 msgid "4 byte timestamp (seconds since the epoch)" msgstr "" +"Marca de tiempo de 4 bytes (segundos desde epoch (época, origen de tiempo" +" UNIX))" #: i2p2www/pages/site/docs/transport/ntcp.html:221 msgid "12 bytes random data" @@ -19079,7 +20178,7 @@ msgstr "12 bytes datos aleatorios" #: i2p2www/pages/site/docs/transport/ntcp.html:316 #: i2p2www/pages/site/docs/transport/ntcp.html:383 msgid "Encrypted Contents:" -msgstr "" +msgstr "Contenidos cifrados:" #: i2p2www/pages/site/docs/transport/ntcp.html:250 #, python-format @@ -19088,26 +20187,35 @@ msgid "" "session key and\n" " the last 16 bytes of Y as the IV" msgstr "" +"48 bytes cifrados con AES usando la " +"clave de sesión DH \n" +"y los últimos 16 bytes de Y usados como el IV (vector de inicialización)" #: i2p2www/pages/site/docs/transport/ntcp.html:258 msgid "" "Alice may drop the connection if the clock skew with Bob is too high as " "calculated using tsB." msgstr "" +"Alice puede denegar la conexión si el desfase horario con el relog de Bob" +" es demasiado alto al calcularse usando tsB." #: i2p2www/pages/site/docs/transport/ntcp.html:263 msgid "Message 3 (Session Confirm A)" -msgstr "" +msgstr "Mensaje 3 (Confirmar Sesión A)" #: i2p2www/pages/site/docs/transport/ntcp.html:264 msgid "" "This contains Alice's router identity, and a DSA signature of the " "critical data. Alice sends Bob:" msgstr "" +"Este contiene la identidad del ruter de Alice, y la firma DSA de los " +"datos críticos. Alice envía a Bob:" #: i2p2www/pages/site/docs/transport/ntcp.html:298 msgid "2 byte size of Alice's router identity to follow (should always be 387)" msgstr "" +"La identidad del ruter de Alice de 2 bytes para seguir (debería ser " +"siempre 387)" #: i2p2www/pages/site/docs/transport/ntcp.html:300 #, python-format @@ -19115,6 +20223,8 @@ msgid "" "Alice's 387 byte Router Identity" msgstr "" +"La identidad del " +"ruter de Alice de 387 bytes." #: i2p2www/pages/site/docs/transport/ntcp.html:306 msgid "15 bytes random data" @@ -19135,6 +20245,15 @@ msgid "" "key in her Router Identity" msgstr "" +"La firma DSA de 40 " +"bytes de los siguientes datos datos concatenados: X, Y, RouterIdentity de" +" Bob. tsA, tsB. Alice firma con la clave privada de " +"firma asociada con la clave pública de " +"firma en su RouterIdentity" #: i2p2www/pages/site/docs/transport/ntcp.html:326 #, python-format @@ -19144,24 +20263,29 @@ msgid "" " the last 16 bytes of HXxorHI (i.e., the last 16 bytes " "of message #1) as the IV" msgstr "" +"448 bytes cifrados con AES usando la" +" clave de sesión DH y los últimos 16 bytes de HXxorHI ( por ejemplo, los " +"últimos 16 bytes del mensaje #1) como el IV" #: i2p2www/pages/site/docs/transport/ntcp.html:336 msgid "Bob verifies the signature, and on failure, drops the connection." -msgstr "" +msgstr "Bob verifica la firma, y si falla, rechaza la conexión." #: i2p2www/pages/site/docs/transport/ntcp.html:339 msgid "" "Bob may drop the connection if the clock skew with Alice is too high as " "calculated using tsA." msgstr "" +"Bob puede rechazar la conexión si si el desfase horario con el reloj de " +"Alice es demasiado alto al calcularse usando tsA." #: i2p2www/pages/site/docs/transport/ntcp.html:346 msgid "Message 4 (Session Confirm B)" -msgstr "" +msgstr "Mensaje 4 (Confirmar Sesión B)" #: i2p2www/pages/site/docs/transport/ntcp.html:347 msgid "This is a DSA signature of the critical data. Bob sends Alice:" -msgstr "" +msgstr "Esta es la firma DSA de los datos críticos. Bob envía a Alice:" #: i2p2www/pages/site/docs/transport/ntcp.html:372 #, python-format @@ -19178,10 +20302,19 @@ msgid "" "key in his Router Identity" msgstr "" +"La firma DSA de 40 " +"bytes de los siguientes datos datos concatenados: X, Y, RouterIdentity de" +" Alice. tsA, tsB. Bob firma con la clave privada de " +"firma asociada con la clave pública de " +"firma en su RouterIdentity" #: i2p2www/pages/site/docs/transport/ntcp.html:378 msgid "8 bytes random data" -msgstr "" +msgstr "8 bytes de datos aleatorios" #: i2p2www/pages/site/docs/transport/ntcp.html:393 #, python-format @@ -19191,14 +20324,17 @@ msgid "" " the last 16 bytes of the encrypted contents of message " "#2 as the IV" msgstr "" +"48 bytes cifrados con AES usando la " +"clave de sesión DH y los últimos 16 bytes del contenido cifrado del " +"mensaje #2 como el IV" #: i2p2www/pages/site/docs/transport/ntcp.html:401 msgid "Alice verifies the signature, and on failure, drops the connection." -msgstr "" +msgstr "Alice verifica la firma, y en caso de fallo, rechaza la conexión." #: i2p2www/pages/site/docs/transport/ntcp.html:408 msgid "After Establishment" -msgstr "" +msgstr "Después del establecimiento" #: i2p2www/pages/site/docs/transport/ntcp.html:409 msgid "" @@ -19211,10 +20347,16 @@ msgid "" "Bob will use the last 16 bytes of the encrypted contents of message #4 as" " the next IV." msgstr "" +"La conexión está establecida, y pueden intercambiarse mensajes normales o" +" mensajes de sincronización de tiempo. Todos los mensajes siguientes " +"están cifrados con AES usado la clave de sesión DH antes acordada. Alice " +"usará los últimos 16 bytes del contenido cifrado del mensaje #3 como el " +"siguiente IV. Bob usará los últimos 16 bytes del contenido cifrado del " +"mensaje #4 como el siguiente IV." #: i2p2www/pages/site/docs/transport/ntcp.html:418 msgid "Check Connection Message" -msgstr "" +msgstr "Mensaje de conexión del reloj" #: i2p2www/pages/site/docs/transport/ntcp.html:419 msgid "" @@ -19225,53 +20367,67 @@ msgid "" "However, for the record, check connections are formatted as follows.\n" "A check info connection will receive 256 bytes containing:" msgstr "" +"Alternativamente, cuando Bob recibe una conexión, puede ser una conexión " +"de prueba (quizás mostrada por Bob al preguntar a alguien para verificar " +"a su interlocutor). Las conexiones de prueba no se usan actualmente. " +"Aunque, para que quede en el registro, las conexiones de prueba son " +"formateadas como sigue. Una conexión de prueba de información recibirá " +"256 bytes que contienen:" #: i2p2www/pages/site/docs/transport/ntcp.html:428 msgid "32 bytes of uninterpreted, ignored data" -msgstr "" +msgstr "32 bytes sin interpretar, datos ignorados" #: i2p2www/pages/site/docs/transport/ntcp.html:429 msgid "1 byte size" -msgstr "" +msgstr "tamaño de 1 byte" #: i2p2www/pages/site/docs/transport/ntcp.html:430 msgid "" "that many bytes making up the local router's IP address (as reached by " "the remote side)" msgstr "" +"el número de bytes que componen la dirección IP del ruter local (como " +"haya sido contactado por la parte remota)" #: i2p2www/pages/site/docs/transport/ntcp.html:431 msgid "2 byte port number that the local router was reached on" -msgstr "" +msgstr "el número de puerto de 2 bytes, en donde ha sido contactado el ruter local" #: i2p2www/pages/site/docs/transport/ntcp.html:432 msgid "" "4 byte i2p network time as known by the remote side (seconds since the " "epoch)" msgstr "" +"la hora de la red i2p de 4 bytes según la parte remota (segundos desde la" +" 'época')" #: i2p2www/pages/site/docs/transport/ntcp.html:433 msgid "uninterpreted padding data, up to byte 223" -msgstr "" +msgstr "datos de relleno sin interpretar, hasta 223 bytes" #: i2p2www/pages/site/docs/transport/ntcp.html:434 msgid "" "xor of the local router's identity hash and the SHA256 of bytes 32 " "through bytes 223" msgstr "" +"xor del hash de la identidad del ruter local y el SHA256 de los bytes " +"desde el 32 hasta el 223" #: i2p2www/pages/site/docs/transport/ntcp.html:438 msgid "Discussion" -msgstr "" +msgstr "Discusión" #: i2p2www/pages/site/docs/transport/ntcp.html:439 #, python-format msgid "Now on the NTCP Discussion Page." -msgstr "" +msgstr "Ahora en al Página de discusión de NTCP." #: i2p2www/pages/site/docs/transport/ntcp.html:445 msgid "The maximum message size should be increased to approximately 32 KB." msgstr "" +"El tamaño máximo del mensaje debería aumentarse hasta aproximadamente 32 " +"KB" #: i2p2www/pages/site/docs/transport/ntcp.html:449 msgid "" @@ -19283,30 +20439,41 @@ msgid "" "16-byte boundary,\n" "to create a limited number of message sizes." msgstr "" +"Un conjunto de tamaños de paquetes fijos podría ser apropiado para " +"ocultar aún más la fragmentación de los datos a adversarios externos, " +"pero el túnel garlic y el relleno de fin a fin deberían ser suficientes " +"para la mayoría de las necesidades hasta entonces. Sin embargo, " +"actualmente no se realiza el relleno más allá del límite de 16 bytes, " +"para crear un número limitado de tamaños de mensajes." #: i2p2www/pages/site/docs/transport/ntcp.html:457 msgid "" "Memory utilization (including that of the kernel) for NTCP should be " "compared to that for SSU." msgstr "" +"La utilización de la memoria (incluyendo la del kerne) para NTCP debería " +"compararse con la del SSU." #: i2p2www/pages/site/docs/transport/ntcp.html:461 msgid "" "Can the establishment messages be randomly padded somehow, to frustrate\n" "identification of I2P traffic based on initial packet sizes?" msgstr "" +"¿Pueden ser rellenado aleatoriamente de alguna forma el mensaje " +"establecido, para evitar la identificación del tráfico I2P basado en el " +"tamaño del paquete inicial?" #: i2p2www/pages/site/docs/transport/ntcp.html:466 msgid "Review and possibly disable 'check connection'" -msgstr "" +msgstr "Revisar y posiblemente desactivar la ' conexión de prueba'" #: i2p2www/pages/site/docs/transport/ssu.html:2 msgid "SSU Transport" -msgstr "" +msgstr "Transporte SSU" #: i2p2www/pages/site/docs/transport/ssu.html:6 msgid "Secure Semireliable UDP" -msgstr "" +msgstr "UDP seguro sem-ifiable " #: i2p2www/pages/site/docs/transport/ssu.html:9 #, python-format @@ -19317,6 +20484,10 @@ msgid "" "implemented in I2P.\n" "The other is NTCP." msgstr "" +"SSU (también llamado \"UDP\" en gran parte de la documentación de I2P y " +"de los interfaces de usuario) es uno de los dos transportes actualmente implementados en I2P." +" El otro es NTCP." #: i2p2www/pages/site/docs/transport/ssu.html:15 msgid "" @@ -19325,10 +20496,13 @@ msgid "" "In a standard I2P installation, the router uses both NTCP and SSU for " "outbound connections." msgstr "" +"SSU es el más nuevo de los dos transportes, introducido en la versión 0.6" +" de I2P. En una instalación normal, el ruter usa los dos, NTCP y SSU, " +"para las conexiones de salida." #: i2p2www/pages/site/docs/transport/ssu.html:21 msgid "SSU Services" -msgstr "" +msgstr "Servicios SSU" #: i2p2www/pages/site/docs/transport/ssu.html:23 msgid "" @@ -19337,32 +20511,42 @@ msgid "" "Unique to SSU, it also provides IP detection and NAT traversal services, " "including:" msgstr "" +"Al igual que el transporte NTCP, SSU proporciona un transporte de datos " +"de punto apunto cifrado y seguro orientado a conexión. A diferencia de " +"SSU, también proporciona detección de servicios de NAT trasversales, " +"incluyendo:" #: i2p2www/pages/site/docs/transport/ssu.html:29 msgid "" "Cooperative NAT/Firewall traversal using introducers" msgstr "" +"NAT/cortafuego trasversal cooperativo usando introductores" #: i2p2www/pages/site/docs/transport/ssu.html:30 msgid "" "Local IP detection by inspection of incoming packets and peer testing" msgstr "" +"Detección de la IP local inspeccionado los paquetes de entrada y la prueba de pares " #: i2p2www/pages/site/docs/transport/ssu.html:31 msgid "" "Communication of firewall status and local IP, and changes to either to " "NTCP" msgstr "" +"Comunicación del estado del cortafuegos y de la IP local, y los cambios " +"en cualquiera de ellos a NTCP " #: i2p2www/pages/site/docs/transport/ssu.html:36 msgid "Protocol Details" -msgstr "" +msgstr "Detalles del protocolo" #: i2p2www/pages/site/docs/transport/ssu.html:38 msgid "Congestion control" -msgstr "" +msgstr "Control de congestión" #: i2p2www/pages/site/docs/transport/ssu.html:40 msgid "" @@ -19371,6 +20555,11 @@ msgid "" "congestion control. The congestion control algorithm outlined below is\n" "meant to be both efficient in bandwidth as well as simple to implement." msgstr "" +"Gracias a sólo necesitar SSU el envío semi fiable, a las conexiones " +"amigables con TCP, y al haber capacidad para un gran rendimiento se " +"permite un amplio abanico de posibilidades en el control de gestión. El " +"algoritmo de control de gestión esbozado abajo se supone eficiente en el " +"gasto de ancho de banda y simple de implementar." #: i2p2www/pages/site/docs/transport/ssu.html:47 msgid "" @@ -19386,6 +20575,14 @@ msgid "" " \n" "other messages." msgstr "" +"Los paquetes son programados de acuerdo con la política del ruter, " +"teniendo cuidado de no exceder la capacidad de salida del ruter o de " +"exceder la capacidad medida en el par remoto. La capacidad medida opera " +"según el inicio lento y la prevención de la congestión de TCP, con " +"aumentos que se suman a la capacidad de envío y disminuciones en caso de " +"congestión. Al contrario que TCP, algunos ruters pueden renunciar a " +"algunos mensajes despues de un periodo indicado o un número de " +"retransmisiones, mientras que continúa transmitiendo otros mensajes." #: i2p2www/pages/site/docs/transport/ssu.html:58 msgid "" @@ -19402,6 +20599,16 @@ msgid "" "message has still not been fully received, the bitfield should be \n" "retransmitted with any new updates." msgstr "" +"Las técnicas de detección de congestión tampoco son iguales a las de TCP," +" ya que cada mensaje tiene su identificador único y no secuencial, y cada" +" mensaje tiene un tamaño limitado - como máximo, 32 KB. Para transmitir " +"eficientemente esta respuesta al remitente, el receptor periódicamente " +"incluye una lista de identificadores de mensaje totalmente 'ACKed' y " +"también puede incluir campos de bits, 'bitfields', para los mensajes " +"recibidos parcialmente, donde cada bit representa la recogida de un " +"fragmento. Si llegan fragmentos duplicados, el mensaje deber ser 'ACKed' " +"de nuevo, o si el mensaje aún no ha sido recibido en su totalidad, el " +"bitfield debería ser retransmitido con cualquier nuevo cambio." #: i2p2www/pages/site/docs/transport/ssu.html:70 msgid "" @@ -19410,6 +20617,10 @@ msgid "" "into\n" "a packet and sends it off (careful not to exceed the MTU)." msgstr "" +"La implementación actual no rellena los paquetes a un tamaño en " +"particular, en cambio simplemente coloca un sólo fragmento de un mensaje " +"dentro de un paquete y lo envía para fuera (con cuidado de no exceder el " +"MTU)." #: i2p2www/pages/site/docs/transport/ssu.html:77 msgid "" @@ -19418,6 +20629,9 @@ msgid "" "The MTU value is adjusted based on the percentage of packets that are " "retransmitted." msgstr "" +"A partir de la versión del ruter 0.8.12 se usan dos valores de MTU para " +"IPv4: 620 y 1484. El valor del MTU es reajustado dependiendo del " +"porcentaje de paquetes que es retrasnmitido." #: i2p2www/pages/site/docs/transport/ssu.html:83 msgid "" @@ -19432,6 +20646,9 @@ msgid "" "Variable Tunnel Build Message efficiently into multiple packets;\n" "with a 620-byte MTU, it fits into 5 packets with nicely." msgstr "" +"Para el valor más pequeño de MTU, es preferible empaquetar un mensaje de " +"construcción de túnel variable de 2646 bytes eficientemente dentro de " +"múltiples paquetes; el MTU de 620 bytes encaja bien dentro de 5 paquetes." #: i2p2www/pages/site/docs/transport/ssu.html:95 msgid "" @@ -19441,12 +20658,18 @@ msgid "" "to fit\n" "into a live network MTU anyway)." msgstr "" +"Basado en las mediciones, 1492 encaja en casi todos los mensajes I2NP " +"razonablemente pequeños (los mensajes I2NP más grandes pueden ser desde " +"1900 hasta 4500 bytes, que de todas formas no encajarían dentro del MTU " +"de la red)." #: i2p2www/pages/site/docs/transport/ssu.html:101 msgid "" "The MTU values were 608 and 1492 for releases 0.8.9 - 0.8.11.\n" "The large MTU was 1350 prior to release 0.8.9." msgstr "" +"Los valores del MTU eran 608 y 1492 para las versiones 0.8.9 - 0.8.11. El" +" MTU largo era de 1350 en las versiones anteriores a la 0.8.9." #: i2p2www/pages/site/docs/transport/ssu.html:106 msgid "" @@ -19455,6 +20678,9 @@ msgid "" "For releases 0.8.9 - 0.8.11 it was 1535 bytes.\n" "Prior to release 0.8.9 it was 2048 bytes." msgstr "" +"Para la versión 0.8.12 el tamaño máximo del paquete recibido es de 1571 " +"bytes. Para las versiones 0.8.9 - 0.8.11 era de 1535 bytes. Para las " +"versiones anteriores a 0.8.9 era de 2048 bytes. " #: i2p2www/pages/site/docs/transport/ssu.html:113 msgid "" @@ -19463,6 +20689,9 @@ msgid "" "it will publish that in the network database, and other routers should\n" "honor that when a connection is established." msgstr "" +"A partir de la versión 0.9.2, si el MTU del interfaz de red del ruter es " +"menor de 1484, esto será publicado en la base de datos de la red, y los " +"otros ruters deberían respetarlo cuando una conexión es establecida." #: i2p2www/pages/site/docs/transport/ssu.html:119 msgid "" @@ -19472,7 +20701,7 @@ msgstr "" #: i2p2www/pages/site/docs/transport/ssu.html:124 msgid "Message Size Limits" -msgstr "" +msgstr "Límites de los tamaños de mensaje" #: i2p2www/pages/site/docs/transport/ssu.html:125 msgid "" @@ -19488,6 +20717,15 @@ msgid "" "Further work is necessary to raise the UDP transport limit above 32KB.\n" "For connections using the larger MTU, larger messages are possible." msgstr "" +"Mientras que normalmente el tamaño máximo de un mensaje es de 32KB, los " +"límites prácticos difieren. El protocolo limita el número de fragmentos a" +" 7 bits, o 128. La implementación actual limita cada mensaje a un máximo " +"de 64 fragmentos, lo cual es suficiente para, 64 * 534 = 33.3 KB, cuando " +"se usa el MTU de 608. Debido al gasto de las claves de sesión y los " +"LeaseSets incluidos, el límite práctico en el nivel de aplicación es " +"alrededor de 6KB menos, o alrededor de 26KB. Se necesita más trabajo para" +" poder aumentar el límite del transporte UDP por encima de 32KB. Para las" +" conexiones que usan un MTU más largo, son posibles mensajes más largos." #: i2p2www/pages/site/docs/transport/ssu.html:136 msgid "Keys" diff --git a/i2p2www/translations/fr/LC_MESSAGES/about.po b/i2p2www/translations/fr/LC_MESSAGES/about.po index 55d8ebf5..d3b9d55c 100644 --- a/i2p2www/translations/fr/LC_MESSAGES/about.po +++ b/i2p2www/translations/fr/LC_MESSAGES/about.po @@ -5,13 +5,14 @@ # Translators: # Boxoa590, 2013 # magma , 2011 +# syl_, 2013 msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" "POT-Creation-Date: 2013-09-01 03:42+0000\n" -"PO-Revision-Date: 2013-09-04 23:57+0000\n" -"Last-Translator: Boxoa590\n" +"PO-Revision-Date: 2013-09-10 23:15+0000\n" +"Last-Translator: syl_\n" "Language-Team: French " "(http://www.transifex.com/projects/p/I2P/language/fr/)\n" "Plural-Forms: nplurals=2; plural=(n > 1)\n" @@ -1160,7 +1161,7 @@ msgstr "" #: i2p2www/pages/site/about/media.html:167 msgid "Articles and Interviews" -msgstr "" +msgstr "Articles et interviews" #: i2p2www/pages/site/about/media.html:170 #, python-format @@ -1170,6 +1171,10 @@ msgid "" "Part 2\n" "July 26, 2002." msgstr "" +"0x90 interviewé par DistributedCity\n" +"Partie 1\n" +"Partie 2\n" +"26 juillet 2002." #: i2p2www/pages/site/about/media.html:178 #, python-format @@ -1179,6 +1184,10 @@ msgid "" "English translation\n" "October 31, 2002." msgstr "" +"0x90 interviewé par El Pais\n" +"(en espagnol)\n" +"Traduction anglaise\n" +"31 octobre 2002." #: i2p2www/pages/site/about/media.html:185 #, python-format @@ -1186,6 +1195,8 @@ msgid "" "2003 Business Week article referencing " "invisiblenet" msgstr "" +"Article de Business Week de 2003 référençant le net " +"invisible" #: i2p2www/pages/site/about/media.html:189 #, python-format @@ -1195,6 +1206,10 @@ msgid "" "(German)\n" "November 2007." msgstr "" +"Article de Netzwelt.de traitant de l'anonymat sur " +"Internet\n" +"(Allemand)\n" +"Novembre 2007." #: i2p2www/pages/site/about/media.html:195 #, python-format @@ -1203,6 +1218,9 @@ msgid "" "March 2009\n" "German translation" msgstr "" +"zzz interviewé par gulli.com\n" +"Mars 2009\n" +"Traduction allemande" #: i2p2www/pages/site/about/media.html:202 #, python-format @@ -1211,6 +1229,9 @@ msgid "" "(mp3)\n" "August 18, 2011" msgstr "" +"zzz interviewé sur le podcast InfoSec Daily Ep. 454 " +"(mp3)\n" +"18 août 2011" #: i2p2www/pages/site/about/media.html:207 #, python-format @@ -1219,6 +1240,9 @@ msgid "" "Jonathan Cox,\n" "November 11, 2011." msgstr "" +"I2P - Anonymity for the Masses,\n" +"Jonathan Cox,\n" +"11 novembre 2011." #: i2p2www/pages/site/about/media.html:213 #, python-format @@ -1227,6 +1251,9 @@ msgid "" "Podcast Ep. 596 (mp3)\n" "February 16, 2012" msgstr "" +"zzz et Lance James interviewés sur le podcast InfoSec" +" Daily Ep. 596 (mp3)\n" +"16 février 2012" #: i2p2www/pages/site/about/team.html:2 msgid "Team" diff --git a/i2p2www/translations/fr/LC_MESSAGES/comparison.po b/i2p2www/translations/fr/LC_MESSAGES/comparison.po index ccf0716a..60b6fee6 100644 --- a/i2p2www/translations/fr/LC_MESSAGES/comparison.po +++ b/i2p2www/translations/fr/LC_MESSAGES/comparison.po @@ -5,13 +5,15 @@ # Translators: # Boxoa590, 2013 # magma , 2011 +# syl_, 2013 +# Towatowa441, 2013 msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" "POT-Creation-Date: 2013-08-30 23:32+0000\n" -"PO-Revision-Date: 2013-06-29 11:32+0000\n" -"Last-Translator: Boxoa590\n" +"PO-Revision-Date: 2013-09-14 12:01+0000\n" +"Last-Translator: Towatowa441\n" "Language-Team: French " "(http://www.transifex.com/projects/p/I2P/language/fr/)\n" "Plural-Forms: nplurals=2; plural=(n > 1)\n" @@ -22,7 +24,7 @@ msgstr "" #: i2p2www/pages/site/comparison/freenet.html:2 msgid "I2P Compared to Freenet" -msgstr "" +msgstr "I2P comparé à Freenet" #: i2p2www/pages/site/comparison/freenet.html:8 msgid "" @@ -36,6 +38,15 @@ msgid "" "communication, such as \n" "static websites and message boards." msgstr "" +"Freenet est entièrement distribué, c'est un réseau pair to pair de " +"publication anonyme, offrant\n" +"des moyens sûrs pour stocker des données, ainsi que des approches qui " +"tentent de répondre aux charges\n" +"d'une crue éclair. Alors que Freenet est conçu comme un magasin de " +"données distribuées, des gens ont\n" +"construit des applications par dessus celui-ci afin de faire de la " +"communication anonyme plus générique, tels\n" +"que des sites web statiques et des forums électroniques." #: i2p2www/pages/site/comparison/freenet.html:16 #, python-format @@ -58,6 +69,23 @@ msgid "" "(most recently a port of Tahoe-LAFS)\n" "but nothing is yet ready for general use." msgstr "" +"Comparé à I2P, Freenet offre des avantages considérables - c'est un " +"magasin de données distribuées,\n" +"tandis que I2P ne l'est pas, ce qui permet aux gens de récupérer les " +"contenus publiés par les autres\n" +"même lorsque l'éditeur n'est plus en ligne. En outre, il devrait être en " +"mesure de\n" +"distribuer des données populaires assez efficacement. I2P par lui-même ne" +" fait pas et ne fournira pas\n" +"cette fonctionnalité. D'autre part, il existe un chevauchement pour les " +"utilisateurs qui veulent simplement\n" +"communiquer les uns avec les autres de manière anonyme par les sites web," +" forums, logiciels de partage de fichiers,\n" +"etc. Il ya aussi eu des tentatives pour développer un magain de données " +"distribuées\n" +"pour fonctionner par dessus I2P,\n" +"(plus récemment un port de Tahoe-LAFS)\n" +"mais rien n'est encore prêt pour une utilisation générale." #: i2p2www/pages/site/comparison/freenet.html:29 msgid "" @@ -77,10 +105,25 @@ msgid "" "against an attacker\n" "who does not have the resources necessary to analyze it further." msgstr "" +"Cependant, même sans tenir compte des questions relatives aux mises en " +"œuvre, il ya des préoccupations\n" +"sur les algorithmes de Freenet à la fois sur l'évolutivité et la " +"perspective d'anonymat, en raison\n" +"en grande partie du routage de Freenet, axée heuristique. Les " +"interactions des différentes techniques\n" +"peuvent certainement réussi à dissuader diverses attaques, et peut-être " +"certains aspects de la\n" +"des algorithmes de routage peuvent faire espérer de l'évolutivité. " +"Malheureusement, peu\n" +"d'analyses des algorithmes concernés ont abouti à des résultats positifs," +" mais il reste encore\n" +"de l'espoir. À tout le moins, Freenet fournit un anonymat substantielle " +"contre un attaquant\n" +"qui n'aurait pas les ressources nécessaires pour l'analyser davantage." #: i2p2www/pages/site/comparison/index.html:2 msgid "Comparing I2P to other projects" -msgstr "" +msgstr "I2P comparé à d'autres projets" #: i2p2www/pages/site/comparison/index.html:4 msgid "" @@ -96,6 +139,18 @@ msgid "" "serve that purpose well. That said, a few systems stand out for further\n" "comparison. The following have individual comparison pages:" msgstr "" +"Il existe un grand nombre d'autres applications et projets travaillant " +"sur les communication\n" +"anonymes et I2P a été inspiré par une grande partie de leurs efforts. Ce " +"n'est pas\n" +"une liste complète des ressources de l'anonymat - à la fois la bibliographie " +"anonymat de Freehaven\n" +"et les projets liés à " +"GNUnet\n" +"servent bien à cette fin. Cela dit, quelques systèmes se distinguent pour" +" davantage\n" +"de comparaison. Les suivantes ont des pages individuelles de comparaison :" #: i2p2www/pages/site/comparison/index.html:20 #, python-format @@ -103,6 +158,8 @@ msgid "" "The following are discussed on the other " "networks page:" msgstr "" +"Ce qui suit est discuté sur la page autres " +"réseaux" #: i2p2www/pages/site/comparison/index.html:32 #, python-format @@ -112,14 +169,18 @@ msgid "" "You may contribute an analysis by entering a new ticket on Trac." msgstr "" +"Le contenu de cette page est sujet à mise à jour, discussion et " +"contestation, et nous nous félicitons des commentaires et ajouts.\n" +"Vous pouvez contribuer par votre analyse en entrant un nouveau ticket sur ​​Trac." #: i2p2www/pages/site/comparison/other-networks.html:2 msgid "I2P Compared to Other Anonymous Networks" -msgstr "" +msgstr "I2P comparé à d'autres réseaux anonymes" #: i2p2www/pages/site/comparison/other-networks.html:5 msgid "The following networks are discussed on this page." -msgstr "" +msgstr "Les réseaux suivants sont abordés sur cette page." #: i2p2www/pages/site/comparison/other-networks.html:16 #, python-format @@ -130,6 +191,13 @@ msgid "" "You may contribute an analysis by entering a\n" "new ticket on %(trac)s." msgstr "" +"La plupart des sections suivantes sont assez vieilles, et peuvent ne pas " +"être exactes.\n" +"Pour un aperçu des comparaisons disponibles, consultez la\n" +"page de comparaison des réseaux " +"principaux.\n" +"Vous pouvez contribuer par votre analyse en entrant un\n" +"nouveau ticket sur​​ %(trac)s." #: i2p2www/pages/site/comparison/other-networks.html:29 #, python-format @@ -151,6 +219,22 @@ msgid "" "not aware \n" "of their use outside of academic environments." msgstr "" +"Morphmix et Tarzan sont tous les deux à la fois complètement distribués, " +"et des réseaux pair à pair de\n" +"proxies anonymes, permettant aux gens des tunnels à travers le réseau " +"mix à faible latence.\n" +"Morphmix comprend certains très intéressant algorithmes de détection de " +"collusion\n" +"et défenses Sybil, tandis que Tarzan fait usage de la rareté d'adresses " +"IP\n" +"pour accomplir la même chose. Les deux principales différences entre\n" +"ces systèmes et I2P sont liées au modèle de " +"menace de I2P\n" +"et à leur conception out-proxy (au lieu de fournir de l'anonymat à la " +"fois à l'émetteur et au récepteur).\n" +"Il y a le code source disponible pour les deux systèmes, mais nous ne " +"sommes pas au courant\n" +"de leur utilisation en dehors des milieux universitaires." #: i2p2www/pages/site/comparison/other-networks.html:153 msgid "" @@ -177,6 +261,9 @@ msgid "" "As with Tor and Onion Routing, \n" "both Mixminion and Mixmaster take the directory based approach as well." msgstr "" +"Comme avec Tor et Oignon Routing,\n" +"les deux Mixminion et Mixmaster prennent aussi l'approche basée sur " +"répertoire." #: i2p2www/pages/site/comparison/other-networks.html:177 #, python-format @@ -209,6 +296,30 @@ msgid "" "the data, even \n" "if it may be found inadmissible in some courts later)" msgstr "" +"JAP (Java Anonymous Proxy) est un réseau de mélange en cascades pour " +"l'anonymisation de demandes Web,\n" +"et comme tel il a quelques nœuds centraux (participants à la cascade) qui" +" mixent\n" +"et mélangent les requêtes de clients à travers la séquence de nœuds (la " +"cascade) avant\n" +"les transmettre sur le web via serveur mandataire - proxy -. Le champ " +"d'application, modèle de la menace, et sécurité sont sensiblement\n" +"différents de I2P, mais pour ceux qui n'ont pas besoin d'anonymat " +"importante mais cependant\n" +"ne sont pas satisfaits avec un service Anonymizer-like, JAP mérite d'être" +" examiné. Une\n" +"précaution à noter pour quelqu'un relèvant de la compétence des " +"juridictions allemandes,\n" +"comme le Bureau fédéral allemand des enquêtes criminelles (FBCI) a\n" +"monté avec succès une attaque sur le réseau. " +"Même si la méthode de cette attaque a ensuite été jugée illégale\n" +"devant les juridictions allemandes, le fait que les données ont été " +"recueillies avec succès est une\n" +"préoccupation. Les tribunaux changent d'avis sur la base de circonstance," +" et c'est la preuve que\n" +"si un organisme gouvernemental ou un organisme de renseignement " +"voulaient, ils pourraient recueillir les données, même\n" +"si cela peut être déclarée irrecevable dans certains tribunaux plus tard)" #: i2p2www/pages/site/comparison/other-networks.html:199 #, python-format @@ -263,7 +374,7 @@ msgstr "" #: i2p2www/pages/site/comparison/other-networks.html:231 msgid "Paid VPN Services" -msgstr "" +msgstr "Services VPN payants" #: i2p2www/pages/site/comparison/other-networks.html:232 #: i2p2www/pages/site/comparison/other-networks.html:238 @@ -272,14 +383,16 @@ msgid "" "You may contribute an analysis by entering a\n" "new ticket on %(trac)s." msgstr "" +"Vous pouvez ajouter votre analyse en entrant un\n" +"nouveau ticket sur %(trac)s." #: i2p2www/pages/site/comparison/other-networks.html:237 msgid "Others" -msgstr "" +msgstr "Autres" #: i2p2www/pages/site/comparison/tor.html:2 msgid "I2P Compared to Tor" -msgstr "" +msgstr "I2P Comparé à Tor" #: i2p2www/pages/site/comparison/tor.html:8 #, python-format @@ -319,52 +432,63 @@ msgid "" "communication layer, they can). In fact, some I2P users\n" "currently take advantage of Tor to outproxy." msgstr "" +"Cependant, la plupart de personnes ne doivent pas s'inquiéter des\n" +"ses situations, car elles sont à l'extérieur de leur modèle de menace. " +"Cela \n" +"est, aussi, à l'extérieur du périmètre fonctionnel (formel) de I2P (si " +"les gens veulent\n" +"construire la fonctionnalité outproxy au-dessus d'une couche de " +"communication anonyme, ils peuvent).\n" +"En fait, quelques utilisateurs I2P profitent actuellement de Tor comme " +"proxy sortant." #: i2p2www/pages/site/comparison/tor.html:48 msgid "Comparison of Tor and I2P Terminology" -msgstr "" +msgstr "Comparaison de terminologie entre Tor et I2P" #: i2p2www/pages/site/comparison/tor.html:49 msgid "" "While Tor and I2P are similar in many ways, much of the terminology is " "different." msgstr "" +"Alors que Tor et I2P sont similaires à bien des égards, une grande partie" +" de la terminologie est différente." #: i2p2www/pages/site/comparison/tor.html:54 msgid "Cell" -msgstr "" +msgstr "Cellule" #: i2p2www/pages/site/comparison/tor.html:54 msgid "Message" -msgstr "" +msgstr "Message" #: i2p2www/pages/site/comparison/tor.html:55 msgid "Client" -msgstr "" +msgstr "Client" #: i2p2www/pages/site/comparison/tor.html:55 msgid "Router or Client" -msgstr "" +msgstr "Routeur ou client" #: i2p2www/pages/site/comparison/tor.html:56 msgid "Circuit" -msgstr "" +msgstr "Circuit" #: i2p2www/pages/site/comparison/tor.html:56 msgid "Tunnel" -msgstr "" +msgstr "Tunnel" #: i2p2www/pages/site/comparison/tor.html:57 msgid "Directory" -msgstr "" +msgstr "Répertoire" #: i2p2www/pages/site/comparison/tor.html:57 msgid "NetDb" -msgstr "" +msgstr "NetDb" #: i2p2www/pages/site/comparison/tor.html:58 msgid "Directory Server" -msgstr "" +msgstr "Serveur répertoire" #: i2p2www/pages/site/comparison/tor.html:58 msgid "Floodfill Router" @@ -372,7 +496,7 @@ msgstr "" #: i2p2www/pages/site/comparison/tor.html:59 msgid "Entry Guards" -msgstr "" +msgstr "Seuils de portes (entry guards)" #: i2p2www/pages/site/comparison/tor.html:59 msgid "Fast Peers" @@ -384,7 +508,7 @@ msgstr "Noeud d'entrée" #: i2p2www/pages/site/comparison/tor.html:60 msgid "Inproxy" -msgstr "" +msgstr "Proxy entrant" #: i2p2www/pages/site/comparison/tor.html:61 msgid "Exit Node" @@ -392,7 +516,7 @@ msgstr "Noeud de sortie" #: i2p2www/pages/site/comparison/tor.html:61 msgid "Outproxy" -msgstr "" +msgstr "Proxy sortant" #: i2p2www/pages/site/comparison/tor.html:62 msgid "Hidden Service" @@ -404,19 +528,19 @@ msgstr "Eepsite ou Destination" #: i2p2www/pages/site/comparison/tor.html:63 msgid "Hidden Service Descriptor" -msgstr "" +msgstr "Descripteur de service caché" #: i2p2www/pages/site/comparison/tor.html:63 msgid "LeaseSet" -msgstr "" +msgstr "Jeu de baux" #: i2p2www/pages/site/comparison/tor.html:64 msgid "Introduction point" -msgstr "" +msgstr "Point d'introduction" #: i2p2www/pages/site/comparison/tor.html:64 msgid "Inbound Gateway" -msgstr "" +msgstr "Passerelle entrante" #: i2p2www/pages/site/comparison/tor.html:65 msgid "Node" @@ -446,15 +570,15 @@ msgstr "Point Rendezvous" #: i2p2www/pages/site/comparison/tor.html:68 msgid "somewhat like Inbound Gateway + Outbound Endpoint" -msgstr "" +msgstr "un peu comme passerelle entrante + extrémité sortante (outbound endpoint)" #: i2p2www/pages/site/comparison/tor.html:69 msgid "Router Descriptor" -msgstr "" +msgstr "Descripteur de routeur" #: i2p2www/pages/site/comparison/tor.html:69 msgid "RouterInfo" -msgstr "" +msgstr "Info routeur (RouterInfo)" #: i2p2www/pages/site/comparison/tor.html:70 msgid "Server" @@ -462,7 +586,7 @@ msgstr "Serveur" #: i2p2www/pages/site/comparison/tor.html:73 msgid "Benefits of Tor over I2P" -msgstr "" +msgstr "Avantages de Tor sur I2P" #: i2p2www/pages/site/comparison/tor.html:76 msgid "" @@ -534,11 +658,11 @@ msgstr "" #: i2p2www/pages/site/comparison/tor.html:113 msgid "C, not Java (ewww)" -msgstr "" +msgstr "C, not Java" #: i2p2www/pages/site/comparison/tor.html:116 msgid "Benefits of I2P over Tor" -msgstr "" +msgstr "Avantages d'I2P sur Tor" #: i2p2www/pages/site/comparison/tor.html:118 msgid "" @@ -548,13 +672,16 @@ msgstr "" #: i2p2www/pages/site/comparison/tor.html:119 msgid "Fully distributed and self organizing" -msgstr "" +msgstr "Entièrement distribué et auto-organisé" #: i2p2www/pages/site/comparison/tor.html:121 msgid "" "Peers are selected by continuously profiling and ranking performance,\n" "rather than trusting claimed capacity" msgstr "" +"es pairs sont choisis par profilage continu et classement de leurs " +"performances,\n" +"plutôt que de faire confiance à la capacité qu'ils revendiquent" #: i2p2www/pages/site/comparison/tor.html:127 msgid "" @@ -568,7 +695,7 @@ msgstr "" #: i2p2www/pages/site/comparison/tor.html:133 msgid "Peer-to-peer friendly" -msgstr "" +msgstr "Pair à pair friendly" #: i2p2www/pages/site/comparison/tor.html:134 msgid "Packet switched instead of circuit switched" @@ -585,6 +712,8 @@ msgid "" "resilience vs. failures by running multiple \n" "tunnels in parallel, plus rotating tunnels" msgstr "" +"résistance contre les défaillances par exécution de plusieurs\n" +"tunnels en parallèle, ainsi que rotation des tunnels" #: i2p2www/pages/site/comparison/tor.html:149 msgid "" @@ -626,7 +755,7 @@ msgstr "" #: i2p2www/pages/site/comparison/tor.html:188 msgid "Essentially all peers participate in routing for others" -msgstr "" +msgstr "Par essence, tous les pairs participent à acheminer pour d'autres" #: i2p2www/pages/site/comparison/tor.html:190 msgid "" @@ -637,29 +766,34 @@ msgstr "" #: i2p2www/pages/site/comparison/tor.html:196 msgid "Integrated automatic update mechanism" -msgstr "" +msgstr "Mécanisme intégré de mise à jour automatique" #: i2p2www/pages/site/comparison/tor.html:197 msgid "Both TCP and UDP transports" -msgstr "" +msgstr "Tous les deux transports : TCP et UDP" #: i2p2www/pages/site/comparison/tor.html:198 msgid "Java, not C (ewww)" -msgstr "" +msgstr "Java, not C" #: i2p2www/pages/site/comparison/tor.html:201 msgid "Other potential benefits of I2P but not yet implemented" -msgstr "" +msgstr "Autres avantages potentiels de I2P mais pas encore mis en œuvre" #: i2p2www/pages/site/comparison/tor.html:202 msgid "...and may never be implemented, so don't count on them!" msgstr "" +"... et pourraient ne jamais être mis en œuvre, alors ne comptez pas sur " +"eux !" #: i2p2www/pages/site/comparison/tor.html:205 msgid "" "Defense vs. message count analysis by garlic wrapping \n" "multiple messages" msgstr "" +"Défense contre l'analyse du nombre de messages par enveloppement en " +"oignon\n" +"de plusieurs messages" #: i2p2www/pages/site/comparison/tor.html:211 msgid "" @@ -667,6 +801,9 @@ msgid "" "at various hops (where the delays are not discernible\n" "by other hops)" msgstr "" +"Défense contre intersection long terme en ajoutant des retards\n" +"à différents sauts (où les retards ne sont pas discernables\n" +"par d'autres sauts)" #: i2p2www/pages/site/comparison/tor.html:218 msgid "" @@ -675,4 +812,8 @@ msgid "" "where the endpoint will inject dummy messages if there\n" "are insufficient messages, etc)" msgstr "" +"Diverses stratégies de mélange au niveau du tunnel (par exemple\n" +"créer un tunnel qui va gérer 500 messages / minute,\n" +"dans lequel le point final va injecter des messages factices si\n" +"il y a une nombre de messages insuffisant, etc)" diff --git a/i2p2www/translations/sv_SE/LC_MESSAGES/blog.po b/i2p2www/translations/sv_SE/LC_MESSAGES/blog.po index 68d6a668..b99d2cf5 100644 --- a/i2p2www/translations/sv_SE/LC_MESSAGES/blog.po +++ b/i2p2www/translations/sv_SE/LC_MESSAGES/blog.po @@ -10,8 +10,8 @@ msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" "POT-Creation-Date: 2013-08-30 23:32+0000\n" -"PO-Revision-Date: 2013-08-12 10:32+0000\n" -"Last-Translator: str4d \n" +"PO-Revision-Date: 2013-09-11 23:00+0000\n" +"Last-Translator: hottuna \n" "Language-Team: Swedish (Sweden) " "(http://www.transifex.com/projects/p/I2P/language/sv_SE/)\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" @@ -128,19 +128,19 @@ msgstr "SHA256 Kontrollsummor:" #: i2p2www/blog/2012/01/06/0.8.12-Release.rst:39 msgid "Major changes" -msgstr "" +msgstr "Stora förändringar" #: i2p2www/blog/2012/01/06/0.8.12-Release.rst:47 msgid "Wrapper Update" -msgstr "" +msgstr "Wrapper Uppdatering" #: i2p2www/blog/2012/05/02/0.9-Release.rst:23 msgid "Update Info" -msgstr "" +msgstr "Uppdaderings Info" #: i2p2www/blog/2012/09/21/0.9.2-Release.rst:2 msgid "0.9.2 Release" -msgstr "" +msgstr "0.9.2 Release" #: i2p2www/blog/2012/09/21/0.9.2-Release.rst:7 #: i2p2www/blog/2012/09/21/0.9.2-Release.rst:9 @@ -151,6 +151,12 @@ msgid "" "not yet enabled by default, as we plan to do more testing during the " "upcoming 0.9.3 development cycle." msgstr "" +"0.9.2 inkluderar utförliga låg-nivå-förändringar för att förbättre " +"prestandan och effektiviteten hos routern. Vi har uppdaterat vårat UPnP-" +"bibliotek, för att förhoppningsvis få UPnP att fungera för fler personer." +" I2PSnark har nu DHT-stöd, men det är inte påslaget som standard, då vi " +"planerar att utföra fler tester under den komman utvecklingscukeln för " +"0.9.3." #: i2p2www/blog/2012/09/21/0.9.2-Release.rst:12 #: i2p2www/blog/2012/10/27/0.9.3-Release.rst:12 @@ -167,18 +173,25 @@ msgid "" " reliability for connection setup. Also improve defenses against various " "types of bad input." msgstr "" +"SSU: Fixa flera problem i våran UDP-transport, för att förbättra " +"effektivtet och pålitlighet för anslutnings-etablering. Förbättra även " +"försvaret mot olika typer av dålig input." #: i2p2www/blog/2012/09/21/0.9.2-Release.rst:27 msgid "" "UPnP: Updated our library to fix several issues, should work for more " "routers now" msgstr "" +"UPnP: Uppdatera vårat bibliotek för att lösa flera problem, bör fungera " +"för fler routrar nu" #: i2p2www/blog/2012/09/21/0.9.2-Release.rst:28 msgid "" "Transport: Improve performance in both our TCP and UDP transports, to " "benefit high-bandwidth routers" msgstr "" +"Transport: Förbättre prestanda för både TCP och UDP transporter för " +"routrar med hög bandbredd." #: i2p2www/blog/2012/09/21/0.9.2-Release.rst:29 msgid "" @@ -186,66 +199,77 @@ msgid "" "are now much more flexible, which should lessen protocol overhead and " "reduce stalls caused by dropped tags." msgstr "" +"Krypto: Gränsvärdena och antalet ElGamal/AES Sessions Taggar som sänds är" +" nu mycket mer flexibel, vilket bör förbättra protokoll-overhead och " +"minska uppehåll som från tappade taggar." #: i2p2www/blog/2012/09/21/0.9.2-Release.rst:30 msgid "" "I2PSnark: Add DHT support, not yet enabled by default, will do further " "testing and plan to enable by default in 0.9.3." msgstr "" +"I2PSnark: Lägg till DHT-stöd, ej tillsaget som standard, kommer testas " +"mera och slås på som standard i 0.9.3." #: i2p2www/blog/2012/09/21/0.9.2-Release.rst:34 msgid "" "Fix various issues affecting memory usage and performance on high-" "bandwidth routers" msgstr "" +"Fixa olika problem som påverkar minnesanvändning och prestanda för " +"routrar med hög bandbredd" #: i2p2www/blog/2012/09/21/0.9.2-Release.rst:35 msgid "Fix problems in UDP for routers using a reduced-MTU connection, e.g. a VPN" msgstr "" +"Fixa problem i UDP för routrar som använder en reducerad-MTU anslutning, " +"t.ex. VPN" #: i2p2www/blog/2012/09/21/0.9.2-Release.rst:36 msgid "Fix i2psnark bug that prevented a completion announcement to the tracker" msgstr "" +"Fixa en I2PSnark-bugg som förhindrade en komplett-annonsering till " +"trackern" #: i2p2www/blog/2012/09/21/0.9.2-Release.rst:37 msgid "Fix a lock contention problem in i2ptunnel" -msgstr "" +msgstr "Fixa ett lås-strids-problem i i2ptunnel" #: i2p2www/blog/2012/09/21/0.9.2-Release.rst:38 msgid "Fix some OSX installation issues" -msgstr "" +msgstr "Fixa några OSX installations-problem." #: i2p2www/blog/2012/09/21/0.9.2-Release.rst:39 msgid "Remove uses of direct byte buffers that may have been leaking" -msgstr "" +msgstr "Ta bort användningar av direkta byte-buffrar som kan ha läckt" #: i2p2www/blog/2012/09/21/0.9.2-Release.rst:43 msgid "Reduce overhead in network messages" -msgstr "" +msgstr "Minska overhead i nätverks-meddelanden" #: i2p2www/blog/2012/09/21/0.9.2-Release.rst:44 msgid "Add \"universal\" theme support" -msgstr "" +msgstr "Lägg till \"universellt\" tema-stöd" #: i2p2www/blog/2012/09/21/0.9.2-Release.rst:45 msgid "Theme updates" -msgstr "" +msgstr "Tema-uppdateringar" #: i2p2www/blog/2012/09/21/0.9.2-Release.rst:46 msgid "Add a jbigi library for Raspberry Pi" -msgstr "" +msgstr "Lägg till jbigi-bibliotek för Raspberry Pi" #: i2p2www/blog/2012/09/21/0.9.2-Release.rst:47 msgid "New Scala unit test framework" -msgstr "" +msgstr "Nytt Scala enhetstests-ramverk" #: i2p2www/blog/2012/09/21/0.9.2-Release.rst:48 msgid "Translation updates for Czech, Dutch, German, and Greek" -msgstr "" +msgstr "Översättningsuppdateringar för Tjeckiska, Holländska, Tyska och Grekiska" #: i2p2www/blog/2012/09/21/0.9.2-Release.rst:49 msgid "Update wrapper to 3.5.15 (new installs and PPA only)" -msgstr "" +msgstr "Uppdatera wrapper till 3.5.15 (enbart nya installationer or PPA)" #: i2p2www/blog/2012/09/21/0.9.2-Release.rst:50 #: i2p2www/blog/2012/10/27/0.9.3-Release.rst:53 @@ -398,6 +422,10 @@ msgid "" "major changes in the in-network update system, and adds the capability to" " update via in-network torrents." msgstr "" +"0.9.4 inkluderar en fix för en nätverks-kapacitets-bugg introducerad i " +"0.9.2, som reducerade nätverksprestanda och tillfölitlighet. Stora " +"förändingar i det interna uppdateringssystemet och lägger till stöd för " +"att uppdatera via intena torrents." #: i2p2www/blog/2012/12/17/0.9.4-Release.rst:13 msgid "" diff --git a/i2p2www/translations/sv_SE/LC_MESSAGES/priority.po b/i2p2www/translations/sv_SE/LC_MESSAGES/priority.po index ae64b63d..05ac297c 100644 --- a/i2p2www/translations/sv_SE/LC_MESSAGES/priority.po +++ b/i2p2www/translations/sv_SE/LC_MESSAGES/priority.po @@ -1,4 +1,4 @@ -# Swedish translations for I2P. +# Swedish (Sweden) translations for I2P. # Copyright (C) 2013 ORGANIZATION # This file is distributed under the same license as the I2P project. # @@ -10,8 +10,8 @@ msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" "POT-Creation-Date: 2013-09-04 14:19+0000\n" -"PO-Revision-Date: 2013-04-27 23:10+0000\n" -"Last-Translator: Martin Svensson \n" +"PO-Revision-Date: 2013-09-12 00:43+0000\n" +"Last-Translator: hottuna \n" "Language-Team: Swedish (Sweden) " "(http://www.transifex.com/projects/p/I2P/language/sv_SE/)\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" @@ -32,11 +32,11 @@ msgstr "" #: i2p2www/pages/blog/index.html:2 i2p2www/pages/blog/post.html:3 #: i2p2www/pages/global/nav.html:95 msgid "Blog" -msgstr "" +msgstr "Blogg" #: i2p2www/pages/blog/index.html:4 i2p2www/pages/site/index.html:81 msgid "I2P Blog ATOM Feed" -msgstr "" +msgstr "I2P Blogg ATOM flöde" #: i2p2www/pages/blog/index.html:17 #, python-format @@ -45,7 +45,7 @@ msgstr "" #: i2p2www/pages/blog/latest.html:5 msgid "More blog posts…" -msgstr "" +msgstr "Fler blogg-poster…" #: i2p2www/pages/blog/post.html:6 msgid "Posted:" @@ -57,7 +57,7 @@ msgstr "" #: i2p2www/pages/downloads/debian.html:4 msgid "Debian I2P Packages" -msgstr "" +msgstr "Debian I2P Packet" #: i2p2www/pages/downloads/debian.html:6 #, python-format @@ -66,6 +66,9 @@ msgid "" "maintainers/+archive/i2p\">the I2P Launchpad site\n" "have been tested and should work on x86/x86_64 platforms running:" msgstr "" +"Packets finns på I2P Launchpad sidan\n" +"har testats och bör fungera på x86/x86_64 platformer som kör:" #: i2p2www/pages/downloads/debian.html:11 msgid "Ubuntu (Precise 12.04 and newer)" @@ -85,12 +88,18 @@ msgid "" "with these packages on Trac at\n" "http://%(trac)s." msgstr "" +"I2P-paketen kan fungera på system som inte listats ovan. Var god" +" rapportera alla problem\n" +"med dessa paketen på Trac at⏎\n" +"http://%(trac)s" #: i2p2www/pages/downloads/debian.html:23 msgid "" "Option 1: Recent versions of Ubuntu and its " "derivatives (Try this if you're not using Debian)" msgstr "" +"Alternativ 1: Nya versioner av Ubuntu och dess " +"derivat(Testa detta om du inte använder Debian)" #: i2p2www/pages/downloads/debian.html:24 msgid "Option 2: Debian (including Debian-derivatives)" @@ -101,6 +110,8 @@ msgid "" "Option 3: Non-Linux (and possibly Non-x86 " "architectures)" msgstr "" +"Alternativ 3: Icke-Linux (och mjligen icke-x86 " +"arkitekturer)" #: i2p2www/pages/downloads/debian.html:28 msgid "" @@ -110,11 +121,11 @@ msgstr "" #: i2p2www/pages/downloads/debian.html:29 msgid "Adding the PPA via the command line and installing I2P" -msgstr "" +msgstr "Lägger till PPA via kommandotolken och installerar I2P" #: i2p2www/pages/downloads/debian.html:32 msgid "Open a terminal and enter:" -msgstr "" +msgstr "Öppna en terminal ock skriv:" #: i2p2www/pages/downloads/debian.html:34 msgid "" @@ -122,10 +133,14 @@ msgid "" "gpg key that the repository has been signed with. The GPG key ensures\n" "that the packages have not been tampered with since being built." msgstr "" +"Dethär kommandor kommer lägga till PPA:n till /etc/apt/sources.list.d och" +" hämta den\n" +"gpg-nyckel som repositoriet har signerats med. GPG-nyckeln försäkrar\n" +"att paketet inte har fifflats med sedan det byggdes." #: i2p2www/pages/downloads/debian.html:41 msgid "Notify your package manager of the new PPA by entering:" -msgstr "" +msgstr "Meddela din packet-hanterar om det nya PPA:et genom att skriva:" #: i2p2www/pages/downloads/debian.html:43 msgid "" @@ -133,28 +148,35 @@ msgid "" "repository that is enabled on your system, including the I2P PPA that\n" "was added with the earlier command." msgstr "" +"Dethär kommandot kommer hämta den senaste listan av mjukvara från varje\n" +"repositorie som används av systemet, inklusive I2P PPA:et som\n" +"lades till med det tidigare kommandot." #: i2p2www/pages/downloads/debian.html:49 #: i2p2www/pages/downloads/debian.html:112 #: i2p2www/pages/downloads/debian.html:137 msgid "You are now ready to install I2P!" -msgstr "" +msgstr "Du är nu redo att installera I2P!" #: i2p2www/pages/downloads/debian.html:53 msgid "Adding the PPA Using Synaptic" -msgstr "" +msgstr "Lägga till PPA:et Med Synaptic" #: i2p2www/pages/downloads/debian.html:56 msgid "" "Open Synaptic (System -> Administration -> Synaptic Package " "Manager)." msgstr "" +"Öppna Synaptic (System -> Administration -> Synaptic Packet " +"Hanterare)" #: i2p2www/pages/downloads/debian.html:61 msgid "" "Once Synaptic opens, select Repositories from the " "Settings menu." msgstr "" +"När Synaptic öppnas, välj Repositorier från " +"Inställnings menyn." #: i2p2www/pages/downloads/debian.html:66 msgid "" @@ -163,6 +185,10 @@ msgid "" "Add Source. Click the Close button then " "Reload." msgstr "" +"Klicka på Andra Källor-tabben och klicka Lägg till. " +"Klista in ppa:i2p-maintainers/i2pi APT-fälter och klicka " +"Lägg till källa. Klicka Stäng-knappen och sedan " +"Ladda Om." #: i2p2www/pages/downloads/debian.html:71 msgid "" @@ -172,6 +198,12 @@ msgid "" "so you may see a Mark additional required changes? popup. If so," " click Mark then Apply." msgstr "" +"I snabb-filter-boxen, skriv i2p och tryck enter. När " +"i2p returneras i resultat-listan, högerklicka " +"i2p och välj Markera för installation. Efter det " +"gjorts kan du eventuellt se Markera ytterliggare nödvändiga " +"ändringar?-popup:en. Om det händer, klicka på Markera och " +"sedan Verkställ" #: i2p2www/pages/downloads/debian.html:77 msgid "" @@ -179,10 +211,13 @@ msgid "" "part of starting I2P and configuring " "it for your system." msgstr "" +"Efter installationsprocessen blivit färdig kan du gå vidare till nästa\n" +"del av starta I2P och konfigurera I2P " +"för ditt system." #: i2p2www/pages/downloads/debian.html:82 msgid "Instructions for Debian Lenny and newer" -msgstr "" +msgstr "Instruktioner för Debian Lenny och senare" #: i2p2www/pages/downloads/debian.html:84 msgid "" @@ -195,14 +230,17 @@ msgid "" "The steps below should be performed with root access (i.e., switching\n" "user to root with \"su\" or by prefixing each command with \"sudo\")." msgstr "" +"Nedan steg bör utföras med root-tillgång (d.v.s. byt\n" +"användare till root med \"su\" eller genom att använda prefixet \"sudo\" " +"före alla kommandon)" #: i2p2www/pages/downloads/debian.html:92 msgid "Add the GPG key that signs the repository with the following command:" -msgstr "" +msgstr "Lägg till GPG-nyckeln som signerar repositoriet med följande kommando:" #: i2p2www/pages/downloads/debian.html:94 msgid "You'll have output like the following if the command was successful:" -msgstr "" +msgstr "Du kommer se output likt den följande om kommandot lyckades:" #: i2p2www/pages/downloads/debian.html:98 msgid "Add the following entries to /etc/apt/sources.list.d/i2p.list" @@ -210,7 +248,7 @@ msgstr "" #: i2p2www/pages/downloads/debian.html:103 msgid "Notify your package manager of the new PPA by entering" -msgstr "" +msgstr "Meddela din packethanterare om det nya PPA:et genom att skriva" #: i2p2www/pages/downloads/debian.html:105 msgid "" @@ -218,6 +256,10 @@ msgid "" "repository enabled on your system, including the I2P PPA added in step\n" "1." msgstr "" +"Dethär kommandot kommer hämta den senaste listan av mjukvara från varje\n" +"repositorie som används av ditt system, inklusive det nya I2P PPA:et som" +" lades till i steg\n" +"1." #: i2p2www/pages/downloads/debian.html:116 #: i2p2www/pages/downloads/debian.html:147 @@ -226,10 +268,13 @@ msgid "" " of starting I2P and configuring it " "for your system." msgstr "" +"Efter installationprocessen avslutas kan du gå vidare till nästa del av " +"starta I2P och konfigurera det för " +"ditt system." #: i2p2www/pages/downloads/debian.html:120 msgid "Instructions for Non-Linux / Non-x86" -msgstr "" +msgstr "Instruktioner för Icke-Linux / Icke-x86" #: i2p2www/pages/downloads/debian.html:122 msgid "" @@ -237,6 +282,9 @@ msgid "" "user to root with \"su\" or by prefixing each command with " "\"sudo\")." msgstr "" +"Nedan sted bör utföras med root-tillgång (d.v.s. byt\n" +"användare till root med \"su\" eller genom att använda " +"prefixet \"sudo\")." #: i2p2www/pages/downloads/debian.html:128 #, python-format @@ -252,6 +300,8 @@ msgid "" "Make sure that you have Java installed. Running apt-get install" " default-jre should be sufficient." msgstr "" +"Var på att du har Java installerat. Kör apt-get install " +"default-jre bör räcka." #: i2p2www/pages/downloads/debian.html:141 #, python-format @@ -260,17 +310,22 @@ msgid "" "system to achieve better performance. Instructions are available here." msgstr "" +"Att kompilera jbigi för ditt system " +"rekommenderas för att uppnå högre prestanda. Instruktionerna är " +"tillgängliga här." #: i2p2www/pages/downloads/debian.html:151 #: i2p2www/pages/downloads/list.html:166 msgid "Post-install work" -msgstr "" +msgstr "Efter-installations arbete" #: i2p2www/pages/downloads/debian.html:154 msgid "" "Using these I2P packages the I2P router can be started in the following\n" "three ways:" msgstr "" +"Med hjälp av dessa I2P-packet kan I2P routern startas på följande\n" +" tre sätt:" #: i2p2www/pages/downloads/debian.html:160 msgid "" @@ -280,6 +335,11 @@ msgid "" "not use\n" "sudo or run it as root!)" msgstr "" +""på begäran" används i2prouter skriptet. Kör " +""i2prouter\n" +" start" från kommandotolken. (Notera: Använd " +"inte\n" +"sudo eller använd det som root!)" #: i2p2www/pages/downloads/debian.html:167 msgid "" @@ -290,6 +350,12 @@ msgid "" "(Note: Do not\n" "use sudo or run it as root!)" msgstr "" +""på begäran" utan java tjänst wrappern\n" +"(behövs på Icke-Linux / Icke-x86 system) genom att köra \"i2prouter-nowrapper\".\n" +"(Uppmärksamma: Används inte\n" +"sudo eller kör root!)" #: i2p2www/pages/downloads/debian.html:175 msgid "" @@ -299,6 +365,10 @@ msgid "" "i2p\" as root or using sudo. This is the recommended means of " "operation." msgstr "" +"som en tjänst som automatiskt körs när systemet startas, även\n" +"före inloggning. Tjänsten kan slås på med \"dpkg-reconfigure\n" +"i2p\" som root eller sudo. Detta är det rekommenderade sättet att " +"köra I2P." #: i2p2www/pages/downloads/debian.html:183 msgid "" @@ -319,6 +389,10 @@ msgid "" "as the default settings of 96 KB/s down / 40 KB/s up are fairly " "conservative." msgstr "" +"Var god läs igenom och justera bandbreddsinställningar på\n" +"inställiningssidan,\n" +"eftersom standardinställningarna 96 KB/s ner / 40 KB/s upp är tämligen " +"konservativa." #: i2p2www/pages/downloads/debian.html:196 #: i2p2www/pages/downloads/list.html:199 @@ -328,19 +402,22 @@ msgid "" "href=\"%(browserconfig)s\">browser proxy setup page for an easy " "howto." msgstr "" +"Om du vill nå en eepsida via din webbläsare, titta på webbläsar-proxy inställnings-sidan för en " +"enkel guide." #: i2p2www/pages/downloads/list.html:2 i2p2www/pages/downloads/select.html:12 #: i2p2www/pages/global/nav.html:3 msgid "Download" -msgstr "" +msgstr "Hämta" #: i2p2www/pages/downloads/list.html:9 msgid "Download I2P" -msgstr "" +msgstr "Hämta I2P" #: i2p2www/pages/downloads/list.html:11 msgid "Dependency" -msgstr "" +msgstr "Beroende" #: i2p2www/pages/downloads/list.html:12 #, python-format @@ -360,7 +437,7 @@ msgstr "" #: i2p2www/pages/downloads/list.html:25 msgid "Clean installs" -msgstr "" +msgstr "Rena installationer" #: i2p2www/pages/downloads/list.html:32 i2p2www/pages/downloads/list.html:49 #: i2p2www/pages/downloads/list.html:76 i2p2www/pages/downloads/list.html:135 @@ -370,7 +447,7 @@ msgstr "" #: i2p2www/pages/downloads/list.html:39 msgid "Download that file and run it." -msgstr "" +msgstr "Hämta den filen och kör den." #: i2p2www/pages/downloads/list.html:56 #, python-format @@ -385,7 +462,7 @@ msgstr "" #: i2p2www/pages/downloads/list.html:64 i2p2www/pages/downloads/list.html:91 msgid "Command line (headless) install:" -msgstr "" +msgstr "Kommandotolks (utan skärm) installation:" #: i2p2www/pages/downloads/list.html:65 #, python-format @@ -405,6 +482,12 @@ msgid "" " On some platforms you may be able to right-click and select\n" " "Open with Java"." msgstr "" +"Hämta den filen och dubbel-klicka på den (om det fungerar) eller\n" +"skriv java -jar i2pinstall%(i2pversion)s.jar i en terminal " +"och kör\n" +"installationen.\n" +"På vissa platformar kan du behöva högerklicka och välj\n" +""Öppna med"." #: i2p2www/pages/downloads/list.html:92 #, python-format @@ -413,10 +496,13 @@ msgid "" " run java -jar i2pinstall_%(i2pversion)s.jar -console " "from the command line." msgstr "" +"Hämta den grafiska installerar-filen ovan och\n" +"kör java -jar i2pinstall_%(i2pversion)s.jar -console från " +"kommandotolken." #: i2p2www/pages/downloads/list.html:102 msgid "Packages for Debian & Ubuntu are available." -msgstr "" +msgstr "Packet för Debian & Ubuntu finns." #: i2p2www/pages/downloads/list.html:116 #, python-format @@ -437,7 +523,7 @@ msgstr "" #: i2p2www/pages/downloads/list.html:132 msgid "Source package" -msgstr "" +msgstr "Källkods-paket" #: i2p2www/pages/downloads/list.html:142 #, python-format @@ -458,6 +544,8 @@ msgid "" "The files are signed by zzz,\n" "whose key is here." msgstr "" +"Filerna är signerade av zzz,\n" +" vars nyckel finns här." #: i2p2www/pages/downloads/list.html:162 msgid "" @@ -465,6 +553,9 @@ msgid "" "href=\"https://launchpad.net/i2p/trunk\">Launchpad and Google Code." msgstr "" +"I2P kan också hämtas från vår projekt-sida på Launchpad och Google Code." #: i2p2www/pages/downloads/list.html:168 msgid "" @@ -474,6 +565,11 @@ msgid "" "href=\"http://localhost:7657/index.jsp\">router console,\n" "which has further instructions." msgstr "" +"Efter installationsmjukvaran körs på windows, klicka helt enkelt på " +"\"Start I2P\"-knappen\n" +"som kommer öppna router " +"konsollen,\n" +"som har vidare instruktioner." #: i2p2www/pages/downloads/list.html:174 msgid "" @@ -491,6 +587,18 @@ msgid "" " is not supported,\n" "start the router with \"sh runplain.sh\" instead." msgstr "" +"På Unix-lika system, kan I2P startas som en tjänst,\n" +"med hjälp av \"i2prouter\" skriptet, som finns i mappen du installerade " +"I2P i.\n" +"Byt till den mappen i en kommandotolk och skriv \"sh i2prouter status\"\n" +"bör berätta om routerns status. Argumenten \"start\", \"stop\" och " +"\"restart\"\n" +"kontrollerar tjänsten. Routerkonsollen kan nås från" +" sin vanliga position.\n" +"För användare av OpenSolares och andra system för vilka wrappern (i2psvc)" +" inste stöds,\n" +"starta routern med \"sh runplain.sh\" istället." #: i2p2www/pages/downloads/list.html:185 #, python-format @@ -503,6 +611,12 @@ msgid "" "inbound TCP on the\n" "configuration page." msgstr "" +"När du installlerar för förtsa gången, var god kom ihåg att justera " +"din NAT/brandvägg\n" +"om du kan, kom ihåg att de internet nåbara portarna I2P använder,\n" +"beskrivs här bland andra portar.\n" +"Om du har lyckats öppna din på för inåtgående TCP, slä även på TCP på\n" +"instälningssidan." #: i2p2www/pages/downloads/list.html:193 msgid "" @@ -510,18 +624,23 @@ msgid "" "configuration page,\n" "as the default settings of 96 KBps down / 40 KBps up are fairly slow." msgstr "" +"Var också god att läs kika på och justera bandbreddinställningarna" +" på\n" +"inställningssidan,\n" +"eftersom standardinställningartna 96/40 KB/s upp/ner är tämligen " +"långsamma." #: i2p2www/pages/downloads/list.html:203 msgid "Updates from earlier releases:" -msgstr "" +msgstr "Uppdateringar från tidigare releaser:" #: i2p2www/pages/downloads/list.html:205 msgid "Both automatic and manual upgrades are available for the release." -msgstr "" +msgstr "Både automatiska och manuella uppdateringatr är tillgängliga för releasen." #: i2p2www/pages/downloads/list.html:210 msgid "Automatic updates" -msgstr "" +msgstr "Automatiska uppdateringar" #: i2p2www/pages/downloads/list.html:212 msgid "" @@ -530,6 +649,10 @@ msgid "" " router console\n" "when it appears." msgstr "" +"Om du kör 0.7.5 eller senare, bör din router hitta\n" +"den nya releasen. För att uppgradera snabbt, klicka helt enkelt på " +"\"Hämta uppdatering\"-knappen på din routerkonsoll\n" +"när den syns." #: i2p2www/pages/downloads/list.html:218 msgid "" @@ -540,6 +663,12 @@ msgid "" "error,\n" "and should use the manual update method below." msgstr "" +"På grund av en bugg i 0.7.6, de vars första I2P installation var den " +"versionen\n" +"och inte har uppdaterat manuellt\n" +"kan får ett \"nedladdad version är inte nyare är den nuvarande " +"versionen\"-fel,\n" +"och bör använda den manuella uppdatering nedan." #: i2p2www/pages/downloads/list.html:226 #, python-format @@ -550,6 +679,11 @@ msgid "" "automatically\n" "receive the release." msgstr "" +"Om du kör 0.7.4 eller tidigare, var god se\n" +"0.7.5 releasekommentarerna\n" +"för viktig information om hur du bör konfigurera din router för att " +"automatiskt\n" +"ta emot releasen." #: i2p2www/pages/downloads/list.html:234 #, python-format @@ -560,6 +694,11 @@ msgid "" "automatically\n" "receive the release." msgstr "" +"Om du kör 0.6.1.30 eller tidigare, var god se\n" +" instruktioner\n" +"för viktig information om hur du konfigurerar din router för att " +"automatiskt\n" +"ta emot releasen." #: i2p2www/pages/downloads/list.html:243 #, python-format @@ -572,14 +711,19 @@ msgid "" " you to download and install the new release by just clicking on that\n" " link." msgstr "" +"Om du har omkonfigurerat din router med hjälp avinstruktioner, bör du se en länk på din\n" +"routerkonsoll som låter\n" +"dig hämta och installera den nya releasen genom klicka på den\n" +"länken." #: i2p2www/pages/downloads/list.html:251 msgid "Alternately, you can use the manual method specified below." -msgstr "" +msgstr "Alternativ, kan du använda den manuella metod som visas under." #: i2p2www/pages/downloads/list.html:261 msgid "Manual updates" -msgstr "" +msgstr "Manuella uppdateringar" #: i2p2www/pages/downloads/list.html:273 msgid "" @@ -591,14 +735,22 @@ msgid "" " \n" " NOT need to unzip that file." msgstr "" +"Hämta den filen till din I2P\n" +"installations-mapp och byt namn till i2pupdate.zip.\n" +"(alternativt, du kan hämta källkoden som ovan och kör \"ant updater\", " +"kopiera sedan den\n" +"resulterande i2pupdate.zip till din I2P installationsmapp). Du behöver\n" +"INTE unzippa den filen." #: i2p2www/pages/downloads/list.html:282 msgid "Click \"Restart\"" msgstr "" +"Klicka på \"Starta " +"om\"" #: i2p2www/pages/downloads/list.html:287 msgid "Grab a cup of coffee and come back in 11 minutes" -msgstr "" +msgstr "Hämta en kopp kaffe och kom tillbaka om 11 minuter" #: i2p2www/pages/downloads/list.html:295 #, python-format @@ -606,10 +758,12 @@ msgid "" "The file is signed by zzz,\n" "whose key is here." msgstr "" +"Filen är signerad av zzz,\n" +" vars nyckel finns här." #: i2p2www/pages/downloads/list.html:300 msgid "Previous Releases" -msgstr "" +msgstr "Tidigare Releaser" #: i2p2www/pages/downloads/list.html:302 #, python-format @@ -621,24 +775,32 @@ msgid "" "and within the I2P network on %(echelon)s." msgstr "" +"Tidigare releaser finns tillgängliga på Google " +"Code\n" +"och Launchpad\n" +"och inom I2P-nätverket på %(echelon)s." #: i2p2www/pages/downloads/select.html:2 i2p2www/pages/downloads/select.html:4 msgid "Mirror selection" -msgstr "" +msgstr "Spegelval" #: i2p2www/pages/downloads/select.html:5 msgid "File:" -msgstr "" +msgstr "Fil:" #: i2p2www/pages/downloads/select.html:10 msgid "Any mirror" -msgstr "" +msgstr "Vilken spegel som helst" #: i2p2www/pages/global/bounty.html:19 msgid "" "To claim the bounty the author must not be paid by other organizations\n" "or teams for this work (e.g. GSoC students are not valid)." msgstr "" +"För att göra anspråk på belöningen måste författaren inte vara betald av " +"andra organisationer\n" +"eller team för dethär arbetet (t.ex. GSoC students are not valid)." #: i2p2www/pages/global/bounty.html:29 #, python-format @@ -648,64 +810,70 @@ msgid "" "donation, \n" "marking the amount for the %(donatename)s bounty!" msgstr "" +"Belöningssummor kan ökas genom vidare donationer. Tycker\n" +"du att dom är viktiga? Lägg till din donation," +"\n" +"markera summan för %(donatename)s belöning!" #: i2p2www/pages/global/error_404.html:3 msgid "Not found" -msgstr "" +msgstr "Hittades inte" #: i2p2www/pages/global/error_404.html:9 msgid "" "Yep... the resource, you were searching for, is named differently, " "doesn't exist or was removed." msgstr "" +"Yep.. resursen du letade efter, herter något annat, finnes inte eller har" +" tagits bort." #: i2p2www/pages/global/error_500.html:5 msgid "Server error" -msgstr "" +msgstr "Serverfel" #: i2p2www/pages/global/error_500.html:13 msgid "500 Server error" -msgstr "" +msgstr "500 Serverfel" #: i2p2www/pages/global/error_500.html:17 msgid "Umm... the server encountered some sort of error." -msgstr "" +msgstr "Ehmm.. servern träffade på någon sorts problem." #: i2p2www/pages/global/footer.html:2 msgid "Mirrors" -msgstr "" +msgstr "Speglar" #: i2p2www/pages/global/footer.html:9 msgid "Secure" -msgstr "" +msgstr "Säker" #: i2p2www/pages/global/footer.html:16 msgid "Misc." -msgstr "" +msgstr "Blandat" #: i2p2www/pages/global/footer.html:19 i2p2www/pages/site/links.html:2 msgid "Links" -msgstr "" +msgstr "Länkar" #: i2p2www/pages/global/footer.html:20 msgid "Impressum" -msgstr "" +msgstr "Impressum" #: i2p2www/pages/global/footer.html:24 msgid "T-Shirts!" -msgstr "" +msgstr "T-Shirtar!" #: i2p2www/pages/global/footer.html:26 msgid "Europe" -msgstr "" +msgstr "Europa" #: i2p2www/pages/global/footer.html:27 msgid "USA" -msgstr "" +msgstr "USA" #: i2p2www/pages/global/footer.html:31 msgid "Donate" -msgstr "" +msgstr "Donera" #: i2p2www/pages/global/layout.html:29 msgid "Skip navigation" @@ -713,11 +881,11 @@ msgstr "" #: i2p2www/pages/global/layout.html:32 msgid "I2P Logo" -msgstr "" +msgstr "I2P Logo" #: i2p2www/pages/global/layout.html:32 i2p2www/pages/site/index.html:3 msgid "The Invisible Internet Project" -msgstr "" +msgstr "The Invisible Internet Project" #: i2p2www/pages/global/layout.html:56 #, python-format @@ -725,16 +893,18 @@ msgid "" "This page was last updated in %(lastupdated)s and is accurate for router " "version %(accuratefor)s." msgstr "" +"Denhär sidan uppdateras senast %(lastupdated)s och är korrekt för " +"routerversionen %(accuratefor)s." #: i2p2www/pages/global/layout.html:60 #, python-format msgid "This page was last updated in %(lastupdated)s." -msgstr "" +msgstr "Denhär sidan uppdaterades senast %(lastupdated)s." #: i2p2www/pages/global/layout.html:64 #, python-format msgid "This page is accurate for router version %(accuratefor)s." -msgstr "" +msgstr "Denhär sidan är korrekt för routerversion %(accuratefor)s." #: i2p2www/pages/global/macros:21 msgid "Previous" @@ -750,131 +920,131 @@ msgstr "" #: i2p2www/pages/global/nav.html:4 msgid "About" -msgstr "" +msgstr "Om" #: i2p2www/pages/global/nav.html:6 msgid "Introduction to I2P" -msgstr "" +msgstr "Introduktion till I2P" #: i2p2www/pages/global/nav.html:7 msgid "Comparisons" -msgstr "" +msgstr "Jämförelser" #: i2p2www/pages/global/nav.html:9 msgid "Overview of comparisons" -msgstr "" +msgstr "Överblick av jämförelser" #: i2p2www/pages/global/nav.html:13 msgid "Other anonymous networks" -msgstr "" +msgstr "Andra anonyma nätverk" #: i2p2www/pages/global/nav.html:16 msgid "Documentation" -msgstr "" +msgstr "Dokumentation" #: i2p2www/pages/global/nav.html:18 msgid "Documentation index" -msgstr "" +msgstr "Dokumentationsindex" #: i2p2www/pages/global/nav.html:19 msgid "How does it work?" -msgstr "" +msgstr "Hur fungerar det?" #: i2p2www/pages/global/nav.html:21 msgid "Gentle intro" -msgstr "" +msgstr "Försiktig intro" #: i2p2www/pages/global/nav.html:22 msgid "Tech intro" -msgstr "" +msgstr "Tech intro" #: i2p2www/pages/global/nav.html:23 msgid "Threat model" -msgstr "" +msgstr "Hotmodell" #: i2p2www/pages/global/nav.html:24 msgid "Garlic routing" -msgstr "" +msgstr "Garlic routing" #: i2p2www/pages/global/nav.html:25 msgid "Network database" -msgstr "" +msgstr "Nätverksdatabas" #: i2p2www/pages/global/nav.html:26 msgid "Tunnel routing" -msgstr "" +msgstr "Tunnelrouter" #: i2p2www/pages/global/nav.html:27 msgid "Peer selection" -msgstr "" +msgstr "Peerval" #: i2p2www/pages/global/nav.html:28 msgid "Cryptography" -msgstr "" +msgstr "Kryptografi" #: i2p2www/pages/global/nav.html:29 msgid "ElGamal/AES+SessionTags" -msgstr "" +msgstr "ElGamal/AES+SessionsTaggar" #: i2p2www/pages/global/nav.html:32 i2p2www/pages/global/nav.html:116 msgid "Applications" -msgstr "" +msgstr "Applikationer" #: i2p2www/pages/global/nav.html:34 msgid "Supported applications" -msgstr "" +msgstr "Stödda applikationer" #: i2p2www/pages/global/nav.html:35 msgid "Bittorrent" -msgstr "" +msgstr "Bittorrent" #: i2p2www/pages/global/nav.html:38 msgid "API" -msgstr "" +msgstr "API" #: i2p2www/pages/global/nav.html:46 i2p2www/pages/global/nav.html:77 msgid "Streaming library" -msgstr "" +msgstr "Strömmande bibliotek" #: i2p2www/pages/global/nav.html:47 msgid "Ministreaming library" -msgstr "" +msgstr "Ministrömmande bibliotek" #: i2p2www/pages/global/nav.html:48 i2p2www/pages/global/nav.html:71 msgid "Datagrams" -msgstr "" +msgstr "Datagram" #: i2p2www/pages/global/nav.html:52 msgid "Protocols" -msgstr "" +msgstr "Protokoll" #: i2p2www/pages/global/nav.html:54 msgid "Protocol stack" -msgstr "" +msgstr "Protokollstack" #: i2p2www/pages/global/nav.html:59 msgid "Transports" -msgstr "" +msgstr "Transporter" #: i2p2www/pages/global/nav.html:61 msgid "Transport layer overview" -msgstr "" +msgstr "Transport-nivå överblick" #: i2p2www/pages/global/nav.html:66 msgid "Specifications" -msgstr "" +msgstr "Specifikationer" #: i2p2www/pages/global/nav.html:68 msgid "Blockfile" -msgstr "" +msgstr "Blockfil" #: i2p2www/pages/global/nav.html:69 msgid "Common structures" -msgstr "" +msgstr "Vanliga strukturer" #: i2p2www/pages/global/nav.html:70 msgid "Configuration files" -msgstr "" +msgstr "Konfigurationsfiler" #: i2p2www/pages/global/nav.html:72 msgid "GeoIP files" @@ -882,171 +1052,171 @@ msgstr "" #: i2p2www/pages/global/nav.html:75 i2p2www/pages/global/nav.html:91 msgid "Plugins" -msgstr "" +msgstr "Plugin:er" #: i2p2www/pages/global/nav.html:78 msgid "Tunnel creation" -msgstr "" +msgstr "Tunnelskapelse" #: i2p2www/pages/global/nav.html:79 msgid "Tunnel messages" -msgstr "" +msgstr "Tunnelmeddelanden" #: i2p2www/pages/global/nav.html:80 msgid "Software updates" -msgstr "" +msgstr "Mjukvaru-uppdatering" #: i2p2www/pages/global/nav.html:83 msgid "Tunnels" -msgstr "" +msgstr "Tunnlar" #: i2p2www/pages/global/nav.html:85 msgid "Tunnel implementation" -msgstr "" +msgstr "Tunnelimplementation" #: i2p2www/pages/global/nav.html:86 msgid "Unidirectional tunnels" -msgstr "" +msgstr "Enkelriktade tunnlar" #: i2p2www/pages/global/nav.html:87 msgid "Old implementation" -msgstr "" +msgstr "Gammal implemenation" #: i2p2www/pages/global/nav.html:90 msgid "Naming and addressbook" -msgstr "" +msgstr "Namn och adressbok" #: i2p2www/pages/global/nav.html:94 msgid "Team" -msgstr "" +msgstr "Gräng" #: i2p2www/pages/global/nav.html:96 msgid "Hall of Fame" -msgstr "" +msgstr "Hall of Fame" #: i2p2www/pages/global/nav.html:97 msgid "Academic papers and peer review" -msgstr "" +msgstr "Akademiska artiklar och sakutlåtande" #: i2p2www/pages/global/nav.html:98 msgid "Presentations, tutorials and articles" -msgstr "" +msgstr "Presentationer, guider och artiklar" #: i2p2www/pages/global/nav.html:99 msgid "Contact us" -msgstr "" +msgstr "Kontakta oss" #: i2p2www/pages/global/nav.html:102 msgid "Help" -msgstr "" +msgstr "Hjälp" #: i2p2www/pages/global/nav.html:104 msgid "FAQ" -msgstr "" +msgstr "FAQ" #: i2p2www/pages/global/nav.html:105 msgid "How to browse I2P" -msgstr "" +msgstr "Hur du surfar på I2P" #: i2p2www/pages/global/nav.html:106 msgid "Glossary" -msgstr "" +msgstr "Ordlista" #: i2p2www/pages/global/nav.html:107 msgid "Performance" -msgstr "" +msgstr "Prestanda" #: i2p2www/pages/global/nav.html:108 i2p2www/pages/site/contact.html:22 msgid "Forums" -msgstr "" +msgstr "Forum" #: i2p2www/pages/global/nav.html:111 msgid "Volunteer" -msgstr "" +msgstr "Volontär" #: i2p2www/pages/global/nav.html:113 msgid "Get involved!" -msgstr "" +msgstr "Medverka!" #: i2p2www/pages/global/nav.html:114 msgid "Develop" -msgstr "" +msgstr "Utveckla" #: i2p2www/pages/global/nav.html:117 msgid "Licenses" -msgstr "" +msgstr "Licenser" #: i2p2www/pages/global/nav.html:118 msgid "Release signing keys" -msgstr "" +msgstr "Release signeringsnycklar" #: i2p2www/pages/global/nav.html:119 msgid "Signed keys" -msgstr "" +msgstr "Signerade nycklar" #: i2p2www/pages/global/nav.html:120 msgid "Developers keys" -msgstr "" +msgstr "Utvecklares nycklar" #: i2p2www/pages/global/nav.html:121 msgid "Bug tracker" -msgstr "" +msgstr "Bugg-tracker" #: i2p2www/pages/global/nav.html:124 msgid "Academic research" -msgstr "" +msgstr "Akademisk forskning" #: i2p2www/pages/global/nav.html:125 msgid "Guides" -msgstr "" +msgstr "Guider" #: i2p2www/pages/global/nav.html:127 msgid "New developers" -msgstr "" +msgstr "Nya utvecklare" #: i2p2www/pages/global/nav.html:128 msgid "Using an IDE with I2P" -msgstr "" +msgstr "Använd en IDE med I2P" #: i2p2www/pages/global/nav.html:129 msgid "Developer guidelines and coding style" -msgstr "" +msgstr "Utvecklar-riktlinjer och kod-stil" #: i2p2www/pages/global/nav.html:130 msgid "Monotone" -msgstr "" +msgstr "Monotone" #: i2p2www/pages/global/nav.html:131 msgid "New translators" -msgstr "" +msgstr "Nya översättare" #: i2p2www/pages/global/nav.html:134 msgid "Bounties" -msgstr "" +msgstr "Belöningar" #: i2p2www/pages/global/nav.html:135 i2p2www/pages/meetings/index.html:2 msgid "Meetings" -msgstr "" +msgstr "Möten" #: i2p2www/pages/global/nav.html:136 msgid "Roadmap" -msgstr "" +msgstr "Plan" #: i2p2www/pages/global/nav.html:137 msgid "Task list" -msgstr "" +msgstr "Uppdragslista" #: i2p2www/pages/global/nav.html:140 msgid "Language" -msgstr "" +msgstr "Språk" #: i2p2www/pages/meetings/index.html:4 msgid "I2P Meetings ATOM Feed" -msgstr "" +msgstr "I2P Mötes ATOM flöde" #: i2p2www/pages/meetings/index.html:7 msgid "Logs of past I2P meetings" -msgstr "" +msgstr "Loggar av tidigare I2P möten" #: i2p2www/pages/meetings/index.html:9 msgid "Meetings are currently on hold until a more suitable time can be chosen." @@ -1060,6 +1230,10 @@ msgid "" "Status updates from developers are also " "available." msgstr "" +"Om du har något att diskutera, hitta utvecklarna på IRC i rummt #i2p-dev." +"\n" +"Status-uppdateringar från utvecklar är " +"också tillgängliga." #: i2p2www/pages/meetings/show.html:2 #, python-format @@ -1095,7 +1269,7 @@ msgstr "" #: i2p2www/pages/site/contact.html:2 msgid "Contact" -msgstr "" +msgstr "Kontakt" #: i2p2www/pages/site/contact.html:5 msgid "" @@ -1111,23 +1285,23 @@ msgstr "" #: i2p2www/pages/site/contact.html:13 msgid "Channel list:" -msgstr "" +msgstr "Kanal-lista" #: i2p2www/pages/site/contact.html:15 msgid "General i2p discussion" -msgstr "" +msgstr "Generell I2P-diskussion." #: i2p2www/pages/site/contact.html:16 msgid "Offtopic" -msgstr "" +msgstr "Utanför samtalsämnde" #: i2p2www/pages/site/contact.html:17 msgid "Development talk" -msgstr "" +msgstr "Utvecklingsprat" #: i2p2www/pages/site/contact.html:18 msgid "Help channel" -msgstr "" +msgstr "Hjälpkanal" #: i2p2www/pages/site/contact.html:23 #, python-format @@ -1136,10 +1310,13 @@ msgid "" "href=\"http://%(zzz)s\">I2P developer forum. This is usually the best" " place to start with inquiries, if the dev IRC channel is inactive." msgstr "" +"De flesta av discussionerna om I2P's utveckling händer på I2Ps utvecklarforum. Detta är ofta det bästa " +"stället att fråga om #i2p-dev kanalen är inaktiv." #: i2p2www/pages/site/contact.html:27 msgid "Mailing lists" -msgstr "" +msgstr "E-post-lista" #: i2p2www/pages/site/contact.html:28 msgid "" @@ -1150,7 +1327,7 @@ msgstr "" #: i2p2www/pages/site/contact.html:33 msgid "Subscribing" -msgstr "" +msgstr "Prenumerara" #: i2p2www/pages/site/contact.html:34 msgid "" @@ -1161,7 +1338,7 @@ msgstr "" #: i2p2www/pages/site/contact.html:38 msgid "Unsubscribing" -msgstr "" +msgstr "Avprenumerera" #: i2p2www/pages/site/contact.html:39 msgid "" @@ -1172,11 +1349,11 @@ msgstr "" #: i2p2www/pages/site/contact.html:43 msgid "Lists" -msgstr "" +msgstr "Listor" #: i2p2www/pages/site/contact.html:46 msgid "Archive" -msgstr "" +msgstr "Arkiv" #: i2p2www/pages/site/contact.html:47 msgid "" From 736aeff3e089a4ac78e820beab095ffb9bb5fd7a Mon Sep 17 00:00:00 2001 From: str4d Date: Mon, 16 Sep 2013 12:37:15 +0000 Subject: [PATCH 625/650] Updated translation strings --- .../translations/de/LC_MESSAGES/priority.po | 54 +++++++-------- .../translations/es/LC_MESSAGES/priority.po | 65 ++++++++----------- .../translations/fr/LC_MESSAGES/priority.po | 65 ++++++++----------- .../translations/pt/LC_MESSAGES/priority.po | 54 +++++++-------- .../sv_SE/LC_MESSAGES/priority.po | 54 +++++++-------- 5 files changed, 123 insertions(+), 169 deletions(-) diff --git a/i2p2www/translations/de/LC_MESSAGES/priority.po b/i2p2www/translations/de/LC_MESSAGES/priority.po index 86641a35..ad9270cf 100644 --- a/i2p2www/translations/de/LC_MESSAGES/priority.po +++ b/i2p2www/translations/de/LC_MESSAGES/priority.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-09-04 14:19+0000\n" +"POT-Creation-Date: 2013-09-16 12:36+0000\n" "PO-Revision-Date: 2013-09-04 14:25+0000\n" "Last-Translator: str4d \n" "Language-Team: German " @@ -36,7 +36,7 @@ msgstr "" msgid "Blog" msgstr "Blog" -#: i2p2www/pages/blog/index.html:4 i2p2www/pages/site/index.html:81 +#: i2p2www/pages/blog/index.html:4 i2p2www/pages/site/index.html:78 msgid "I2P Blog ATOM Feed" msgstr "" @@ -424,8 +424,7 @@ msgstr "" #, python-format msgid "" "The above file is the current release build.\n" -" The latest dev build is version 0.9.7-20_b1-API18, and is available " -"from\n" +" The latest dev build is version %(devbuild)s, and is available from\n" " str4d's eepsite." msgstr "" @@ -2470,101 +2469,94 @@ msgstr "" #: i2p2www/pages/site/index.html:15 msgid "" "I2P is an anonymous overlay network - a network within a network. It is " -"intended to protect communication against dragnet surveillance, and " +"intended to protect communication from dragnet surveillance and " "monitoring by third parties such as ISPs.\n" msgstr "" #: i2p2www/pages/site/index.html:18 msgid "" "I2P is used by many people who care about their privacy: activists, " -"oppressed people, journalists and whistle-blowers - as well as the " -"average person.\n" +"oppressed people, journalists and whistleblowers, as well as the average " +"person.\n" msgstr "" #: i2p2www/pages/site/index.html:21 msgid "" -"Anonymity is not a boolean. No network can be \"perfectly anonymous\". " -"The continued goal of I2P is to make attacks more and more expensive to " -"mount.\n" +"No network can be \"perfectly anonymous\". The continued goal of I2P is " +"to make attacks more and more difficult to mount. Its anonymity will get " +"stronger as the size of the network increases and with ongoing academic " +"review.\n" msgstr "" #: i2p2www/pages/site/index.html:24 msgid "" -"I2P runs on Java and is therefore available anywhere Java will run, " -"including desktops, embedded systems (like the Raspberry Pi) and Android" -" phones.\n" +"I2P is available on desktops, embedded systems (like the Raspberry Pi) " +"and Android phones. Help spread the word!\n" msgstr "" -#: i2p2www/pages/site/index.html:27 -msgid "" -"I2P is a work in progress. Its anonymity will get stronger as the size of" -" the network increases and with ongoing academic review. Help spread the " -"word!\n" -msgstr "" - -#: i2p2www/pages/site/index.html:31 +#: i2p2www/pages/site/index.html:28 msgid "Read more…" msgstr "" -#: i2p2www/pages/site/index.html:36 +#: i2p2www/pages/site/index.html:33 msgid "What can you do with I2P?" msgstr "" -#: i2p2www/pages/site/index.html:39 +#: i2p2www/pages/site/index.html:36 #, python-format msgid "" "Email: Integrated web mail interface," " plugin for serverless email." msgstr "" -#: i2p2www/pages/site/index.html:44 +#: i2p2www/pages/site/index.html:41 #, python-format msgid "" "Web browsing: Anonymous " "websites, gateways to and from the public Internet." msgstr "" -#: i2p2www/pages/site/index.html:49 +#: i2p2www/pages/site/index.html:46 #, python-format msgid "" "Blogging and forums: " "Blogging and Syndie plugins." msgstr "" -#: i2p2www/pages/site/index.html:54 +#: i2p2www/pages/site/index.html:51 #, python-format msgid "" "Website hosting: Integrated" " anonymous web server." msgstr "" -#: i2p2www/pages/site/index.html:59 +#: i2p2www/pages/site/index.html:56 #, python-format msgid "" "Real-time chat: Instant " "messaging and IRC clients." msgstr "" -#: i2p2www/pages/site/index.html:64 +#: i2p2www/pages/site/index.html:61 #, python-format msgid "" "File sharing: ED2K and " "Gnutella clients, integrated BitTorrent client." msgstr "" -#: i2p2www/pages/site/index.html:69 +#: i2p2www/pages/site/index.html:66 #, python-format msgid "" "Decentralized file " "storage: Tahoe-LAFS distributed filesystem plugin." msgstr "" -#: i2p2www/pages/site/index.html:74 +#: i2p2www/pages/site/index.html:71 #, python-format msgid "More supported applications…" msgstr "" -#: i2p2www/pages/site/index.html:82 +#: i2p2www/pages/site/index.html:79 msgid "News & Updates" msgstr "" diff --git a/i2p2www/translations/es/LC_MESSAGES/priority.po b/i2p2www/translations/es/LC_MESSAGES/priority.po index 9022cf89..8fc51da6 100644 --- a/i2p2www/translations/es/LC_MESSAGES/priority.po +++ b/i2p2www/translations/es/LC_MESSAGES/priority.po @@ -13,7 +13,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-09-04 14:19+0000\n" +"POT-Creation-Date: 2013-09-16 12:36+0000\n" "PO-Revision-Date: 2013-09-05 12:43+0000\n" "Last-Translator: trolly\n" "Language-Team: Spanish " @@ -38,7 +38,7 @@ msgstr "ATOM Feed del Blog de I2P para la Categoría: %(category)s" msgid "Blog" msgstr "Blog" -#: i2p2www/pages/blog/index.html:4 i2p2www/pages/site/index.html:81 +#: i2p2www/pages/blog/index.html:4 i2p2www/pages/site/index.html:78 msgid "I2P Blog ATOM Feed" msgstr "Blog de I2P y ATOM feed" @@ -530,11 +530,10 @@ msgid "Packages for Debian & Ubuntu are available." msgstr "Hay disponibles paquetes para Debian & Ubuntu." #: i2p2www/pages/downloads/list.html:116 -#, python-format +#, fuzzy, python-format msgid "" "The above file is the current release build.\n" -" The latest dev build is version 0.9.7-20_b1-API18, and is available " -"from\n" +" The latest dev build is version %(devbuild)s, and is available from\n" " str4d's eepsite." msgstr "" "El archivo de arriba es la versión actual. La última compilación es la " @@ -3181,9 +3180,10 @@ msgid "What is I2P?" msgstr "¿Qué es I2P?" #: i2p2www/pages/site/index.html:15 +#, fuzzy msgid "" "I2P is an anonymous overlay network - a network within a network. It is " -"intended to protect communication against dragnet surveillance, and " +"intended to protect communication from dragnet surveillance and " "monitoring by third parties such as ISPs.\n" msgstr "" "I2P es una red anónima superpuesta - una red dentro de otra red. Ha sido " @@ -3191,10 +3191,11 @@ msgstr "" "monitoreo por parte de terceras partes como los ISPs.\n" #: i2p2www/pages/site/index.html:18 +#, fuzzy msgid "" "I2P is used by many people who care about their privacy: activists, " -"oppressed people, journalists and whistle-blowers - as well as the " -"average person.\n" +"oppressed people, journalists and whistleblowers, as well as the average " +"person.\n" msgstr "" "I2P es usado por mucha gente que se preocupa de su privacidad: " "activistas, personas oprimidas, periodistas y personas que denuncian la " @@ -3202,43 +3203,31 @@ msgstr "" #: i2p2www/pages/site/index.html:21 msgid "" -"Anonymity is not a boolean. No network can be \"perfectly anonymous\". " -"The continued goal of I2P is to make attacks more and more expensive to " -"mount.\n" +"No network can be \"perfectly anonymous\". The continued goal of I2P is " +"to make attacks more and more difficult to mount. Its anonymity will get " +"stronger as the size of the network increases and with ongoing academic " +"review.\n" msgstr "" -"El anonimato no es una variable binaria, no es 'si o no'. Ninguna red " -"puede ser \"perfectamente anónima\". El fin de I2P es hacer que los " -"ataques sean más y más caros de llevar a cabo.\n" #: i2p2www/pages/site/index.html:24 +#, fuzzy msgid "" -"I2P runs on Java and is therefore available anywhere Java will run, " -"including desktops, embedded systems (like the Raspberry Pi) and Android" -" phones.\n" +"I2P is available on desktops, embedded systems (like the Raspberry Pi) " +"and Android phones. Help spread the word!\n" msgstr "" "I2p se ejecuta con Java por lo cual está disponible allí donde Java " "funcione, incluyendo sistemas de escritorio, embebidos (como Raspberry " "Pi) y móviles Android.\n" -#: i2p2www/pages/site/index.html:27 -msgid "" -"I2P is a work in progress. Its anonymity will get stronger as the size of" -" the network increases and with ongoing academic review. Help spread the " -"word!\n" -msgstr "" -"I2P es un trabajo en curso. Su anonimato se volverá más fuerte según " -"crezca el tamaño de lar red y aumenten los estudios académicos. ¡Ayude a " -"correr la voz!\n" - -#: i2p2www/pages/site/index.html:31 +#: i2p2www/pages/site/index.html:28 msgid "Read more…" msgstr "Leer más…" -#: i2p2www/pages/site/index.html:36 +#: i2p2www/pages/site/index.html:33 msgid "What can you do with I2P?" msgstr "¿Qué puede hacer con I2P?" -#: i2p2www/pages/site/index.html:39 +#: i2p2www/pages/site/index.html:36 #, python-format msgid "" "Email: Integrated web mail interface," @@ -3247,7 +3236,7 @@ msgstr "" "EmailInterfaz de correo web " "integrado, pluguin para emails sin servidor, 'serverless'." -#: i2p2www/pages/site/index.html:44 +#: i2p2www/pages/site/index.html:41 #, python-format msgid "" "Web browsing: Anonymous " @@ -3256,7 +3245,7 @@ msgstr "" "Navegación web Webs anónimas, " "gateways o puertas de salida, desde y hacia el Internet público." -#: i2p2www/pages/site/index.html:49 +#: i2p2www/pages/site/index.html:46 #, python-format msgid "" "Blogging and forums: " @@ -3265,7 +3254,7 @@ msgstr "" "Blogs y foros Blogs y " "pluguins Syndie." -#: i2p2www/pages/site/index.html:54 +#: i2p2www/pages/site/index.html:51 #, python-format msgid "" "Website hosting: Integrated" @@ -3274,7 +3263,7 @@ msgstr "" "Alojamiento web Servidor " "web anónimo integrado. " -#: i2p2www/pages/site/index.html:59 +#: i2p2www/pages/site/index.html:56 #, python-format msgid "" "Real-time chat: Instant " @@ -3283,7 +3272,7 @@ msgstr "" "Chat en tiempo real " "Mensajería instantánea y clientes IRC." -#: i2p2www/pages/site/index.html:64 +#: i2p2www/pages/site/index.html:61 #, python-format msgid "" "File sharing: ED2K and " @@ -3292,7 +3281,7 @@ msgstr "" "Intercambio de archivos " "Clientes ED2K y Gnutella, cliente de BitTorrent integrado." -#: i2p2www/pages/site/index.html:69 +#: i2p2www/pages/site/index.html:66 #, python-format msgid "" "Decentralized file " @@ -3302,12 +3291,12 @@ msgstr "" "archivos descentralizado Pluguin para el sistema de archivos " "distribuido Tahoe-LAFS." -#: i2p2www/pages/site/index.html:74 +#: i2p2www/pages/site/index.html:71 #, python-format msgid "More supported applications…" msgstr "Más aplicaciones soportadas…" -#: i2p2www/pages/site/index.html:82 +#: i2p2www/pages/site/index.html:79 msgid "News & Updates" msgstr "Noticias & Actualizaciones" diff --git a/i2p2www/translations/fr/LC_MESSAGES/priority.po b/i2p2www/translations/fr/LC_MESSAGES/priority.po index f675faa7..8c2fb95f 100644 --- a/i2p2www/translations/fr/LC_MESSAGES/priority.po +++ b/i2p2www/translations/fr/LC_MESSAGES/priority.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-09-04 14:19+0000\n" +"POT-Creation-Date: 2013-09-16 12:36+0000\n" "PO-Revision-Date: 2013-09-04 23:49+0000\n" "Last-Translator: Boxoa590\n" "Language-Team: French " @@ -34,7 +34,7 @@ msgstr "Flux ATOM du Blog I2P pour la catégorie : %(category)s" msgid "Blog" msgstr "Blog" -#: i2p2www/pages/blog/index.html:4 i2p2www/pages/site/index.html:81 +#: i2p2www/pages/blog/index.html:4 i2p2www/pages/site/index.html:78 msgid "I2P Blog ATOM Feed" msgstr "Flux ATOM du Blog I2P" @@ -553,11 +553,10 @@ msgid "Packages for Debian & Ubuntu are available." msgstr "Des packages pour Debian & Ubuntu sont disponibles." #: i2p2www/pages/downloads/list.html:116 -#, python-format +#, fuzzy, python-format msgid "" "The above file is the current release build.\n" -" The latest dev build is version 0.9.7-20_b1-API18, and is available " -"from\n" +" The latest dev build is version %(devbuild)s, and is available from\n" " str4d's eepsite." msgstr "" "Le fichier ci-dessus est l'actuelle version construite.\n" @@ -3386,9 +3385,10 @@ msgid "What is I2P?" msgstr "Qu'est-ce que I2P ?" #: i2p2www/pages/site/index.html:15 +#, fuzzy msgid "" "I2P is an anonymous overlay network - a network within a network. It is " -"intended to protect communication against dragnet surveillance, and " +"intended to protect communication from dragnet surveillance and " "monitoring by third parties such as ISPs.\n" msgstr "" "I2P est un réseau superposé anonyme - un réseau au sein d'un réseau. Il " @@ -3397,10 +3397,11 @@ msgstr "" " les fournisseurs de services Internet.\n" #: i2p2www/pages/site/index.html:18 +#, fuzzy msgid "" "I2P is used by many people who care about their privacy: activists, " -"oppressed people, journalists and whistle-blowers - as well as the " -"average person.\n" +"oppressed people, journalists and whistleblowers, as well as the average " +"person.\n" msgstr "" "I2P est utilisé par beaucoup de gens qui se soucient de leur vie privée :" " des militants, des peuples opprimés, des journalistes et des " @@ -3408,43 +3409,31 @@ msgstr "" #: i2p2www/pages/site/index.html:21 msgid "" -"Anonymity is not a boolean. No network can be \"perfectly anonymous\". " -"The continued goal of I2P is to make attacks more and more expensive to " -"mount.\n" +"No network can be \"perfectly anonymous\". The continued goal of I2P is " +"to make attacks more and more difficult to mount. Its anonymity will get " +"stronger as the size of the network increases and with ongoing academic " +"review.\n" msgstr "" -"L'anonymat n'est pas un booléen. Aucun réseau ne peut être \"parfaitement" -" anonyme\". L'objectif continu de I2P est de rendre les attaques de plus " -"en plus coûteuses à monter.\n" #: i2p2www/pages/site/index.html:24 +#, fuzzy msgid "" -"I2P runs on Java and is therefore available anywhere Java will run, " -"including desktops, embedded systems (like the Raspberry Pi) and Android" -" phones.\n" +"I2P is available on desktops, embedded systems (like the Raspberry Pi) " +"and Android phones. Help spread the word!\n" msgstr "" "I2P fonctionne grâce à Java et il est donc disponible partout où Java " "s'exécute, y compris les ordinateurs de bureau, les systèmes embarqués " "(comme le Raspberry Pi) et les téléphones Android.\n" -#: i2p2www/pages/site/index.html:27 -msgid "" -"I2P is a work in progress. Its anonymity will get stronger as the size of" -" the network increases and with ongoing academic review. Help spread the " -"word!\n" -msgstr "" -"I2P est un travail en cours. Son anonymat deviendrra d'autant plus fort " -"que la taille du réseau augmente et avec les études académique en cours. " -"Faites passer le mot !\n" - -#: i2p2www/pages/site/index.html:31 +#: i2p2www/pages/site/index.html:28 msgid "Read more…" msgstr "Lire davantage …" -#: i2p2www/pages/site/index.html:36 +#: i2p2www/pages/site/index.html:33 msgid "What can you do with I2P?" msgstr "Que pouvez-vous faire avec I2P ?" -#: i2p2www/pages/site/index.html:39 +#: i2p2www/pages/site/index.html:36 #, python-format msgid "" "Email: Integrated web mail interface," @@ -3453,7 +3442,7 @@ msgstr "" "Email Interface web mail intégrée, " "plugin pour email sans serveur." -#: i2p2www/pages/site/index.html:44 +#: i2p2www/pages/site/index.html:41 #, python-format msgid "" "Web browsing: Anonymous " @@ -3462,7 +3451,7 @@ msgstr "" "Navigation web : Sites web " "anonymes, passerelles vers et depuis l'Internet public." -#: i2p2www/pages/site/index.html:49 +#: i2p2www/pages/site/index.html:46 #, python-format msgid "" "Blogging and forums: " @@ -3471,7 +3460,7 @@ msgstr "" "Blogging et forums " "Plugins pour Blogging et Syndie." -#: i2p2www/pages/site/index.html:54 +#: i2p2www/pages/site/index.html:51 #, python-format msgid "" "Website hosting: Integrated" @@ -3480,7 +3469,7 @@ msgstr "" "Hébergement de sites web : " "Serveur web anonyme intégré." -#: i2p2www/pages/site/index.html:59 +#: i2p2www/pages/site/index.html:56 #, python-format msgid "" "Real-time chat: Instant " @@ -3489,7 +3478,7 @@ msgstr "" "Tchat en temps réel : " "Messagerie instantanée et clients IRC." -#: i2p2www/pages/site/index.html:64 +#: i2p2www/pages/site/index.html:61 #, python-format msgid "" "File sharing: ED2K and " @@ -3498,7 +3487,7 @@ msgstr "" "Partage de fichiers : Clients " "ED2K et Gnutella, client BitTorrent intégré." -#: i2p2www/pages/site/index.html:69 +#: i2p2www/pages/site/index.html:66 #, python-format msgid "" "Decentralized file " @@ -3507,14 +3496,14 @@ msgstr "" "Stockage de fichiers" " décentralisé : Plugin pour système de fichiers distribué Tahoe-LAFS." -#: i2p2www/pages/site/index.html:74 +#: i2p2www/pages/site/index.html:71 #, python-format msgid "More supported applications…" msgstr "" "Davantage d'applications supportées " "…" -#: i2p2www/pages/site/index.html:82 +#: i2p2www/pages/site/index.html:79 msgid "News & Updates" msgstr "Actualités & mises à jour" diff --git a/i2p2www/translations/pt/LC_MESSAGES/priority.po b/i2p2www/translations/pt/LC_MESSAGES/priority.po index 7ee19b4d..99772e78 100644 --- a/i2p2www/translations/pt/LC_MESSAGES/priority.po +++ b/i2p2www/translations/pt/LC_MESSAGES/priority.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-09-04 14:19+0000\n" +"POT-Creation-Date: 2013-09-16 12:36+0000\n" "PO-Revision-Date: 2013-09-04 14:25+0000\n" "Last-Translator: str4d \n" "Language-Team: Portuguese " @@ -35,7 +35,7 @@ msgstr "" msgid "Blog" msgstr "" -#: i2p2www/pages/blog/index.html:4 i2p2www/pages/site/index.html:81 +#: i2p2www/pages/blog/index.html:4 i2p2www/pages/site/index.html:78 msgid "I2P Blog ATOM Feed" msgstr "Feed ATOM do blog do I2P" @@ -511,8 +511,7 @@ msgstr "Pacotes para Debian & Ubuntu estão disponíveis." #, python-format msgid "" "The above file is the current release build.\n" -" The latest dev build is version 0.9.7-20_b1-API18, and is available " -"from\n" +" The latest dev build is version %(devbuild)s, and is available from\n" " str4d's eepsite." msgstr "" @@ -2622,101 +2621,94 @@ msgstr "" #: i2p2www/pages/site/index.html:15 msgid "" "I2P is an anonymous overlay network - a network within a network. It is " -"intended to protect communication against dragnet surveillance, and " +"intended to protect communication from dragnet surveillance and " "monitoring by third parties such as ISPs.\n" msgstr "" #: i2p2www/pages/site/index.html:18 msgid "" "I2P is used by many people who care about their privacy: activists, " -"oppressed people, journalists and whistle-blowers - as well as the " -"average person.\n" +"oppressed people, journalists and whistleblowers, as well as the average " +"person.\n" msgstr "" #: i2p2www/pages/site/index.html:21 msgid "" -"Anonymity is not a boolean. No network can be \"perfectly anonymous\". " -"The continued goal of I2P is to make attacks more and more expensive to " -"mount.\n" +"No network can be \"perfectly anonymous\". The continued goal of I2P is " +"to make attacks more and more difficult to mount. Its anonymity will get " +"stronger as the size of the network increases and with ongoing academic " +"review.\n" msgstr "" #: i2p2www/pages/site/index.html:24 msgid "" -"I2P runs on Java and is therefore available anywhere Java will run, " -"including desktops, embedded systems (like the Raspberry Pi) and Android" -" phones.\n" +"I2P is available on desktops, embedded systems (like the Raspberry Pi) " +"and Android phones. Help spread the word!\n" msgstr "" -#: i2p2www/pages/site/index.html:27 -msgid "" -"I2P is a work in progress. Its anonymity will get stronger as the size of" -" the network increases and with ongoing academic review. Help spread the " -"word!\n" -msgstr "" - -#: i2p2www/pages/site/index.html:31 +#: i2p2www/pages/site/index.html:28 msgid "Read more…" msgstr "" -#: i2p2www/pages/site/index.html:36 +#: i2p2www/pages/site/index.html:33 msgid "What can you do with I2P?" msgstr "" -#: i2p2www/pages/site/index.html:39 +#: i2p2www/pages/site/index.html:36 #, python-format msgid "" "Email: Integrated web mail interface," " plugin for serverless email." msgstr "" -#: i2p2www/pages/site/index.html:44 +#: i2p2www/pages/site/index.html:41 #, python-format msgid "" "Web browsing: Anonymous " "websites, gateways to and from the public Internet." msgstr "" -#: i2p2www/pages/site/index.html:49 +#: i2p2www/pages/site/index.html:46 #, python-format msgid "" "Blogging and forums: " "Blogging and Syndie plugins." msgstr "" -#: i2p2www/pages/site/index.html:54 +#: i2p2www/pages/site/index.html:51 #, python-format msgid "" "Website hosting: Integrated" " anonymous web server." msgstr "" -#: i2p2www/pages/site/index.html:59 +#: i2p2www/pages/site/index.html:56 #, python-format msgid "" "Real-time chat: Instant " "messaging and IRC clients." msgstr "" -#: i2p2www/pages/site/index.html:64 +#: i2p2www/pages/site/index.html:61 #, python-format msgid "" "File sharing: ED2K and " "Gnutella clients, integrated BitTorrent client." msgstr "" -#: i2p2www/pages/site/index.html:69 +#: i2p2www/pages/site/index.html:66 #, python-format msgid "" "Decentralized file " "storage: Tahoe-LAFS distributed filesystem plugin." msgstr "" -#: i2p2www/pages/site/index.html:74 +#: i2p2www/pages/site/index.html:71 #, python-format msgid "More supported applications…" msgstr "" -#: i2p2www/pages/site/index.html:82 +#: i2p2www/pages/site/index.html:79 msgid "News & Updates" msgstr "" diff --git a/i2p2www/translations/sv_SE/LC_MESSAGES/priority.po b/i2p2www/translations/sv_SE/LC_MESSAGES/priority.po index 05ac297c..5ea09091 100644 --- a/i2p2www/translations/sv_SE/LC_MESSAGES/priority.po +++ b/i2p2www/translations/sv_SE/LC_MESSAGES/priority.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-09-04 14:19+0000\n" +"POT-Creation-Date: 2013-09-16 12:36+0000\n" "PO-Revision-Date: 2013-09-12 00:43+0000\n" "Last-Translator: hottuna \n" "Language-Team: Swedish (Sweden) " @@ -34,7 +34,7 @@ msgstr "" msgid "Blog" msgstr "Blogg" -#: i2p2www/pages/blog/index.html:4 i2p2www/pages/site/index.html:81 +#: i2p2www/pages/blog/index.html:4 i2p2www/pages/site/index.html:78 msgid "I2P Blog ATOM Feed" msgstr "I2P Blogg ATOM flöde" @@ -508,8 +508,7 @@ msgstr "Packet för Debian & Ubuntu finns." #, python-format msgid "" "The above file is the current release build.\n" -" The latest dev build is version 0.9.7-20_b1-API18, and is available " -"from\n" +" The latest dev build is version %(devbuild)s, and is available from\n" " str4d's eepsite." msgstr "" @@ -2626,101 +2625,94 @@ msgstr "" #: i2p2www/pages/site/index.html:15 msgid "" "I2P is an anonymous overlay network - a network within a network. It is " -"intended to protect communication against dragnet surveillance, and " +"intended to protect communication from dragnet surveillance and " "monitoring by third parties such as ISPs.\n" msgstr "" #: i2p2www/pages/site/index.html:18 msgid "" "I2P is used by many people who care about their privacy: activists, " -"oppressed people, journalists and whistle-blowers - as well as the " -"average person.\n" +"oppressed people, journalists and whistleblowers, as well as the average " +"person.\n" msgstr "" #: i2p2www/pages/site/index.html:21 msgid "" -"Anonymity is not a boolean. No network can be \"perfectly anonymous\". " -"The continued goal of I2P is to make attacks more and more expensive to " -"mount.\n" +"No network can be \"perfectly anonymous\". The continued goal of I2P is " +"to make attacks more and more difficult to mount. Its anonymity will get " +"stronger as the size of the network increases and with ongoing academic " +"review.\n" msgstr "" #: i2p2www/pages/site/index.html:24 msgid "" -"I2P runs on Java and is therefore available anywhere Java will run, " -"including desktops, embedded systems (like the Raspberry Pi) and Android" -" phones.\n" +"I2P is available on desktops, embedded systems (like the Raspberry Pi) " +"and Android phones. Help spread the word!\n" msgstr "" -#: i2p2www/pages/site/index.html:27 -msgid "" -"I2P is a work in progress. Its anonymity will get stronger as the size of" -" the network increases and with ongoing academic review. Help spread the " -"word!\n" -msgstr "" - -#: i2p2www/pages/site/index.html:31 +#: i2p2www/pages/site/index.html:28 msgid "Read more…" msgstr "" -#: i2p2www/pages/site/index.html:36 +#: i2p2www/pages/site/index.html:33 msgid "What can you do with I2P?" msgstr "" -#: i2p2www/pages/site/index.html:39 +#: i2p2www/pages/site/index.html:36 #, python-format msgid "" "Email: Integrated web mail interface," " plugin for serverless email." msgstr "" -#: i2p2www/pages/site/index.html:44 +#: i2p2www/pages/site/index.html:41 #, python-format msgid "" "Web browsing: Anonymous " "websites, gateways to and from the public Internet." msgstr "" -#: i2p2www/pages/site/index.html:49 +#: i2p2www/pages/site/index.html:46 #, python-format msgid "" "Blogging and forums: " "Blogging and Syndie plugins." msgstr "" -#: i2p2www/pages/site/index.html:54 +#: i2p2www/pages/site/index.html:51 #, python-format msgid "" "Website hosting: Integrated" " anonymous web server." msgstr "" -#: i2p2www/pages/site/index.html:59 +#: i2p2www/pages/site/index.html:56 #, python-format msgid "" "Real-time chat: Instant " "messaging and IRC clients." msgstr "" -#: i2p2www/pages/site/index.html:64 +#: i2p2www/pages/site/index.html:61 #, python-format msgid "" "File sharing: ED2K and " "Gnutella clients, integrated BitTorrent client." msgstr "" -#: i2p2www/pages/site/index.html:69 +#: i2p2www/pages/site/index.html:66 #, python-format msgid "" "Decentralized file " "storage: Tahoe-LAFS distributed filesystem plugin." msgstr "" -#: i2p2www/pages/site/index.html:74 +#: i2p2www/pages/site/index.html:71 #, python-format msgid "More supported applications…" msgstr "" -#: i2p2www/pages/site/index.html:82 +#: i2p2www/pages/site/index.html:79 msgid "News & Updates" msgstr "" From 9595ab32c691b5260de67c51db781e5af2c052df Mon Sep 17 00:00:00 2001 From: str4d Date: Mon, 16 Sep 2013 13:00:45 +0000 Subject: [PATCH 626/650] Updated translation strings --- .../de/LC_MESSAGES/get-involved.po | 58 +++++----- .../translations/de/LC_MESSAGES/priority.po | 18 ++- .../es/LC_MESSAGES/get-involved.po | 58 +++++----- .../translations/es/LC_MESSAGES/priority.po | 20 ++-- .../fr/LC_MESSAGES/get-involved.po | 106 +++++++++--------- .../translations/fr/LC_MESSAGES/priority.po | 20 ++-- .../translations/pt/LC_MESSAGES/priority.po | 18 ++- .../sv_SE/LC_MESSAGES/get-involved.po | 58 +++++----- .../sv_SE/LC_MESSAGES/priority.po | 18 ++- 9 files changed, 196 insertions(+), 178 deletions(-) diff --git a/i2p2www/translations/de/LC_MESSAGES/get-involved.po b/i2p2www/translations/de/LC_MESSAGES/get-involved.po index ced67a9a..6ed55deb 100644 --- a/i2p2www/translations/de/LC_MESSAGES/get-involved.po +++ b/i2p2www/translations/de/LC_MESSAGES/get-involved.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-30 23:32+0000\n" +"POT-Creation-Date: 2013-09-16 12:59+0000\n" "PO-Revision-Date: 2013-07-04 16:33+0000\n" "Last-Translator: D.A. Loader\n" "Language-Team: German " @@ -34,61 +34,67 @@ msgid "" "can make your contribution are provided below." msgstr "" -#: i2p2www/pages/site/get-involved/donate.html:13 +#: i2p2www/pages/site/get-involved/donate.html:11 +#: i2p2www/pages/site/get-involved/donate.html:27 +#, python-format +msgid "" +"As of %(date)s, eche|on has been running a\n" +"%(cointype)s account for the I2P project.\n" +"If you'd like to donate using %(cointype)s, just transfer your\n" +"desired amount of coins to the account %(account)s\n" +"and leave eche|on a note if you'd like your donation to be\n" +"mentioned on the I2P webpage." +msgstr "" + +#: i2p2www/pages/site/get-involved/donate.html:22 +#: i2p2www/pages/site/get-involved/donate.html:38 +msgid "For easy usage, use the QR code below!" +msgstr "" + +#: i2p2www/pages/site/get-involved/donate.html:44 #, python-format msgid "You can donate direct via PayPal to the account \"%(account)s\"." msgstr "" -#: i2p2www/pages/site/get-involved/donate.html:19 +#: i2p2www/pages/site/get-involved/donate.html:50 msgid "One time donation:" msgstr "" -#: i2p2www/pages/site/get-involved/donate.html:33 +#: i2p2www/pages/site/get-involved/donate.html:64 msgid "Donate 10 €/month for 12 months:" msgstr "" -#: i2p2www/pages/site/get-involved/donate.html:41 -#: i2p2www/pages/site/get-involved/donate.html:53 -#: i2p2www/pages/site/get-involved/donate.html:65 -#: i2p2www/pages/site/get-involved/donate.html:77 +#: i2p2www/pages/site/get-involved/donate.html:72 +#: i2p2www/pages/site/get-involved/donate.html:84 +#: i2p2www/pages/site/get-involved/donate.html:96 +#: i2p2www/pages/site/get-involved/donate.html:108 msgid "I2P donation " msgstr "" -#: i2p2www/pages/site/get-involved/donate.html:47 +#: i2p2www/pages/site/get-involved/donate.html:78 msgid "Donate 20 €/month for 12 months:" msgstr "" -#: i2p2www/pages/site/get-involved/donate.html:59 +#: i2p2www/pages/site/get-involved/donate.html:90 msgid "Donate 30 €/month for 12 months:" msgstr "" -#: i2p2www/pages/site/get-involved/donate.html:71 +#: i2p2www/pages/site/get-involved/donate.html:102 msgid "Donate 50 €/month for 12 months:" msgstr "" -#: i2p2www/pages/site/get-involved/donate.html:86 +#: i2p2www/pages/site/get-involved/donate.html:117 msgid "Flattr this" msgstr "" -#: i2p2www/pages/site/get-involved/donate.html:90 -#, python-format -msgid "" -"As of December 2010, eche|on has been running a Bitcoin account for the I2P project. \n" -"If you'd like to donate using Bitcoin, just transfer your desired amount " -"of coins to the account \n" -"%(account)s and leave eche|on a note if you'd like your donation " -"to be mentioned on the I2P webpage." -msgstr "" - -#: i2p2www/pages/site/get-involved/donate.html:95 +#: i2p2www/pages/site/get-involved/donate.html:122 msgid "" "If you want to keep more or less anonymous, the option to send money via " "mail is also available. But it is less secure\n" "as the envelope can be lost on the way to us." msgstr "" -#: i2p2www/pages/site/get-involved/donate.html:99 +#: i2p2www/pages/site/get-involved/donate.html:126 #, python-format msgid "" "If you'd like to donate via snail mail, send an email to \n" "Language-Team: German " @@ -1930,10 +1930,9 @@ msgstr "" #: i2p2www/pages/site/faq.html:452 msgid "" "Go to http://localhost:7657/configadvanced.jsp" +"href=\"http://localhost:7657/configui\">http://localhost:7657/configui" "\n" -"and add a new option: consolePassword=foo (or whatever " -"password you want)" +"and add a console username and password if desired." msgstr "" #: i2p2www/pages/site/faq.html:458 @@ -1948,13 +1947,12 @@ msgstr "" #: i2p2www/pages/site/faq.html:465 msgid "" "After that fires up, you should now be able to reach your console " -"remotely.\n" -"You will be prompted for a username and password though - the username is" -"\n" -"\"admin\" and the password is whatever you specified in step 2 above. " -"Note: the\n" +"remotely. Reload the router at\n" +"http://127.0.0.1:7657 and you will be prompted for the username and " +"password you specified in step 2\n" +"above if your browser supports the authentication popup. Note: the\n" "0.0.0.0 above specifies an interface, not a network " -"or netmask. 0.0.0.0\n" +"or netmask. 0.0.0.0\n" "means \"bind to all interfaces\", so it can be reachable on " "127.0.0.1:7657 as well as\n" "any LAN/WAN IP." diff --git a/i2p2www/translations/es/LC_MESSAGES/get-involved.po b/i2p2www/translations/es/LC_MESSAGES/get-involved.po index 6d1c039b..fcac0a42 100644 --- a/i2p2www/translations/es/LC_MESSAGES/get-involved.po +++ b/i2p2www/translations/es/LC_MESSAGES/get-involved.po @@ -13,7 +13,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-30 23:32+0000\n" +"POT-Creation-Date: 2013-09-16 12:59+0000\n" "PO-Revision-Date: 2013-07-11 10:13+0000\n" "Last-Translator: trolly\n" "Language-Team: Spanish " @@ -36,61 +36,67 @@ msgid "" "can make your contribution are provided below." msgstr "" -#: i2p2www/pages/site/get-involved/donate.html:13 +#: i2p2www/pages/site/get-involved/donate.html:11 +#: i2p2www/pages/site/get-involved/donate.html:27 +#, python-format +msgid "" +"As of %(date)s, eche|on has been running a\n" +"%(cointype)s account for the I2P project.\n" +"If you'd like to donate using %(cointype)s, just transfer your\n" +"desired amount of coins to the account %(account)s\n" +"and leave eche|on a note if you'd like your donation to be\n" +"mentioned on the I2P webpage." +msgstr "" + +#: i2p2www/pages/site/get-involved/donate.html:22 +#: i2p2www/pages/site/get-involved/donate.html:38 +msgid "For easy usage, use the QR code below!" +msgstr "" + +#: i2p2www/pages/site/get-involved/donate.html:44 #, python-format msgid "You can donate direct via PayPal to the account \"%(account)s\"." msgstr "" -#: i2p2www/pages/site/get-involved/donate.html:19 +#: i2p2www/pages/site/get-involved/donate.html:50 msgid "One time donation:" msgstr "" -#: i2p2www/pages/site/get-involved/donate.html:33 +#: i2p2www/pages/site/get-involved/donate.html:64 msgid "Donate 10 €/month for 12 months:" msgstr "" -#: i2p2www/pages/site/get-involved/donate.html:41 -#: i2p2www/pages/site/get-involved/donate.html:53 -#: i2p2www/pages/site/get-involved/donate.html:65 -#: i2p2www/pages/site/get-involved/donate.html:77 +#: i2p2www/pages/site/get-involved/donate.html:72 +#: i2p2www/pages/site/get-involved/donate.html:84 +#: i2p2www/pages/site/get-involved/donate.html:96 +#: i2p2www/pages/site/get-involved/donate.html:108 msgid "I2P donation " msgstr "" -#: i2p2www/pages/site/get-involved/donate.html:47 +#: i2p2www/pages/site/get-involved/donate.html:78 msgid "Donate 20 €/month for 12 months:" msgstr "" -#: i2p2www/pages/site/get-involved/donate.html:59 +#: i2p2www/pages/site/get-involved/donate.html:90 msgid "Donate 30 €/month for 12 months:" msgstr "" -#: i2p2www/pages/site/get-involved/donate.html:71 +#: i2p2www/pages/site/get-involved/donate.html:102 msgid "Donate 50 €/month for 12 months:" msgstr "" -#: i2p2www/pages/site/get-involved/donate.html:86 +#: i2p2www/pages/site/get-involved/donate.html:117 msgid "Flattr this" msgstr "" -#: i2p2www/pages/site/get-involved/donate.html:90 -#, python-format -msgid "" -"As of December 2010, eche|on has been running a Bitcoin account for the I2P project. \n" -"If you'd like to donate using Bitcoin, just transfer your desired amount " -"of coins to the account \n" -"%(account)s and leave eche|on a note if you'd like your donation " -"to be mentioned on the I2P webpage." -msgstr "" - -#: i2p2www/pages/site/get-involved/donate.html:95 +#: i2p2www/pages/site/get-involved/donate.html:122 msgid "" "If you want to keep more or less anonymous, the option to send money via " "mail is also available. But it is less secure\n" "as the envelope can be lost on the way to us." msgstr "" -#: i2p2www/pages/site/get-involved/donate.html:99 +#: i2p2www/pages/site/get-involved/donate.html:126 #, python-format msgid "" "If you'd like to donate via snail mail, send an email to clientApp.0.args=7657 0.0.0.0 ./webapps/" #: i2p2www/pages/site/faq.html:452 +#, fuzzy msgid "" "Go to http://localhost:7657/configadvanced.jsp" +"href=\"http://localhost:7657/configui\">http://localhost:7657/configui" "\n" -"and add a new option: consolePassword=foo (or whatever " -"password you want)" +"and add a console username and password if desired." msgstr "" "Vaya a http://localhost:7657/configadvanced.jsp" @@ -2456,15 +2456,15 @@ msgstr "" "las aplicaciones clientes." #: i2p2www/pages/site/faq.html:465 +#, fuzzy msgid "" "After that fires up, you should now be able to reach your console " -"remotely.\n" -"You will be prompted for a username and password though - the username is" -"\n" -"\"admin\" and the password is whatever you specified in step 2 above. " -"Note: the\n" +"remotely. Reload the router at\n" +"http://127.0.0.1:7657 and you will be prompted for the username and " +"password you specified in step 2\n" +"above if your browser supports the authentication popup. Note: the\n" "0.0.0.0 above specifies an interface, not a network " -"or netmask. 0.0.0.0\n" +"or netmask. 0.0.0.0\n" "means \"bind to all interfaces\", so it can be reachable on " "127.0.0.1:7657 as well as\n" "any LAN/WAN IP." diff --git a/i2p2www/translations/fr/LC_MESSAGES/get-involved.po b/i2p2www/translations/fr/LC_MESSAGES/get-involved.po index cd563933..10f1bc34 100644 --- a/i2p2www/translations/fr/LC_MESSAGES/get-involved.po +++ b/i2p2www/translations/fr/LC_MESSAGES/get-involved.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-30 23:32+0000\n" +"POT-Creation-Date: 2013-09-16 12:59+0000\n" "PO-Revision-Date: 2013-08-11 15:29+0000\n" "Last-Translator: Boxoa590\n" "Language-Team: French " @@ -35,53 +35,16 @@ msgstr "" "Les détails sur la façon dont vous\n" "pouvez faire votre contribution sont fournies ci-dessous." -#: i2p2www/pages/site/get-involved/donate.html:13 -#, python-format -msgid "You can donate direct via PayPal to the account \"%(account)s\"." -msgstr "" -"Vous pouvez faire un don directement via PayPal vers le compte " -"\"%(account)s\"." - -#: i2p2www/pages/site/get-involved/donate.html:19 -msgid "One time donation:" -msgstr "Donation en une fois :" - -#: i2p2www/pages/site/get-involved/donate.html:33 -msgid "Donate 10 €/month for 12 months:" -msgstr "Donner 10 €/mois pendant 12 mois:" - -#: i2p2www/pages/site/get-involved/donate.html:41 -#: i2p2www/pages/site/get-involved/donate.html:53 -#: i2p2www/pages/site/get-involved/donate.html:65 -#: i2p2www/pages/site/get-involved/donate.html:77 -msgid "I2P donation " -msgstr "Donation I2P" - -#: i2p2www/pages/site/get-involved/donate.html:47 -msgid "Donate 20 €/month for 12 months:" -msgstr "Donner 20 €/mois pendant 12 mois:" - -#: i2p2www/pages/site/get-involved/donate.html:59 -msgid "Donate 30 €/month for 12 months:" -msgstr "Donner 30 €/mois pendant 12 mois:" - -#: i2p2www/pages/site/get-involved/donate.html:71 -msgid "Donate 50 €/month for 12 months:" -msgstr "Donner 50 €/mois pendant 12 mois:" - -#: i2p2www/pages/site/get-involved/donate.html:86 -msgid "Flattr this" -msgstr "Flattr ceci" - -#: i2p2www/pages/site/get-involved/donate.html:90 -#, python-format +#: i2p2www/pages/site/get-involved/donate.html:11 +#: i2p2www/pages/site/get-involved/donate.html:27 +#, fuzzy, python-format msgid "" -"As of December 2010, eche|on has been running a Bitcoin account for the I2P project. \n" -"If you'd like to donate using Bitcoin, just transfer your desired amount " -"of coins to the account \n" -"%(account)s and leave eche|on a note if you'd like your donation " -"to be mentioned on the I2P webpage." +"As of %(date)s, eche|on has been running a\n" +"%(cointype)s account for the I2P project.\n" +"If you'd like to donate using %(cointype)s, just transfer your\n" +"desired amount of coins to the account %(account)s\n" +"and leave eche|on a note if you'd like your donation to be\n" +"mentioned on the I2P webpage." msgstr "" "Depuis décember 2010, eche|on fait fonctionner un compte Bitcoin pour le projet I2P.\n" @@ -90,7 +53,50 @@ msgstr "" "%(account)s et laisser à eche|on une note si vous souhaitez que " "votre don soit mentionné sur le site web I2P." -#: i2p2www/pages/site/get-involved/donate.html:95 +#: i2p2www/pages/site/get-involved/donate.html:22 +#: i2p2www/pages/site/get-involved/donate.html:38 +msgid "For easy usage, use the QR code below!" +msgstr "" + +#: i2p2www/pages/site/get-involved/donate.html:44 +#, python-format +msgid "You can donate direct via PayPal to the account \"%(account)s\"." +msgstr "" +"Vous pouvez faire un don directement via PayPal vers le compte " +"\"%(account)s\"." + +#: i2p2www/pages/site/get-involved/donate.html:50 +msgid "One time donation:" +msgstr "Donation en une fois :" + +#: i2p2www/pages/site/get-involved/donate.html:64 +msgid "Donate 10 €/month for 12 months:" +msgstr "Donner 10 €/mois pendant 12 mois:" + +#: i2p2www/pages/site/get-involved/donate.html:72 +#: i2p2www/pages/site/get-involved/donate.html:84 +#: i2p2www/pages/site/get-involved/donate.html:96 +#: i2p2www/pages/site/get-involved/donate.html:108 +msgid "I2P donation " +msgstr "Donation I2P" + +#: i2p2www/pages/site/get-involved/donate.html:78 +msgid "Donate 20 €/month for 12 months:" +msgstr "Donner 20 €/mois pendant 12 mois:" + +#: i2p2www/pages/site/get-involved/donate.html:90 +msgid "Donate 30 €/month for 12 months:" +msgstr "Donner 30 €/mois pendant 12 mois:" + +#: i2p2www/pages/site/get-involved/donate.html:102 +msgid "Donate 50 €/month for 12 months:" +msgstr "Donner 50 €/mois pendant 12 mois:" + +#: i2p2www/pages/site/get-involved/donate.html:117 +msgid "Flattr this" +msgstr "Flattr ceci" + +#: i2p2www/pages/site/get-involved/donate.html:122 msgid "" "If you want to keep more or less anonymous, the option to send money via " "mail is also available. But it is less secure\n" @@ -101,7 +107,7 @@ msgstr "" "sûr \n" "car l'enveloppe peut être perdue sur le chemin vers nous." -#: i2p2www/pages/site/get-involved/donate.html:99 +#: i2p2www/pages/site/get-involved/donate.html:126 #, python-format msgid "" "If you'd like to donate via snail mail, send an email to clientApp.0.args=7657 0.0.0.0 ./webapps/" #: i2p2www/pages/site/faq.html:452 +#, fuzzy msgid "" "Go to http://localhost:7657/configadvanced.jsp" +"href=\"http://localhost:7657/configui\">http://localhost:7657/configui" "\n" -"and add a new option: consolePassword=foo (or whatever " -"password you want)" +"and add a console username and password if desired." msgstr "" "Allez à http://localhost:7657/configadvanced.jsp⏎" @@ -2592,15 +2592,15 @@ msgstr "" "recharge les applications clientes" #: i2p2www/pages/site/faq.html:465 +#, fuzzy msgid "" "After that fires up, you should now be able to reach your console " -"remotely.\n" -"You will be prompted for a username and password though - the username is" -"\n" -"\"admin\" and the password is whatever you specified in step 2 above. " -"Note: the\n" +"remotely. Reload the router at\n" +"http://127.0.0.1:7657 and you will be prompted for the username and " +"password you specified in step 2\n" +"above if your browser supports the authentication popup. Note: the\n" "0.0.0.0 above specifies an interface, not a network " -"or netmask. 0.0.0.0\n" +"or netmask. 0.0.0.0\n" "means \"bind to all interfaces\", so it can be reachable on " "127.0.0.1:7657 as well as\n" "any LAN/WAN IP." diff --git a/i2p2www/translations/pt/LC_MESSAGES/priority.po b/i2p2www/translations/pt/LC_MESSAGES/priority.po index 99772e78..b9904149 100644 --- a/i2p2www/translations/pt/LC_MESSAGES/priority.po +++ b/i2p2www/translations/pt/LC_MESSAGES/priority.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-09-16 12:36+0000\n" +"POT-Creation-Date: 2013-09-16 12:59+0000\n" "PO-Revision-Date: 2013-09-04 14:25+0000\n" "Last-Translator: str4d \n" "Language-Team: Portuguese " @@ -2085,10 +2085,9 @@ msgstr "" #: i2p2www/pages/site/faq.html:452 msgid "" "Go to http://localhost:7657/configadvanced.jsp" +"href=\"http://localhost:7657/configui\">http://localhost:7657/configui" "\n" -"and add a new option: consolePassword=foo (or whatever " -"password you want)" +"and add a console username and password if desired." msgstr "" #: i2p2www/pages/site/faq.html:458 @@ -2103,13 +2102,12 @@ msgstr "" #: i2p2www/pages/site/faq.html:465 msgid "" "After that fires up, you should now be able to reach your console " -"remotely.\n" -"You will be prompted for a username and password though - the username is" -"\n" -"\"admin\" and the password is whatever you specified in step 2 above. " -"Note: the\n" +"remotely. Reload the router at\n" +"http://127.0.0.1:7657 and you will be prompted for the username and " +"password you specified in step 2\n" +"above if your browser supports the authentication popup. Note: the\n" "0.0.0.0 above specifies an interface, not a network " -"or netmask. 0.0.0.0\n" +"or netmask. 0.0.0.0\n" "means \"bind to all interfaces\", so it can be reachable on " "127.0.0.1:7657 as well as\n" "any LAN/WAN IP." diff --git a/i2p2www/translations/sv_SE/LC_MESSAGES/get-involved.po b/i2p2www/translations/sv_SE/LC_MESSAGES/get-involved.po index b6a68251..b7c9671b 100644 --- a/i2p2www/translations/sv_SE/LC_MESSAGES/get-involved.po +++ b/i2p2www/translations/sv_SE/LC_MESSAGES/get-involved.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" -"POT-Creation-Date: 2013-08-30 23:32+0000\n" +"POT-Creation-Date: 2013-09-16 12:59+0000\n" "PO-Revision-Date: 2013-04-27 23:10+0000\n" "Last-Translator: Martin Svensson \n" "Language-Team: Swedish (Sweden) " @@ -32,61 +32,67 @@ msgid "" "can make your contribution are provided below." msgstr "" -#: i2p2www/pages/site/get-involved/donate.html:13 +#: i2p2www/pages/site/get-involved/donate.html:11 +#: i2p2www/pages/site/get-involved/donate.html:27 +#, python-format +msgid "" +"As of %(date)s, eche|on has been running a\n" +"%(cointype)s account for the I2P project.\n" +"If you'd like to donate using %(cointype)s, just transfer your\n" +"desired amount of coins to the account %(account)s\n" +"and leave eche|on a note if you'd like your donation to be\n" +"mentioned on the I2P webpage." +msgstr "" + +#: i2p2www/pages/site/get-involved/donate.html:22 +#: i2p2www/pages/site/get-involved/donate.html:38 +msgid "For easy usage, use the QR code below!" +msgstr "" + +#: i2p2www/pages/site/get-involved/donate.html:44 #, python-format msgid "You can donate direct via PayPal to the account \"%(account)s\"." msgstr "" -#: i2p2www/pages/site/get-involved/donate.html:19 +#: i2p2www/pages/site/get-involved/donate.html:50 msgid "One time donation:" msgstr "" -#: i2p2www/pages/site/get-involved/donate.html:33 +#: i2p2www/pages/site/get-involved/donate.html:64 msgid "Donate 10 €/month for 12 months:" msgstr "" -#: i2p2www/pages/site/get-involved/donate.html:41 -#: i2p2www/pages/site/get-involved/donate.html:53 -#: i2p2www/pages/site/get-involved/donate.html:65 -#: i2p2www/pages/site/get-involved/donate.html:77 +#: i2p2www/pages/site/get-involved/donate.html:72 +#: i2p2www/pages/site/get-involved/donate.html:84 +#: i2p2www/pages/site/get-involved/donate.html:96 +#: i2p2www/pages/site/get-involved/donate.html:108 msgid "I2P donation " msgstr "" -#: i2p2www/pages/site/get-involved/donate.html:47 +#: i2p2www/pages/site/get-involved/donate.html:78 msgid "Donate 20 €/month for 12 months:" msgstr "" -#: i2p2www/pages/site/get-involved/donate.html:59 +#: i2p2www/pages/site/get-involved/donate.html:90 msgid "Donate 30 €/month for 12 months:" msgstr "" -#: i2p2www/pages/site/get-involved/donate.html:71 +#: i2p2www/pages/site/get-involved/donate.html:102 msgid "Donate 50 €/month for 12 months:" msgstr "" -#: i2p2www/pages/site/get-involved/donate.html:86 +#: i2p2www/pages/site/get-involved/donate.html:117 msgid "Flattr this" msgstr "" -#: i2p2www/pages/site/get-involved/donate.html:90 -#, python-format -msgid "" -"As of December 2010, eche|on has been running a Bitcoin account for the I2P project. \n" -"If you'd like to donate using Bitcoin, just transfer your desired amount " -"of coins to the account \n" -"%(account)s and leave eche|on a note if you'd like your donation " -"to be mentioned on the I2P webpage." -msgstr "" - -#: i2p2www/pages/site/get-involved/donate.html:95 +#: i2p2www/pages/site/get-involved/donate.html:122 msgid "" "If you want to keep more or less anonymous, the option to send money via " "mail is also available. But it is less secure\n" "as the envelope can be lost on the way to us." msgstr "" -#: i2p2www/pages/site/get-involved/donate.html:99 +#: i2p2www/pages/site/get-involved/donate.html:126 #, python-format msgid "" "If you'd like to donate via snail mail, send an email to \n" "Language-Team: Swedish (Sweden) " @@ -2089,10 +2089,9 @@ msgstr "" #: i2p2www/pages/site/faq.html:452 msgid "" "Go to http://localhost:7657/configadvanced.jsp" +"href=\"http://localhost:7657/configui\">http://localhost:7657/configui" "\n" -"and add a new option: consolePassword=foo (or whatever " -"password you want)" +"and add a console username and password if desired." msgstr "" #: i2p2www/pages/site/faq.html:458 @@ -2107,13 +2106,12 @@ msgstr "" #: i2p2www/pages/site/faq.html:465 msgid "" "After that fires up, you should now be able to reach your console " -"remotely.\n" -"You will be prompted for a username and password though - the username is" -"\n" -"\"admin\" and the password is whatever you specified in step 2 above. " -"Note: the\n" +"remotely. Reload the router at\n" +"http://127.0.0.1:7657 and you will be prompted for the username and " +"password you specified in step 2\n" +"above if your browser supports the authentication popup. Note: the\n" "0.0.0.0 above specifies an interface, not a network " -"or netmask. 0.0.0.0\n" +"or netmask. 0.0.0.0\n" "means \"bind to all interfaces\", so it can be reachable on " "127.0.0.1:7657 as well as\n" "any LAN/WAN IP." From 4b0a305459851c86f8f6f09acb6e612f69942ef1 Mon Sep 17 00:00:00 2001 From: str4d Date: Mon, 16 Sep 2013 21:12:03 +0000 Subject: [PATCH 627/650] Stop title overlapping nav bar for narrow desktop screens --- i2p2www/static/styles/duck/default.css | 8 ++++++++ i2p2www/static/styles/duck/desktop.css | 4 ++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/i2p2www/static/styles/duck/default.css b/i2p2www/static/styles/duck/default.css index ce0e363c..e95432d0 100644 --- a/i2p2www/static/styles/duck/default.css +++ b/i2p2www/static/styles/duck/default.css @@ -30,12 +30,20 @@ div#topbar { position:relative; } +div#topbar #logo { + float: left; +} + div#topbar #logo img:hover { filter:alpha(opacity=60); -moz-opacity: 0.6; opacity: 0.6; } +nav { + clear: both; +} + div#content { display:block; } diff --git a/i2p2www/static/styles/duck/desktop.css b/i2p2www/static/styles/duck/desktop.css index aef371de..e1df9d0a 100644 --- a/i2p2www/static/styles/duck/desktop.css +++ b/i2p2www/static/styles/duck/desktop.css @@ -19,8 +19,8 @@ div#topbar {width:80%; /*margin:1em auto;*/ margin: 1em auto 0; position:relativ div#topbar .title { font-family:"URW Gothic L", "Century Gothic", sans-serif; text-transform:uppercase; font-size:3.5em; font-weight:bold; text-shadow:1px 1px 1px rgba(0,0,0,.2); color:#333333; - position:absolute; top:0; right:0; line-height:41px; vertical-align:middle; - max-width: 70%; text-align: right; + /*position:absolute;*/ top:0; right:0; line-height:41px; vertical-align:middle; + /*max-width: 70%;*/ text-align: right; } div#topbar .languages { display: none; From c4d680a16b65636bade387894013c6d479b23677 Mon Sep 17 00:00:00 2001 From: str4d Date: Mon, 16 Sep 2013 21:28:37 +0000 Subject: [PATCH 628/650] Add rotate CSS for other browsers --- i2p2www/static/styles/duck/desktop.css | 2 ++ 1 file changed, 2 insertions(+) diff --git a/i2p2www/static/styles/duck/desktop.css b/i2p2www/static/styles/duck/desktop.css index e1df9d0a..5759ec8c 100644 --- a/i2p2www/static/styles/duck/desktop.css +++ b/i2p2www/static/styles/duck/desktop.css @@ -231,6 +231,8 @@ div#content .main { font-size:2em; color:white; font-family:Arial, Helvetica, sans-serif; font-weight:bold; text-transform:uppercase; text-decoration:none; text-align:center; background:green; border-radius:.3em; -moz-transform:rotate(-5deg); + transform:rotate(-5deg); -webkit-transform:rotate(-5deg); + -ms-transform:rotate(-5deg); -o-transform:rotate(-5deg); text-shadow:1px 1px 1px rgba(0,0,0,.2); box-shadow:2px 2px 4px rgba(0, 0, 0, 0.3), 1em 3em 2em 0.5em rgba(255, 255, 255, 0.3) inset, inset -.2em -.5em 1em -0em rgba(0,0,0,.3)} .main .get-i2p:hover {box-shadow:2px 2px 2px rgba(0, 0, 0, 0.3), inset 0 -2.2em 2.2em rgba(255, 255, 255, 0.3), inset .2em .5em 1em 0em rgba(0,0,0,.3);} From 85f71a51877cf212536ae983623098a7f9fbd084 Mon Sep 17 00:00:00 2001 From: str4d Date: Fri, 20 Sep 2013 03:54:10 +0000 Subject: [PATCH 629/650] Updated translations --- .../translations/de/LC_MESSAGES/priority.po | 118 +- i2p2www/translations/es/LC_MESSAGES/about.po | 31 +- .../translations/es/LC_MESSAGES/comparison.po | 76 +- i2p2www/translations/es/LC_MESSAGES/docs.po | 978 +++++++++++++-- .../es/LC_MESSAGES/get-involved.po | 1051 +++++++++++++++-- .../translations/es/LC_MESSAGES/priority.po | 64 +- .../fr/LC_MESSAGES/get-involved.po | 12 +- .../translations/fr/LC_MESSAGES/priority.po | 52 +- .../translations/pt/LC_MESSAGES/priority.po | 2 +- .../sv_SE/LC_MESSAGES/priority.po | 450 ++++++- 10 files changed, 2390 insertions(+), 444 deletions(-) diff --git a/i2p2www/translations/de/LC_MESSAGES/priority.po b/i2p2www/translations/de/LC_MESSAGES/priority.po index 9befa427..19af8ea8 100644 --- a/i2p2www/translations/de/LC_MESSAGES/priority.po +++ b/i2p2www/translations/de/LC_MESSAGES/priority.po @@ -6,14 +6,15 @@ # amiga4000 , 2008 # D.A. Loader, 2013 # SteinQuadrat, 2013 +# nextloop , 2013 # zeroflag , 2013 msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" "POT-Creation-Date: 2013-09-16 12:59+0000\n" -"PO-Revision-Date: 2013-09-04 14:25+0000\n" -"Last-Translator: str4d \n" +"PO-Revision-Date: 2013-09-17 11:37+0000\n" +"Last-Translator: nextloop \n" "Language-Team: German " "(http://www.transifex.com/projects/p/I2P/language/de/)\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" @@ -38,7 +39,7 @@ msgstr "Blog" #: i2p2www/pages/blog/index.html:4 i2p2www/pages/site/index.html:78 msgid "I2P Blog ATOM Feed" -msgstr "" +msgstr "I2P Blog als ATOM-Feed" #: i2p2www/pages/blog/index.html:17 #, python-format @@ -47,7 +48,7 @@ msgstr "" #: i2p2www/pages/blog/latest.html:5 msgid "More blog posts…" -msgstr "" +msgstr "mehr Blogartikel…" #: i2p2www/pages/blog/post.html:6 msgid "Posted:" @@ -59,7 +60,7 @@ msgstr "" #: i2p2www/pages/downloads/debian.html:4 msgid "Debian I2P Packages" -msgstr "Debian I2P Pakete" +msgstr "I2P Debian Pakete" #: i2p2www/pages/downloads/debian.html:6 #, python-format @@ -68,6 +69,9 @@ msgid "" "maintainers/+archive/i2p\">the I2P Launchpad site\n" "have been tested and should work on x86/x86_64 platforms running:" msgstr "" +"Die Pakete auf Launchpad⏎\n" +"sind getestet und solltenauf x86/x86_64 laufen." #: i2p2www/pages/downloads/debian.html:11 msgid "Ubuntu (Precise 12.04 and newer)" @@ -610,7 +614,7 @@ msgstr "" #: i2p2www/pages/downloads/list.html:300 msgid "Previous Releases" -msgstr "" +msgstr "Frühere Versionen" #: i2p2www/pages/downloads/list.html:302 #, python-format @@ -670,7 +674,7 @@ msgstr "500 Server Fehler" #: i2p2www/pages/global/error_500.html:17 msgid "Umm... the server encountered some sort of error." -msgstr "" +msgstr "Upsi! Beim Server ist irgendwas explodiert." #: i2p2www/pages/global/footer.html:2 msgid "Mirrors" @@ -775,7 +779,7 @@ msgstr "Dokumentation" #: i2p2www/pages/global/nav.html:18 msgid "Documentation index" -msgstr "" +msgstr "Inhaltsverzeichnes der Dokumentation" #: i2p2www/pages/global/nav.html:19 msgid "How does it work?" @@ -783,19 +787,19 @@ msgstr "Wie funktioniert es ?" #: i2p2www/pages/global/nav.html:21 msgid "Gentle intro" -msgstr "" +msgstr "Gutverständliche Einführung" #: i2p2www/pages/global/nav.html:22 msgid "Tech intro" -msgstr "" +msgstr "Technische Einführung" #: i2p2www/pages/global/nav.html:23 msgid "Threat model" -msgstr "" +msgstr "Gefahrenanalyse" #: i2p2www/pages/global/nav.html:24 msgid "Garlic routing" -msgstr "" +msgstr "Garlic-Routing" #: i2p2www/pages/global/nav.html:25 msgid "Network database" @@ -803,11 +807,11 @@ msgstr "Netzwerk Datenbank" #: i2p2www/pages/global/nav.html:26 msgid "Tunnel routing" -msgstr "" +msgstr "Tunnelung" #: i2p2www/pages/global/nav.html:27 msgid "Peer selection" -msgstr "" +msgstr "Teilnehmerauswahl" #: i2p2www/pages/global/nav.html:28 msgid "Cryptography" @@ -835,15 +839,15 @@ msgstr "API" #: i2p2www/pages/global/nav.html:46 i2p2www/pages/global/nav.html:77 msgid "Streaming library" -msgstr "" +msgstr "Streaming-Bibliothek" #: i2p2www/pages/global/nav.html:47 msgid "Ministreaming library" -msgstr "" +msgstr "Ministreaming-Bibliothek" #: i2p2www/pages/global/nav.html:48 i2p2www/pages/global/nav.html:71 msgid "Datagrams" -msgstr "" +msgstr "Datagramme" #: i2p2www/pages/global/nav.html:52 msgid "Protocols" @@ -859,7 +863,7 @@ msgstr "Transports" #: i2p2www/pages/global/nav.html:61 msgid "Transport layer overview" -msgstr "" +msgstr "Übersicht über die Übetragungsschichten" #: i2p2www/pages/global/nav.html:66 msgid "Specifications" @@ -871,7 +875,7 @@ msgstr "" #: i2p2www/pages/global/nav.html:69 msgid "Common structures" -msgstr "" +msgstr "Gemeinsame Strukturen" #: i2p2www/pages/global/nav.html:70 msgid "Configuration files" @@ -887,63 +891,63 @@ msgstr "Plugins" #: i2p2www/pages/global/nav.html:78 msgid "Tunnel creation" -msgstr "" +msgstr "Tunnelerstellung" #: i2p2www/pages/global/nav.html:79 msgid "Tunnel messages" -msgstr "" +msgstr "Tunnelnachrichten" #: i2p2www/pages/global/nav.html:80 msgid "Software updates" -msgstr "" +msgstr "Softwareaktualisierungen" #: i2p2www/pages/global/nav.html:83 msgid "Tunnels" -msgstr "" +msgstr "Tunnels" #: i2p2www/pages/global/nav.html:85 msgid "Tunnel implementation" -msgstr "" +msgstr "Tunnelimplementierung" #: i2p2www/pages/global/nav.html:86 msgid "Unidirectional tunnels" -msgstr "" +msgstr "Einbahn-Tunnels" #: i2p2www/pages/global/nav.html:87 msgid "Old implementation" -msgstr "" +msgstr "Alte Implementierung" #: i2p2www/pages/global/nav.html:90 msgid "Naming and addressbook" -msgstr "" +msgstr "Namensauflösung und Addressbuch" #: i2p2www/pages/global/nav.html:94 msgid "Team" -msgstr "" +msgstr "Team" #: i2p2www/pages/global/nav.html:96 msgid "Hall of Fame" -msgstr "" +msgstr "Ruhmeshalle" #: i2p2www/pages/global/nav.html:97 msgid "Academic papers and peer review" -msgstr "" +msgstr "Akademische Artikel und Peer Review" #: i2p2www/pages/global/nav.html:98 msgid "Presentations, tutorials and articles" -msgstr "" +msgstr "Präsentationen, Tutorials und Artikel" #: i2p2www/pages/global/nav.html:99 msgid "Contact us" -msgstr "" +msgstr "Kontakt" #: i2p2www/pages/global/nav.html:102 msgid "Help" -msgstr "" +msgstr "Hilfe" #: i2p2www/pages/global/nav.html:104 msgid "FAQ" -msgstr "" +msgstr "Häufige Fragen" #: i2p2www/pages/global/nav.html:105 msgid "How to browse I2P" @@ -951,95 +955,95 @@ msgstr "" #: i2p2www/pages/global/nav.html:106 msgid "Glossary" -msgstr "" +msgstr "Glossar" #: i2p2www/pages/global/nav.html:107 msgid "Performance" -msgstr "" +msgstr "Performanz" #: i2p2www/pages/global/nav.html:108 i2p2www/pages/site/contact.html:22 msgid "Forums" -msgstr "" +msgstr "Foren" #: i2p2www/pages/global/nav.html:111 msgid "Volunteer" -msgstr "" +msgstr "Mithelfen" #: i2p2www/pages/global/nav.html:113 msgid "Get involved!" -msgstr "" +msgstr "Mach mit!" #: i2p2www/pages/global/nav.html:114 msgid "Develop" -msgstr "" +msgstr "Entwickeln" #: i2p2www/pages/global/nav.html:117 msgid "Licenses" -msgstr "" +msgstr "Lizenzen" #: i2p2www/pages/global/nav.html:118 msgid "Release signing keys" -msgstr "" +msgstr "Unterschriftschlüssel für die Releases" #: i2p2www/pages/global/nav.html:119 msgid "Signed keys" -msgstr "" +msgstr "Unterschriebene Schlüssel" #: i2p2www/pages/global/nav.html:120 msgid "Developers keys" -msgstr "" +msgstr "Die Schlüssel der Entwickler" #: i2p2www/pages/global/nav.html:121 msgid "Bug tracker" -msgstr "" +msgstr "Bug-Tracker" #: i2p2www/pages/global/nav.html:124 msgid "Academic research" -msgstr "" +msgstr "Forschung" #: i2p2www/pages/global/nav.html:125 msgid "Guides" -msgstr "" +msgstr "Anleitungen" #: i2p2www/pages/global/nav.html:127 msgid "New developers" -msgstr "" +msgstr "Neue Entwickler" #: i2p2www/pages/global/nav.html:128 msgid "Using an IDE with I2P" -msgstr "" +msgstr "Eine IDE für I2P verwenden" #: i2p2www/pages/global/nav.html:129 msgid "Developer guidelines and coding style" -msgstr "" +msgstr "Entwicklungsrichtlinien und Code-Richtlinien" #: i2p2www/pages/global/nav.html:130 msgid "Monotone" -msgstr "" +msgstr "Monotone" #: i2p2www/pages/global/nav.html:131 msgid "New translators" -msgstr "" +msgstr "Neue Übersetzer" #: i2p2www/pages/global/nav.html:134 msgid "Bounties" -msgstr "" +msgstr "Bounties" #: i2p2www/pages/global/nav.html:135 i2p2www/pages/meetings/index.html:2 msgid "Meetings" -msgstr "" +msgstr "Treffen" #: i2p2www/pages/global/nav.html:136 msgid "Roadmap" -msgstr "" +msgstr "Entwicklungsplan" #: i2p2www/pages/global/nav.html:137 msgid "Task list" -msgstr "" +msgstr "Aufgabenliste" #: i2p2www/pages/global/nav.html:140 msgid "Language" -msgstr "" +msgstr "Sprache" #: i2p2www/pages/meetings/index.html:4 msgid "I2P Meetings ATOM Feed" diff --git a/i2p2www/translations/es/LC_MESSAGES/about.po b/i2p2www/translations/es/LC_MESSAGES/about.po index f01c3b8f..0e1f003e 100644 --- a/i2p2www/translations/es/LC_MESSAGES/about.po +++ b/i2p2www/translations/es/LC_MESSAGES/about.po @@ -14,8 +14,8 @@ msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" "POT-Creation-Date: 2013-09-01 03:42+0000\n" -"PO-Revision-Date: 2013-09-02 01:51+0000\n" -"Last-Translator: kytv \n" +"PO-Revision-Date: 2013-09-19 14:53+0000\n" +"Last-Translator: trolly\n" "Language-Team: Spanish " "(http://www.transifex.com/projects/p/I2P/language/es/)\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" @@ -648,12 +648,12 @@ msgstr "" "I2P es una red anónima que da acceso a una capa de red que las " "aplicaciones pueden utilizar para anonimizar y cifrar el envío de " "mensajes de uno a otro. La red en sí está estrictamente basada en el " -"envío de mensajes.(a la IP), pero " "existe una librería disponible que permite la comunicación segura sobre " "él (a la TCP)." -" Todas las comunicaciones están cifradas de extremo a extremo ( en total " +" Todas las comunicaciones están cifradas de extremo a extremo (en total " "de usan 4 capas de cifrados cifrados por cada mensaje enviado), e incluso" " el extremo final \n" "(\"destinaciones\") son identificados criptográficamente (básicamente con" @@ -694,10 +694,10 @@ msgstr "" " \"ruter\" I2P que crea unos cuantos túneles\" de entrada y salida - una " "secuencia de pares que pasan el mensaje en una dirección (hacia y desde " -"el cliente, respectivamente ) A su vez, cuando un cliente \n" -"quiere enviar un mensaje a otro cliente, el cliente envía ese mensaje a " -"través de uno de sus túneles de salida hacia uno de los túneles de " -"entrada del otro cliente, eventualmente alcanzando su destino." +"el cliente, respectivamente ). A su vez, cuando un cliente quiere enviar " +"un mensaje a otro cliente, el cliente envía ese mensaje a través de uno " +"de sus túneles de salida hacia uno de los túneles de entrada del otro " +"cliente, eventualmente alcanzando su destino." #: i2p2www/pages/site/about/intro.html:33 #, python-format @@ -755,8 +755,8 @@ msgstr "" "Dentro de la red I2P las aplicaciones no tienen restricciones en como " "pueden comunicarse - aquellas que normalmente usan UDP pueden usar las " "funcionalidades básicas de I2P, y aquellas aplicaciones que normalmente " -"usan TCP pueden utilizar la librería 'TCP-like streaming'. I2P incluye " -"una aplicación genérica de puente TCP/I2P (\"I2PTunnel\") que permite enviar flujos TCP " "dentro de la red I2P, también recibir flujos TCP de fuera de la red y " "enviar estos a una dirección IP específica." @@ -1210,7 +1210,8 @@ msgid "" "German translation" msgstr "" "zzz entrevistado por gulli.com\n" -"href=\"%(german)s\">traducción en alemán" +"Marzo de 2009\n" +"Traducción al alemán" #: i2p2www/pages/site/about/media.html:202 #, python-format @@ -1396,18 +1397,18 @@ msgid "manage the public project website content design" msgstr "administrar el diseño de la web del proyecto" #: i2p2www/pages/site/about/team.html:85 -#, fuzzy, python-format +#, python-format msgid "Webserver admin" -msgstr "Administrador del servidor web" +msgstr "Administración del Webserver" #: i2p2www/pages/site/about/team.html:87 msgid "manage the public project webservers" msgstr "administrador de los servidores web públicos del proyecto" #: i2p2www/pages/site/about/team.html:90 -#, fuzzy, python-format +#, python-format msgid "Website admin" -msgstr "Administrador de la página web" +msgstr "administración de la Website " #: i2p2www/pages/site/about/team.html:92 msgid "manage the public project website content" diff --git a/i2p2www/translations/es/LC_MESSAGES/comparison.po b/i2p2www/translations/es/LC_MESSAGES/comparison.po index d95477bf..25fec357 100644 --- a/i2p2www/translations/es/LC_MESSAGES/comparison.po +++ b/i2p2www/translations/es/LC_MESSAGES/comparison.po @@ -14,7 +14,7 @@ msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" "POT-Creation-Date: 2013-08-30 23:32+0000\n" -"PO-Revision-Date: 2013-07-11 10:13+0000\n" +"PO-Revision-Date: 2013-09-19 15:27+0000\n" "Last-Translator: trolly\n" "Language-Team: Spanish " "(http://www.transifex.com/projects/p/I2P/language/es/)\n" @@ -72,7 +72,7 @@ msgstr "" "sistema distribuido de almacenamiento de datos, mientras que I2P no lo " "es, permitiendo a la gente obtener al contenido publicado por otros " "incluso cuando el que lo ha publicado no esté online. Además es capaz de " -"distribuir eficientemente la información más utilizada. I2P ni tiene ni " +"distribuir eficientemente la información más utilizada. I2P no tiene ni " "tendrá esta funcionalidad. Por otro lado, hay demasiada redundancia para " "los usuarios que simplemente quieren comunicarse con otros anónimamente a" " través de webs, foros, aplicaciones de compartición de archivos, etc. " @@ -99,7 +99,7 @@ msgid "" "against an attacker\n" "who does not have the resources necessary to analyze it further." msgstr "" -"Sin ,embargo, e incluso ignorando los problemas de implementación, hay " +"Sin embargo, e incluso ignorando los problemas de implementación, hay " "algunas preocupaciones sobre la escalabilidad y el anonimato de algunos " "algoritmos de Freenet, debido básicamente a la heurística de ruteo de " "Freenet. La unión de varias técnicas puede desalentar el hacer varios " @@ -112,7 +112,7 @@ msgstr "" #: i2p2www/pages/site/comparison/index.html:2 msgid "Comparing I2P to other projects" -msgstr "" +msgstr "Comparando I2P con otros proyectos" #: i2p2www/pages/site/comparison/index.html:4 msgid "" @@ -180,7 +180,7 @@ msgid "" msgstr "" "La mayoría de las siguientes secciones son bastante viejas y podrían no " "ser precisas. Para una vista general de comparaciones disponibles, vea " -"lapágina principal de comparaciones entre " +"la página principal de comparaciones entre " "redes. Pude contribuir al análisis creando un nuevo ticket en el %(trac)s." @@ -204,17 +204,17 @@ msgid "" "not aware \n" "of their use outside of academic environments." msgstr "" -"Morphmix y Tarzan son las dos totalmente distribuidas, redes para a par " +"Morphmix y Tarzan son las dos totalmente distribuidas, redes par a par " "anónimas con proxies para el anonimato, permitiendo a la gente enviar " "datos fuera a través de redes de mezcla de baja latencia. Morphmix " "incluye unos algoritmos de detección de colisiones bastante interesante y" " defensas contra Sybil, mientras que Tarzan hace uso de la escasez de " "direcciones IP para obtener lo mismo. Las dos principales diferencias " "entre estos dos sistemas e I2P tienen que ver con el modelo de amenazas de I2p y su diseño de " +"href=\"%(threatmodel)s\">modelo de amenazas de I2P y su diseño de " "outproxies (al contrario que el anonimato proporcionado para ambos, el " -"que envía y el que recibe) El código está disponible para ambos sistemas," -" pero no sabemos de su uso fuera de ambientes académicos." +"que envía y el que recibe). El código está disponible para ambos " +"sistemas, pero no sabemos de su uso fuera de ambientes académicos." #: i2p2www/pages/site/comparison/other-networks.html:153 msgid "" @@ -238,13 +238,13 @@ msgstr "" "\n" "Mixminion y Mixmaster son redes para el envío anónimo de emails. " "Aplicaciones de envío de mensajes de baja latencia sobre I2P (por ejemplo" -" a href=\"http://syndie.i2p2.de/\">Syndie o⏎ I2PBote) podrían ser " -"adecuadas para ese modelo de amenazas, ya que corriendo en paralelo cubre" -" las necesidades de la baja latencia y crea una capa grande de anonimato." -" Soporte para alta latencia en los ruters de I2P puede que se añada en un" -" futuro distante, o puede que no. Es demasiado pronto para decir si I2P " -"podrá cubrir las necesidades de los usuarios con necesidades de " -"protección extrema para sus emails." +" Syndie o I2PBote) podrían ser " +"adecuadas para ese modelo de amenazas, ya que corriendo en paralelo " +"cubren las necesidades de la baja latencia y crean una gran capa de " +"anonimato. Soporte para alta latencia en los ruters de I2P puede que se " +"añada en un futuro distante, o puede que no. Es demasiado pronto para " +"decir si I2P podrá cubrir las necesidades de los usuarios con necesidades" +" de protección extrema para sus emails." #: i2p2www/pages/site/comparison/other-networks.html:167 msgid "" @@ -323,6 +323,17 @@ msgid "" "anonymity (though you don't have much control over who is in that group " "of peers)." msgstr "" +"Estos dos sistemas trabajan con el rutado básico antnet ,proporcionando anonimato al proveer " +"negación plausible contra un simple adversario sin colisión. Con el " +"rutado antnet, primero hacen una ruta aleatoria o una búsqueda broadcast" +" para encontrar el par o la identidad deseada, y después usan esa " +"algoritmo para optimizar la ruta. Esto funciona bien para aplicaciones " +"que sólo quieren saber que tienen que ofrecer la gente que está alrededor" +" - \"Cómo os va\" contra \"Hey Alice, como estás\" - básicamente se " +"obtiene un conjunto de nodos que pueden compartit archivos y mantener el " +"anonimato (aunque no se tiene mucho control sobre quién es ese grupo de " +"pares)." #: i2p2www/pages/site/comparison/other-networks.html:211 msgid "" @@ -366,7 +377,7 @@ msgstr "" "circumvention-tool\"> artículo sobre el tema. Baste decir que siendo " "de código cerrado y publicado para un país específico no es una buena " "idea. I2P, por supuesto, es de código libre. Sin embargo, el código, y " -"nuestra documentación técnica, necesitan mucho " +"nuestra documentación técnica, necesitan mucha " "más revisión." #: i2p2www/pages/site/comparison/other-networks.html:231 @@ -410,7 +421,7 @@ msgstr "" " la gente salir a través de su red ya mezclada de baja latencia. Las dos " "primeras diferencias entre Tor/Onion-Routing e I2P están de nuevo " "relacionas con las diferencias en el modelo de amenazas y el diseño de " -"los out-proxies ( a través de Tor soporta también servicios ocultos) " +"los outproxies (a través de Tor soporta también servicios ocultos). " "Además, Tor usa un enfoque basado en directorios - creando un punto " "central para manejar la 'vista' general de las redes, y además se " "obtienen más estadísticas, al contrario que la base" @@ -431,7 +442,7 @@ msgid "" msgstr "" "El outproxy de I2P/Tor tiene varias debilidades contra cierto tipo de " "ataques - una vez que la comunicación deja la red Tor, adversarios " -"pasivos puede hacer más fácilmente ataques de análisis. Además los " +"pasivos pueden hacer más fácilmente ataques de análisis. Además los " "outproxies tienen acceso al texto en claro transferido en las dos " "direcciones, y los outproxies son propensos a abusos, y además tenemos " "que tener en cuenta otros ataques posibles dentro del Internet normal." @@ -447,7 +458,7 @@ msgid "" msgstr "" "Aún así, mucha gente no tiene por que preocuparse por estas situaciones, " "ya que no están dentro del modelo de amenazas. Y además esto está fuera " -"del alcance (fromal) de I2P (si la gente desea construir un outproxy " +"del alcance (formal) de I2P (si la gente desea construir un outproxy " "sobre la capa de comunicación anónima, pueden hacerlo). De hecho, " "actualmente algunos usuarios utilizan el outproxy de Tor." @@ -493,7 +504,7 @@ msgstr "Directorio" #: i2p2www/pages/site/comparison/tor.html:57 msgid "NetDb" -msgstr "NetDb, baso de datos de la red" +msgstr "NetDb, base de datos de la red" #: i2p2www/pages/site/comparison/tor.html:58 msgid "Directory Server" @@ -549,7 +560,7 @@ msgstr "Punto de introducción" #: i2p2www/pages/site/comparison/tor.html:64 msgid "Inbound Gateway" -msgstr "Salida entrante" +msgstr "Puerta de salida de entrada" #: i2p2www/pages/site/comparison/tor.html:65 msgid "Node" @@ -580,8 +591,8 @@ msgstr "Punto de reunión" #: i2p2www/pages/site/comparison/tor.html:68 msgid "somewhat like Inbound Gateway + Outbound Endpoint" msgstr "" -"algo así como inbound Gateway + Outbound Endpoint, salida entrante + " -"punto final de salida" +"algo así como inbound Gateway + Outbound Endpoint, puerta de salida de " +"entrada + punto final de salida" #: i2p2www/pages/site/comparison/tor.html:69 msgid "Router Descriptor" @@ -607,9 +618,9 @@ msgid "" "has a non-anonymous, visible, university-based leader" msgstr "" "El número de usuarios es mucho mayor; mucho más visible en entorno " -"académicos y comunidades de hackers; beneficios de tener estudios " -"formales sobre el anonimato, resistencia y rendimiento; tienen un líder " -"universitario no anónimo, de cara a público" +"académicos y comunidades de hackers; tiene los beneficios de tener " +"estudios formales sobre el anonimato, resistencia y rendimiento; y tienen" +" un líder no anónimo universitario y visible" #: i2p2www/pages/site/comparison/tor.html:82 msgid "Has already solved some scaling issues I2P has yet to address" @@ -758,7 +769,8 @@ msgid "" "compromise to get the same information." msgstr "" "Túneles unidireccionales en vez de circuitos bidireccionales, usando el " -"doble de nodos un par se compromete más par obtener la misma información." +"doble de nodos un par se compromete más para obtener la misma " +"información." #: i2p2www/pages/site/comparison/tor.html:166 msgid "" @@ -821,7 +833,7 @@ msgstr "Java, en vez de C (ewww)" #: i2p2www/pages/site/comparison/tor.html:201 msgid "Other potential benefits of I2P but not yet implemented" -msgstr "Otros beneficios potencial de I2P aún no implementados" +msgstr "Otros beneficios potenciales de I2P aún no implementados" #: i2p2www/pages/site/comparison/tor.html:202 msgid "...and may never be implemented, so don't count on them!" @@ -844,7 +856,7 @@ msgid "" "by other hops)" msgstr "" "Defensa contra la intersección a largo plazo añadiendo demoras en varios " -"saltos (donde las demoras no son perceptibles por los oros saltos)" +"saltos (donde las demoras no son perceptibles por los otros saltos)" #: i2p2www/pages/site/comparison/tor.html:218 msgid "" @@ -853,7 +865,7 @@ msgid "" "where the endpoint will inject dummy messages if there\n" "are insufficient messages, etc)" msgstr "" -"Varias estrategias de mezclado el nivel del túnel (por ejemplo, creando " -"túneles que manejaran 500 mensajes al minuto, donde el punto final " +"Varias estrategias de mezclado a nivel del túnel (por ejemplo, creando " +"túneles que manejarán 500 mensajes al minuto, donde el punto final " "inyectará mensajes de relleno si no hubiese suficientes mensajes, etc)" diff --git a/i2p2www/translations/es/LC_MESSAGES/docs.po b/i2p2www/translations/es/LC_MESSAGES/docs.po index 69c01839..16d3ad87 100644 --- a/i2p2www/translations/es/LC_MESSAGES/docs.po +++ b/i2p2www/translations/es/LC_MESSAGES/docs.po @@ -14,8 +14,8 @@ msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" "POT-Creation-Date: 2013-08-30 23:32+0000\n" -"PO-Revision-Date: 2013-09-16 12:13+0000\n" -"Last-Translator: trolly\n" +"PO-Revision-Date: 2013-09-18 23:30+0000\n" +"Last-Translator: strel \n" "Language-Team: Spanish " "(http://www.transifex.com/projects/p/I2P/language/es/)\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" @@ -804,12 +804,12 @@ msgid "" msgstr "" "El proxy HTTP hace una consulta vía router para todos los nombres de " "servidores \n" -"terminados en `.i2p`. De otra manera este envía la solicitud \n" -"a un proxy HTTP\n" -"configurado de salida (`outproxy`). Así, en la práctica, todos los " -"nombres de servidores \n" -"HTTP (eepsites) deben terminar en un pseudo-dominio-de-primer-nivel " -"`.i2p`." +"terminados en `.i2p`. De otra manera este reenvía la solicitud \n" +"hacia un \n" +"proxy HTTP configurado de salida (`outproxy`). Así, en la práctica, todos" +" los nombres \n" +"de servidores HTTP (eepsites) deben terminar en un pseudo-dominio-de-" +"primer-nivel `.i2p`." #: i2p2www/pages/site/docs/naming.html:124 msgid "" @@ -2149,7 +2149,7 @@ msgstr "" #: i2p2www/pages/site/docs/api/datagrams.html:6 msgid "Datagram Overview" -msgstr "Un vistazo a los datagramas" +msgstr "Introducción a los datagramas" #: i2p2www/pages/site/docs/api/datagrams.html:7 #, python-format @@ -2983,7 +2983,7 @@ msgstr "Método no encontrado." #: i2p2www/pages/site/docs/api/i2pcontrol.html:194 msgid "Invalid parameters." -msgstr "" +msgstr "Parámetros no válidos." #: i2p2www/pages/site/docs/api/i2pcontrol.html:195 msgid "Internal error." @@ -3109,6 +3109,8 @@ msgid "" "The anonymous monotone\n" "sourcecode repository for I2P" msgstr "" +"El repositorio de código fuente monotone\n" +"anónimo para I2P" #: i2p2www/pages/site/docs/api/i2ptunnel.html:47 #, python-format @@ -3519,9 +3521,9 @@ msgstr "" " \n" "y abandonado los proxys SOCKS. Rebotar el tráfico arbitrario es " "simplemente \n" -"bastante inseguro, y nos corresponde a nosotros como desarrolladores \n" -"de software de anonimato y seguridad tener la seguridad de nuestros \n" -"usuarios finales entre nuestros pensamientos prioritarios." +"bastante inseguro, y nos corresponde a nosotros, como desarrolladores \n" +"de software de anonimato y seguridad, tener la seguridad de nuestros \n" +"usuarios finales entre nuestras prioridades." #: i2p2www/pages/site/docs/api/socks.html:36 msgid "" @@ -3596,7 +3598,7 @@ msgstr "" #: i2p2www/pages/site/docs/spec/streaming.html:3 #: i2p2www/pages/site/docs/spec/updates.html:3 msgid "July 2013" -msgstr "" +msgstr "Julio de 2013" #: i2p2www/pages/site/docs/api/streaming.html:8 #, python-format @@ -4024,6 +4026,8 @@ msgid "" "Initial timeout\n" "(if no sharing data available)." msgstr "" +"Tiempo límite inicial (si no hay datos " +"compartidos disponibles)." #: i2p2www/pages/site/docs/api/streaming.html:224 msgid "" @@ -4031,6 +4035,10 @@ msgid "" "(if no sharing data available).\n" "Disabled as of release 0.9.8; uses actual RTT." msgstr "" +"Estimación de (RTT/RTD) tiempo de viaje de ida y vuelta (si no hay \n" +"datos compartidos disponibles). Deshabilitado " +"desde la \n" +"versión 0.9.8; usa el RTT real." #: i2p2www/pages/site/docs/api/streaming.html:230 msgid "if no sharing data available" @@ -4124,6 +4132,9 @@ msgid "" "Ref: RFC 2140. Floating point value.\n" "May be set only via context properties, not connection options." msgstr "" +"Ref: RFC 2140. Valor del punto flotante.\n" +"Puede ser establecido sólo mediante las propiedades contextuales, no las " +"opciones de conexión" #: i2p2www/pages/site/docs/api/streaming.html:332 msgid "" @@ -4333,6 +4344,26 @@ msgid "" "The share data for a given peer expires after a few minutes.\n" "The following Control Block Sharing parameters can be set per router:" msgstr "" +"La librería streaming (de flujo) soporta compartición del Bloque de " +"Control \n" +"\"TCP\" (protocolo de control de transmisiones). Esto comparte tres \n" +"importantes parámetros de la librería streaming (tamaño de la ventana, \n" +"tiempo de viaje de ida y vuelta (RTT/RTD), variación del RTT) entre las \n" +"conexiones al mismo par (`peer`) remoto. Esto se usa para la compartición" +" \n" +"\"temporal\" en el momento de apertura/cierre de la conexión, no para la" +" \n" +"compartición \"coral\" durante una conexión (Vea RFC 2140). Hay una " +"compartición separada por \n" +"ConnectionManager (administrador de conexión) (ej: por destino local), " +"así \n" +"que no hay información sobre filtraciones a otros destinos en el mismo \n" +"router. Los datos compartidos para un par (`peer`) dado expiran después " +"de \n" +"unos pocos minutos. Los siguientes parámetros de Compartición del Bloque" +" \n" +"de Control pueden ser establecidos en cada router." #: i2p2www/pages/site/docs/api/streaming.html:438 msgid "Other Parameters" @@ -4451,17 +4482,15 @@ msgstr "" "La interacción de los algoritmos de enrutado con la librería streaming " "afecta \n" "fuertemente al rendimiento. En particular, la distribución aleatoria de \n" -"mensajes a múltiples túneles entre los existentes, lleva a un alto grado " -"de \n" -"entregas estropeadas que resultan en tamaños de ventana más pequeños de " -"lo que serían en otro caso. Actualmente el router enruta mensajes \n" -"para un único par desde/hacia destino a través de un conjunto consistente" +"mensajes a múltiples túneles entre los que están en depósito, lleva a un " +"alto grado de entregas estropeadas que resultan en tamaños de ventana \n" +"más pequeños de lo que serían en otro caso. Actualmente el router enruta" " \n" -"de túneles, hasta la expiración del túnel o un fallo en la entrega. El " -"fallo del \n" -"router y los algoritmos de selección del túnel deben ser revisados en " -"busca \n" -"de posibles mejoras." +"mensajes para un único par desde/hacia destino a través de un conjunto \n" +"consistente de túneles, hasta la expiración del túnel o un fallo en la " +"entrega. \n" +"El fallo del router y los algoritmos de selección del túnel deben ser \n" +"revisados en busca de posibles mejoras." #: i2p2www/pages/site/docs/api/streaming.html:498 msgid "The data in the first SYN packet may exceed the receiver's MTU." @@ -4753,6 +4782,9 @@ msgid "" " it is highly\n" "recommended as it reduces the nominal response size by over 90%." msgstr "" +"Aunque el soporte para respuesta compacta es opcional para ambos, \n" +"clientes y trackers, es altamente recomendable ya que reduce el tamaño \n" +"nominal de respuesta alrededor de un 90%." #: i2p2www/pages/site/docs/applications/bittorrent.html:116 msgid "Destination Enforcement" @@ -5624,6 +5656,10 @@ msgid "" "and configuration settings for\n" "SMTP and POP3." msgstr "" +"Puede configurarse para usar el servicio de email de Postman. Vea \n" +"esta comparación de MUAs, y las opciones de " +"configuración para \n" +"SMTP y POP3." #: i2p2www/pages/site/docs/applications/supported.html:335 msgid "I2P's integrated BitTorrent client." @@ -5905,7 +5941,7 @@ msgstr "" #: i2p2www/pages/site/docs/applications/supported.html:654 #: i2p2www/pages/site/docs/applications/supported.html:662 msgid "Another inproxy on the public Internet." -msgstr "" +msgstr "Otro proxy de entrada en la Internet abierta." #: i2p2www/pages/site/docs/applications/supported.html:671 msgid "" @@ -7525,7 +7561,7 @@ msgid "" "the I2NP Overview." msgstr "" "El tamaño de las actuales carga máxima, y tamaño máximo del bloque, es " -"menor de 64 KB; vea el Vistazo a I2NP." +"menor de 64 KB; vea el Introducción a I2NP." #: i2p2www/pages/site/docs/how/elgamal-aes.html:272 msgid "New Session Key is currently unused and is never present." @@ -9456,6 +9492,9 @@ msgid "" "With the current rules for automatic opt-in, approximately 6% of\n" "the routers in the network are floodfill routers." msgstr "" +"Con las reglas actuales para la aceptación automática, aproximadamente el" +" \n" +"6% de los routers en la red son routers de inundación (`floodfill`)." #: i2p2www/pages/site/docs/how/network-database.html:286 msgid "" @@ -10684,6 +10723,19 @@ msgid "" "here)\n" "become problematic for several reasons." msgstr "" +"Sin embargo, el problema general de la filtración de información DHT " +"(tabla \n" +"de identificadores criptográficos (hash) dinámica) en I2P necesita " +"posterior \n" +"investigación. Los routers de inundacion (`floodfill`) están en posición " +"de \n" +"observar peticiones y reunir información. Ciertamente, a un nivel de \n" +"f = 0.2 (20% nodos maliciosos, tal como detalla la " +"especificación) \n" +"esperamos que muchas de las amenazas Sybil que describimos (aquí, \n" +"aquí y aquí) se " +"volverán problemáticas por varios motivos." #: i2p2www/pages/site/docs/how/network-database.html:824 msgid "Moved to the netdb discussion page" @@ -11183,6 +11235,8 @@ msgid "" "A peer may participate in a maximum of 33% of all tunnels created by " "the router." msgstr "" +"Un par (`peer`) puede participar en un máximo de 33% \n" +"de todos los túneles creados por el router." #: i2p2www/pages/site/docs/how/peer-selection.html:242 msgid "Peers with extremely low bandwidth are not used." @@ -13725,6 +13779,8 @@ msgid "" "PyBit is a Bittorrent client written in Python.\n" "It is hosted on %(pybit)s " msgstr "" +"PyBit es un cliente Bittorrent escrito en Python. Está hospedado en %(pybit)s " #: i2p2www/pages/site/docs/how/tech-intro.html:1015 msgid "" @@ -14028,6 +14084,16 @@ msgid "" "I2P uses several onion routing techniques, so we continue to benefit\n" "from the significant academic interest in Tor." msgstr "" +"El diseño de I2P comenzó en 2003, no mucho tiempo después del llegada \n" +"del [Onion Routing] " +"(enrutamiento cebolla), [Freenet] (red libre), y [Tor].\n" +"Nuestro diseño se beneficia sustancialmente de las investigaciones \n" +"publicadas en torno a esa época. I2P usa varias técnicas de enrutamiento" +" \n" +"cebolla, así que continuamos beneficiándonos del significativo interés \n" +"académico en Tor." #: i2p2www/pages/site/docs/how/threat-model.html:89 msgid "" @@ -14528,6 +14594,13 @@ msgid "" "other networks,\n" "over 95% of I2P users relay traffic for others." msgstr "" +"Establezca las configuraciones por defecto de forma que la mayoría de los" +" \n" +"usuarios proporcionen recursos a la red. En I2P, los usuarios enrutan " +"tráfico \n" +"por defecto. En clara distinción con otras " +"redes, \n" +"más del 95% de los usuarios de I2P repiten tráfico para otros." #: i2p2www/pages/site/docs/how/threat-model.html:317 msgid "" @@ -15137,6 +15210,29 @@ msgid "" "appropriate value when necessary (or some other certificate proving " "scarcity)." msgstr "" +"Sybil describe una categoría de ataques donde el adversario crea números" +" \n" +"arbitrariamente grandes de nodos compinchados y usan el incremento \n" +"numérico para ayudar a montar otros ataques. Por ejemplo, si un atacante" +" \n" +"esta en una red donde los pares (`peers`) se seleccionan aleatoriamente \n" +"y quieren un 80% de posibilidades de ser uno de esos pares, \n" +"simplemente crean cinco veces el número de nodos que están en la red y \n" +"tiran el dado. Cuando la identidad es gratuita, Sybil puede ser una " +"técnica \n" +"muy potente para un adversario enérgico. La técnica primaria para " +"enfrentar \n" +"esto es simplemente hacer la identidad 'no gratuita' - Tarzan (entre otros)\n" +"usa el hecho de que la dirección IP es limitada, mientras IIP (proyecto " +"de IRC invisible) usaba HashCash" +"\n" +"para realizar un 'cargo' por crear una nueva identidad (prueba de " +"trabajo). Actualmente no hemos implementado técnica particular alguna " +"para enfrentar Sybil, pero incluimos certificados de posición en las " +"estructuras de datos del router y el destino que pueden contener un " +"certificado HashCash de un valor adecuado cuando sea necesario (o algún " +"otro certificado que pruebe la escasez)." #: i2p2www/pages/site/docs/how/threat-model.html:602 msgid "Requiring HashCash Certificates in various places has two major problems:" @@ -15212,6 +15308,24 @@ msgid "" "to manipulate the profiles managed by the target and appear attractive.\n" "Further research and defenses may be necessary." msgstr "" +"Al rechazar aceptar o remitir las solicitudes de construcción de túneles," +" \n" +"excepto hacia un par (`peer`) compinchado, un router puede asegurar que \n" +"un túnel está formado en su totalidad con su grupo de routers " +"compinchados. Las posibilidades de éxito se incrementan si hay un gran \n" +"número de routers compinchados, es decir, un ataque " +"Sybil. Esto es mitigado de alguna manera por nuestros métodos de \n" +"perfilado de pares usados para " +"monitorizar el rendimiento de los pares. \n" +"Sin embargo, esto es un ataque potente cuando el número de routers se \n" +"aproxima a f = 0.2, o 20% nodos maliciosos, como se detalla en" +" la especificación. Los routers maliciosos también pueden mantener " +"conexiones con el router objetivo y proporcionar un excelente ancho de \n" +"banda de reenvío para el tráfico sobre aquellas conexiones, en un intento" +" de \n" +"manipular los perfiles gestinados por el objetivo y parecer atractivos. " +"Podría \n" +"ser necesaria ulterior investigación y defensa." #: i2p2www/pages/site/docs/how/threat-model.html:653 #, python-format @@ -16360,8 +16474,8 @@ msgid "" " be implemented." msgstr "" "En una versión de un futuro lejano, opciones especificando las " -"configuraciones de acumulación, mezclado y generación de datos de relleno" -" criptográficamente descartables (`chaff`) podrían ser implementadas ser " +"configuraciones de depósitado, mezclado y generación de datos de relleno " +"criptográficamente descartables (`chaff`) podrían ser implementadas ser " "implementadas." #: i2p2www/pages/site/docs/how/tunnel-routing.html:272 @@ -18011,6 +18125,8 @@ msgid "" "%(INFO)s is the master database skiplist with String/Properties key/value" " entries containing only one entry:" msgstr "" +"%(INFO)s es la lista maestra de omisión de bases de datos con entradas \n" +"de Cadena/Propiedades clave/valor conteniendo una sola entrada:" #: i2p2www/pages/site/docs/spec/blockfile.html:184 msgid "Reverse Lookup Skiplist" @@ -18023,6 +18139,8 @@ msgid "" "key/value entries\n" " (as of database version 2):" msgstr "" +"%(REVERSE)s es la lista de omisión de consulta inversa con entradas \n" +"Entero/Propiedades clave/valor (desde la versión 2 de la base de datos):" #: i2p2www/pages/site/docs/spec/blockfile.html:199 msgid "hosts.txt, userhosts.txt, and privatehosts.txt Skiplists" @@ -18513,6 +18631,11 @@ msgid "" "encryption\n" "which was disabled in version 0.6, it is currently unused." msgstr "" +"La clave pública del destino fue usada por el antiguo cifrado i2cp-to-" +"i2cp \n" +"(protocolo de cliente I2P-a-ídem), que fue deshabilitado en la versión " +"0.6, \n" +"y actualmente está sin uso." #: i2p2www/pages/site/docs/spec/common-structures.html:544 #, python-format @@ -18907,8 +19030,8 @@ msgstr "Especificación de datagrama" #: i2p2www/pages/site/docs/spec/datagrams.html:6 msgid "See the Datagrams page for an overview of the Datagrams API." msgstr "" -"Vea la página de datagramas para tener una visión general del la API \n" -"(interfaz de programación de aplicaciones) de datagramas." +"Vea en la página de datagramas una introducción a la API (interfaz de \n" +"programación de aplicaciones) de datagramas." #: i2p2www/pages/site/docs/spec/datagrams.html:12 msgid "Non-Repliable Datagrams" @@ -19266,6 +19389,16 @@ msgid "" " suffix.\n" "Pack200 shrinks the update files by about 60%." msgstr "" +"Desde la versión 0.7.12, el router soporta decompresión Pack200. Los \n" +"ficheros dentro del archivo zip con un sufijo '.jar.pack' o '.war.pack' " +"son \n" +"descomprimidos transparentemente a un fichero '.jar' o '.war'. Los " +"archivos \n" +"de actualización conteniendo ficheros .pack son nombrados " +"tradicionalmente \n" +"con un sufijo '.su2'. Pack200 constriñe los ficheros de actualización " +"cerca \n" +"de un 60%." #: i2p2www/pages/site/docs/spec/updates.html:105 msgid "" @@ -20639,6 +20772,9 @@ msgid "" "the payload portion after the 28-byte IP/UDP header is a multiple of\n" "16 bytes, for encryption purposes." msgstr "" +"Para ambos valores MTU (unidad máxima de transmisión), es deseable que " +"(MTU % 16 == 12), así que la porción de la carga tras la cabecera \n" +"de 28-bytes IP/UDP es un múltiplo de 16 bytes, para propositos de cifrado." #: i2p2www/pages/site/docs/transport/ssu.html:89 msgid "" @@ -20698,6 +20834,9 @@ msgid "" "For IPv6, the minimum MTU is 1280. The IPv6 IP/UDP header is 48 bytes,\n" "so we use an MTU where (MTN % 16 == 0), which is true for 1280." msgstr "" +"Para IPv6, la MTU mínima es 1280. La cabecera IP/UDP IPv6 es de \n" +"48 bytes, así que usamos una MTU donde (MTU % 16 == 0), lo cual\n" +"es cierto para 1280." #: i2p2www/pages/site/docs/transport/ssu.html:124 msgid "Message Size Limits" @@ -20729,7 +20868,7 @@ msgstr "" #: i2p2www/pages/site/docs/transport/ssu.html:136 msgid "Keys" -msgstr "" +msgstr "Claves" #: i2p2www/pages/site/docs/transport/ssu.html:138 msgid "" @@ -20738,6 +20877,12 @@ msgid "" "for the HMAC and encryption, respectively. Prior to the DH exchange, \n" "the publicly knowable introKey is used for the MAC and encryption." msgstr "" +"Todo el cifrado usado es AES256/CBC con claves de 32 bytes e IVs \n" +"(vectores de inicialización) de 16 bytes. Las claves de MAC (dirección " +"hardware de la interfaz de red) y de sesión se negocian como parte del \n" +"intercambio DH (Diffie Hellman), usado por el HMAC y el cifrado \n" +"respectivamente. Previamente al intercambio DH, la introkey (clave de \n" +"presentación) públicamente conocible se usa para la MAC y el cifrado." #: i2p2www/pages/site/docs/transport/ssu.html:145 msgid "" @@ -20748,6 +20893,15 @@ msgid "" "contacts him, though Alice's DSA key may not already be known by \n" "Bob." msgstr "" +"Cuando use la introkey, ambos, tanto el mensaje inicial como cualquier \n" +"respuesta subsiguiente usan las introkey del emisor de la respuesta (Bob)" +" \n" +"- este no necesita conocer la introKey del peticionario (Alice). La clave" +" de \n" +"firmado DSA (algoritmo de firma digital) usada por Bor debería ser " +"conocida \n" +"ya pro Alice cuando contacte con él, aunque la clave DSA de Alice puede \n" +"que no sea conocida por Bob aún." #: i2p2www/pages/site/docs/transport/ssu.html:154 msgid "" @@ -20761,6 +20915,14 @@ msgid "" "according to the message type, though if the receiver is overloaded,\n" "it may be dropped anyway." msgstr "" +"Tras recibir un mensaje, el destinatario comprueba la dirección IP y el " +"puerto \"desde\" de todas las sesiones establecidas - si hay " +"coincidencias, las claves MAC de sesión son probadas en el HMAC. Si " +"ninguna de esas se verifican, o si no coinciden con la IP, el receptor " +"prueba su introKey en el MAC, si esta no se verifica, el paquete es " +"denegado. Si se verifica, es interpretado de acuerdo el tipo de mensaje, " +"aunque si el destinatario está sobrecargado, puede que también sea " +"desechado." #: i2p2www/pages/site/docs/transport/ssu.html:165 msgid "" @@ -20773,6 +20935,12 @@ msgid "" "fails to reply, she will assume the key is lost and reestablish a \n" "new one." msgstr "" +"Si Alice y Bob tienen una sesión establecida, pero Alice pierde las " +"claves por alguna razón y quiere contactar con Bob, ella puede " +"simplemente establecer una nueva sesión a través del SessionRequest y los" +" mensajes relacionados. Si Bob ha perdido la clave pero Alice no lo sabe," +" ella primero intentará que le responda, y si Bob continúa sin responder," +" ella asumirá que la clave se perdió y restablecerá una nueva." #: i2p2www/pages/site/docs/transport/ssu.html:176 #, python-format @@ -20781,6 +20949,8 @@ msgid "" "RFC3526 2048bit\n" "MODP group (#14) is used:" msgstr "" +"Para el acuerdo de la clave DH, RFC3526 grupo" +" MODP de 2048bit (#14) se utiliza:" #: i2p2www/pages/site/docs/transport/ssu.html:186 #, python-format @@ -20788,10 +20958,12 @@ msgid "" "These are the same p and g used for I2P's\n" "ElGamal encryption." msgstr "" +"Estos son los mismos p y g usados por el cifrado ElGamal de I2P." #: i2p2www/pages/site/docs/transport/ssu.html:191 msgid "Replay prevention" -msgstr "" +msgstr "Prevención de Respuesta" #: i2p2www/pages/site/docs/transport/ssu.html:193 msgid "" @@ -20800,6 +20972,10 @@ msgid "" "detect duplicate IVs, a sequence of Bloom filters are employed to\n" "\"decay\" periodically so that only recently added IVs are detected." msgstr "" +"La prevención de respuesta en la capa SSU ocurre denegando paquetes " +"excesivamente viejos o aquellos que reutilizan un IV. Para detectar IVs " +"duplicados, se utilizan una secuencia de filtros Bloom para " +"\"destruirlos\", y así sólo se detecten los IVs añadidos recientemente." #: i2p2www/pages/site/docs/transport/ssu.html:200 msgid "" @@ -20809,10 +20985,16 @@ msgid "" "entirely random. The SSU layer makes no attempt at messageId \n" "replay prevention - higher layers should take that into account." msgstr "" +"Los mensajesld usados en los DataMessages son definidos en capas por " +"encima del transporte SSU y son pasados a través transparentemente. Estos" +" IDs no están en un orden en particular - de hecho, es probable que sean " +"totalmente aleatorios. La capa SSU no intenta hacer prevención de " +"respuesta en los messageId - las capas superiores deberían tener esto en " +"cuenta." #: i2p2www/pages/site/docs/transport/ssu.html:208 msgid "Addressing" -msgstr "" +msgstr "Direccionamiento" #: i2p2www/pages/site/docs/transport/ssu.html:210 msgid "" @@ -20821,6 +21003,10 @@ msgid "" "indirect address, for using a third party to introduce the peer.\n" "There is no restriction on the number of addresses a peer may have." msgstr "" +"Para contactar un par SSU, se necesita uno de estos datos: una dirección " +"directa, para cuando el par sea accesible públicamente, o una dirección " +"indirecta, para usar a un tercero para que introduzca al par. No hay " +"restricción en el número de direcciones que un par puede tener." #: i2p2www/pages/site/docs/transport/ssu.html:222 msgid "" @@ -20828,6 +21014,9 @@ msgid "" "capabilities of that particular peer. For a list of available\n" "capabilities, see below." msgstr "" +"Cada una de las direcciones puede mostrar una serie de opciones - " +"capacidades especiales para un par en particular. Para una lista de " +"capacidades disponibles, vea más abajo." #: i2p2www/pages/site/docs/transport/ssu.html:228 #, python-format @@ -20835,10 +21024,12 @@ msgid "" "The addresses, options, and capabilities are published in the network database." msgstr "" +"Las direcciones, opciones y capacidades son publicadas en la base de datos de la red." #: i2p2www/pages/site/docs/transport/ssu.html:233 msgid "Direct Session Establishment" -msgstr "" +msgstr "Establecimiento de una sesión directa" #: i2p2www/pages/site/docs/transport/ssu.html:234 msgid "" @@ -20846,14 +21037,16 @@ msgid "" "NAT traversal.\n" "The message sequence is as follows:" msgstr "" +"El establecimiento de una sesión directa se usa cuando no hace falta un " +"tercero para el NAT trasversal. La secuencia del mensaje es como sigue:" #: i2p2www/pages/site/docs/transport/ssu.html:239 msgid "Connection establishment (direct)" -msgstr "" +msgstr "Establecimiento de la conexión (directa)" #: i2p2www/pages/site/docs/transport/ssu.html:240 msgid "Alice connects directly to Bob." -msgstr "" +msgstr "Alice se conecta directamente a Bob." #: i2p2www/pages/site/docs/transport/ssu.html:254 #, python-format @@ -20867,6 +21060,11 @@ msgid "" "\n" "(i.e. 0x0000000000000002)." msgstr "" +"Después de que se haya recibido el SessionConfirmed, Bob envía un pequeño" +" mensaje DeliveryStatus " +"como confirmación. En este mensaje, el ID de 4 bytes es aleatorio, y el " +"\"tiempo de llegada\" de 8 bytes es el ID de toda la red actual, el cual " +"es 2 (por ejemplo 0x0000000000000002)." #: i2p2www/pages/site/docs/transport/ssu.html:263 #, python-format @@ -20876,6 +21074,10 @@ msgid "" "containing their\n" "RouterInfos." msgstr "" +"Después de ser enviado el mensaje, los pares intercambia mensajes DatabaseStore " +"conteniendo susRouterInfos. " #: i2p2www/pages/site/docs/transport/ssu.html:271 msgid "" @@ -20885,6 +21087,10 @@ msgid "" "several seconds; since the store is now sent immediately, perhaps\n" "the status message can be eliminated." msgstr "" +"No parece que importe el tipo del mensaje de estado o su contenidos . Se " +"añadió originalmente porque el mensaje DatabaseStore era retardado varios" +" segundos, desde que el mensaje es enviado inmediatamente, quizás el " +"mensaje de estado se pueda eliminar." #: i2p2www/pages/site/docs/transport/ssu.html:280 msgid "" @@ -20901,6 +21107,18 @@ msgid "" "already know the public keys of the peer they are connecting to (but\n" "not necessary to any intermediary relay peer)." msgstr "" +"Las claves introductorias son enviadas a través de un canal externo (la " +"base de datos de la red, sonde son idénticos al Hash del ruter, por " +"ahora) y tienen que ser usados cuando se establece la clave de sesión. " +"Para la dirección indirecta, el par primero tiene que contactar un " +"relayhost y preguntar por una introducción para el par conocido en el " +"relayhost bajo la etiqueta dada. Si es posible, el relayhost envía un " +"mensaje al par direccionado diciéndole que contacte el par que está " +"solicitando, y también indica al par solicitante la IP y el puerto den " +"donde se encuentra el par direccionado. Además, el par que está " +"estableciendo la conexión ya tiene que conocer las claves públicas del " +"par con el que está conectando (pero no necesariamente a ninguno de los " +"pares intermediarios)." #: i2p2www/pages/site/docs/transport/ssu.html:294 msgid "" @@ -20929,24 +21147,45 @@ msgid "" "and when Alice receives Bob's RelayResponse packet, she begins a new \n" "full direction session establishment with the specified IP and port." msgstr "" +"El establecimiento de sesiones indirectas por parte de un tercero es " +"necesario para el funcionamiento eficiente del NAT trasversal. Charlie, " +"un ruter tras un NAT o cortafuegos que no permite paquetes UDP no " +"solicitados de entrada, primero contacta con unos pocos pares, eligiendo " +"algunos para usarlos como introductores. Cada uno de estos pares (Bob, " +"Bill, Betty, etc) proporcionan a Charlie una etiqueta de introducción - " +"un número aleatorio de 4 bytes -la cual él después hace pública como una " +"forma de contactarlo. Alice, un ruter que tiene publicado los métodos " +"para contactar con Charlie, primero envía un paquete RelayReques a uno o " +"más de los introductores, preguntando a cada uno para que le introduzca a" +" Charlie (ofreciendo la etiqueta de introducción para identificar a " +"Charlie). Bob entonces envía un paquete RelayIntro a Charlie incluyendo " +"el puerto y la IP pública de Charlie. Cuando Charlie recibe el paquete " +"RelayIntro, envía un pequeño paquete aleatorio al puerto e IP de Alice " +"(creando un agujero en su NAT/cortafuegos), y cuando Alice recibe el " +"paquete RelayResponse de Bob, ella empieza una establecimiento de sesión " +"completamente nuevo con el puerto y la IP especificados. " #: i2p2www/pages/site/docs/transport/ssu.html:321 msgid "Connection establishment (indirect using an introducer)" -msgstr "" +msgstr "Establecimiento de la conexión (usando un introductor indirecto)" #: i2p2www/pages/site/docs/transport/ssu.html:323 msgid "Alice first connects to introducer Bob, who relays the request to Charlie." msgstr "" +"Alice primero se conecta al Bob introductor, que reenvía la petición a " +"Charlie." #: i2p2www/pages/site/docs/transport/ssu.html:341 msgid "" "After the hole punch, the session is established between Alice and " "Charlie as in a direct establishment." msgstr "" +"Después de la creación del agujero en el NAT, la sesión es establecida " +"entre Alice y Charlie como si fuese directa." #: i2p2www/pages/site/docs/transport/ssu.html:352 msgid "Peer testing" -msgstr "" +msgstr "Prueba del par" #: i2p2www/pages/site/docs/transport/ssu.html:354 msgid "" @@ -20956,6 +21195,11 @@ msgid "" "and may update its behavior accordingly. The testing process is \n" "quite simple:" msgstr "" +"La automatización del las pruebas colaborativas de accesibilidad de un " +"par es habilitada por una secuencia de mensajes PeerTest. Con su buen " +"funcionamiento, el para será capaz de determinar su estado de " +"accesibilidad y puede actualizar su comportamiento de acuerdo con ello. " +"El proceso de prueba es bastante simple:" #: i2p2www/pages/site/docs/transport/ssu.html:373 msgid "" @@ -20966,6 +21210,12 @@ msgid "" "missing, she will know her reachability. The various end states\n" "that may be reached are as follows:" msgstr "" +"Cada uno de los mensajes PeerTest lleva un nonce identificando las series" +" de pruebas, como fueron inicializadas por Alice. Si Alice no recibe un " +"mensaje en particular que estuviese esperando, ella retransmitirá de " +"acuerdo con ello, y basándose en los datos recibidos o en los mensajes " +"perdidos, ella conocerá su estado de accesibilidad. Los estados a los que" +" puede llegar son:" #: i2p2www/pages/site/docs/transport/ssu.html:383 msgid "" @@ -20976,6 +21226,12 @@ msgid "" "outbound packet. Alternately, Bob may be down or unable to get \n" "Charlie to reply." msgstr "" +"Si no recibe una respuesta de Bob, ella retransmitirá un número de veces " +"dado, pero si nunca llega una respuesta, ella sabrá que su cortafuegos o " +"NAT están desconfigurados de alguna forma, denegando todos los paquetes " +"UDP de entrada incluso con una respuesta directa a un paquete de salida. " +"Alternativamente, Bob puede estar caído o incapaz de hacer que Charlie " +"responda." #: i2p2www/pages/site/docs/transport/ssu.html:392 msgid "" @@ -20988,6 +21244,14 @@ msgid "" "attempts and that port forwarding is not operating properly (the\n" "IP and port that Bob offered up should be forwarded)." msgstr "" +"Si Alice no recibe un mensaje PeerTest con el nonce esperado de una " +"tercera parte (Charlie), retransmitirá su petición inicial a Bob un " +"cierto número de veces, incluso si ya ha recibido la respuesta de Bob. Si" +" el primer mensaje de Charlie no pasa a través, pero el de Bob sí, ella " +"sabe que está tras un NAT o cortafuegos que deniega los intentos de " +"conexiones no solicitadas y que el reenvío de ese puerto no funciona " +"correctamente (la IP y el puerto que Bob ofrece deberían estar " +"reenviados/forwarded)." #: i2p2www/pages/site/docs/transport/ssu.html:403 msgid "" @@ -20999,6 +21263,13 @@ msgid "" "explicitly forward a port and always have that port exposed for \n" "remote connectivity, ignoring further port discovery." msgstr "" +"Si Alice recibe el mensaje PeerTest de Bob y los dos mensajes PeerTest de" +" Charle, pero la IP y el puerto de Bob adjuntos y el segundo mensaje de " +"Charlie no coinciden, ella sabe que está bajo un NAT simétrico que está " +"reescribiendo todos sus paquetes de salida con los puertos 'desde' " +"cambiados para cada uno de los pares contactados. Ella necesitará abrir " +"explícitamente un puerto y tener ese puesto expuesto siempre a las " +"conexiones remotas, ignorando cualquier búsqueda de puertos futura." #: i2p2www/pages/site/docs/transport/ssu.html:413 msgid "" @@ -21007,6 +21278,10 @@ msgid "" "certain number of times, but if no response is received she knows\n" "that Charlie is either confused or no longer online." msgstr "" +"Si Alice recibe el primer mensaje de Charlie pero no el segundo, ella " +"retransmitirá su mensaje PeerTest a Charlie un cierto número de veces, " +"pero si no se recibe ninguna respuesta sabrá que o Charlie está " +"confundido o no está encendido." #: i2p2www/pages/site/docs/transport/ssu.html:421 msgid "" @@ -21018,6 +21293,14 @@ msgid "" "(Alice doesn't get PeerTest messages from Bob), Alice may decide\n" "to designate a new peer as Bob and try again with a different nonce." msgstr "" +"Alice debería elegir a Bob arbitrariamente entre los pares conocidos que " +"parezcan ser capaces de participar el las pruebas de pares. Bob a su vez " +"debería elegir a Charlie arbitrariamente entre los pares conocidos que " +"parezcan ser capaces de participar el las pruebas de pares y que están en" +" una IP diferente a la de Bob y Alice. Si ocurre la primera condición de " +"error (Alice no recibe el mensaje PeerTest de Bob), Alice puede decidir " +"designar un nuevo par como Bob e intentar de nuevo con un nonce " +"diferente." #: i2p2www/pages/site/docs/transport/ssu.html:431 msgid "" @@ -21027,10 +21310,15 @@ msgid "" "any additional information. Alice may go on to establish a session\n" "with either Bob or Charlie, but it is not required." msgstr "" +"La clave de introducción de Alice es incluida en todos los mensajes " +"PeerTest para que no necesite una conexión ya establecida con Bob y para " +"que Charlie pueda contactar con ella sin necesidad de tener más datos. " +"Alice puede establecer una sesión con Bob o Charlie, pero no es " +"necesario." #: i2p2www/pages/site/docs/transport/ssu.html:449 msgid "Transmission window, ACKs and Retransmissions" -msgstr "" +msgstr "Window,ventana, de retransmisión, ACKs y Retrasmisiones" #: i2p2www/pages/site/docs/transport/ssu.html:450 #, python-format @@ -21041,6 +21329,10 @@ msgid "" "the protocol specification page\n" "for details." msgstr "" +"El mensaje de DATOS puede contener ACKs de mensajes completos y ACKs " +"parciales de fragmentos individuales de un mensaje. Vea la sección de los" +" mensajes de datos de la página de especificación" +" del protocolo para más detalles." #: i2p2www/pages/site/docs/transport/ssu.html:458 #, python-format @@ -21056,10 +21348,18 @@ msgid "" "or streaming.\n" "See the code for initial, min and max parameters." msgstr "" +"Los detalles de las Windows, ACKS y las estrategias de retransmisión no " +"se especifican aquí. Vea el código de Java para ver la implementación " +"actual. Durante la fase de establecimiento, y para las pruebas de pares, " +"los ruters deberían implementar backoff exponencial para la " +"retransmisión. Para una conexión establecida, los ruters deberían " +"implementar una ventana de retransmisión ajustable, RTT estimado y tiempo" +" de espera, similar al TCP o streaming. Vea" +" el código para los valores iniciales, mínimos y máximos." #: i2p2www/pages/site/docs/transport/ssu.html:470 msgid "Security" -msgstr "" +msgstr "Seguridad" #: i2p2www/pages/site/docs/transport/ssu.html:471 msgid "" @@ -21069,16 +21369,23 @@ msgid "" "may not be legitimate.\n" "Also, certain actions and responses may need to be rate-limited." msgstr "" +"La dirección de la fuente UDP puede, por supuesto, ser falseada. " +"Adicionalmente, las IPs y los puertos contenidos en los mensajes SSU " +"específicos (RelayRequest, RelayResponse, RelayIntro, PeerTest) puede que" +" no sean legítimos. Además, algunas acciones y respuestas pueden " +"necesitar de ser vueltas a limitar." #: i2p2www/pages/site/docs/transport/ssu.html:479 msgid "" "The details of validation are not specified\n" "here. Implementers should add defenses where appropriate." msgstr "" +"Los detalles de validación no están especificados aquí. Los " +"desarrolladores deberían añadir defensas donde sea apropiado." #: i2p2www/pages/site/docs/transport/ssu.html:485 msgid "Peer capabilities" -msgstr "" +msgstr "Capacidades del par" #: i2p2www/pages/site/docs/transport/ssu.html:489 msgid "" @@ -21086,6 +21393,9 @@ msgid "" "they are willing and able to participate in peer tests as\n" "a 'Bob' or 'Charlie'." msgstr "" +"Si la dirección del par contiene la capacidad 'B', esto significa que " +"desea y puede participar en una prueba de par como un 'Bob' o como un " +"'Charlie'." #: i2p2www/pages/site/docs/transport/ssu.html:495 msgid "" @@ -21093,6 +21403,9 @@ msgid "" "they are willing and able to serve as an introducer - serving\n" "as a Bob for an otherwise unreachable Alice." msgstr "" +"Si la dirección del par contiene la capacidad 'C', esto significa que " +"desea y puede servir como un introductor - funcionando como un Bob para " +"un Alice, que de otra forma dería inaccesible." #: i2p2www/pages/site/docs/transport/ssu.html:504 msgid "" @@ -21102,6 +21415,10 @@ msgid "" "improve\n" "performance, is a topic for future work." msgstr "" +"El análisis del rendimiento actual del SSU es un tema para un trabajo " +"futuro, incluyendo la valoración del ajuste del tamaño de ventana y otros" +" parámetros, y el ajuste de la implementación del protocolo para mejorar " +"el rendimiento." #: i2p2www/pages/site/docs/transport/ssu.html:510 msgid "" @@ -21109,6 +21426,8 @@ msgid "" "packets,\n" "which unnecessarily increases overhead." msgstr "" +"La implementación actual envía repetidamente reconocimientos para los " +"mismos paquetes, lo que aumenta la sobrecarga innecesariamente." #: i2p2www/pages/site/docs/transport/ssu.html:515 msgid "" @@ -21118,14 +21437,20 @@ msgid "" "Does a streaming lib 1730-byte packet fit in 3 small SSU packets? " "Probably not." msgstr "" +"El pequeño valor por defecto del MTU de 620 debería ser analizado y " +"probablemente aumentado. La estrategia actual de adaptación del MTU " +"debería ser evaluada. ¿Cabe un paquete de streaming de 1730 bytes en 3 " +"paquetes pequeños SSU? Probablemente no." #: i2p2www/pages/site/docs/transport/ssu.html:521 msgid "The protocol should be extended to exchange MTUs during the setup." msgstr "" +"El protocolo debería ser ampliado para intercambiar MTUs durante la " +"configuración." #: i2p2www/pages/site/docs/transport/ssu.html:525 msgid "Rekeying is currently unimplemented and may never be." -msgstr "" +msgstr "Rekeying no está implementado y puede que nunca lo esté." #: i2p2www/pages/site/docs/transport/ssu.html:529 msgid "" @@ -21134,6 +21459,9 @@ msgid "" "and use of the padding field in SessionRequest and SessionCreated, is " "undocumented." msgstr "" +"El uso potencial de los campos \"desafío\" en el RelayIntro y en el " +"RelayResponse, y el uso del campo de relleno en el SessionRequest en el " +"SessionCreated, no están documentados." #: i2p2www/pages/site/docs/transport/ssu.html:534 msgid "" @@ -21142,6 +21470,9 @@ msgid "" "packet,\n" "so long as it doesn't exceed the MTU." msgstr "" +"En vez de un sólo fragmento por paquete, una estrategia más eficiente " +"podría ser el juntar varios fragmentos de mensajes dentro del mismo " +"paquete, mientras no exceda el MTU." #: i2p2www/pages/site/docs/transport/ssu.html:540 msgid "" @@ -21150,26 +21481,34 @@ msgid "" " \n" "end padding should be sufficient for most needs until then." msgstr "" +"Un conjunto de tamaños de paquetes podría ser apropiado para la " +"ocultación futura de la fragmentación de los datos a adversarios " +"externos, pero el túnel, garlic, y un relleno de fin a fin deberían ser " +"suficiente para la mayoría de las necesidades hasta entonces." #: i2p2www/pages/site/docs/transport/ssu.html:546 msgid "" "Why are introduction keys the same as the router hash, should it be " "changed, would there be any benefit?" msgstr "" +"¿Por qué son las claves de introducción las mismas que el hash del ruter," +" deberían cambiarse, habría algún beneficio?" #: i2p2www/pages/site/docs/transport/ssu.html:550 msgid "Capacities appear to be unused." -msgstr "" +msgstr "Las capacidades parecen estar sin usar." #: i2p2www/pages/site/docs/transport/ssu.html:554 msgid "" "Signed-on times in SessionCreated and SessionConfirmed appear to be " "unused or unverified." msgstr "" +"Los tiempos acordados en SessionCreated (sesión creada) y " +"SessionConfirmed (sesión confirmada) parecen estar sin usar o verificar." #: i2p2www/pages/site/docs/transport/ssu.html:559 msgid "Implementation Diagram" -msgstr "" +msgstr "Diagrama de implementación" #: i2p2www/pages/site/docs/transport/ssu.html:560 msgid "" @@ -21177,26 +21516,30 @@ msgid "" "should accurately reflect the current implementation, however there may " "be small differences." msgstr "" +"El diagrama debe reflejar con exactitud la implementación actual, sin " +"embargo puede haber muchas diferencias pequeñas." #: i2p2www/pages/site/docs/transport/ssu.html:568 msgid "Now on the SSU specification page" msgstr "" +"En la actualidad en la página de especificación SSU (UDP seguro " +"semiconfiable)" #: i2p2www/pages/site/docs/tunnels/implementation.html:2 msgid "Tunnel Implementation" -msgstr "" +msgstr "Implementación de túnel" #: i2p2www/pages/site/docs/tunnels/implementation.html:3 msgid "October 2010" -msgstr "" +msgstr "Octubre de 2010" #: i2p2www/pages/site/docs/tunnels/implementation.html:7 msgid "This page documents the current tunnel implementation." -msgstr "" +msgstr "Esta página documenta la actual implementación de túnel." #: i2p2www/pages/site/docs/tunnels/implementation.html:9 msgid "Tunnel overview" -msgstr "" +msgstr "Introducción a los túneles" #: i2p2www/pages/site/docs/tunnels/implementation.html:11 msgid "" @@ -21213,6 +21556,23 @@ msgid "" "bundled up by the gateway and forwards them as instructed - either\n" "to another router, to another tunnel on another router, or locally." msgstr "" +"Dentro de I2P, los mensajes se pasan en una dirección a través de un " +"túnel \n" +"virtual de pares (`peers`), usando cualquier medio que esté disponible " +"para \n" +"pasar el mensaje al siguiente salto. Los mensajes llegan a la " +"pasarela \n" +"(`gateway`) del túnel, son empaquetados y/o fragmentados en mensajes de \n" +"túnel de tamaño-fijo, y son reenviados hacia el siguiente salto en el " +"túnel, \n" +"que procesa y verifica la validez del mensaje y lo envía al siguiente " +"salto, y \n" +"así sucesivamente, hasta que alcanza el extremo del túnel. Ese " +"extremo \n" +"toma los mensajes empaquetados por la pasarela y los reenvía como se \n" +"se le ha indicado - bien hacia otro router, bien hacia otro túnel en otro" +" router, \n" +"o bien localmente." #: i2p2www/pages/site/docs/tunnels/implementation.html:23 msgid "" @@ -21223,6 +21583,14 @@ msgid "" "tunnels, the tunnel creator serves as the gateway, passing messages\n" "out to the remote endpoint." msgstr "" +"Los túneles funcionan todos de la misma forma, pero pueden estar \n" +"segmentados en dos diferentes grupos - túneles de entrada o túneles de \n" +"salida. Los túneles de entrada tienen una pasarela (`gateway`) no " +"confiable \n" +"que pasa mensajes hacia el creador del túnel, que sirve como extremo del " +"túnel. Para túneles de salida, el creador del túnel hace de pasarela " +"pasando \n" +"mensajes al exterior hacia el extremo remoto." #: i2p2www/pages/site/docs/tunnels/implementation.html:32 msgid "" @@ -21238,6 +21606,18 @@ msgid "" "peers are\n" "next to each other in the tunnel)." msgstr "" +"El creador del túnel selecciona exactamente qué pares (`peers`) " +"participarán \n" +"en el túnel, y proporciona a cada uno los datos de configuración " +"necesarios. \n" +"Pueden tener cualquier número de saltos. La intención es hacer difícil, " +"tanto \n" +"a los partícipantes en el túnel como a terceros, determinar la longitud " +"de un \n" +"túnel, o incluso que unos participantes compinchados determinen si ellos" +" \n" +"forman parte de un mismo túnel (impidiendo la situación en la que pares " +"compinchados estén próximos unos de otros en el túnel)." #: i2p2www/pages/site/docs/tunnels/implementation.html:43 msgid "" @@ -21248,6 +21628,14 @@ msgid "" "of pools for participating in the network database and for managing\n" "the tunnels themselves." msgstr "" +"En la práctica, una serie de depósitos (`pools`) de túneles se usan para " +"diferentes propósitos - cada destino de cliente local tiene su propio \n" +"conjunto de túneles de entrada configurados para alcanzar sus necesidades" +" \n" +"de anonimato y rendimiento. Además, el propio router mantiene una serie " +"de depósitos para participar en la base de datos de red y para " +"administrar \n" +"los propios túneles." #: i2p2www/pages/site/docs/tunnels/implementation.html:52 msgid "" @@ -21258,6 +21646,15 @@ msgid "" "available for client applications, exposing TCP-esque operation,\n" "including message reordering, retransmission, congestion control, etc." msgstr "" +"I2P es inherentemente una red de paquetes conmutados, incluso con estos \n" +"túneles, lo que le permite aprovechar la ventaja de múltiples túneles \n" +"ejecutándose en paralelo, incrementando la flexibilidad y el equilibrado " +"de la\n" +"carga. Fuera del núcleo de la capa I2P, hay una librería streaming (de " +"flujo) \n" +"extremo a extremo opcional disponible para aplicaciones cliente, que \n" +"ofrece operaciones estilo-TCP, incluyendo reordenamiento de mensajes, \n" +"retransmisión, control de congestión, etc." #: i2p2www/pages/site/docs/tunnels/implementation.html:61 #, python-format @@ -21265,10 +21662,12 @@ msgid "" "An overview of I2P tunnel terminology is\n" "on the tunnel overview page." msgstr "" +"Encontrará una introducción a la terminología de túneles I2P en la página de introducción a los túneles." #: i2p2www/pages/site/docs/tunnels/implementation.html:66 msgid "Tunnel Operation (Message Processing)" -msgstr "" +msgstr "Operaciones de los túneles (procesamiento de mensajes)" #: i2p2www/pages/site/docs/tunnels/implementation.html:69 #, python-format @@ -21278,6 +21677,11 @@ msgid "" "Tunnel operation has four distinct processes, taken on by various \n" "peers in the tunnel." msgstr "" +"Después de que un túnel sea erigido, los mensajes " +"I2NP (protocolo de red I2P) se procesan y se pasan a través de él. " +"Las operaciones de los túneles comprenden cuatro procesos diferentes, " +"llevados \n" +"a cabo por diferentes pares (`peers`) en el túnel." #: i2p2www/pages/site/docs/tunnels/implementation.html:75 msgid "" @@ -21285,12 +21689,16 @@ msgid "" "of I2NP messages and preprocesses them into tunnel messages for\n" "delivery." msgstr "" +"Primero, la pasarela (`gateway`) del túnel acumula un número de mensajes " +"I2NP y los preprocesa en mensajes de túnel para su entrega." #: i2p2www/pages/site/docs/tunnels/implementation.html:80 msgid "" "Next, that gateway encrypts that preprocessed data, then\n" "forwards it to the first hop." msgstr "" +"Después, esa pasarela cifra los datos preprocesados, luego los reenvía al" +" primer salto." #: i2p2www/pages/site/docs/tunnels/implementation.html:84 msgid "" @@ -21298,6 +21706,10 @@ msgid "" "participants, unwrap a layer of the encryption, verifying that it isn't\n" "a duplicate, then forward it on to the next peer." msgstr "" +"Ese par (`peer`), y los subsiguientes participantes en el túnel, " +"desenvuelven \n" +"una capa del cifrado, verificando que no esté duplicada, y luego la \n" +"reenvían hacia el siguiente par." #: i2p2www/pages/site/docs/tunnels/implementation.html:89 msgid "" @@ -21306,6 +21718,9 @@ msgid "" "originally bundled by the gateway are reassembled and forwarded on as \n" "requested." msgstr "" +"Eventualmente, los mensajes de túnel llegan al extremo donde los mensajes" +" I2NP fueron originalmente empaquetados por la pasarela, \n" +"entonces son reensamblados y reenviados de la forma requerida." #: i2p2www/pages/site/docs/tunnels/implementation.html:96 msgid "" @@ -21315,84 +21730,97 @@ msgid "" "to \"decrypt\" at the outbound tunnel gateway,\n" "so that the plaintext is revealed at the outbound endpoint." msgstr "" +"Los participantes intermedios del túnel no saben si ellos están en un " +"túnel\n" +"de entrada o de salida; ellos siempre \"cifran\" para el siguiente salto." +" Por lo \n" +"tanto, aprovechamos la ventaja del cifrado AES simétrico para " +"\"descifrar\" en \n" +"la pasarela (`gateway`) del túnel de salida, así que el texto plano se " +"revela \n" +"en el extremo de salida." #: i2p2www/pages/site/docs/tunnels/implementation.html:110 msgid "Role" -msgstr "" +msgstr "Rol" #: i2p2www/pages/site/docs/tunnels/implementation.html:111 msgid "Preprocessing" -msgstr "" +msgstr "Preprocesado" #: i2p2www/pages/site/docs/tunnels/implementation.html:112 msgid "Encryption Operation" -msgstr "" +msgstr "Operación de cifrado" #: i2p2www/pages/site/docs/tunnels/implementation.html:113 msgid "Postprocessing" -msgstr "" +msgstr "Posprocesado" #: i2p2www/pages/site/docs/tunnels/implementation.html:117 msgid "Outbound Gateway (Creator)" -msgstr "" +msgstr "Pasarela (`gateway`) saliente (Creador)" #: i2p2www/pages/site/docs/tunnels/implementation.html:118 #: i2p2www/pages/site/docs/tunnels/implementation.html:141 msgid "Fragment, Batch, and Pad" -msgstr "" +msgstr "Fragmento, lote, y fardo" #: i2p2www/pages/site/docs/tunnels/implementation.html:119 msgid "Iteratively encrypt (using decryption operations)" -msgstr "" +msgstr "Cifrar iterativamente (usando operaciones de descifrado)" #: i2p2www/pages/site/docs/tunnels/implementation.html:120 #: i2p2www/pages/site/docs/tunnels/implementation.html:127 #: i2p2www/pages/site/docs/tunnels/implementation.html:143 #: i2p2www/pages/site/docs/tunnels/implementation.html:150 msgid "Forward to next hop" -msgstr "" +msgstr "Reenvíar al siguiente salto" #: i2p2www/pages/site/docs/tunnels/implementation.html:124 #: i2p2www/pages/site/docs/tunnels/implementation.html:147 msgid "Participant" -msgstr "" +msgstr "Participante" #: i2p2www/pages/site/docs/tunnels/implementation.html:126 msgid "Decrypt (using an encryption operation)" -msgstr "" +msgstr "Descifrar (usando una operación de cifrado)" #: i2p2www/pages/site/docs/tunnels/implementation.html:133 msgid "Decrypt (using an encryption operation) to reveal plaintext tunnel message" msgstr "" +"Descifrar (usando una operación de cifrado) para revelar el mensaje de " +"túnel de texto plano" #: i2p2www/pages/site/docs/tunnels/implementation.html:134 msgid "Reassemble Fragments, Forward as instructed to Inbound Gateway or Router" msgstr "" +"Reensamblar fragmentos, reenviar hacia la pasarela (`gateway`) o router " +"entrante tal como se indicó" #: i2p2www/pages/site/docs/tunnels/implementation.html:142 #: i2p2www/pages/site/docs/tunnels/implementation.html:149 msgid "Encrypt" -msgstr "" +msgstr "Cifrar" #: i2p2www/pages/site/docs/tunnels/implementation.html:154 msgid "Inbound Endpoint (Creator)" -msgstr "" +msgstr "Extremo de entrada (Creador)" #: i2p2www/pages/site/docs/tunnels/implementation.html:156 msgid "Iteratively decrypt to reveal plaintext tunnel message" -msgstr "" +msgstr "Descifrar iterativamente para revelar mensajes de túnel de texto plano" #: i2p2www/pages/site/docs/tunnels/implementation.html:157 msgid "Reassemble Fragments, Receive data" -msgstr "" +msgstr "Reensamblar fragmentos, recibir datos" #: i2p2www/pages/site/docs/tunnels/implementation.html:163 msgid "Gateway Processing" -msgstr "" +msgstr "Procesado de la pasarela (`gateway`)" #: i2p2www/pages/site/docs/tunnels/implementation.html:164 msgid "Message Preprocessing" -msgstr "" +msgstr "Preprocesado de mensaje" #: i2p2www/pages/site/docs/tunnels/implementation.html:166 #, python-format @@ -21403,26 +21831,33 @@ msgid "" "and encrypt the tunnel messages.\n" "Tunnel messages contain the following:" msgstr "" +"Una función de la pasarela (`gateway`) del túnel es fragmentar y " +"empaquetar \n" +"mensajes I2NP (protocolo de red I2P) en mensajes de túnel de tamaño-fijo y cifrar " +"los mensajes de túnel. Los mensajes de túnel contienen lo siguiente: " #: i2p2www/pages/site/docs/tunnels/implementation.html:174 msgid "A 4 byte Tunnel ID" -msgstr "" +msgstr "Un identificador (`ID`) de túnel de 4 bytes" #: i2p2www/pages/site/docs/tunnels/implementation.html:175 msgid "A 16 byte IV (initialization vector)" -msgstr "" +msgstr "Un IV (vector de inicialización) de 16 bytes" #: i2p2www/pages/site/docs/tunnels/implementation.html:176 msgid "A checksum" -msgstr "" +msgstr "Un identificador criptográfico (`checksum`)" #: i2p2www/pages/site/docs/tunnels/implementation.html:177 msgid "Padding, if necessary" msgstr "" +"Relleno (datos inútiles desechables criptográficamente), si fuera " +"necesario" #: i2p2www/pages/site/docs/tunnels/implementation.html:178 msgid "One or more { delivery instruction, I2NP message fragment } pairs" -msgstr "" +msgstr "Uno o más pares { instrucción de entrega, fragmento de mensaje I2NP }" #: i2p2www/pages/site/docs/tunnels/implementation.html:181 msgid "" @@ -21435,6 +21870,18 @@ msgid "" "Even if subsequent tunnels are built using the same sequence of \n" "peers, each hop's tunnel ID will change." msgstr "" +"Los identificadores (`IDs`) de túnel tienen números de 4 bytes usados en" +" \n" +"cada salto - los participantes saben con qué identificadores (`ID`) de " +"túnel escuchar mensajes y sobre qué túneles deben ser reenviados hacia el" +" siguiente salto, y cada salto elije el identificador (`ID`) de túnel " +"sobre el cual \n" +"recibe los mensajes. Los propios túneles son de vida-corta (10 minutos)." +" \n" +"Incluso si los subsiguientes túneles se erigen usando la misma secuencia" +" \n" +"de pares (`peers`), el identificador (`ID`) de túnel de cada salto " +"cambiará." #: i2p2www/pages/site/docs/tunnels/implementation.html:190 msgid "" @@ -21450,6 +21897,18 @@ msgid "" "from the\n" "fragments for a short period of time, but will discard them as necessary." msgstr "" +"Para evitar que los adversarios marquen los mensajes a través de la ruta" +" \n" +"ajustando el tamaño del mensaje, todos los mensajes de túnel tienen un \n" +"tamaño fijo de 1024 bytes. Para acomodar mensajes I2NP (protocolo de red" +" \n" +"I2P) más grandes así como para dar soporte a los más pequeños de forma \n" +"más eficiente, la pasarela (`gateway`) divide los mensajes I2NP más \n" +"grandes en fragmentos contenibles en cada mensaje de túnel. El extremo \n" +"del túnel intentará reconstruir el mensaje I2NP partiendo de los " +"fragmentos \n" +"durante un corto periodo de tiempo, pero los descartará cuando sea " +"necesario." #: i2p2www/pages/site/docs/tunnels/implementation.html:199 #, python-format @@ -21457,10 +21916,12 @@ msgid "" "Details are in the\n" "tunnel message specification." msgstr "" +"Los detalles están en la especificación de " +"mensaje de túnel." #: i2p2www/pages/site/docs/tunnels/implementation.html:205 msgid "Gateway Encryption" -msgstr "" +msgstr "Cifrado de la pasarela (`gateway`)" #: i2p2www/pages/site/docs/tunnels/implementation.html:207 msgid "" @@ -21471,6 +21932,14 @@ msgid "" "necessary, and forwards the tuple {tunnelID, IV, encrypted tunnel " "message} to the next hop." msgstr "" +"Después del preprocesado de mensajes hacia una carga con datos de " +"relleno, \n" +"la pasarela (`gateway`) construye un valor de IV (vector de " +"inicialización) \n" +"aleatorio de 16 bytes, cifrando a este y al mensaje de túnel " +"iterativamente tanto como se necesite, y reenvía la tupla { tunnelID, IV," +" mensaje de túnel \n" +"cifrado } al siguiente salto." #: i2p2www/pages/site/docs/tunnels/implementation.html:213 msgid "" @@ -21490,10 +21959,25 @@ msgid "" "recover \n" "the initial preprocessed data." msgstr "" +"Cómo se hace el cifrado en la pasarela (`gateway`) depende de si el túnel" +" \n" +"es de entrada o de salida. Para los túneles entrantes, simplemente eligen" +" \n" +"un IV (vector de inicialización) aleatorio, posprocesándolo y " +"actualizándolo \n" +"para generar el IV para la pasarela y usar ese IV junto con su propia " +"clave \n" +"de capa para cifrar los datos preprocesados. Para túneles salientes deben" +" descifrar iterativamente el (no cifrado) IV y los datos preprocesados, " +"con el IV y las claves de capa para todos los saltos en el túnel. El " +"resultado \n" +"del cifrado del túnel de salida es que cuando cada par (`peer`) lo cifra," +" el \n" +"extremo recuperará los datos preprocesados iniciales." #: i2p2www/pages/site/docs/tunnels/implementation.html:225 msgid "Participant Processing" -msgstr "" +msgstr "Procesado de los participantes" #: i2p2www/pages/site/docs/tunnels/implementation.html:227 msgid "" @@ -21516,6 +22000,24 @@ msgid "" "of the IV (both before and after use) help address a certain class of\n" "confirmation attacks." msgstr "" +"Cuando un par (`peer`) recibe un mensaje de túnel, comprueba que el \n" +"mensaje venga desde el mismo salto previo que antes (inicializado cuando" +" \n" +"el primer mensaje atraviesa el túnel). Si el par previo está en un router" +" \n" +"diferente, o si el mensaje ha sido visto ya, el mensaje es descartado. \n" +"Entonces el participante cifra el IV (vector de inicialización) recibido " +"con \n" +"AES256/ECB usando su clave IV para determinar el IV actual, usa ese \n" +"IV con la clave de capa del participante para cifrar los datos, cifra el " +"actual \n" +"IV con AES256/ECB usando la clave IV otra vez, y luego reenvía la tupla \n" +"{nextTunnelId, nextIV, encryptedData} (siguiente identificador de túnel, " +"siguiente IV, datos cifrados) al siguiente salto. Este doble cifrado del " +"IV \n" +"(tanto antes como después de su uso) ayuda a afrontar una cierta clase de" +" \n" +"ataques de confirmación." #: i2p2www/pages/site/docs/tunnels/implementation.html:240 msgid "" @@ -21538,10 +22040,25 @@ msgid "" "from tagging a message by resending it with the IV and first block " "switched." msgstr "" +"La detección de mensajes duplicados es gestionada por un filtro Bloom \n" +"decadente (en el tiempo) sobre los IVs (vectores de inicialización) de " +"los \n" +"mensajes. Cada router mantiene un único filtro Bloom para guardar el XOR" +" \n" +"del IV con el primer bloque del mensaje recibido para todos los túneles " +"en los que está participando, modificado (decadencia) para descartar " +"entradas vistas después de 10-20 minutos (cuando los túneles habrán " +"expirado). \n" +"El tamaño del filtro Bloom y los parámetros usados son suficientes para " +"más que saturar la conexión de red del router con una insignificante " +"posibilidad de falso positivo. El único valor añadido en el filtro Bloom " +"es el XOR del IV y el primer bloque como forma de prevenir que pares " +"(`peers`) compinchados no secuenciales en el túnel, marquen un mensaje " +"reenviándolo con el IV y el primer bloque cambiados." #: i2p2www/pages/site/docs/tunnels/implementation.html:253 msgid "Endpoint Processing" -msgstr "" +msgstr "Procesado en el extremo" #: i2p2www/pages/site/docs/tunnels/implementation.html:255 msgid "" @@ -21559,6 +22076,19 @@ msgid "" " using the \n" "layer and IV keys of each step in reverse order." msgstr "" +"Después de recibir y validar un mensaje de túnel en el último salto del " +"túnel, la forma en la que el extremo recupera los datos codificados por " +"la pasarela \n" +"(`gateway`) depende de si el túnel es de entrada o de salida. Para " +"túneles salientes, el extremo cifra el mensaje con su clave de capa tal " +"como lo hace cualquier otro participante (en el túnel), exponiendo los " +"datos \n" +"preprocesados. Para túneles entrantes, el extremo también es el creador \n" +"del túnel, así que pueden meramente descifrar iterativamente el IV " +"(vector de \n" +"inicialización) y el mensaje usando las claves de capa e IV de cada paso" +" \n" +"en orden inverso." #: i2p2www/pages/site/docs/tunnels/implementation.html:265 msgid "" @@ -21568,10 +22098,15 @@ msgid "" "them as\n" "requested in their delivery instructions." msgstr "" +"En este punto, el extremo del túnel tiene los datos preprocesados " +"enviados por la pasarela (`gateway`), que pueden entonces ser separados " +"en los mensajes I2NP incluidos, y reenviarlos tal como se requería en sus" +" \n" +"instrucciones de entrega." #: i2p2www/pages/site/docs/tunnels/implementation.html:272 msgid "Tunnel Building" -msgstr "" +msgstr "Construcción del túnel" #: i2p2www/pages/site/docs/tunnels/implementation.html:274 msgid "" @@ -21591,6 +22126,18 @@ msgid "" "(and \n" "replies received), and how they are maintained." msgstr "" +"Cuando se construye un túnel, el creador debe enviar una solicitud con " +"los \n" +"datos de configuración necesarios a cada uno de los saltos, y esperar \n" +"que todos ellos accedan antes de habilitar el túnel. Las solicitudes se " +"cifran de forma que sólo los pares (`peers`) que necesiten conocer un \n" +"pedazo de la información (tales como las claves de capa del túnel o de IV" +" (vector de inicialización)) tienen esos datos. Además, sólo el creador " +"del \n" +"túnel tendrá acceso a la respuesta del par. Hay tres dimensiones " +"importantes a tener en cuenta al generar los túneles: qué pares se usan " +"(y dónde), cómo se envían las solicitudes (y las respuestas recibidas), y" +" cómo son mantenidas." #: i2p2www/pages/site/docs/tunnels/implementation.html:288 msgid "" @@ -21601,10 +22148,16 @@ msgid "" "tunnel\n" "maintenance, while client tunnels are used for end to end client messages." msgstr "" +"Más allá de los dos tipos de túneles - entrante y saliente - hay dos " +"estilos de selección del par (`peer`) usados por diferentes túneles - " +"exploratorio y cliente. Los túneles exploratorios se usan tanto para el " +"mantenimiento de la \n" +"base de datos de red como para el mantenimiento del túnel, mientras los \n" +"túneles de cliente se usan para mensajes de cliente extremo-a-extremo." #: i2p2www/pages/site/docs/tunnels/implementation.html:296 msgid "Exploratory tunnel peer selection" -msgstr "" +msgstr "Selección de par de túnel exploratorio" #: i2p2www/pages/site/docs/tunnels/implementation.html:298 msgid "" @@ -21622,6 +22175,14 @@ msgid "" " for\n" "use in client tunnels." msgstr "" +"Los túneles exploratorios son construidos de una selección de pares " +"aleatorios de un subconjunto de la red. Los subconjuntos varían en cada " +"ruter local y según sean las necesidades de ese túnel. En general, los " +"túneles exploratorios se construyen a partir de pares seleccionados " +"aleatoriamente que están en categoría del perfil de par 'no se cae, está " +"activo' . El segundo fin de los túneles, además de simplemente enrutar, " +"es encontrar pares de alta capacidad libres para poder usarlos para los " +"túneles clientes." #: i2p2www/pages/site/docs/tunnels/implementation.html:308 #, python-format @@ -21629,10 +22190,12 @@ msgid "" "Exploratory peer selection is discussed further on the\n" "Peer Profiling and Selection page." msgstr "" +"La selección de pares exploratorios se discute más en la página de perfil del par y selección." #: i2p2www/pages/site/docs/tunnels/implementation.html:314 msgid "Client tunnel peer selection" -msgstr "" +msgstr "Selección del par para el túnel cliente" #: i2p2www/pages/site/docs/tunnels/implementation.html:316 msgid "" @@ -21646,6 +22209,13 @@ msgid "" "that \n" "should be adhered to, depending upon the client's anonymity needs." msgstr "" +"Los túneles cliente son construidos con unos requerimientos más rigurosos" +" - el ruter local selecciona los pares de la categoría de perfil " +"\"rápidos y de gran capacidad\" para que el rendimiento y la seguridad se" +" ajusten a las necesidades de la aplicación cliente. Aunque hay varios " +"detalles importantes más allá de la selección básica que deben ser " +"tomados en cuenta, dependiendo de las necesidades de anonimato que " +"necesite el cliente." #: i2p2www/pages/site/docs/tunnels/implementation.html:324 #, python-format @@ -21653,10 +22223,12 @@ msgid "" "Client peer selection is discussed further on the\n" "Peer Profiling and Selection page." msgstr "" +"La selección del par cliente se discute más profundamente en la página de perfil del par y selección." #: i2p2www/pages/site/docs/tunnels/implementation.html:329 msgid "Peer Ordering within Tunnels" -msgstr "" +msgstr "Orden de los pares dentro del túnel" #: i2p2www/pages/site/docs/tunnels/implementation.html:331 #, python-format @@ -21665,6 +22237,9 @@ msgid "" "predecessor attack\n" "(2008 update)." msgstr "" +"Los pares son ordenados dentro de los túneles para evitar el ataque del predecesor (2008 " +"update). " #: i2p2www/pages/site/docs/tunnels/implementation.html:338 msgid "" @@ -21675,6 +22250,10 @@ msgid "" "after A is always B, and the hop after\n" "B is always C." msgstr "" +"Para evitar el ataque del predecesor, la selección del túnel mantiene a " +"los pares seleccionados en estricto orden - si A, B, y C están en un " +"túnel determinado para un grupo de túneles en particular, el salto " +"después de A es siempre B, y el salto después de B siempre es C. " #: i2p2www/pages/site/docs/tunnels/implementation.html:345 msgid "" @@ -21688,6 +22267,12 @@ msgid "" "SHA256 Hash of (the peer's hash concatenated with the random key) from " "the random key" msgstr "" +"El orden está implementado generando una clave aleatoria de 32 bytes para" +" cada grupo de túneles al inicio. Los pares no deberían ser capaces de " +"adivinar el orden, un atacante podría elaborar aparte dos hashes de ruter" +" para maximizar las posibilidades de ser las dos puntas del túnel. Los " +"pares están ordenados por la distancia XOR del hash SHA256 de (el hash " +"del par concatenado con la clave aleatoria) de la clave aleatoria . " #: i2p2www/pages/site/docs/tunnels/implementation.html:360 msgid "" @@ -21696,10 +22281,13 @@ msgid "" "within a single pool but not between different pools.\n" "New keys are generated at each router restart." msgstr "" +"Ya que cada grupo de túneles utiliza una clave aleatoria diferente, el " +"orden es consistente dentro de un mismo grupo pero no entre grupos. Las " +"claves son generadas al reinicio de cada ruter." #: i2p2www/pages/site/docs/tunnels/implementation.html:367 msgid "Request delivery" -msgstr "" +msgstr "Solicitud de entrega" #: i2p2www/pages/site/docs/tunnels/implementation.html:369 #, python-format @@ -21710,6 +22298,10 @@ msgid "" "Hashing it out in Public,\n" "this is \"non-interactive\" telescopic tunnel building." msgstr "" +"Un túnel multi-salto es construido usando un solo mensaje de construcción" +" que es descifrado y enviado repetidamente. En la terminología de Hashing it out in Public, esto es una construcción " +"de túnel telescópica \"no interactiva\"." #: i2p2www/pages/site/docs/tunnels/implementation.html:376 #, python-format @@ -21727,6 +22319,14 @@ msgid "" "in\n" "the \"Hashing it out\" paper.)" msgstr "" +"Este método de preparación, envío y respuesta de la solicitud de túnel " +"está diseñado para reducir el número " +"de predecesores expuestos, cortar el número de mensajes transmitidos, " +"verificar que la conectividad es apropiada y evitar el ataque clásico de " +"conteo en la creación telescópica de los túneles tradicionales. (Este " +"método, que envía mensajes para extender un túnel a través de la parte " +"del túnel ya establecido, es llamado construcción de túnel telescópico " +"\"interactivo\" en el estudio \"Hashing it out\")" #: i2p2www/pages/site/docs/tunnels/implementation.html:387 #, python-format @@ -21735,6 +22335,8 @@ msgid "" "encryption,\n" "are specified here." msgstr "" +"Los detalles de los mensajes de peticiones y respuestas, y su cifrado, se especifican aquí." #: i2p2www/pages/site/docs/tunnels/implementation.html:392 msgid "" @@ -21750,6 +22352,13 @@ msgid "" "profile of\n" "the router in question." msgstr "" +"Los pares pueden denegar las peticiones de creación de túnel por varias " +"razones, a través de una serie de cuatro rechazos cada vez más graves: " +"rechazo propabilístico (debido a que le ruter se acerca al límite de su " +"capacidad, o en respuesta de una riada de peticiones), sobrecarga " +"transitoria, sobrecarga del ancho de banda, y fallo crítico. Cundo son " +"recibidos, estos cuatro son interpretados por el creador del túnel para " +"ayudar a ajustar su perfil a la petición del ruter." #: i2p2www/pages/site/docs/tunnels/implementation.html:401 #, python-format @@ -21757,10 +22366,12 @@ msgid "" "For more information on peer profiling, see the\n" "Peer Profiling and Selection page." msgstr "" +"Para más información sobre los perfiles del par, vea la página de perfil del par y selección." #: i2p2www/pages/site/docs/tunnels/implementation.html:407 msgid "Tunnel Pools" -msgstr "" +msgstr "Grupos de túneles" #: i2p2www/pages/site/docs/tunnels/implementation.html:409 #, python-format @@ -21782,6 +22393,16 @@ msgid "" "href=\"%(i2cp)s\">I2CP, or the router's defaults if\n" "not specified." msgstr "" +"Para permitir un funcionamiento eficiente, el ruter mantiene una serie de" +" grupos de túneles, cada uno manteniendo un conjunto de túneles usados " +"para un fin específico con su propia configuración. Cuando un túnel se " +"necesita para ese fin, el ruter selecciona aleatoriamente uno del grupo " +"apropiado. En total, hay dos grupos de túneles exploratorios - uno de " +"entrada y uno de salida - cada uno usando la configuración por defecto " +"del túnel. Además, hay un par de grupos para cada destinación local - un " +"grupo de entrada y un grupo de salida. Estos grupos usan la configuración" +" especificada elegida cuando la destinación local conecta al ruter vía I2CP, o si el ruter no especifica una por defecto." #: i2p2www/pages/site/docs/tunnels/implementation.html:421 #, python-format @@ -21797,18 +22418,25 @@ msgid "" "Configuration options are specified on the I2CP " "page." msgstr "" +"Cada grupo tiene dentro de su configuración unas pocas opciones clave, " +"que definen cuantos túneles se mantienen activos, cuantos túneles de " +"respaldo se mantienen en caso de fallo, cuanto debe durar el túnel, si " +"esos tamaños deben ser aleatorrizados, y también definen cualquier otra " +"configuración permitida cuando se configuran los túneles individuales. " +"Las opciones de configuración son especificadas en la página de I2CP." #: i2p2www/pages/site/docs/tunnels/implementation.html:431 msgid "Tunnel Lengths and Defaults" -msgstr "" +msgstr "Longitud de los túneles y valores por defecto" #: i2p2www/pages/site/docs/tunnels/implementation.html:433 msgid "On the tunnel overview page" -msgstr "" +msgstr "En la página de introducción al túnel" #: i2p2www/pages/site/docs/tunnels/implementation.html:435 msgid "Anticipatory Build Strategy and Priority" -msgstr "" +msgstr "Estrategia de construcción anticipatoria y prioridad" #: i2p2www/pages/site/docs/tunnels/implementation.html:437 msgid "" @@ -21827,6 +22455,14 @@ msgid "" "or consuming too much CPU or bandwidth creating and sending the encrypted" " build messages." msgstr "" +"La construcción de un túnel es cara, y los túneles expiran después de un " +"tiempo fijo de haber sido creados. Sin embargo, el éxito de construcción " +"de túnel puede variar enormemente según las condiciones de la red local y" +" global. Por esto, es importante mantener una estrategia de construcción " +"anticipatoria y adaptativa para asegurarse de que los túneles nuevos, " +"antes de ser usados, son construidos exitosamente, no se construyen en " +"exceso, no se construyen demasiado pronto, o consumen demasiada CPU o " +"ancho de banda al crear y enviar los mensajes de construcción cifrados." #: i2p2www/pages/site/docs/tunnels/implementation.html:448 msgid "" @@ -21840,6 +22476,14 @@ msgid "" "it starts multiple build attempts in parallel, and then\n" "will increase the number of parallel attempts if necessary." msgstr "" +"Por cada tupla {esploratorio/cliente, entrada/salida, longitud, " +"diferencia de longitud} el ruter mantiene estadísticas del tiempo " +"necesario para la construcción con éxito de un túnel. Usando estas " +"estadísticas, calcula cuando debe comenzar a intentar crear un reemplazo " +"antes de la expiración del túnel. Cuando el tiempo de expiración se " +"acerca sin un reemplazo exitoso, comienza a hacer múltiples intentos de " +"construcción en paralelo, y entonces aumentará el número de intentos en " +"paralelo si es necesario." #: i2p2www/pages/site/docs/tunnels/implementation.html:459 msgid "" @@ -21849,10 +22493,15 @@ msgid "" "Critical builds (those for exploratory tunnels, and for pools that have\n" "run out of tunnels) are prioritized." msgstr "" +"Para limitar el uso de CPU y ancho de banda, el ruter también limita el " +"número máximo de intentos de construcción pendientes a través de todos " +"los grupos. Las construcciones críticas (aquellas para los túneles " +"exploratorios, y para los grupos que se han quedado sin túneles) son " +"priorizadas." #: i2p2www/pages/site/docs/tunnels/implementation.html:468 msgid "Tunnel Message Throttling" -msgstr "" +msgstr "Límites de los mensajes de túnel" #: i2p2www/pages/site/docs/tunnels/implementation.html:470 msgid "" @@ -21882,6 +22531,20 @@ msgid "" "the \n" "normal Internet." msgstr "" +"Aunque los túneles dentro de I2P son parecidos a una red conmutada de " +"circuito, todo dentro de I2P está basado en mensajes - los túneles no son" +" más que trucos contables para ayudar a organizar el envío de mensajes. " +"No se toman suposiciones con respecto a el orden o fiabilidad de los " +"mensajes, y la retransmisiones son dejadas para los niveles superiores " +"(por ejemplo para la capa cliente de la librería de streaming de I2P) . " +"Esto permite a I2P aprovechar las técnicas de limitaciones disponibles en" +" las redes conmutadas de paquetes y en las redes conmutadas de circuito. " +"Por ejemplo, cada ruter puede hacer un seguimiento de la media cambiante " +"de cuantos datos usa cada túnel, combinar eso con todas medias usadas " +"poro otros túneles en los que participa el ruter, y ser capaz de aceptar " +"o denegar las peticiones de participación adicional de túnel basándose en" +" su capacidad y utilización. Por otro lado, cada ruter puede simplemente " +"denegar los mensajes que están más allá de su capacidad." #: i2p2www/pages/site/docs/tunnels/implementation.html:486 msgid "" @@ -21906,10 +22569,25 @@ msgid "" "network cost of\n" "dropping those messages is lower." msgstr "" +"En la implementación actual, los ruters implementan una estrategia de " +"rechazo temprano ponderada aleatoria, weighted random early discard " +"(WRED) strategy. Para todos los túneles participantes (participante " +"interno, puerta de salida de entrada y punto final de salida), el ruter " +"empezará a denegar una parte de los mensajes según llegue a los límites " +"del ancho de banda. Cuando el tráfico llega cerca, o excede los límites, " +"se rechazan más mensajes. Para un participante interno, todos los " +"mensajes están fragmentados y rellenados y por lo tanto son del mismo " +"tamaño. En la puerta de salida de entrara y en el punto final de salida, " +"sin embargo, la decisión de rechazo se hace en el mensaje completo " +"(junto), y el tamaño del mensaje es tomado en cuenta. Es más fácil que " +"sean eliminados los mensajes más largos. Además, es más fácil que los " +"mensajes sean rechazados en el punto final de salida que en la puerta de " +"salida de entrada, ya que esos mensajes no están tan \"a lo lejos\" en su" +" camino y el coste del rechazo de esos mensajes es menor." #: i2p2www/pages/site/docs/tunnels/implementation.html:504 msgid "Mixing/batching" -msgstr "" +msgstr "Mezcla/lotes" #: i2p2www/pages/site/docs/tunnels/implementation.html:506 msgid "" @@ -21924,10 +22602,16 @@ msgid "" "All of this is left as unknown, to be worked out for a distant future " "release." msgstr "" +"¿Qué estrategias pueden usarse en la puerta de salida y en cada salto " +"para retrasar, re-ordenar, re-enrutar o rellenar los mensajes? ¿En qué " +"medida debe hacerse esto automáticamente, que configuraciones debemos " +"poner por túnel o por salto, y cómo debe controlar esta operación el " +"creador del túnel (y por lo tanto el usuario)? Todo esto se queda en el " +"aire, para ser estudiado en una versión futura distante." #: i2p2www/pages/site/docs/tunnels/implementation.html:515 msgid "Padding" -msgstr "" +msgstr "Relleno" #: i2p2www/pages/site/docs/tunnels/implementation.html:516 msgid "" @@ -21940,6 +22624,11 @@ msgid "" "to end \n" "messages, they may be padded as part of the garlic wrapping." msgstr "" +"Las estrategias de relleno pueden ser usadas en varios niveles, evitando " +"la exposición del tamaño de los mensajes a los adversarios. El tamaño " +"actual fijo del túnel es de 1024 bytes. Pero los propios mensajes " +"fragmentados no están rellenados por el túnel, por lo que en lo mensajes " +"de fin a fin, deben ser rellenados como parte del envase garlic." #: i2p2www/pages/site/docs/tunnels/implementation.html:526 msgid "" @@ -21947,10 +22636,14 @@ msgid "" "and prevention of network congestion collapse.\n" "The current WRED strategy should be carefully evaluated and improved." msgstr "" +"Las estrategias WRED tienen un impacto importante en el rendimiento de " +"fin a fin, y en la prevención del colapso de la congestión de la red. " +"Esta estrategia WRED actual debería ser evaluada cuidadosamente y " +"mejorada." #: i2p2www/pages/site/docs/tunnels/old-implementation.html:2 msgid "Old Tunnel Implementation" -msgstr "" +msgstr "Implementación vieja del túnel" #: i2p2www/pages/site/docs/tunnels/old-implementation.html:5 #, python-format @@ -21958,6 +22651,8 @@ msgid "" "Note: Obsolete - NOT used! Replaced in 0.6.1.10 - see here for the current implementation" msgstr "" +"Nota: Obsoleta - ¡NO se usa! Reemplazada en la versión 0.6.1.10 - vea esto para la implementación actual." #: i2p2www/pages/site/docs/tunnels/unidirectional.html:7 msgid "" @@ -21965,14 +22660,16 @@ msgid "" "tunnels.\n" "For further infomrmation see:" msgstr "" +"Esta página describe el origen y el diseño de los túneles " +"unidireccionales de I2P. Para más información vea:" #: i2p2www/pages/site/docs/tunnels/unidirectional.html:13 msgid "Tunnel overview page" -msgstr "" +msgstr "Página de la introducción al túnel" #: i2p2www/pages/site/docs/tunnels/unidirectional.html:19 msgid "Tunnel design discussion" -msgstr "" +msgstr "Discusión sobre el diseño de túnel" #: i2p2www/pages/site/docs/tunnels/unidirectional.html:21 msgid "Peer selection" @@ -21980,11 +22677,11 @@ msgstr "Selección de pares" #: i2p2www/pages/site/docs/tunnels/unidirectional.html:23 msgid "Meeting 125 (~13:12-13:30)" -msgstr "" +msgstr "Reunión 125 (~13:12-13:30)" #: i2p2www/pages/site/docs/tunnels/unidirectional.html:28 msgid "Review" -msgstr "" +msgstr "Revisión" #: i2p2www/pages/site/docs/tunnels/unidirectional.html:30 msgid "" @@ -22002,6 +22699,21 @@ msgid "" "Having the response come back along a different path arguably \n" "makes it harder." msgstr "" +"Aunque no estamos al tanto de investigación publicada alguna sobre las \n" +"ventajas de túneles unidireccionales, estos parece que hacen más difícil" +" \n" +"detectar un patrón de solicitud/respuesta, lo cual es bastante posible " +"que\n" +"se detecte sobre un túnel bidireccional. Varias aplicaciones y " +"protocolos, \n" +"notablemente HTTP, transfieren datos de esta manera. Hacer que el tráfico" +"\n" +"siga la misma ruta hacia su destino y de vuelta puede ponerlo más fácil \n" +"para un atacante que sólo disponga de datos tiempo y de volumen de " +"tráfico \n" +"para inferir la ruta que está tomando un túnel. Hacer que la respuesta " +"vuelva \n" +"a través de otra ruta es razonable que lo haga más difícil." #: i2p2www/pages/site/docs/tunnels/unidirectional.html:45 msgid "" @@ -22019,6 +22731,19 @@ msgid "" "the response would come back through one or more different inbound " "tunnels." msgstr "" +"Cuando tratamos con un adversario interno o con la mayoría de adversarios" +" \n" +"externos, los túneles unidireccionales de I2P exponen como mucho la mitad" +" \n" +"de los datos de tráfico que se expondrían con circuitos bidireccionales \n" +"simplemente observando los propios flujos - una solicitud y respuesta " +"HTTP \n" +"seguiría la misma ruta en Tor, mientras que en I2P los paquetes que \n" +"componen la solicitud saldrían a través de uno o más túneles de salida, y" +" \n" +"los paquetes que componen la respuesta retornarían a traves de uno o más" +" \n" +"túneles de entrada diferentes." #: i2p2www/pages/site/docs/tunnels/unidirectional.html:55 msgid "" @@ -22046,10 +22771,34 @@ msgid "" "(peer selection and ordering strategies)\n" "should minimize the worries of the predecessor attack." msgstr "" +"La estrategia de usar dos túneles separados para la comunicación de \n" +"entrada y de salida no es la única técnica disponible, y tiene " +"implicaciones \n" +"en el anonimato. En el lado positivo, al usar túneles separados se " +"reducen \n" +"los datos de tráfico expuestos al análisis de los participantes en un " +"túnel - \n" +"por ejemplo, los pares (`peers´) en un túnel de entrada desde un " +"navegador \n" +"web sólo verían el tráfico de un HTTP GET, mientras que los pares en un \n" +"túnel de entrada verían la carga entregada a través del túnel. Con " +"túneles \n" +"bidireccionales, todos los participantes tendrían acceso al hecho de que," +" \n" +"por ejemplo, 1 KB fuera enviado en una dirección, y después 100 KB en la" +" \n" +"otra. En el lado negativo, usar túneles unidireccionales significa que " +"hay dos \n" +"conjuntos de pares (`peers`) precisan ser perfilados y fiscalizados, y " +"que se debe tener una precaución adicional para afrontar el incremento de" +" velocidad que se ha producido en los ataques de predecesor. El proceso " +"de depositado (`pooling`) y erigido (selección de pares y estrategias de " +"ordenación) debería minimizar las preocupaciones por los ataques de " +"predecesor." #: i2p2www/pages/site/docs/tunnels/unidirectional.html:73 msgid "Anonymity" -msgstr "" +msgstr "Anonimato" #: i2p2www/pages/site/docs/tunnels/unidirectional.html:75 #, python-format @@ -22058,6 +22807,9 @@ msgid "" "declared that I2P's unidirectional tunnels \"seems to be a bad design " "decision\"." msgstr "" +"Un estudio reciente de Hermann and Grothoff decía" +" que los túneles unidireccionales de I2p \"parecían ser una mala decisión" +" de diseño\"" #: i2p2www/pages/site/docs/tunnels/unidirectional.html:80 msgid "" @@ -22070,6 +22822,11 @@ msgid "" "disadvantage, at least\n" "with long-living eepsites." msgstr "" +"El punto principal del estudio es que de-anonimizar los túneles " +"unidireccionales toma más tiempo, lo que es una ventaja, pero que el " +"atacante puede estar más seguro en el caso unidireccional. Por lo tanto, " +"el estudio dice que no es ninguna ventaja, sino una desventaja, al menos " +"para las eepsites de vida larga." #: i2p2www/pages/site/docs/tunnels/unidirectional.html:88 msgid "" @@ -22080,6 +22837,10 @@ msgid "" "attack in the paper\n" "with attacks on a bidirectional tunnel architecture." msgstr "" +"Esta conclusión no está totalmente confirmada en el estudio. Los túneles " +"unidireccionales mitigan claramente otros ataques y no está claro si es " +"inteligente sacrificar el riesgo del ataque del estudio por los riesgos " +"de la arquitectura de túneles bidireccionales." #: i2p2www/pages/site/docs/tunnels/unidirectional.html:95 msgid "" @@ -22092,6 +22853,13 @@ msgid "" "close \n" "may be good enough, or time may be more important." msgstr "" +"Esta conclusión está basada en una certeza arbitraria vs. la medición del" +" tiempo (compensación) que no es apreciable en la mayoría de los casos. " +"Por ejemplo, alguien podría hacer una lista de IPs y entonces expedir " +"citaciones a cada uno. O el atacante podría hacer DDos a cada uno por " +"turnos y a través de un simple ataque de intersección ver si la eepsite " +"se cae o si se ralentiza. Estar cerca puede ser lo suficientemente bueno," +" o el tiempo puede ser más importante." #: i2p2www/pages/site/docs/tunnels/unidirectional.html:104 msgid "" @@ -22103,6 +22871,10 @@ msgid "" "methods \n" "available for final confirmation." msgstr "" +"La conclusión está basada en una forma de medir específica de la " +"importancia de la certeza vs. el tiempo, y esa medida puede estar " +"equivocada, y es definitivamente discutible, especialmente en el mundo " +"real con citaciones, órdenes de registro y otros métodos disponibles." #: i2p2www/pages/site/docs/tunnels/unidirectional.html:111 msgid "" @@ -22116,6 +22888,12 @@ msgid "" "done that analysis, if it's even possible to do it\n" "effectively." msgstr "" +"Un análisis completo de las compensaciones de los túneles " +"unidireccionales vs. bidireccionales está claramente fuera del alcance " +"del estudio, y no se ha hecho en ningún sitio. Por ejemplo, ¿cómo se " +"compara este ataque con los numerosos posibles ataques publicados sobre " +"la red onion? Claramente los autores no han hecho ese análisis, si " +"pudiese ser posible hacerlo efectivamente." #: i2p2www/pages/site/docs/tunnels/unidirectional.html:120 msgid "" @@ -22144,6 +22922,21 @@ msgid "" "really a \n" "reason?" msgstr "" +"Tor utiliza túneles bidireccionales y tiene mucha revisión académica. I2P" +" usa túneles unidireccionales y tiene muy poca revisión. ¿Significa la " +"falta de estudios defendiendo los túneles unidireccionales que son una " +"mala elección de diseño, o sólo necesita más estudio? Contra los ataques " +"de tiempo y los ataques distribuidos para I2P y tor es difícil defenderse" +" para ambos. El intento de diseño (vea las referencias arriba) era que " +"los túneles de diseño eran más resistentes a los ataques de tiempo. Sin " +"embargo, el estudio presenta un tipo diferente de ataque de tiempo. ¿Es " +"este ataque, innovador, suficiente para calificar la arquitectura de " +"túneles de I2P (y por lo tanto a I2P al completo) de un \"mal diseño\", y" +" por implicación, claramente inferior a Tor, o simplemente es una " +"alternativa de diseño que claramente necesita más investigación y " +"análisis? Hay otras razones para considerar a I2p inferior a Tor y a " +"otros proyectos (el pequeño tamaño de la red, falta de fondos, falta de " +"revisión) ¿pero son los túneles unidireccionales de verdad una razón?" #: i2p2www/pages/site/docs/tunnels/unidirectional.html:137 msgid "" @@ -22152,4 +22945,9 @@ msgid "" "tunnels are unequivocally inferior to bidirectional tunnels\", yet this \n" "conclusion is not supported by the paper." msgstr "" +"En resumen, la \"mala decisión de diseño\" parece (ya que el estudio no " +"califica a los túneles bidireccionales de \"malos\") otra forma de decir " +"que los túneles \"unidireccionales son inequívocamente inferiores a los " +"túneles bidireccionales\", aunque esta conclusión no está demostrada en " +"el estudio." diff --git a/i2p2www/translations/es/LC_MESSAGES/get-involved.po b/i2p2www/translations/es/LC_MESSAGES/get-involved.po index fcac0a42..72d9250a 100644 --- a/i2p2www/translations/es/LC_MESSAGES/get-involved.po +++ b/i2p2www/translations/es/LC_MESSAGES/get-involved.po @@ -14,8 +14,8 @@ msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" "POT-Creation-Date: 2013-09-16 12:59+0000\n" -"PO-Revision-Date: 2013-07-11 10:13+0000\n" -"Last-Translator: trolly\n" +"PO-Revision-Date: 2013-09-17 03:30+0000\n" +"Last-Translator: strel \n" "Language-Team: Spanish " "(http://www.transifex.com/projects/p/I2P/language/es/)\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" @@ -35,6 +35,8 @@ msgid "" "The details of how you\n" "can make your contribution are provided below." msgstr "" +"¡Gracias por su interés en contribuir a I2P! Los detalles de como puede " +"hacer una contribución se indican más abajo." #: i2p2www/pages/site/get-involved/donate.html:11 #: i2p2www/pages/site/get-involved/donate.html:27 @@ -47,47 +49,53 @@ msgid "" "and leave eche|on a note if you'd like your donation to be\n" "mentioned on the I2P webpage." msgstr "" +"Desde %(date)s, eche|on ha estado ejecutando una cuenta %(cointype)s para el proyecto I2P. Si quisiera " +"donar usando \n" +"%(cointype)s, tan solo transfiera la cantidad de moneda que desee a la \n" +"cuenta %(account)s y deje a eche|on una nota si desea que su \n" +"donación sea mencionada en la página web de I2P." #: i2p2www/pages/site/get-involved/donate.html:22 #: i2p2www/pages/site/get-involved/donate.html:38 msgid "For easy usage, use the QR code below!" -msgstr "" +msgstr "¡Para usarla con facilidad, utilice el código QR de debajo!" #: i2p2www/pages/site/get-involved/donate.html:44 #, python-format msgid "You can donate direct via PayPal to the account \"%(account)s\"." -msgstr "" +msgstr "Puede donar directamente vía PayPal a las cuentas \"%(account)s\"." #: i2p2www/pages/site/get-involved/donate.html:50 msgid "One time donation:" -msgstr "" +msgstr "Una sola donación:" #: i2p2www/pages/site/get-involved/donate.html:64 msgid "Donate 10 €/month for 12 months:" -msgstr "" +msgstr "Donar 10 €/mes por 12 meses:" #: i2p2www/pages/site/get-involved/donate.html:72 #: i2p2www/pages/site/get-involved/donate.html:84 #: i2p2www/pages/site/get-involved/donate.html:96 #: i2p2www/pages/site/get-involved/donate.html:108 msgid "I2P donation " -msgstr "" +msgstr "Donación I2P" #: i2p2www/pages/site/get-involved/donate.html:78 msgid "Donate 20 €/month for 12 months:" -msgstr "" +msgstr "Donar 20 €/mes durante 12 meses:" #: i2p2www/pages/site/get-involved/donate.html:90 msgid "Donate 30 €/month for 12 months:" -msgstr "" +msgstr "Donar 30 €/mes durante 12 meses:" #: i2p2www/pages/site/get-involved/donate.html:102 msgid "Donate 50 €/month for 12 months:" -msgstr "" +msgstr "Donar 50 €/mes durante 12 meses:" #: i2p2www/pages/site/get-involved/donate.html:117 msgid "Flattr this" -msgstr "" +msgstr "Donar con " #: i2p2www/pages/site/get-involved/donate.html:122 msgid "" @@ -95,6 +103,8 @@ msgid "" "mail is also available. But it is less secure\n" "as the envelope can be lost on the way to us." msgstr "" +"Si desea permanecer más o menos anónimo, puede enviar el dinero por " +"correo. Pero es menos seguro ya que la carta puede perderse en el camino." #: i2p2www/pages/site/get-involved/donate.html:126 #, python-format @@ -104,6 +114,10 @@ msgid "" "donation\">%(email)s\n" " and you'll receive an email with instructions detailing how to proceed." msgstr "" +"Si desea donar a través de correo caracol, snail mail, envíe un email a " +"%(email)s y recibirá un email con las instrucciones de " +"como debe proceder." #: i2p2www/pages/site/get-involved/donate.html:131 #, python-format @@ -113,10 +127,13 @@ msgid "" "given in support of the I2P Project at the hall of fame." msgstr "" +"Mientras tanto, puede echar una ojeada a las generosas donaciones que han" +" sido dadas para el soporte del proyecto I2P en el salón de la fama." #: i2p2www/pages/site/get-involved/index.html:2 msgid "Get Involved!" -msgstr "" +msgstr "¡Involúcrese!" #: i2p2www/pages/site/get-involved/index.html:4 msgid "We need your help!" @@ -238,7 +255,7 @@ msgstr "" #: i2p2www/pages/site/get-involved/index.html:53 msgid "Coding" -msgstr "" +msgstr "Programando" #: i2p2www/pages/site/get-involved/index.html:54 #, python-format @@ -1431,6 +1448,16 @@ msgid "" "For better integration all datastorage participants could serve that " "eepsite." msgstr "" +"El eepsite servido desde el almacén de datos de I2P despliega un " +"enrutador\n" +"('router') I2P para enviar eepsites desde el almacén de datos I2P. Todos " +"los\n" +"ficheros para los eepsites han de ser guardados dentro del almacén de " +"datos\n" +"y son tomados desde este.\n" +"Extensión:\n" +"Para mayor integración todos los participes del almacen de datos podrían\n" +"servier ese eepsite." #: i2p2www/pages/site/get-involved/bounties/datastore.html:36 msgid "" @@ -1616,7 +1643,7 @@ msgstr "Cliente Bitcoin para I2P" #: i2p2www/pages/site/get-involved/bounties/index.html:68 msgid "Done, phase of verification" -msgstr "" +msgstr "Hecho, fase de verificación" #: i2p2www/pages/site/get-involved/bounties/index.html:74 msgid "Unit tests and Multi-router Simulation" @@ -1632,7 +1659,7 @@ msgstr "Recompensas paradas, paradas a causa de la desaparición de jrandom." #: i2p2www/pages/site/get-involved/bounties/index.html:101 msgid "Bundling bounties" -msgstr "" +msgstr "Ordenando las recompensas" #: i2p2www/pages/site/get-involved/bounties/index.html:102 msgid "Proposed" @@ -1657,19 +1684,19 @@ msgstr "Almacenamiento de datos sobre I2P." #: i2p2www/pages/site/get-involved/bounties/index.html:129 #: i2p2www/pages/site/get-involved/bounties/russian-trans.html:3 msgid "Russian translation" -msgstr "" +msgstr "Traducción al ruso" #: i2p2www/pages/site/get-involved/bounties/index.html:134 msgid "Swarming file transfer" -msgstr "" +msgstr "Agrupando para la transferencia de archivo" #: i2p2www/pages/site/get-involved/bounties/index.html:139 msgid "Streaming library window size" -msgstr "" +msgstr "Tamaño de la ventana de la librería de streaming" #: i2p2www/pages/site/get-involved/bounties/index.html:144 msgid "IRC connect time monitor" -msgstr "" +msgstr "Monitor del tiempo de conexión del IRC" #: i2p2www/pages/site/get-involved/bounties/index.html:149 msgid "Unit tests (part 1)" @@ -1702,6 +1729,10 @@ msgid "" "To claim this bounty, the I2P router needs to run full on native\n" "IPv6 connections like it does on IPv4." msgstr "" +"Por el futuro de I2P y para atraer a más gente a I2P, yo ofrezco una " +"recompensa por el soporte IPv6 en I2P. Para obtener esta recompensa, los " +"ruters de I2P deben funcionar nativa y completamente con conexiones IPv6 " +"como lo hacen con conexiones IPv4." #: i2p2www/pages/site/get-involved/bounties/ipv6.html:15 #: i2p2www/pages/site/get-involved/bounties/vuze-plugin.html:20 @@ -1712,14 +1743,17 @@ msgid "" "and \n" "free to distribute)." msgstr "" +"Para que las recompensas sean declaradas hechas y pagadas, necesitamos el" +" pluguin y las fuentes. El código y las fuentes tienen que ser liberados " +"con licencias libres (libre para ser cambiado y distribuido)." #: i2p2www/pages/site/get-involved/bounties/netdb.html:2 msgid "NetDB Backend" -msgstr "" +msgstr "Sistema NetDB" #: i2p2www/pages/site/get-involved/bounties/netdb.html:3 msgid "netDB backend" -msgstr "" +msgstr "Sistema netDB" #: i2p2www/pages/site/get-involved/bounties/netdb.html:7 msgid "" @@ -1728,16 +1762,22 @@ msgid "" "reduce attack surface and solve the scalability issue for the \n" "coming years." msgstr "" +"La implementación actual de NetDB (llamada sistema Floodfill) necesita " +"ser extendida con otro sistema para mejorar la seguridad, reducir los " +"ataques de superficie u arreglar los problemas de escalabilidad para los " +"próximos años." #: i2p2www/pages/site/get-involved/bounties/netdb.html:14 msgid "" "A solution likely based on a DHT will be investigated and \n" "finally implemented." -msgstr "" +msgstr "Se investigará e y finalmente implementará una solución basada en DHT." #: i2p2www/pages/site/get-involved/bounties/russian-trans.html:2 msgid "Bounty russian translation of webpage and router console" msgstr "" +"Recompensa por la traducción al ruso de la página web y la consola del " +"ruter." #: i2p2www/pages/site/get-involved/bounties/russian-trans.html:6 msgid "" @@ -1745,12 +1785,17 @@ msgid "" "into I2P a anonymous donator set out the bounty for translation\n" "of the I2P web page and I2P router console into russian language." msgstr "" +"Para mejorar el uso de I2P y atraer más gente a I2P, un donante anónimo " +"ha creado una recompensa para la traducción al ruso de la web de I2P y la" +" consola del ruter." #: i2p2www/pages/site/get-involved/bounties/russian-trans.html:17 msgid "" "For collecting the bounty of $115 USD you need to translate the following" " pages:" msgstr "" +"Para recibir la recompensa de 115 dólares tiene que traducir estas " +"páginas:" #: i2p2www/pages/site/get-involved/bounties/russian-trans.html:30 msgid "" @@ -1758,18 +1803,20 @@ msgid "" " needs\n" "to be translated to collect the bounty of $115 USD." msgstr "" +"La parte 2 es la traducción del a consola del ruter. Tiene que traducir " +"la consola del ruter completa para recibir la recompensa de 115 dólares." #: i2p2www/pages/site/get-involved/bounties/russian-trans.html:37 msgid "Judge is the russian donor." -msgstr "" +msgstr "Judge es el donante ruso." #: i2p2www/pages/site/get-involved/bounties/silc.html:2 msgid "Bounty migrate I2P IRC to SILC" -msgstr "" +msgstr "Recompensa por migrar el IRC I2P a SILC" #: i2p2www/pages/site/get-involved/bounties/silc.html:3 msgid "I2P silc server" -msgstr "" +msgstr "Servidor I2P silc" #: i2p2www/pages/site/get-involved/bounties/silc.html:7 msgid "" @@ -1778,6 +1825,10 @@ msgid "" "This will allow people to send files over their messaging servers and " "have intrinsic security built into the protocol." msgstr "" +"Para el futuro y para atraer a más gente a I2P, se ha creado una " +"recompensa para configurar y mantener un servidor SILC I2P. Esto " +"permitirá a la gente enviar archivos sobre los servidores de mensajes y " +"tener asegurada la privacidad dentro del propio protocolo." #: i2p2www/pages/site/get-involved/bounties/silc.html:12 msgid "" @@ -1785,16 +1836,20 @@ msgid "" " payed. \n" "A second server should be set up, to." msgstr "" +"El servidor silc tiene que ser configurado y funcionar durante 3 meses " +"para ser pagado. Se debería también configurar un segundo servidor." #: i2p2www/pages/site/get-involved/bounties/silc.html:16 msgid "" "Bounty was withdrawn and money donated to returningnovice and general " "fund." msgstr "" +"La recompensa ha sido retirada y donada a returningnovice y al fondo " +"general." #: i2p2www/pages/site/get-involved/bounties/silc.html:22 msgid "Judge is An Anonymous Secret Society, society@mail.i2p." -msgstr "" +msgstr "Judge es una sociedad secreta anónima, society@mail.i2p." #: i2p2www/pages/site/get-involved/bounties/syndie-2012.html:2 #: i2p2www/pages/site/get-involved/bounties/syndie-2012.html:3 @@ -1809,6 +1864,10 @@ msgid "" "can overcome some of these limits and provide better anonymity\n" "for people who really need it." msgstr "" +"Además de usar I2P, queremos fomentar que los usuarios tengan más en " +"cuenta el anonimato y la privacidad. Ya que I2P es una red baja latencia " +"con límites naturales, el software SYNDIE puede vencer esos límites y " +"provver más anonimato para la gente que relamente lo necesita." #: i2p2www/pages/site/get-involved/bounties/syndie-2012.html:14 msgid "" @@ -1818,6 +1877,11 @@ msgid "" "some enhancements and a better GUI for users to work with it.\n" "Current bounty sum is 50 Bitcoin." msgstr "" +"El proyecto syndie ha estado en desarrollo por demasiado tiempo (5 años)." +" Para conseguir una nueva y fresca versión con los errores arreglados " +"hemos creado esta recompensa. Además Syndie necesita algunas mejoras y " +"una GUI mejor con la que trabajar. La recompensa actual es de 50 " +"bitcoins." #: i2p2www/pages/site/get-involved/bounties/syndie-2012.html:22 msgid "" @@ -1827,14 +1891,19 @@ msgid "" "As a result of this work, the bounty sum was reduced and\n" "the withdrawn money moved to the IPv6 bounty." msgstr "" +"Las últimas mejoras de Syndie en el código han mejorado dramáticamente la" +" mejora de la aplicación. Se ha creado un nuevo paquete con arreglos y se" +" ha puesto a disposición en varias páginas. Como resultado de este " +"trabajo, la cantidad de la recompensa fue reducida y el dinero retirado " +"se movido a la recompensa de IPv6." #: i2p2www/pages/site/get-involved/bounties/unit-tests.html:2 msgid "Bounty unittests" -msgstr "" +msgstr "Recompensa por unittests" #: i2p2www/pages/site/get-involved/bounties/unit-tests.html:3 msgid "unit test" -msgstr "" +msgstr "unit test" #: i2p2www/pages/site/get-involved/bounties/unit-tests.html:7 msgid "" @@ -1850,12 +1919,25 @@ msgid "" "new devs to get a good overview of I2P code and coding. A good job\n" "for college students, interns or anyone who is just interested." msgstr "" +"Para mejorar el mantenimiento de I2P, queremos un conjunto de unit tests " +"automáticos para el código crítico. Aunque ya tenemos algunos unit tests," +" son ad-hoc y están parcialmente sin terminar. Esta recompensa es para " +"alguien que compruebe los tests existentes y los mueva a jUnit, " +"automatice su ejecución, los amplíe para mejorar la cobertura sobre el " +"código, y lo publique el reporte online. Es un esfuerzo enorme, pero " +"puede romperse en fases, listadas más abajo (la fase 2 debe hacerse " +"primero, pero las demás fases pueden hacerse en cualquier orden). Ya que " +"este trabajo necesita leer el código, es un buen punto de inicio para los" +" nuevos desarrolladores echarle el ojo al código de I2P. Es un buen " +"trabajo para estudiantes o cualquiera interesado." #: i2p2www/pages/site/get-involved/bounties/unit-tests.html:20 msgid "" "Take care! Jobs and bounties shuffled a bit!\n" "Phase 6,7 and 8 are still open!" msgstr "" +"¡Tenga cuidad! ¡Los trabajos y recompensas han cambiado un poco! ¡Las " +"fases 6,7 y 8 están aun abiertas!" #: i2p2www/pages/site/get-involved/bounties/unit-tests.html:26 #: i2p2www/pages/site/get-involved/bounties/unit-tests.html:40 @@ -1867,11 +1949,11 @@ msgstr "" #: i2p2www/pages/site/get-involved/bounties/unit-tests.html:112 #, python-format msgid "Phase %(phase)s:" -msgstr "" +msgstr "Fase %(phase)s:" #: i2p2www/pages/site/get-involved/bounties/unit-tests.html:27 msgid "CI jenkins and IRC bot" -msgstr "" +msgstr "CI jenkins e IRC bot" #: i2p2www/pages/site/get-involved/bounties/unit-tests.html:28 #: i2p2www/pages/site/get-involved/bounties/unit-tests.html:42 @@ -1883,11 +1965,11 @@ msgstr "" #: i2p2www/pages/site/get-involved/bounties/unit-tests.html:114 #, python-format msgid "Bounty: %(euro)s €" -msgstr "" +msgstr "Recompensa: %(euro)s €" #: i2p2www/pages/site/get-involved/bounties/unit-tests.html:29 msgid "server runs and this section is blocked" -msgstr "" +msgstr "el servidor ya se ejecuta y esta rección está bloqueada." #: i2p2www/pages/site/get-involved/bounties/unit-tests.html:31 msgid "" @@ -1897,15 +1979,20 @@ msgid "" "results of build tests.
    \n" "The server needs to be run long term." msgstr "" +"Para obtener esta recompensa, un servidor de integración continuo " +"(Jenkins, antes se llamaba Hudson) debe configurarse y un bot IRC debe " +"configurarse y conectarse al canal #i2p-dev en la red IRC2p para poder " +"mostrar los resultados de las pruebas de compilación.
    \n" +"Este servidor debe ejecutarse por largo tiempo." #: i2p2www/pages/site/get-involved/bounties/unit-tests.html:41 msgid "Check existing SDK tests" -msgstr "" +msgstr "Comprobar las pruebas del SDK existentes" #: i2p2www/pages/site/get-involved/bounties/unit-tests.html:43 #: i2p2www/pages/site/get-involved/bounties/unit-tests.html:69 msgid "paid to str4d" -msgstr "" +msgstr "pagado a str4d" #: i2p2www/pages/site/get-involved/bounties/unit-tests.html:45 #, python-format @@ -1918,45 +2005,57 @@ msgid "" "must be capable of generating test status results as a web page, \n" "which will be published online." msgstr "" +"Para obtener esta recompensa el SDK debe ser comprobado y hacer que " +"funcione de nuevo. Debe ser integrado dentro de los scripts de " +"compilación de ant (\"ant test\") y unido con una herramienta de " +"cobertura (por ejemplo Clover). El script ant " +"debe ser capaz de generar resultados de pruebas de estado como una página" +" web, que se publicará online." #: i2p2www/pages/site/get-involved/bounties/unit-tests.html:56 msgid "SDK test coverage" -msgstr "" +msgstr "Cobertura de tests del SDK" #: i2p2www/pages/site/get-involved/bounties/unit-tests.html:58 #: i2p2www/pages/site/get-involved/bounties/unit-tests.html:80 msgid "paid to unittests dev team" -msgstr "" +msgstr "pagado al grupo de desarrollo de unittests" #: i2p2www/pages/site/get-involved/bounties/unit-tests.html:60 msgid "" "To collect this bounty, the automated unit tests of the SDK \n" "(i2p/core/java/src) must work again." msgstr "" +"Para obtener esta recompensa, los unit tests automáticos del SDK " +"(i2p/core/java/src) tienen que funcionar de nuevo." #: i2p2www/pages/site/get-involved/bounties/unit-tests.html:67 msgid "Router test migration" -msgstr "" +msgstr "Migración de las pruebas del ruter" #: i2p2www/pages/site/get-involved/bounties/unit-tests.html:71 msgid "" "As with phase 2, the existing unit tests for the router must be\n" "moved over to the automated system." msgstr "" +"Como en la fase 2, los unit tests existentes del ruter tienen que ser " +"movidos a un sistema automático." #: i2p2www/pages/site/get-involved/bounties/unit-tests.html:78 msgid "Router test coverage" -msgstr "" +msgstr "Covertura para los tests del ruter." #: i2p2www/pages/site/get-involved/bounties/unit-tests.html:82 msgid "" "To collect this bounty, the automated unit tests of the router \n" "(i2p/router/java/src) must work again." msgstr "" +"Para obtener esta recompensa, los unit tests automáticos del ruter " +"(i2p/core/java/src) tienen que funcionar de nuevo." #: i2p2www/pages/site/get-involved/bounties/unit-tests.html:89 msgid "Streaming lib tests" -msgstr "" +msgstr "Tests de la libreriá de streaming" #: i2p2www/pages/site/get-involved/bounties/unit-tests.html:94 msgid "" @@ -1964,24 +2063,30 @@ msgid "" "measured code coverage of 90% of the streaming lib \n" "(i2p/apps/ministreaming/ and i2p/apps/streaming/)." msgstr "" +"Para hacerse con esta recompensa, un nuevo grupo de tests de unidad \n" +"debe satisfacer una covertura de código determinada de 90% de la \n" +"librería streaming (i2p/apps/ministreaming/ y i2p/apps/streaming/)." #: i2p2www/pages/site/get-involved/bounties/unit-tests.html:102 msgid "Unit tests coverage" -msgstr "" +msgstr "Covertura de unit tests" #: i2p2www/pages/site/get-involved/bounties/unit-tests.html:106 msgid "" "To collect this bounty, all above unit tests must meet the 100%\n" "coverage marker (except for log statements)." msgstr "" +"Para hacerse con esta recompensa, todos los tests de unidad \n" +"anteriores deben satisfacer la marca de covertura 100% \n" +"(excepto para las entradas de registro (`log`)." #: i2p2www/pages/site/get-involved/bounties/unit-tests.html:113 msgid "MultiRouter simulation" -msgstr "" +msgstr "Simulación multiruter" #: i2p2www/pages/site/get-involved/bounties/unit-tests.html:115 msgid "will be split in more sub-tasks" -msgstr "" +msgstr "será dividido en más sub-tareas" #: i2p2www/pages/site/get-involved/bounties/unit-tests.html:117 msgid "" @@ -1990,20 +2095,26 @@ msgid "" "lots of routers in memory on a single machine. This bounty will\n" "be split in more fine grained subworks." msgstr "" +"Para obtener esta recompensa, debe comprobarse y hacer funcionar de nuevo" +" la ya existente simulación multi-ruter en la memoria, además de poder " +"simular muchos ruters en la memoria de una única máquina. Esta recompensa" +" se partirá en otros trabajos menores." #: i2p2www/pages/site/get-involved/bounties/unit-tests.html:126 msgid "" "Judge on all these works is the donor and donor decides if a phase is\n" "called succesfull done and money can be paid." msgstr "" +"El jurado de estas donaciones es el que decide, y el que dona decide si " +"la fase se ha hecho exitosamente y el dinero puede pagarse." #: i2p2www/pages/site/get-involved/bounties/vuze-plugin.html:2 msgid "Bounty I2P vuze plugin" -msgstr "" +msgstr "Rcompensa por el pluguin I2P vuze" #: i2p2www/pages/site/get-involved/bounties/vuze-plugin.html:3 msgid "vuze plugin" -msgstr "" +msgstr "pluguin vuze" #: i2p2www/pages/site/get-involved/bounties/vuze-plugin.html:6 msgid "" @@ -2018,10 +2129,17 @@ msgid "" "It should work with *.b32.i2p destinations as with signed (516++ bits) \n" "destinations." msgstr "" +"Para mejorar el suso de I2P y atraer a más usuarios al uso de torrents en" +" I2P creo una recompensa por un pluguin de vuze que funcione. El pluguin " +"tiene que ser oficial y debe aparecer en la web oficial de de vuze. Debe " +"ser fácil de instalar y utilizar, y funcionar suave y sin problemas. La " +"configuración debe ser sencillas para la gente nueva y debe proveer " +"anonimato fácilmente. Debe funcionar con destinaciones b32 y con " +"destinaciones firmadas (516++ bits)." #: i2p2www/pages/site/get-involved/develop/applications.html:2 msgid "Application Development" -msgstr "" +msgstr "Desarrollo de palicaciones " #: i2p2www/pages/site/get-involved/develop/applications.html:3 msgid "May 2013" @@ -2029,7 +2147,7 @@ msgstr "Mayo de 2013" #: i2p2www/pages/site/get-involved/develop/applications.html:6 msgid "Application Development Guide" -msgstr "" +msgstr "Guía de desarrollo de aplicaciones" #: i2p2www/pages/site/get-involved/develop/applications.html:8 msgid "Contents" @@ -2038,22 +2156,22 @@ msgstr "Contenido" #: i2p2www/pages/site/get-involved/develop/applications.html:10 #: i2p2www/pages/site/get-involved/develop/applications.html:16 msgid "Why write I2P-specific code?" -msgstr "" +msgstr "¿Porqué escribir código específico para I2P?" #: i2p2www/pages/site/get-involved/develop/applications.html:11 #: i2p2www/pages/site/get-involved/develop/applications.html:102 msgid "Important concepts" -msgstr "" +msgstr "Conceptos importantes" #: i2p2www/pages/site/get-involved/develop/applications.html:12 #: i2p2www/pages/site/get-involved/develop/applications.html:190 msgid "Development options" -msgstr "" +msgstr "Opciones de desarrollo" #: i2p2www/pages/site/get-involved/develop/applications.html:13 #: i2p2www/pages/site/get-involved/develop/applications.html:303 msgid "Start developing - a simple guide" -msgstr "" +msgstr "Empiece a programar - una guía simple" #: i2p2www/pages/site/get-involved/develop/applications.html:18 #, python-format @@ -2067,6 +2185,13 @@ msgid "" "You can simply create a tunnel using I2PTunnel to connect to that " "website, as shown in Figure 1." msgstr "" +"Hay múltiples formas de usar aplicaciones en I2P. Usando los I2PTunnel puede utilizar aplicaciones normales" +" sin que los programas tengan que tener soporte explícito para i2P. Esto " +"es muy eficiente en escenarios cliente-servidor, cuando se necesita " +"conectar con una sola web. Simplemente puede crear un túnel usando " +"I2PTunnel para conectarse a la web, como se puede ver en la Figura 1." #: i2p2www/pages/site/get-involved/develop/applications.html:26 msgid "" @@ -2086,6 +2211,17 @@ msgid "" "information\n" "(host and port)." msgstr "" +"Si su aplicación es distribuida, requerirá la conexión de un gran número " +"de pares. Usando un I2PTunnel necesitaría crear un túnel por cada para " +"que quiera conectar, como se ve en la Figura 2. Este procese puede ser " +"automatizado, por supuesto, pero ejecutar muchas instancias de I2PTunnel " +"crea mucha sobrecarga. Además, con muchos protocolos tendría que forzar a" +" todos a usar los mismos puertos para todos los pares - por ejemplo, si " +"desea habilitar DCC, todos necesitarían llegar al acuerdo de que el " +"puerto 10001 es para Alice, el puerto 10002 para Bob, el puerto 10003 " +"para Charlie, y así, ya que el protocolo incluye información específica " +"TCP/IP (servidor y puerto)." #: i2p2www/pages/site/get-involved/develop/applications.html:37 msgid "" @@ -2097,6 +2233,11 @@ msgid "" "mind\n" "can avoid compromising user identities." msgstr "" +"Las aplicaciones de red habitualmente envían mucha información adicional" +" que puede identificar a los usuarios. Los nombres de los hosts, puertos," +" horarios, etc, a veces son enviados sin informar al usuario. Por lo que " +"el diseñar los protocolos de red con el anonimato en mente puede evitar " +"comprometer las identidades de los usuarios." #: i2p2www/pages/site/get-involved/develop/applications.html:43 msgid "" @@ -2120,6 +2261,18 @@ msgid "" "detection or \n" "fragmentation of messages." msgstr "" +"También hay que tomar consideraciones sobre la eficiencia cuando se " +"determina como funcionar sobre I2P. La librería de streaming y las cosas " +"construidas sobre ellas funcionan con handshakes similares a los de TCP, " +"mientras que los protocolos del núcleo de I2P (I2NP e I2CP) son " +"estrictamente basados en mensajes (como UDP). La diferencia más " +"importante es que con I2P las comunicaciones funcionan sobre una red " +"grande y gorda, cada mensaje de fin a fin tendrá latencias no triviales, " +"y puede contener cargas de varios KB. Una aplicación que necesite una " +"simple petición y respuesta puede evitar cualquier estado y evitar los " +"retardos con los handshakes de inicio usando (mejor esfuerzo) datagramas " +"sin tener que preocuparse sobre la detección de MTU o la fragmentación de" +" los mensajes." #: i2p2www/pages/site/get-involved/develop/applications.html:57 #: i2p2www/pages/site/get-involved/develop/applications.html:59 @@ -2127,10 +2280,12 @@ msgid "" "Creating a server-client connection using I2PTunnel only requires " "creating a single tunnel." msgstr "" +"Crear una conexión servidor-cliente usando un I2PTunnel sólo requiere " +"crear un solo túnel." #: i2p2www/pages/site/get-involved/develop/applications.html:59 msgid "Figure 1:" -msgstr "" +msgstr "Figura 1:" #: i2p2www/pages/site/get-involved/develop/applications.html:64 #: i2p2www/pages/site/get-involved/develop/applications.html:66 @@ -2138,14 +2293,18 @@ msgid "" "Setting up connections for a peer-to-peer applications requires a very " "large amount of tunnels." msgstr "" +"Configurar conexiones para plicaciones p2p requiere un gran número de " +"túneles." #: i2p2www/pages/site/get-involved/develop/applications.html:66 msgid "Figure 2:" -msgstr "" +msgstr "Fugura 2:" #: i2p2www/pages/site/get-involved/develop/applications.html:70 msgid "In summary, a number of reasons to write I2P-specific code:" msgstr "" +"En resumen, hay bastantes razones para escribir el código específico para" +" I2P:" #: i2p2www/pages/site/get-involved/develop/applications.html:74 msgid "" @@ -2154,6 +2313,9 @@ msgid "" "which is problematic for distributed applications (a new tunnel is " "required for each peer)." msgstr "" +"Crear un gran número de I2PTunnles consume una cantidad de recursos nada " +"trivial, lo cual es problemático para las aplicaciones distribuidas (hace" +" falta un nuevo túnel por cada par)." #: i2p2www/pages/site/get-involved/develop/applications.html:78 msgid "" @@ -2163,6 +2325,11 @@ msgid "" "protocol\n" "that does not leak such information, keeping users anonymous and secure." msgstr "" +"Los protocolos de red generales a menudo envían mucha información " +"adicional que puede usarse para identificar a los usuarios. Programar " +"específicamente para I2P permite la creación de protocolos de red que no " +"filtran dicha información no deseada, permitiendo que lso usuarios " +"permanezcan seguros y anónimos." #: i2p2www/pages/site/get-involved/develop/applications.html:83 msgid "" @@ -2170,6 +2337,8 @@ msgid "" "inefficient\n" "on I2P, which is a network with a much higher latency." msgstr "" +"Los protocolos de red diseñados para el Internet normal pueden ser " +"ineficientes sobre I2P, que es una red con una latencia mayor." #: i2p2www/pages/site/get-involved/develop/applications.html:90 #, python-format @@ -2178,6 +2347,9 @@ msgid "" " developers\n" "so that applications may be easily integrated and distributed." msgstr "" +"I2P soporta un interfaz de plugins estándar " +"para los desarrolladores, con lo que las aplicaciones pueden ser " +"integradas y distribuidas más fácilmente." #: i2p2www/pages/site/get-involved/develop/applications.html:96 msgid "" @@ -2185,14 +2357,17 @@ msgid "" "using an HTML interface via the standard webapps/app.war\n" "may be considered for inclusion in the i2p distribution." msgstr "" +"Las aplicaciones escritas en Java y accesibles/ejecutables usando un " +"interfaz HTML a través de aplicaciones web estándar pueden considerarse " +"para incluirse en la distribución I2P." #: i2p2www/pages/site/get-involved/develop/applications.html:104 msgid "There are a few changes that require adjusting to when using I2P:" -msgstr "" +msgstr "Hay varios cambios que se requieren ajusta cuando se usa I2P." #: i2p2www/pages/site/get-involved/develop/applications.html:108 msgid "Destination ~= host+port" -msgstr "" +msgstr "Destinación ~= host+puerto" #: i2p2www/pages/site/get-involved/develop/applications.html:110 msgid "" @@ -2204,6 +2379,11 @@ msgid "" "hostname\n" "plus port number pair, though there are a few differences." msgstr "" +"Una aplicación ejecutándose sobre I2P envía un mensaje desde, y recibe " +"mensajes hacia un único punto seguro criptográfico. - una " +"\"destinación\". En términos de TCP y UDP una destinación puede ser " +"considerada (en gran parte) el equivalente a un hostname más el par de " +"números de puertos, aunque hay unas pocas diferencias." #: i2p2www/pages/site/get-involved/develop/applications.html:118 msgid "" @@ -2214,6 +2394,10 @@ msgid "" "location of the end point signed as if there were universal deployment of" " DNSSEC." msgstr "" +"Una destinación I2P es en sí misma una construcción criptográfica - toda" +" la información enviada es cifrada tal y como si hubiera una " +"implementación mundial de IPsec con la localización (anónima) del punto " +"final firmada somo si existira una implementación universal de " #: i2p2www/pages/site/get-involved/develop/applications.html:123 msgid "" @@ -2225,6 +2409,11 @@ msgid "" "end point (port)\n" "must stay on a single host." msgstr "" +"Las destinaciones de I2P son identificadores móviles - pueden ser movidas" +" de un ruter I2P a otro ( o incluso pueden ser \"multi-hogar\" - " +"funcionar en varios ruters a la vez). Esto es bastante diferente a como " +"funcionan TCP y UDP, donde un un solo punto final (puerto) tiene que " +"estar en un solo host." #: i2p2www/pages/site/get-involved/develop/applications.html:130 msgid "" @@ -2234,6 +2423,10 @@ msgid "" "variable size \n" "certificate, which may contain proof of work or blinded data." msgstr "" +"Las destinaciones I2P son largas y feas - en el fondo contienen un clave " +"pública ElGamal de 2048 bits para el cifrado, una calve pública DSA de " +"1024 bits para firmar, y un certificado de tamaño variable, que puede " +"contener una prueba de trabajo realizado o información blindada." #: i2p2www/pages/site/get-involved/develop/applications.html:135 #, python-format @@ -2254,6 +2447,17 @@ msgid "" "Further information on the naming system is " "available." msgstr "" +"Hay formas de referirse a esa larga y fea destinación acortándola con " +"nombres bonitos (por ejemplo \"irc.duck.i2p\"), pero estas técnicas no " +"garantizan una unicidad global (ya que están almacenadas localmente en la" +" base de datos de la máquina de cada persona) y el mecanismo actual no es" +" especialmente escalable o seguro (las actualizaciones de la lista de " +"hosts son manejadas usando \"suscripciones\" a servicios de nombres). " +"Quizás algún día habrá un sistema más seguro, legible por humanos, " +"escalable y con unicidad global, pero las aplicaciones no deberían " +"depender de su existencia, ya que hay gente que piensa que ese tipo de " +"bestia no es posible. Hay disponible más " +"información sobre el sistema de nombres." #: i2p2www/pages/site/get-involved/develop/applications.html:149 #, python-format @@ -2267,10 +2471,17 @@ msgid "" "Simple applications operate by listening for \"all protocols\" on \"all " "ports\" of a destination." msgstr "" +"Mientras que la mayoría de las aplicaciones no necesitan distinguir " +"protocolos o puertos, I2P si los soporta. Las aplicaciones " +"complejas pueden especificar un protocolo, desde un puerto, y hacia un " +"puerto, en un mensaje, hacia tráfico múltiple o sobre una sola " +"destinación. Vea la página de datagrama " +"para más detalles. Las palicaciones simples funciona escuchando por " +"\"todos los protocolos\" sobre \"todos los puertos\" de una destinación." #: i2p2www/pages/site/get-involved/develop/applications.html:158 msgid "Anonymity and confidentiality" -msgstr "" +msgstr "Anonimato y confidencialidad." #: i2p2www/pages/site/get-involved/develop/applications.html:160 msgid "" @@ -2282,6 +2493,11 @@ msgid "" "library, Alice knows for certain that Bob's destination is the one who " "sent the data." msgstr "" +"I2P tiene cifrado transparente y autenticación transparente de todos los " +"datos que pasan por la red - si Bob envía a la destinación de Alice, sólo" +" la destinación de Alice puede recibirlo, y si Bob está usando la " +"librería de datagramas o streaming, Alice sabe seguro que la destinación " +"de Bob es la que envió los datos." #: i2p2www/pages/site/get-involved/develop/applications.html:167 msgid "" @@ -2296,10 +2512,17 @@ msgid "" "information they are willing\n" "to expose." msgstr "" +"Por supuesto, I2P anonimiza transparentemente los datos enviados entre " +"Alice y Bob, pero no hace nada para anonimizar el contenido de lo que " +"envían. Por ejemplo, is Alice envía a Bob un formulario con su nombre " +"completo, ID del gobierno, y los números de sus tarjetas de crédito, no " +"hay nada que I2P pueda hacer. Por eso, los protocolos y las aplicaciones " +"deben tener en cuenta qué información están intentando proteger y qué " +"información desean exponer." #: i2p2www/pages/site/get-involved/develop/applications.html:176 msgid "I2P datagrams can be up to several KB" -msgstr "" +msgstr "Los datagramas I2P pueden ser hasta de varios KB" #: i2p2www/pages/site/get-involved/develop/applications.html:178 #, python-format @@ -2320,6 +2543,18 @@ msgid "" " as a UDP-like \n" "application without having to write fragmentation, resends, etc." msgstr "" +"Las aplicaciones que usan datagramas I2P (ya sean en bruto o " +"respondibles) pueden entenderse en términos de UDP - los datagramas no " +"están ordenados, mejor esfuerzo, y sin-conexión - pero al contrario que " +"UDP, las aplicaciones no tienen que preocuparse de la detección MTU y " +"pueden simplemente enviar datagramas grandes. Cuando normalmente el " +"límite superior es de 32 KB, el mensaje es troceado para el transporte, " +"bajando la confiabilidad del todo. No se recomiendan datagramas de más de" +" 10 KB. Ve la página de los datagramas para" +" más detalles. Para muchas aplicaciones, esos 10 KB de datos es " +"suficiente para una petición o respuesta completa, permitiendoles operar " +"transparentemente en I2P como una aplicación tipo UDP si tener que crear " +"fragmentaciones, re-eenvíos, etc." #: i2p2www/pages/site/get-involved/develop/applications.html:192 msgid "" @@ -2328,10 +2563,13 @@ msgid "" "The streaming lib is the recommended interface, used by the majority of " "I2P applications." msgstr "" +"Hay varias formas de enviar datos sobre I2P, cada uno con sus ventajas e " +"inconvenientes. La librería de streaming es el interfaz recomendado, " +"usado por la mayoría de las aplicaciones de I2P." #: i2p2www/pages/site/get-involved/develop/applications.html:197 msgid "Streaming Lib" -msgstr "" +msgstr "Librería Streaming" #: i2p2www/pages/site/get-involved/develop/applications.html:198 #, python-format @@ -2341,6 +2579,10 @@ msgid "" "interface. It allows programming using TCP-like sockets, as explained in " "the Streaming development guide." msgstr "" +"La librería de streaming completa es ahora " +"mismo el interfaz estándar. Permite programar usando sockets al estilo " +"TCP, como se explica en la guía de " +"desarrollo de Streaming." #: i2p2www/pages/site/get-involved/develop/applications.html:204 #, python-format @@ -2356,10 +2598,19 @@ msgid "" " \n" "found at this eepsite." msgstr "" +"BOB es el Basic Open Bridge, puente básico " +"abierto/libre, permite a cualquier aplicación en cualquier lenguaje " +"hacer conexiones de streaming hacia y desde I2P. En este momento aún le " +"falta el soporte UDP, pero el soporte UDP está planeado para un futuro " +"cercano. BOB además contiene varias herramientas, como el generar claves " +"de destino, y el verificar que una dirección se ajusta a las " +"especificaciones de I2P. Información actualizada y una lista de " +"aplicaciones que usan BOB pueden encontrarse en esta eepsite." #: i2p2www/pages/site/get-involved/develop/applications.html:217 msgid "SAM is not recommended. SAM V2 is okay, SAM V3 is recommended." -msgstr "" +msgstr "No se recomienda SAM, SAM v2 vale, pero se recomienda SAM v3" #: i2p2www/pages/site/get-involved/develop/applications.html:218 #, python-format @@ -2372,18 +2623,28 @@ msgid "" "the encryption/decryption\n" "and event based handling. SAM supports three styles of operation:" msgstr "" +"SAM es el protocolo de Simple Anonymous Messaging, " +"mensajería anónima simple, que permite a una aplicación escrita en " +"cualquier lenguaje entenderse con el puente SAM a través de sockets TCP y" +" en donde ese puente multiplexa todo su tráfico I2P, coordinando el " +"cifrado/descifrado transparentemente y el manejo de los eventos. SAM " +"soporta tres tipos de operaciones:" #: i2p2www/pages/site/get-involved/develop/applications.html:225 msgid "" "streams, for when Alice and Bob want to send data to each other reliably " "and in order" msgstr "" +"streams, para cuando Alice y Bob quieren enviar datos de uno a otro " +"seguramente y en orden" #: i2p2www/pages/site/get-involved/develop/applications.html:228 msgid "" "repliable datagrams, for when Alice wants to send Bob a message that Bob " "can reply to" msgstr "" +"datagramas respondibles, para cuando Alice quiere enviar a Bob un mensaje" +" al que Bob puede responder." #: i2p2www/pages/site/get-involved/develop/applications.html:231 msgid "" @@ -2393,6 +2654,10 @@ msgid "" "(e.g. the data transferred\n" "is self authenticating)" msgstr "" +"datagramas en bruto, para cuando Alice quiere ahorrar el máximo ancho de " +"banda y obtener el mejor rendimiento, y a Bob no le importa si la " +"información del remitente está autentificada o no (por ejemplo cuando los" +" datos transferidos ya son auto autentificables)" #: i2p2www/pages/site/get-involved/develop/applications.html:237 msgid "" @@ -2403,6 +2668,14 @@ msgid "" "application through datagram\n" "communications with the SAM bridge." msgstr "" +"SAM V3 apunta hacia la misma meta que SAM y SAM V2, pero no requiere \n" +"multiplexado/demultiplexado. Cada flujo (`stream`) I2P es gestionado por " +"su propio socket \n" +"entre la aplicación y la pasarela (`bridge`) SAM. Además, pueden ser " +"enviados y \n" +"recibidos datagramas mediante la aplicación a través de comunicaciones de" +" datagrama con\n" +"la pasarela SAM." #: i2p2www/pages/site/get-involved/develop/applications.html:244 #, python-format @@ -2412,6 +2685,12 @@ msgid "" "
    \n" "SAM V3 is used by imule since version 1.4.0." msgstr "" +"SAM V2 es una nueva versión usada por imule que" +"\n" +"resuelve alguno de los problemas en SAM.\n" +"
    \n" +"iSAM V3 es usado desde la versión 1.4.0 de " +"imule." #: i2p2www/pages/site/get-involved/develop/applications.html:252 msgid "" @@ -2431,6 +2710,24 @@ msgid "" "instances, since each have\n" "their own unique I2P destination and their own set of tunnels, keys, etc." msgstr "" +"La aplicación I2PTunnel permite a otras aplicaciones establecer túneles " +"específicos\n" +"tipo-TCP hacia los pares ('peers'), creando tanto aplicaciones I2PTunnel " +"'cliente' (que escuchan\n" +"en un puerto específico y se conectan a un destino I2P específico cuando " +"un socket\n" +"hacia ese puerto se abre) como aplicaciones I2PTunnel 'servidor' (que " +"escuchan un destino\n" +"I2P específico y cuando reciben una nueva conexión I2P se interponen " +"repitiéndola\n" +"hacia un anfitrión('host')/puerto específico). Estos flujos ('streams') " +"son puros de 8-bits\n" +"('8-bit clean') y son autentificados y asegurados a través de la misma " +"librería que usa SAM,\n" +"pero crear múltiples instancias I2PTunnel únicas reviste una sobrecarga " +"no trivial, ya que\n" +"cada una tiene su propio destino único I2P y su propio grupo de túneles, " +"claves, etc." #: i2p2www/pages/site/get-involved/develop/applications.html:264 msgid "" @@ -2439,10 +2736,13 @@ msgid "" "may be incomplete\n" "and untested." msgstr "" +"I2P soporta un proxy SOCKS V4 y V5.\n" +"Las conexiones salientes funcionan bien. La funcionalidad de las\n" +"conexiones entrantes (servidor) y UDP puede ser incompleta y no testada." #: i2p2www/pages/site/get-involved/develop/applications.html:271 msgid "Removed" -msgstr "" +msgstr "Eliminado" #: i2p2www/pages/site/get-involved/develop/applications.html:272 msgid "" @@ -2450,6 +2750,9 @@ msgid "" "but now ministreaming.jar contains only the interfaces for the full " "streaming library." msgstr "" +"Suele haber una librería sencilla \"ministreaming\", pero " +"ministreaming.jar\n" +"ahora contiene sólo las interfaces para la librería streaming completa." #: i2p2www/pages/site/get-involved/develop/applications.html:277 msgid "Datagrams" @@ -2457,7 +2760,7 @@ msgstr "Datagramas" #: i2p2www/pages/site/get-involved/develop/applications.html:278 msgid "Recommended for UDP-like applications" -msgstr "" +msgstr "Recomendado para aplicaciones tipo-UDP" #: i2p2www/pages/site/get-involved/develop/applications.html:279 #, python-format @@ -2466,18 +2769,21 @@ msgid "" "like packets.\n" "It's possible to use:" msgstr "" +"La librería Datagram permite enviar " +"paquetes tipo-UDP.\n" +"Es posible usar:" #: i2p2www/pages/site/get-involved/develop/applications.html:284 msgid "Repliable datagrams" -msgstr "" +msgstr "datagramas respondibles" #: i2p2www/pages/site/get-involved/develop/applications.html:285 msgid "Raw datagrams" -msgstr "" +msgstr "Datagramas crudos ('raw')" #: i2p2www/pages/site/get-involved/develop/applications.html:289 msgid "Not recommended" -msgstr "" +msgstr "No recomendado" #: i2p2www/pages/site/get-involved/develop/applications.html:290 #, python-format @@ -2491,10 +2797,19 @@ msgid "" "C or something else, it would most likely be more useful to use the C SAM" " library instead." msgstr "" +"I2CP en si mismo es un protocolo independiente " +"del lenguaje, pero para implementar\n" +"una librería I2CP en cualquier otra cosa que no sea Java hay una cantidad" +" de código significativa a escribir\n" +"(rutinas de cifrado, serialización ('marshalling') de objetos, gestión de" +" mensajes asíncronos, etc.). Aunque\n" +"cualquiera pueda escribir una librería I2CP en C o algún otro lenguaje, " +"probablemente sería más útil usar\n" +"la librería C SAM en su lugar." #: i2p2www/pages/site/get-involved/develop/applications.html:297 msgid "Web Applications" -msgstr "" +msgstr "Aplicaciones web" #: i2p2www/pages/site/get-involved/develop/applications.html:298 msgid "" @@ -2502,6 +2817,9 @@ msgid "" "server instead is straightforward.\n" "Any standard web app technology should work." msgstr "" +"I2P viene con el servidor web Jetty, pero configurar el servidor Apache " +"para usarlo en su lugar también es apropiado.\n" +"Cualquier tecnología de aplicaciones web standard debería funcionar." #: i2p2www/pages/site/get-involved/develop/applications.html:304 msgid "" @@ -2511,10 +2829,16 @@ msgid "" "href=\"#start.streaming\">streaming library or datagram library.\n" "Using another programming language, SAM or BOB can be used." msgstr "" +"Desarrollar usando I2P requiere una instalación I2P funcional y un " +"entorno de desarrollo de su\n" +"propia elección. Si esta usando Java puede iniciar el desarrollo con la " +"librería streaming\n" +"o la librería datagram. Usando otro lenguaje de programación, se puede\n" +"usar SAM o BOB." #: i2p2www/pages/site/get-involved/develop/applications.html:310 msgid "Developing with the streaming library" -msgstr "" +msgstr "Desarrollo con la librería streaming" #: i2p2www/pages/site/get-involved/develop/applications.html:312 msgid "" @@ -2522,22 +2846,27 @@ msgid "" "applications\n" "using the streaming library." msgstr "" +"El siguiente ejemplo muestra como crear aplicaciones cliente y servidor " +"tipo-TCP\n" +"usando la librería streaming." #: i2p2www/pages/site/get-involved/develop/applications.html:317 msgid "This will require the following libraries in your classpath:" msgstr "" +"Esto requerirá las siguientes librerías en su ruta de clases " +"('classpath'):" #: i2p2www/pages/site/get-involved/develop/applications.html:321 msgid "The streaming library itself" -msgstr "" +msgstr "La librería streaming en si misma" #: i2p2www/pages/site/get-involved/develop/applications.html:322 msgid "Factory and interfaces for the streaming library" -msgstr "" +msgstr "El patrón Factory e interfaces para la librería streaming." #: i2p2www/pages/site/get-involved/develop/applications.html:323 msgid "Standard I2P classes, data structures, API, and utilities" -msgstr "" +msgstr "Clases I2P standard, estructuras de datos, API y utilidades." #: i2p2www/pages/site/get-involved/develop/applications.html:326 msgid "" @@ -2547,6 +2876,11 @@ msgid "" "who will print the messages and send them back to the client. In other " "words, the server will function as an echo." msgstr "" +"La comunicación de red requiere el uso de sockets de red I2P.\n" +"Para demostrar esto, crearemos una aplicación donde un cliente pueda " +"enviar mensajes de texto a un servidor,\n" +"que imprimirá los mensajes y los enviará de vuelta al cliente. En otras " +"palabras, el servidor funcionará como un eco." #: i2p2www/pages/site/get-involved/develop/applications.html:331 msgid "" @@ -2561,10 +2895,22 @@ msgid "" "was created, as we will need to copy and paste that information later so " "the client can connect to us." msgstr "" +"Comenzaremos por inicializar la aplicación servidor. Esto requiere " +"obtener un gestor de socket I2P\n" +"('I2PSocketManager') y crear un socket de servidor I2P " +"('I2PServerSocket').\n" +"No proporcionaremos el patrón I2PSocketManagerFactory con las claves " +"guardadas para un\n" +"Destino existente, por lo que creará un nuevo Destino para nosotros.\n" +"Así que pediremos al gestor de socket I2P ('I2PSocketManager') una sesión" +" I2P ('I2PSession'), para\n" +"que podamos averiguar el Destino que fue creado, ya que necesitaremos " +"copiar y pegar esa información\n" +"más adelante para que el cliente pueda conectarse con nosotros." #: i2p2www/pages/site/get-involved/develop/applications.html:362 msgid "Code example 1: initializing the server application." -msgstr "" +msgstr "Ejemplo de código 1: inicialización de la aplicación servidor." #: i2p2www/pages/site/get-involved/develop/applications.html:364 msgid "" @@ -2579,10 +2925,24 @@ msgid "" "send it back to the client.\n" "The bold code is the new code we add." msgstr "" +"Una vez que tengamos un socket de servidor I2P ('I2PServerSocket'), " +"podemos crear instancias\n" +"de socket I2P ('I2PSocket') para aceptar conexiones desde los clientes. " +"En este ejemplo crearemos\n" +"una única instancia I2PSocket, que sólo puede gestionar un cliente cada " +"vez.\n" +"Un servidor real tendría que ser capaz de gestionar múltiples clientes.\n" +"Para hacer esto, múltiples instancias I2PSocket tendrían que ser creadas," +" en hilos separados cada una.\n" +"Una vez hayamos creado la instancia I2PSocket, leemos los datos y los " +"imprimimos y enviamos de vuelta al cliente.\n" +"El código en negrita es el código nuevo que añadimos." #: i2p2www/pages/site/get-involved/develop/applications.html:448 msgid "Code example 2: accepting connections from clients and handling messages." msgstr "" +"Ejemplo de código 2: aceptar conexiones desde clientes y gestionar " +"mensajes." #: i2p2www/pages/site/get-involved/develop/applications.html:452 msgid "" @@ -2590,12 +2950,17 @@ msgid "" "(but without the line endings, it should just be\n" "one huge block of characters):" msgstr "" +"Cuando ejecute el código servidor de arriba, debería imprimir algo como " +"esto (pero sin los finales de línea,\n" +"debería ser sólo un enorme bloque de caracteres):" #: i2p2www/pages/site/get-involved/develop/applications.html:466 msgid "" "This is the base64-representation of the server Destination. The client " "will need this string to reach the server." msgstr "" +"Esta es la representación-base64 del servidor Destino. El cliente " +"necesitará esta cadena para alcanzar el servidor." #: i2p2www/pages/site/get-involved/develop/applications.html:470 msgid "" @@ -2610,12 +2975,26 @@ msgid "" "Once we have an I2PSocket, we can start sending and receiving data to and" " from the server." msgstr "" +"Ahora crearemos la aplicación cliente. Otra vez se requiere un " +"determinado número de pasos para la inicialización.\n" +"De nuevo, necesitaremos comenzar obteniendo un gestor de socket I2P " +"('I2PSocketManager').\n" +"No usaremos una sesión I2P ('I2PSession') ni un socket de servidor I2P " +"('I2PServerSocket') esta vez.\n" +"En su lugar usaremos la cadena del servidor Destino para iniciar nuestra " +"conexión.\n" +"Preguntaremos al usuario por la cadena Destino, y crearemos un socket I2P" +" ('I2PSocket') usando esta cadena.\n" +"Una vez que tengamos el I2PSocket podemos comenzar a enviar y recibir " +"datos hacia y desde el servidor." #: i2p2www/pages/site/get-involved/develop/applications.html:554 msgid "" "Code example 3: starting the client and connecting it to the server " "application." msgstr "" +"Ejemplo de código 3: iniciar el cliente y conectarlo a la aplicación " +"servidor." #: i2p2www/pages/site/get-involved/develop/applications.html:556 msgid "" @@ -2627,46 +3006,58 @@ msgid "" "The client will then send 'Hello I2P!' (along with a newline) to the " "server, who will print the message and send it back to the client." msgstr "" +"Finalmente puede ejecutar ambas aplicaciones cliente y servidor.\n" +"Primero, inicie la aplicación servidor. Imprimirá una cadena Destino " +"(como la mostrada arriba).\n" +"Después inicie la aplicación cliente. Cuando esta solicite una cadena " +"Destino, puede introducir la cadena impresa por el servidor.\n" +"Entonces el cliente enviará 'Hello I2P!' (junto con un caracter de nueva " +"línea ('newline')) al servidor, que imprimirá el mensaje\n" +"y lo enviará de vuelta al cliente." #: i2p2www/pages/site/get-involved/develop/applications.html:562 msgid "Congratulations, you have successfully communicated over I2P!" -msgstr "" +msgstr "¡Felicidades!, se ha comunicado con éxito sobre I2P" #: i2p2www/pages/site/get-involved/develop/applications.html:566 msgid "Existing Applications" -msgstr "" +msgstr "Aplicaciones existentes" #: i2p2www/pages/site/get-involved/develop/applications.html:567 msgid "Contact us if you would like to contribute." -msgstr "" +msgstr "Contáctenos si quiere contribuír." #: i2p2www/pages/site/get-involved/develop/applications.html:588 msgid "Application Ideas" -msgstr "" +msgstr "Ideas para aplicaciones" #: i2p2www/pages/site/get-involved/develop/applications.html:590 msgid "NNTP server - there have been some in the past, none at the moment" -msgstr "" +msgstr "Servidor NNTP - ha habido algunos en el pasado, ninguno en este momento" #: i2p2www/pages/site/get-involved/develop/applications.html:593 msgid "" "Jabber server - there have been some in the past, and there is one at the" " moment, with access to the public internet" msgstr "" +"Servidor Jabber - ha habido algunos en el pasado, y hay uno en este " +"momento con acceso a la Internet pública" #: i2p2www/pages/site/get-involved/develop/applications.html:596 msgid "PGP Key server and/or proxy" -msgstr "" +msgstr "Servidor de claves PGP y/o proxy" #: i2p2www/pages/site/get-involved/develop/applications.html:599 msgid "" "Content Distribution / DHT applications - resurrect feedspace,\n" "port dijjer, look for alternatives" msgstr "" +"Distribución de contenidos / Aplicaciones DHT - resucite Feedspace,\n" +"porte Dijjer, busque alternativas" #: i2p2www/pages/site/get-involved/develop/applications.html:603 msgid "Help out with Syndie development" -msgstr "" +msgstr "Contribuya al desarrollo de Syndie" #: i2p2www/pages/site/get-involved/develop/applications.html:606 msgid "" @@ -2675,38 +3066,52 @@ msgid "" "applications such as blogs, pastebins, storage, tracking, feeds, etc.\n" "Any web or CGI technology such as Perl, PHP, Python, or Ruby will work." msgstr "" +"Aplicaciones basadas-en-web - El cielo es el límite para el hospedaje de\n" +"aplicaciones basadas-en-servidor-web tales como blogs, tablones de\n" +"anotaciones ('pastebins'), almacenamiento, seguimiento, actualización de\n" +"publicaciones ('feeds'), etc. Cualquier web o tecnología CGI como Perl,\n" +"PHP, Python o Ruby funcionará." #: i2p2www/pages/site/get-involved/develop/applications.html:611 msgid "" "Resurrect some old apps, several previously in the i2p source package -\n" "bogobot, pants, proxyscript, q, stasher, socks proxy, i2ping, feedspace" msgstr "" +"Resucite algunas aplicaciones viejas, varias presentes previamente en el\n" +"paquete fuente de I2P - Bogobot, Pants, Proxyscript, Q, Stasher,\n" +"Socks Proxy, I2Ping, Feedspace" #: i2p2www/pages/site/get-involved/develop/developers-keys.html:2 msgid "I2P Developer's MTN Keys" -msgstr "" +msgstr "Claves MTN de desarrollador I2P" #: i2p2www/pages/site/get-involved/develop/developers-keys.html:4 msgid "MTN Keys" -msgstr "" +msgstr "Claves MTN" #: i2p2www/pages/site/get-involved/develop/developers-keys.html:5 msgid "" "Monotone servers used by the I2P project require two types of keys to be " "used." msgstr "" +"Los servidores Monotone usados por el proyecto I2P requieren el uso de " +"dos tipos de claves." #: i2p2www/pages/site/get-involved/develop/developers-keys.html:9 msgid "" "Commit Keys to sign changes checked-in to the " "respository; and" msgstr "" +"Claves de consignación ('commit') para firmar " +"cambios registrados en el repositorio; y" #: i2p2www/pages/site/get-involved/develop/developers-keys.html:10 msgid "" "Transport Keys to push changes to remote " "servers." msgstr "" +"Claves de transporte para impulsar cambios en " +"servidores remotos." #: i2p2www/pages/site/get-involved/develop/developers-keys.html:13 #, python-format @@ -2719,14 +3124,20 @@ msgid "" "server operators will need to import the transport keys." msgstr "" +"Cualquiera que use Monotone para revisar el código fuente de I2P\n" +"necesitará importar las claves de consignación ('commit') de\n" +"desarrollador, pero sólo los operadores de servidor Monotone\n" +"necesitarán importar las claves de transporte." #: i2p2www/pages/site/get-involved/develop/developers-keys.html:20 msgid "Developer Commit keys" -msgstr "" +msgstr "Claves de consignación ('commit') de desarrollador" #: i2p2www/pages/site/get-involved/develop/developers-keys.html:247 msgid "Developer Transport Keys" -msgstr "" +msgstr "Claves de transporte de desarrollador" #: i2p2www/pages/site/get-involved/develop/developers-keys.html:248 #, python-format @@ -2734,15 +3145,21 @@ msgid "" "Note: Transport keys are only needed for setting up a\n" "Monotone server." msgstr "" +"Nota: Las claves de transporte sólo son necesarias para configurar" +"\n" +"un servidor " +"Monotone." #: i2p2www/pages/site/get-involved/develop/license-agreements.html:2 msgid "License Agreements" -msgstr "" +msgstr "Acuerdos de licencia" #: i2p2www/pages/site/get-involved/develop/license-agreements.html:5 #, python-format msgid "For more information see the licenses page." msgstr "" +"Para mayor información vea la página de " +"licencias." #: i2p2www/pages/site/get-involved/develop/license-agreements.html:8 msgid "" @@ -2750,10 +3167,14 @@ msgid "" "Developers must use this file in ~/.monotone/monotonerc or\n" "_MTN/montonerc in their i2p.i2p workspace." msgstr "" +"A continuación está un archivo `monotonerc` que define el listado actual" +" \n" +"de confianza. Los desarrolladores deben usar este fichero en \n" +"~/.monotone/monotonerc o _MTN/montonerc en sus espacio de trabajo i2p.i2p " #: i2p2www/pages/site/get-involved/develop/license-agreements.html:17 msgid "Agreements" -msgstr "" +msgstr "Acuerdos" #: i2p2www/pages/site/get-involved/develop/licenses.html:2 #: i2p2www/pages/site/get-involved/guides/dev-guidelines.html:115 @@ -2762,7 +3183,7 @@ msgstr "Licencias" #: i2p2www/pages/site/get-involved/develop/licenses.html:4 msgid "I2P Software Licenses" -msgstr "" +msgstr "Licencias de software I2P" #: i2p2www/pages/site/get-involved/develop/licenses.html:5 #, python-format @@ -2776,6 +3197,17 @@ msgid "" "as to remove as many barriers to entry for those considering\n" "making use of or contributing to the I2P effort." msgstr "" +"Como requiere nuestro modelo de amenaza \n" +"(entre otras razones), el software\n" +"desarrollado para soportar la red de comunicación anónima que llamamos " +"I2P, debe \n" +"ser accesible libremente, de código abierto, y modificable por el " +"usuario. Para alcanzar \n" +"estos criterios hacemos uso de una variedad de técnicas legales y de " +"ingeniería \n" +"de software, así como eliminamos cuantas barreras de entrada haya para " +"aquellos que\n" +"consideren hacer uso de, o contribuír al esfuerzo de I2P." #: i2p2www/pages/site/get-involved/develop/licenses.html:16 msgid "" @@ -2783,28 +3215,36 @@ msgid "" "stating \"I2P is BSD\", \"I2P is GPL\", or \"I2P is public domain\",\n" "the short answer to the question \"How is I2P licensed?\" is this:" msgstr "" +"Aunque la información de debajo puede ser más bien confusa que sencilla," +" \n" +"estableciendo que \"I2P es BSD\", \"I2P es GPL\", o \"I2P es dominio " +"público\", \n" +"la respuesta corta a la pregunta \"¿Cómo está licenciado I2P?\" es esta: " #: i2p2www/pages/site/get-involved/develop/licenses.html:22 msgid "All software bundled in the I2P distributions will allow:" -msgstr "" +msgstr "Todo el software empaquetado en las distribuciones I2P permitirá:" #: i2p2www/pages/site/get-involved/develop/licenses.html:24 msgid "use without fee" -msgstr "" +msgstr "uso libre de cargo" #: i2p2www/pages/site/get-involved/develop/licenses.html:25 msgid "" "use with no restrictions on how, when, where, why, or by whom is running " "it" msgstr "" +"uso sin restricciones acerca de cómo, cuándo, dónde, por qué o por quién" +" \n" +"se está ejecutando." #: i2p2www/pages/site/get-involved/develop/licenses.html:26 msgid "access to the source code without fee" -msgstr "" +msgstr "acceso al código fuente libre de cargo" #: i2p2www/pages/site/get-involved/develop/licenses.html:27 msgid "modifications to the source" -msgstr "" +msgstr "modificaciones del código fuente" #: i2p2www/pages/site/get-involved/develop/licenses.html:30 msgid "" @@ -2828,10 +3268,26 @@ msgid "" "GPL-compatible,\n" "we lose out." msgstr "" +"La mayoría del software garantiza expresamente - la capacidad \n" +"de cualquiera de distribuír el código fuente modificado de la " +"manera que escoja. Sin embargo no todos los paquetes de software otorgan " +"esta libertad - la GPL restringe la capacidad de los desarrolladores que " +"deseen integrar I2P en sus propias aplicaciones si estas mismas no son \n" +"aplicaciones de código abierto. Aunque aplaudimos las nobles metas de " +"incrementar los recursos abiertos al público, se sirve mejor a I2P " +"eliminando \n" +"cualquier barrera que se encuentre en el camino de su adopción - si un " +"desarrollador\n" +"que considerando si puede o no integrar I2P con sus aplicaciones, tiene " +"que parar \n" +"a hacer comprobaciones con su abogado o realizar una aditoría para " +"asegurarse \n" +"de que su propio código puede ser liberado de forma compatible-con-GPL, " +"lo estamos haciendo mal." #: i2p2www/pages/site/get-involved/develop/licenses.html:43 msgid "Component licenses" -msgstr "" +msgstr "Licencias de componentes" #: i2p2www/pages/site/get-involved/develop/licenses.html:44 msgid "" @@ -2852,34 +3308,51 @@ msgid "" "to what licenses meet the above four guarantees for inclusion in the I2P " "distribution." msgstr "" +"La distribución I2P contiene varios recursos, que reflejan la " +"fragmentación \n" +"del código fuente en sus diferentes componentes. Cada componente tiene \n" +"su propia licencia, que todos los desarrolladores que contribuyan con él" +" \n" +"tienen que aceptar - bien explícitamente declarando la versión del código" +" \n" +"consignada (`committed`) bajo una licencia compatible con ese componente," +"\n" +"o implícitamente publicando el código consignado bajo la licencia " +"primaria del componente. Cada uno de estos componentes tiene un " +"desarrollador\n" +"principal que tiene la última palabra acerca de si una licencia es " +"compatible con la licencia primaria del compente, y el administrador del " +"proyecto I2P \n" +"tiene la última palabra acerca de qué licencias satisfacen las cuatro \n" +"garantías anteriores para su inclusión en la distribución I2P." #: i2p2www/pages/site/get-involved/develop/licenses.html:57 msgid "Component" -msgstr "" +msgstr "Componente" #: i2p2www/pages/site/get-involved/develop/licenses.html:58 msgid "Source path" -msgstr "" +msgstr "Ruta del código fuente" #: i2p2www/pages/site/get-involved/develop/licenses.html:59 msgid "Resource" -msgstr "" +msgstr "Recurso" #: i2p2www/pages/site/get-involved/develop/licenses.html:60 msgid "Primary license" -msgstr "" +msgstr "Licencia primaria" #: i2p2www/pages/site/get-involved/develop/licenses.html:61 msgid "Alternate licenses" -msgstr "" +msgstr "Licencias alternativas" #: i2p2www/pages/site/get-involved/develop/licenses.html:62 msgid "Lead developer" -msgstr "" +msgstr "Desarrollador principal" #: i2p2www/pages/site/get-involved/develop/licenses.html:271 msgid "GPL + java exception" -msgstr "" +msgstr "GPL + excepción java" #: i2p2www/pages/site/get-involved/develop/licenses.html:272 #, python-format @@ -2890,6 +3363,11 @@ msgid "" "additional \"exception\"\n" "explicitly authorizing the use of Java's standard libraries:" msgstr "" +"Aunque puede ser redundante, y sólo para dejarlo claro,\n" +"el código bajo GPL incluído con I2PTunnel\n" +"y otras aplicaciones, debe ser publicado bajo la GPL con \n" +"una \"excepción\" adicional explícita autorizando el uso de \n" +"las librerías standard de Java:" #: i2p2www/pages/site/get-involved/develop/licenses.html:288 msgid "" @@ -2903,10 +3381,21 @@ msgid "" "locations and\n" "resource packaging may be changed if the repository is reorganized." msgstr "" +"Todo código fuente bajo cada componente será licenciado por defecto bajo" +" \n" +"la licencia primaria, a menos que otra cosa esté establecida en el " +"código. \n" +"Todo lo anterior resume los términos de la licencia - por favor revise la" +" licencia\n" +"específica para el componente, o el código fuente en cuestión en busca de" +" cláusulas \n" +"autorizativas. Los emplazamientos de los recursos del código de los " +"componentes \n" +"y los paquetes podrían cambiar si el repositorio es reorganizado." #: i2p2www/pages/site/get-involved/develop/licenses.html:296 msgid "Commit privileges" -msgstr "" +msgstr "Privilegios de consignación (`commit`)" #: i2p2www/pages/site/get-involved/develop/licenses.html:297 #, python-format @@ -2915,6 +3404,9 @@ msgid "" "receive permission from the person running that repository.\n" "See the Monotone Page for details." msgstr "" +"Los desarrolladores pueden impulsar cambios en un repositorio Monotone\n" +"si reciben permiso de la persona que mantiene ese repositorio.\n" +"Vea la página de Monotone para mayor detalle." #: i2p2www/pages/site/get-involved/develop/licenses.html:303 msgid "" @@ -2925,12 +3417,21 @@ msgid "" "That means that they must send one of the release managers a signed " "message affirming that:" msgstr "" +"Sin embargo, para poder incluír los cambios en una versión, los \n" +"desarrolladores deben recibir confianza por parte del administrador\n" +"de versiones (actualmente `zzz`). Además, deben aceptar explícitamente\n" +"los téminos anteriores para recibir confianza. Eso significa que deben \n" +"enviar a uno de los administradores de versiones un mensaje firmado \n" +"afirmando que:" #: i2p2www/pages/site/get-involved/develop/licenses.html:310 msgid "" "Unless marked otherwise, all code I commit is implicitly licensed under\n" "the component's primary license" msgstr "" +"A menos que se establezca de otra manera, todo el código que \n" +"yo consigne está implícitamente licenciado bajo la licencia primaria \n" +"del componente." #: i2p2www/pages/site/get-involved/develop/licenses.html:314 msgid "" @@ -2938,12 +3439,17 @@ msgid "" "\n" "of the component's alternate licenses" msgstr "" +"Si se especifica en el código fuente, el código puede estar " +"explícitamente \n" +"licenciado bajo una de las licencias alternativas del componente." #: i2p2www/pages/site/get-involved/develop/licenses.html:318 msgid "" "I have the right to release the code I commit under the terms I\n" "am committing it" msgstr "" +"Tengo derecho a publicar el código que consigne ('commit') bajo los \n" +"términos con los que lo estoy consignando." #: i2p2www/pages/site/get-involved/develop/licenses.html:324 #, python-format @@ -2955,24 +3461,35 @@ msgid "" "information.\n" "See developers' license agreements." msgstr "" +"Si alguien advierte alguna instancia donde las condiciones anteriores no " +"se \n" +"cumplen, por favor contacte con el encargado del componente y/o con el \n" +"administrador de versiones de I2P con información detallada. \n" +"Vea los acuerdos de licencia del " +"desarrollador." #: i2p2www/pages/site/get-involved/develop/release-signing-key.html:2 msgid "Release Signing Key" -msgstr "" +msgstr "Clave de firmado de la versión" #: i2p2www/pages/site/get-involved/develop/release-signing-key.html:4 msgid "Releases 0.7.6 and later are signed by zzz. His public key is:" msgstr "" +"Las versiones 0.7.6 y posteriores están firmadas por `zzz`. \n" +"Su clave pública es:" #: i2p2www/pages/site/get-involved/develop/release-signing-key.html:40 msgid "" "Releases 0.6.1.31 through 0.7.5 were signed by Complication. His public " "key is:" msgstr "" +"Las versiones de la 0.6.1.31 a la 0.7.5 fueron firmadas por " +"`Complication`. \n" +"Su clave pública es:" #: i2p2www/pages/site/get-involved/develop/signed-keys.html:2 msgid "Signed Developer Keys" -msgstr "" +msgstr "Claves firmadas de desarrollador" #: i2p2www/pages/site/get-involved/develop/signed-keys.html:4 msgid "" @@ -2981,26 +3498,33 @@ msgid "" "verified differently, since he's away, and only left a binary detached\n" "signature for his key." msgstr "" +"Las claves para `zzz`, `Complication` y `welterde` se proporcionan " +"firmadas de forma \n" +"transparente (`clearsigned`). La clave para `jrandom` debe ser verificada" +" de forma diferente, \n" +"ya que él está fuera y sólo dejó una firma adosada (`detached signature`)" +" \n" +"binaria para su clave." #: i2p2www/pages/site/get-involved/develop/signed-keys.html:10 #: i2p2www/pages/site/get-involved/develop/signed-keys.html:16 msgid "Monotone keys for zzz" -msgstr "" +msgstr "Claves Monotone para `zzz`." #: i2p2www/pages/site/get-involved/develop/signed-keys.html:11 #: i2p2www/pages/site/get-involved/develop/signed-keys.html:47 msgid "Monotone keys for welterde" -msgstr "" +msgstr "Claves Monotone para `welterde`." #: i2p2www/pages/site/get-involved/develop/signed-keys.html:12 #: i2p2www/pages/site/get-involved/develop/signed-keys.html:79 msgid "Monotone keys for Complication" -msgstr "" +msgstr "Claves Monotone para `Complication`" #: i2p2www/pages/site/get-involved/develop/signed-keys.html:13 #: i2p2www/pages/site/get-involved/develop/signed-keys.html:114 msgid "Monotone keys for jrandom" -msgstr "" +msgstr "Claves Monotone para `jrandom`" #: i2p2www/pages/site/get-involved/develop/signed-keys.html:14 #: i2p2www/pages/site/get-involved/develop/signed-keys.html:169 @@ -3015,6 +3539,10 @@ msgid "" "B310 4155\n" "76BA A76E 0BED`." msgstr "" +"Consejo: Para encontrar la clave GPG de `zzz`, localice en su \n" +"eepsite la clave `0xA76E0BED`, con el nombre `zzz@mail.i2p` y la \n" +"huella de validación de clave (`fingerprint`) \n" +"`4456 EBBE C805 63FE 57E6 B310 4155 76BA A76E 0BED`." #: i2p2www/pages/site/get-involved/develop/signed-keys.html:49 msgid "" @@ -3024,6 +3552,10 @@ msgid "" " FD81\n" "3872 6DFC 6016 64D1 EBBC 0374 62E0 11A1`." msgstr "" +"Consejo: Para encontrar la clave GPG de `welterde`, localice en \n" +"los servidores públicos de claves la clave `0x62E011A1`, con el nombre\n" +"`welterde@arcor.de` y la huella de validación de clave (`fingerprint`) \n" +"`6720 FD81 3872 6DFC 6016 64D1 EBBC 0374 62E0 11A1`." #: i2p2www/pages/site/get-involved/develop/signed-keys.html:81 msgid "" @@ -3033,6 +3565,11 @@ msgid "" "`73CF\n" "2862 87A7 E7D2 19FF DB66 FA1D FC6B 79FC CE33`." msgstr "" +"Consejo: Para encontrar la clave GPG de `Complication`, localice \n" +"en su eepsite la clave `0x79FCCE33`, con el nombre " +"`complication@mail.i2p` \n" +"y la huella de validación de clave (`fingerprint`) \n" +"`73CF 2862 87A7 E7D2 19FF DB66 FA1D FC6B 79FC CE33`." #: i2p2www/pages/site/get-involved/develop/signed-keys.html:116 msgid "" @@ -3041,6 +3578,12 @@ msgid "" "the key `0x393F2DF9`, with the name `syndie-dist-key@i2p.net` and the\n" "fingerprint `AE89 D080 0E85 72F0 B777 B2ED C2FA 68C0 393F 2DF9`." msgstr "" +"Consejo: Para encontrar la clave GPG de `jrandom` para versiones \n" +"de Syndie, localice en los servidores públicos de claves la clave " +"`0x393F2DF9`, \n" +"con el nombre `syndie-dist-key@i2p.net` y la huella de validación de " +"clave (`fingerprint`) \n" +"`AE89 D080 0E85 72F0 B777 B2ED C2FA 68C0 393F 2DF9`." #: i2p2www/pages/site/get-involved/develop/signed-keys.html:122 msgid "" @@ -3053,6 +3596,15 @@ msgid "" " form\n" "below." msgstr "" +"`jrandom` tuvo que abandonar inesperadamente al final de 2007. Su clave " +"de \n" +"consignación (`commit`) fue desplegada en el repositorio Monotone de \n" +"Syndie, en un fichero llamado `mtn-committers`. Ese fichero también tuvo" +" \n" +"una firma GPG, `mtn-committers.sig`, pero era una firma adosada \n" +"(`detached signature`) binaria. Voy a suministrar ambos ficheros en la " +"forma \n" +"GPG con-armadura-ASCII (`ASCII-armoured`) siguiente." #: i2p2www/pages/site/get-involved/develop/signed-keys.html:130 msgid "" @@ -3062,6 +3614,9 @@ msgid "" "--dearmor\n" "mtn-committers.asc`:" msgstr "" +"Primero, el fichero `mtn-committers` conteniendo la clave Monotone de \n" +"`jrandom`. Guárdelo como `mtn-committers.asc` y desempaquételo usando \n" +"`gpg --output mtn-committers --dearmor mtn-committers.asc`:" #: i2p2www/pages/site/get-involved/develop/signed-keys.html:151 msgid "" @@ -3071,6 +3626,12 @@ msgid "" "--dearmor mtn-committers.sig.asc`. Use it to verify the above supplied\n" "`mtn-committers` file:" msgstr "" +"Ahora el fichero `mtn-committers.sig`, que contiene la firma GPG. " +"Guárdelo \n" +"como `mtn-committers.sig.asc` y desempaquételo usando \n" +"`gpg --output mtn-committers.sig --dearmor mtn-committers.sig.asc`. \n" +"Úselo para verificar el fichero `mtn-committers` suministrado " +"anteriormente." #: i2p2www/pages/site/get-involved/develop/signed-keys.html:170 #, python-format @@ -3078,6 +3639,8 @@ msgid "" "Some of the developers have included their Monotone keys in their signed license agreement." msgstr "" +"Alguno de los desarrolladores ha incluído sus claves Monotone en sus acuerdos de licencia firmados." #: i2p2www/pages/site/get-involved/guides/dev-guidelines.html:2 msgid "Developer Guidelines and Coding Style" @@ -3745,18 +4308,20 @@ msgid "" "the\n" " following main branches:" msgstr "" +"Un repositorio puede almacenar muchas ramas. Por ejemplo, nuestro " +"repositorio almacena las siguientes ramas principales:" #: i2p2www/pages/site/get-involved/guides/monotone.html:176 msgid "The I2P router and associated programs" -msgstr "" +msgstr "El enrutador ('router') I2P y los programas asociados" #: i2p2www/pages/site/get-involved/guides/monotone.html:177 msgid "The I2P project website" -msgstr "" +msgstr "El sitio web del proyecto I2P" #: i2p2www/pages/site/get-involved/guides/monotone.html:178 msgid "Syndie, a distributed forums tool" -msgstr "" +msgstr "Syndie, una herramienta de forums distribuídos." #: i2p2www/pages/site/get-involved/guides/monotone.html:183 msgid "" @@ -3770,6 +4335,14 @@ msgid "" " the following\n" " command:" msgstr "" +"Por convención, el repositorio de I2P Monotone se llama " +"i2p.mtn. Antes de obtener\n" +"código fuente desde los servidores, es necesario que sea inicializada una" +"\n" +"base de datos para su repositorio. Para inicializar su repositorio local " +"vaya al directorio donde quiera que el fichero i2p.mtn y los" +" \n" +"subdirectorios sean guardados, y use el siguiente comando:" #: i2p2www/pages/site/get-involved/guides/monotone.html:199 msgid "" @@ -3779,6 +4352,10 @@ msgid "" "Monotone server operators.\n" " " msgstr "" +"Las claves que los desarrolladores usan para consignar ('commit') código " +"son esenciales para la evaluación de confianza en Monotone. Las otras " +"claves de transporte de desarrolladores sólo son requeridas para " +"operadores de servidor Monotone." #: i2p2www/pages/site/get-involved/guides/monotone.html:206 #, python-format @@ -3786,6 +4363,8 @@ msgid "" "Developers' commit keys are provided GPG-signed on another page." msgstr "" +"Las claves de consignación ('commit') de desarrolladores se proporcionan " +"firmadas-con-GPG en otra página." #: i2p2www/pages/site/get-involved/guides/monotone.html:212 #, python-format @@ -3796,12 +4375,20 @@ msgid "" "directory where i2p.mtn is located. Import the keys with the" " command:" msgstr "" +"Para importar claves de desarrollador tras verificar sus autenticidades, " +"copie todas las claves\n" +"en un nuevo fichero. Cree este fichero (ej. keys.txt)" +" en el mismo directorio\n" +"donde i2p.mtn resida. Luego importe las claves con el " +"comando:" #: i2p2www/pages/site/get-involved/guides/monotone.html:222 msgid "" "Note: Never add keys to " "$HOME/.monotone/keys manually." msgstr "" +"Nota: Nunca añada claves a " +"$HOME/.monotone/keys manualmente." #: i2p2www/pages/site/get-involved/guides/monotone.html:230 msgid "" @@ -3809,6 +4396,9 @@ msgid "" "every committer is trusted by default.\n" " That is not acceptable for I2P development." msgstr "" +"La política de confianza de monotone es demasiada relajada para nuestras " +"necesidades: todos los colaboradores son de confianza por defecto. Esto " +"no es aceptable para el desarrollo de I2P." #: i2p2www/pages/site/get-involved/guides/monotone.html:237 msgid "" @@ -3817,6 +4407,10 @@ msgid "" " monotonerc with a text editor. Copy and paste the " "following two functions into this file:" msgstr "" +"Vaya al directorio $HOME/.monotone y abra el fichero " +"monotonerc con un\n" +"editor de texto. Copie y pegue las dos siguientes funciones en este " +"fichero:" #: i2p2www/pages/site/get-involved/guides/monotone.html:246 msgid "" @@ -3824,6 +4418,8 @@ msgid "" "case a\n" " revision's signers and trusted signers." msgstr "" +"La primera función determina una intersección entre dos grupos, en " +"nuestro caso los firmantes de la revisión y los firmantes de confianza." #: i2p2www/pages/site/get-involved/guides/monotone.html:253 msgid "" @@ -3835,6 +4431,11 @@ msgid "" "the\n" " revision is trusted. Otherwise, the revision is not trusted." msgstr "" +"La segunda función determina la confianza en una revisión dada, mediante " +"una llamada a la primera con \"signers\" (firmantes) y \"trusted\" " +"(confiables) como argumentos. Si la intersección de ambos \n" +"es nula, no es confiable. Si la intersección no está vacía, la revisión \n" +"es confiable. De otra manera, la revisión no es confiable." #: i2p2www/pages/site/get-involved/guides/monotone.html:262 msgid "" @@ -3842,6 +4443,10 @@ msgid "" "href=\"http://www.monotone.ca/docs/Hooks.html\">official Monotone " "documentation." msgstr "" +"Puede encontrar más información acerca de los Enganches (`Hooks´) de " +"Evaluación de Confianza en la documentación oficial de " +"Monotone" #: i2p2www/pages/site/get-involved/guides/monotone.html:271 msgid "" @@ -3851,20 +4456,28 @@ msgid "" "you can\n" " perform the pull operation in different ways." msgstr "" +"Introduzca el directorio donde inicializó i2p.mtn. " +"Dependiendo de si \n" +"quiere sólo el código fuente de I2P, o también quiere el código del sitio" +" web \n" +"de I2P y Syndie, puede realizar pull (obtención) \n" +"de diferentes maneras." #: i2p2www/pages/site/get-involved/guides/monotone.html:279 msgid "If you only want I2P sources:" -msgstr "" +msgstr "Si sólo quiere el código fuente de I2P: " #: i2p2www/pages/site/get-involved/guides/monotone.html:288 msgid "If you want all branches:" -msgstr "" +msgstr "Si quiere todas las ramas de desarrollo (`branches`): " #: i2p2www/pages/site/get-involved/guides/monotone.html:294 msgid "" "If the transfer aborts before completing sucessfully, simply repeating " "the pull command will resume the transfer." msgstr "" +"Si la transferencia se interrumpe antes de completarse con éxito, \n" +"simplemente repitiendo el comando pull se retomará la transferencia." #: i2p2www/pages/site/get-involved/guides/monotone.html:300 msgid "" @@ -3874,20 +4487,28 @@ msgid "" "gains control of the server\n" " to selectively provide some people with tampered data." msgstr "" +"La obtención (`pulling`) en los ejemplos anteriores se realiza " +"anónimamente \n" +"especificando una clave de transporte vacía. Si todos realizaran " +"obtenciones anónimas\n" +"será más difícil para un atacante que gane control en el servidor, " +"proporcionar datos falsos selectivamente a algunas personas." #: i2p2www/pages/site/get-involved/guides/monotone.html:311 msgid "To verify that trust evaluation works:" -msgstr "" +msgstr "Para verificar que la evaluación de confianza funciona:" #: i2p2www/pages/site/get-involved/guides/monotone.html:315 msgid "Make a backup of your monotonerc file." -msgstr "" +msgstr "Haga una copia de respaldo de su fichero monotonerc." #: i2p2www/pages/site/get-involved/guides/monotone.html:316 msgid "" "Modify monotonerc by setting the trusted_signers " "variable in the following way:" msgstr "" +"Modifique monotonerc estableciendo la variable " +"trusted_signers (firmantes confiables) de la siguiente manera:" #: i2p2www/pages/site/get-involved/guides/monotone.html:322 msgid "" @@ -3896,6 +4517,11 @@ msgid "" "directory where i2p.mtn was created and attempt a checkout " "of the I2P branch:" msgstr "" +"Con monotonerc configurado de la forma previa, " +"Monotone no confiará en adelante en ninguno de los consignadores " +"(`committers`). Confirme esto llendo al directorio donde " +"i2p.mtn fue creado, e intente una revisión de la rama de " +"I2P:" #: i2p2www/pages/site/get-involved/guides/monotone.html:332 msgid "" @@ -3903,6 +4529,8 @@ msgid "" "should encounter many\n" " error messages like:" msgstr "" +"Un directorio llamado i2p.i2p no debería aparecer. " +"Debería encontrar muchos mensajes de error como: " #: i2p2www/pages/site/get-involved/guides/monotone.html:349 msgid "" @@ -3912,6 +4540,10 @@ msgid "" " as advised, re-read Setting up trust evaluation hooks." msgstr "" +"Si está satisfecho con el resultado, vuelva aponer en su lugar la copia " +"de seguridad de monotonerc que fue creada antes. Si no creó " +"una copia de seguridad, vuelva a leer Setting up trust evaluation hooks." #: i2p2www/pages/site/get-involved/guides/monotone.html:360 msgid "" @@ -3919,12 +4551,15 @@ msgid "" "=\"#updating-your-working-copy-to-the-latest-version\">next\n" " section." msgstr "" +"Si ya ha comprobado (`checkout`) un ramal de desarrollo (`branch`),\n" +"pase a la siguiente sección." #: i2p2www/pages/site/get-involved/guides/monotone.html:367 msgid "" "Change into the directory where i2p.mtn is located. Over " "there issue:" -msgstr "" +msgstr "Cambie al directorio donde se emplace i2p.mtn. Allí ejecute:" #: i2p2www/pages/site/get-involved/guides/monotone.html:376 msgid "" @@ -3934,6 +4569,13 @@ msgid "" "Congratulations! You have\n" " successfully checked out the latest I2P sources, ready to be compiled." msgstr "" +"La comprobacion (`checkout`) debería completarse sin mensajes de error, y" +" un \n" +"directorio llamado i2p.i2p debería aparecer en el directorio" +" actual. \n" +"¡Felicidades! Ha comprobado el último código fuente de I2P con éxito. " +"está listo \n" +"para ser compilado." #: i2p2www/pages/site/get-involved/guides/monotone.html:387 msgid "" @@ -3947,10 +4589,17 @@ msgid "" "i2p.i2p\n" " " msgstr "" +"Si no ha hecho esto ya, sincronice su repositorio local con código \n" +"fresco desde el servidor. Para lograr esto, vaya al directorio donde se \n" +"emplace i2p.mtn y ejecute:\n" +"
      \n" +"
    • $ mtn --db=\"i2p.mtn\" -k \"\" pull 127.0.0.1:8998 " +"i2p.i2p
    • \n" +"
    " #: i2p2www/pages/site/get-involved/guides/monotone.html:398 msgid "Now change into your i2p.i2p directory, and over there issue:" -msgstr "" +msgstr "Ahora vaya a su directorio i2p.i2p, y allí ejecute:" #: i2p2www/pages/site/get-involved/guides/monotone.html:407 msgid "" @@ -3958,30 +4607,40 @@ msgid "" "successfully updated to the latest I2P sources. They\n" " should be ready to compile." msgstr "" +"En tanto no haya errores…¡Felicidades! Ha realizado la " +"actualización \n" +"al último código fuente de I2P con éxito. Debe estar listo para compilar." #: i2p2www/pages/site/get-involved/guides/monotone.html:416 msgid "Obtaining and deploying developers' transport keys" -msgstr "" +msgstr "Obtención y despliegue de claves de transporte de desarrolladores" #: i2p2www/pages/site/get-involved/guides/monotone.html:419 msgid "" "As a server operator you may want to grant push access to certain " "developers." msgstr "" +"Como operador de servidor, podría querer otorgar acceso a modificación\n" +"(`push`) del código a ciertos desarrolladores." #: i2p2www/pages/site/get-involved/guides/monotone.html:427 msgid "By default the Monotone server denies all access." -msgstr "" +msgstr "El servidor Monotone deniega todo acceso por defecto." #: i2p2www/pages/site/get-involved/guides/monotone.html:433 msgid "To grant pull access to all clients, set the following in" msgstr "" +"Para garantizar acceso de sincronización local (`pull`) a todos los " +"clientes, \n" +"configure lo siguiente en " #: i2p2www/pages/site/get-involved/guides/monotone.html:445 msgid "" "No one will not be able to push code to your server without permission " "being explicitly granted. To grant push access:" msgstr "" +"Nadie será capaz de modificar código en su servidor (`push`) sin serle \n" +"otorgado permiso explícito. Para otorgar acceso de modificación:" #: i2p2www/pages/site/get-involved/guides/monotone.html:451 msgid "" @@ -3993,6 +4652,13 @@ msgid "" "
    \n" "with one key per line." msgstr "" +"Añada el nombre de la clave de transporte del usuario en \n" +"$HOME/.monotone/write-permissions como\n" +"
    \n"
    +"zzz-transport@mail.i2p\n"
    +"complication-transport@mail.i2p\n"
    +"
    \n" +"con una clave por línea." #: i2p2www/pages/site/get-involved/guides/monotone.html:462 msgid "" @@ -4002,6 +4668,13 @@ msgid "" "=\"#obtaining-and-deploying-developers-keys\">Obtaining and deploying " "developers' keys." msgstr "" +"Importe la(s) clave(s) de transporte a su base de datos. El procedimiento" +" \n" +"para importar claves \n" +"de transporte es el mismo que para importar claves de consignación " +"(`commit`), que se describe en \n" +"la sección Obtención" +" y despliegue de claves de transporte de desarrolladores." #: i2p2www/pages/site/get-involved/guides/monotone.html:472 msgid "" @@ -4009,6 +4682,10 @@ msgid "" "monotone will lock the database while it is served to others.\n" " Make a copy of your development database, then start the server with:" msgstr "" +"Se debe usar una base de datos aparte para su servidor Monotone porque " +"Monotone bloqueará la base de datos mientras sea servida a otros. \n" +"Haga una copia de su base de datos de desarrollo, y luego inicie el " +"servidor con: " #: i2p2www/pages/site/get-involved/guides/monotone.html:479 msgid "" @@ -4018,6 +4695,13 @@ msgid "" "making the first client connection to your server\n" " (or by clearing the password for your transport key)." msgstr "" +"Si su clave está protegida con una frase-contraseña, Monotone puede " +"requerir\n" +"la frase-contraseña cuando conecte el primer cliente. Puede evitar esto " +"realizando \n" +"usted la primera conexión de cliente a su servidor (o eliminando la " +"contraseña \n" +"para su clave de transporte)." #: i2p2www/pages/site/get-involved/guides/monotone.html:487 msgid "" @@ -4026,6 +4710,10 @@ msgid "" " server tunnel for it. Use the \"Standard\" tunnel type and \"Bulk\" " "profile." msgstr "" +"Para que su servidor sea accesible para otros sobre I2P, tendrá que crear" +" un \n" +"túnel de servidor para él. Use el tipo de túnel \"Standard\" y el perfil " +"\"Bulk\" (masivo)." #: i2p2www/pages/site/get-involved/guides/monotone.html:497 msgid "" @@ -4035,6 +4723,10 @@ msgid "" " \"the ordinary way\" on Debian systems, doing it the \"Debian way\" may" " be more straightforward." msgstr "" +"Debian (entre otras distribuciones) tiene integrado Monotone en sus \n" +"estructuras demonios/servicios. Aunque los servidores Monotone aún\n" +"se pueden ejecutar \"de la forma corriente\" en sistemas Debian, hacerlo\n" +"\"de la forma Debian\" podría ser más apropiado." #: i2p2www/pages/site/get-involved/guides/monotone.html:505 msgid "" @@ -4045,6 +4737,13 @@ msgid "" "or to\n" " customize the host, port, or database location." msgstr "" +"Los permisos se otorgan editando los ficheros\n" +"/etc/monotone/read-permissions y \n" +"/etc/monotone/write-permissions. También tendrá que editar \n" +"/etc/default/monotone para hacer que Monotone se inicie \n" +"en el arranque o para ajustar anfitrión (`host`), puerto, o emplazamiento" +" \n" +"de la base de datos." #: i2p2www/pages/site/get-involved/guides/new-developers.html:2 msgid "New Developer's Guide" @@ -4474,7 +5173,7 @@ msgstr "" #: i2p2www/pages/site/get-involved/guides/new-translators.html:2 msgid "New Translator's Guide" -msgstr "" +msgstr "Guía para el nuevo traductor" #: i2p2www/pages/site/get-involved/guides/new-translators.html:4 msgid "Here's a very quick guide to getting started." @@ -4503,7 +5202,7 @@ msgstr "" #: i2p2www/pages/site/get-involved/guides/new-translators.html:17 #: i2p2www/pages/site/get-involved/guides/new-translators.html:82 msgid "Preparation" -msgstr "" +msgstr "Preparación" #: i2p2www/pages/site/get-involved/guides/new-translators.html:19 #: i2p2www/pages/site/get-involved/guides/new-translators.html:84 @@ -4516,6 +5215,13 @@ msgid "" "please update the translation status on this wiki " "page." msgstr "" +"Venga a #i2p-dev en el IRC para hablar con la gente.\n" +"Reclame el idioma - \n" +"Para asegurarse de que otros colaboradores no trabajen sobre los ficheros" +" \n" +"sobre los que usted está trabajando, actualice el estatus de la " +"traducción \n" +"en esta página wiki." #: i2p2www/pages/site/get-involved/guides/new-translators.html:25 #, python-format @@ -4525,12 +5231,19 @@ msgid "" "checking out i2p.www branch, and generate your own monotone keys.\n" "It is not required that you sign a dev agreement." msgstr "" +"Siga la Guía para el nuevo desarrollador,\n" +"que incluye la instalación de monotone, comprobación (`checkout`) del\n" +"ramal de desarrollo (`branch`) i2p.www, y la generación de sus propias \n" +"claves monotone. No se requiere que firme un nuevo acuerdo de " +"desarrollador." #: i2p2www/pages/site/get-involved/guides/new-translators.html:33 msgid "" "Create files:\n" "If the file for your language does not exist yet:" msgstr "" +"Cree ficheros \n" +"Si el fichero para su idioma no existe aún: " #: i2p2www/pages/site/get-involved/guides/new-translators.html:38 msgid "" @@ -4541,18 +5254,29 @@ msgid "" "i2p2www/translations/locale/LC_MESSAGES/messages.po. " "\"mtn add\" this file." msgstr "" +"Ejecute \"./extract-messages.sh\" para generar " +"messages.pot en el directorio base. Edite la cabecera de " +"este archivo, y entonces ejecute \"./init-new-po.sh locale\"" +" para generar el archivo " +"i2p2www/translations/locale/LC_MESSAGES/messages.po. " +"\"mtn add\" este archivo." #: i2p2www/pages/site/get-involved/guides/new-translators.html:43 msgid "" "Edit i2p2www/pages/global/lang.html and add a line for your " "language (copy an existing line)." msgstr "" +"Edite i2p2www/pages/global/lang.html y añada una línea para " +"su idioma (replique una existente)." #: i2p2www/pages/site/get-involved/guides/new-translators.html:46 msgid "" "Add a flag image file to i2p2www/static/images/flags/ for " "the menu (copy from the router)." msgstr "" +"Añada un archivo de imagen con una bandera a " +"i2p2www/static/images/flags/ para el menú (cópielo desde el " +"enrutador (`router`))." #: i2p2www/pages/site/get-involved/guides/new-translators.html:52 msgid "" @@ -4561,6 +5285,10 @@ msgid "" "To work with .po files efficiently, you may wish to use POEdit" msgstr "" +"Edite los ficheros: \n" +"Edite i2p2www/translations/locale/LC_MESSAGES/messages.po. \n" +"Para trabajar con ficheros .po eficientemente, podría querer usar POEdit" #: i2p2www/pages/site/get-involved/guides/new-translators.html:58 #: i2p2www/pages/site/get-involved/guides/new-translators.html:151 @@ -4573,15 +5301,28 @@ msgid "" "i2p.i2p\".\n" "This synchronizes your local repo with the repo on the target machine." msgstr "" +"Regístrelos:\n" +"Haga \"mtn pull\", \"mtn update\". Luego " +"regístrelos como \"mtn ci -k yourname@mail.i2p file1 file2 " +"...\".\n" +"Esto recopila la información de diferencias (diff) de su archivo " +"modificado en \n" +"su repositorio local.\n" +"Entonces haga \"mtn sync mtn.i2p2.de -k yourname-transport@mail.i2p" +" i2p.i2p\".\n" +"Esto sincroniza su repositorio local con el respositorio en la máquina " +"objetivo." #: i2p2www/pages/site/get-involved/guides/new-translators.html:65 #: i2p2www/pages/site/get-involved/guides/new-translators.html:158 msgid "Repeat. Check in often. Don't wait until it is perfect." msgstr "" +"Repita. Registre traducciones con frecuencia. No espere hasta que estén " +"perfectas." #: i2p2www/pages/site/get-involved/guides/new-translators.html:72 msgid "How to Translate the Router Console" -msgstr "" +msgstr "Cómo traducir la consola del enrutador (`router`)" #: i2p2www/pages/site/get-involved/guides/new-translators.html:74 #, python-format @@ -4592,6 +5333,12 @@ msgid "" " team. \n" "Alternatively it can be done \"the old way\" as outlined below." msgstr "" +"La forma más fácil de largo para traducir la consola del enrutador " +"(`router`) \n" +"es abrir una cuenta en Transifex y " +"solicitar \n" +"unirse a un equipo de traducción. Alternativamente puede hacerse \n" +"\"a la vieja usanza\" como se describe debajo." #: i2p2www/pages/site/get-involved/guides/new-translators.html:90 #, python-format @@ -4600,10 +5347,14 @@ msgid "" "including the installation of monotone and the gettext tools,\n" "checking out i2p.i2p branch, and generate your own monotone keys." msgstr "" +"Siga la Guía para el nuevo desarrollador, \n" +"que incluye la instalación de monotone y las herramientas gettext, la \n" +"comprobación (`checkout`) del ramal de desarrollo (`branch`) i2p.i2p , \n" +"y genere sus propias claves monotone." #: i2p2www/pages/site/get-involved/guides/new-translators.html:95 msgid "Generate your own gpg key and sign the dev agreement." -msgstr "" +msgstr "Genere su propia clave GPG y firme el acuerdo de desarrollador." #: i2p2www/pages/site/get-involved/guides/new-translators.html:101 msgid "" @@ -4611,12 +5362,18 @@ msgid "" "webpages first.\n" "At least an i2p homepage in your language would be great." msgstr "" +"Antes de inciar una traducción de la consola, mejor ayude primero a \n" +"traducir alguna de las páginas web de I2P. Sería genial si al menos\n" +"tradujera la página principal de I2P a su idioma." #: i2p2www/pages/site/get-involved/guides/new-translators.html:106 msgid "" "What to translate:\n" "There are about 15 files in the i2p.i2p branch that needs translation:" msgstr "" +"Qué traducir \n" +"Hay cerca de 15 ficheros en el ramal de desarrollo (`branch`) i2p.i2p\n" +"que precisan traducción:" #: i2p2www/pages/site/get-involved/guides/new-translators.html:132 msgid "" @@ -4625,6 +5382,10 @@ msgid "" "create your own. by copying and renaming other language files you know " "with your own lang code." msgstr "" +"Donde xx es su código de idioma como fr/de/ch/zh...\n" +"Podría o no haber archivos con su código de idioma. Si no, puede crear " +"los suyos propios copiando y renombrando otros ficheros de idiomas con su" +" propio código de idioma." #: i2p2www/pages/site/get-involved/guides/new-translators.html:137 msgid "" @@ -4635,6 +5396,12 @@ msgid "" "After creating a .po file, edit the headers. Then run \"ant " "distclean poupdate\"." msgstr "" +"Cree los ficheros:\n" +"Si el fichero para su idioma no existe aún, copie otro fichero de idioma " +"a un nuevo fichero foo_xx.bar para su idioma.\n" +"Entonces haga \"mtn add\" sobre el fichero.\n" +"Después de crear un fichero .po, edite las cabeceras. Luego ejecute " +"ant distclean poupdate\"." #: i2p2www/pages/site/get-involved/guides/new-translators.html:144 msgid "" @@ -4644,6 +5411,11 @@ msgid "" "To work with .po files efficiently, you may wish to use POEdit" msgstr "" +"Comience a trabajar:\n" +"Edite los ficheros HTML con cualquier editor de texto.\n" +"Asegúrese de no usar un editor en modo HTML que reformatee todo.\n" +"Para trabajar con ficheros .po eficientemente, podría querer usar POEdit" #: i2p2www/pages/site/get-involved/guides/new-translators.html:163 msgid "" @@ -4651,6 +5423,9 @@ msgid "" "If you have questions about the meaning of the terms in the console, ask " "in #i2p-dev on IRC." msgstr "" +"Como puede ver, no es tan difícil.\n" +"Si tiene preguntas acerca del significado de los términos en la consola, " +"pregunte en #i2p-dev en el IRC." #: i2p2www/pages/site/get-involved/guides/new-translators.html:169 msgid "FAQ" @@ -4661,10 +5436,13 @@ msgid "" "Q: Why do I have to install monotone, Java, jsp, learn about .po files " "and html, etc.? Why can't I just do a translation and email it to you?" msgstr "" +"P: ¿Por qué tengo que instalar Monotone, Java, JSP, aprender acerca de " +"los ficheros .po y HTML, etc.? ¿Por qué no puedo simplemente hacer una " +"traducción y enviársela vía email?" #: i2p2www/pages/site/get-involved/guides/new-translators.html:175 msgid "A: Several reasons:" -msgstr "" +msgstr "R: Por diferentes razones:" #: i2p2www/pages/site/get-involved/guides/new-translators.html:178 #, python-format @@ -4672,6 +5450,8 @@ msgid "" "You might be interested in translating via Transifex. Request to join a " "translation team here." msgstr "" +"Podría estar interesado en traducir a través de Transifex. Solicite " +"unirse a un equipo de traducción aquí." #: i2p2www/pages/site/get-involved/guides/new-translators.html:182 msgid "" @@ -4679,6 +5459,9 @@ msgid "" "submit them to our source control system on your behalf. Even if we did, " "it doesn't scale." msgstr "" +"No tenemos a nadie que tenga tiempo para aceptar contribuciones manuales " +"y las entregue a nuestro sistema de control de código fuente \n" +"en su lugar. Incluso si lo hicieramos, no sería adecuado." #: i2p2www/pages/site/get-involved/guides/new-translators.html:186 msgid "" @@ -4688,6 +5471,11 @@ msgid "" "will update or add to the English text, thus requiring a translation " "update." msgstr "" +"Quizá esté pensando que la traducción es un proceso de un sólo paso. No " +"lo es. No puede hacerlo todo de una vez. Cometerá errores. Ha de probarla" +" y ajustarla para hacer que luzca correcta antes de entregarla. " +"Los desarrolladores actualizarán o añadirán sobre el texto en Inglés, y " +"así será como soliciten una actualización de la traducción." #: i2p2www/pages/site/get-involved/guides/new-translators.html:190 msgid "" @@ -4695,18 +5483,26 @@ msgid "" "authentication and accountablility - we know who is doing what, and we " "can track changes, and revert them if necessary." msgstr "" +"Hacer que los traductores usen directamente un sistema de control de " +"código fuente proporciona autentificación y registrabilidad - conocemos " +"quién está haciendo qué, y podemos seguir los cambios y revertirlos si " +"fuese necesario." #: i2p2www/pages/site/get-involved/guides/new-translators.html:194 msgid "" ".po files are not difficult. If you don't want to work directly with " "them, we recommend 'poedit'." msgstr "" +"Los ficheros .po no son difíciles. Si no quiere trabajar directamente con" +" ellos, le recomendamos 'poedit'." #: i2p2www/pages/site/get-involved/guides/new-translators.html:198 msgid "" "HTML files are not difficult. Just ignore the html stuff and translate " "the text." msgstr "" +"Los ficheros HTML no son difíciles. Tan sólo ignore todo el material HTML" +" y traduzca el texto." #: i2p2www/pages/site/get-involved/guides/new-translators.html:202 msgid "" @@ -4715,6 +5511,10 @@ msgid "" "use monotone regularly. Monotone is simply a source control system, it is" " not about \"coding\"." msgstr "" +"Instalar y usar Monotone no es tan difícil. Varios de los traductores y " +"otros contribuidores a I2P son no-programadores, y usan Monotone " +"regularmente. Monotone es sencillamente un sistema de control de código " +"fuente, no tiene que ver con la \"programación\"." #: i2p2www/pages/site/get-involved/guides/new-translators.html:206 msgid "" @@ -4723,6 +5523,10 @@ msgid "" " maintained, and not corrupted by email programs or other methods of " "transfer." msgstr "" +"Nuestros elementos a traducir no son \"documentos\". Son ficheros HTML y " +"ficheros .po, con un formato específico y una codificación de caracteres " +"(UTF-8), que debe mantenerse y no corromperse por programas de email u " +"otros métodos de transferencia." #: i2p2www/pages/site/get-involved/guides/new-translators.html:210 msgid "" @@ -4730,6 +5534,9 @@ msgid "" "well, needed an administrator, and a pootle-based process would suffer " "from a number of the above flaws." msgstr "" +"Nos fijamos en 'pootle' como una herramienta intermedia para traductores." +" No funcionó bien, necesitaba un administrador, y un proceso basado-en-" +"pootle adolecería de algunos de los defectos anteriores." #: i2p2www/pages/site/get-involved/guides/new-translators.html:215 msgid "" @@ -4737,10 +5544,14 @@ msgid "" "Yes, we know it is somewhat of a hurdle to get started. It's really the " "only possible way we can do it. Give it a try, it really isn't that hard." msgstr "" +"En resumen: \n" +"Sí, sabemos que comenzar es como una carrera de obstáculos. En realidad " +"es la única forma posible de la que podemos hacerlo. Inténtelo, realmente" +" no es tan difícil." #: i2p2www/pages/site/get-involved/guides/new-translators.html:220 msgid "More Information" -msgstr "" +msgstr "Más información" #: i2p2www/pages/site/get-involved/guides/new-translators.html:221 #, python-format @@ -4748,4 +5559,6 @@ msgid "" "The #i2p-dev channel on IRC, or the translation forum on %(zzz)s." msgstr "" +"El canal #i2p-dev del IRC, o el forum de traducción en %(zzz)s." diff --git a/i2p2www/translations/es/LC_MESSAGES/priority.po b/i2p2www/translations/es/LC_MESSAGES/priority.po index 61fb89f4..b4a42fac 100644 --- a/i2p2www/translations/es/LC_MESSAGES/priority.po +++ b/i2p2www/translations/es/LC_MESSAGES/priority.po @@ -14,7 +14,7 @@ msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" "POT-Creation-Date: 2013-09-16 12:59+0000\n" -"PO-Revision-Date: 2013-09-05 12:43+0000\n" +"PO-Revision-Date: 2013-09-19 14:19+0000\n" "Last-Translator: trolly\n" "Language-Team: Spanish " "(http://www.transifex.com/projects/p/I2P/language/es/)\n" @@ -530,15 +530,15 @@ msgid "Packages for Debian & Ubuntu are available." msgstr "Hay disponibles paquetes para Debian & Ubuntu." #: i2p2www/pages/downloads/list.html:116 -#, fuzzy, python-format +#, python-format msgid "" "The above file is the current release build.\n" " The latest dev build is version %(devbuild)s, and is available from\n" " str4d's eepsite." msgstr "" -"El archivo de arriba es la versión actual. La última compilación es la " -"versión 0.9.7-20_b1-API18, y está disponible en la eepsite de str4d." +"El fichero de arriba es la versión actual estable. La última versión de \n" +"desarrollo es la versión %(devbuild)s, y está disponible desde el \n" +"eepsite de str4d." #: i2p2www/pages/downloads/list.html:122 msgid "" @@ -780,7 +780,7 @@ msgstr "" #: i2p2www/pages/downloads/list.html:287 msgid "Grab a cup of coffee and come back in 11 minutes" -msgstr "Vaya a por una taza de horchata/café/mate y vuelva en 11 minutos." +msgstr "Vaya a por una taza de horchata/café/cacao/mate y vuelva en 11 minutos." #: i2p2www/pages/downloads/list.html:295 #, python-format @@ -2430,7 +2430,6 @@ msgstr "" " /> clientApp.0.args=7657 0.0.0.0 ./webapps/" #: i2p2www/pages/site/faq.html:452 -#, fuzzy msgid "" "Go to http://localhost:7657/configui" @@ -2438,9 +2437,8 @@ msgid "" "and add a console username and password if desired." msgstr "" "Vaya a http://localhost:7657/configadvanced.jsp" -" y añada un opción nueva: consolePassword=foo (o la " -"contraseña que desee)" +"href=\"http://localhost:7657/configui\">http://localhost:7657/configui" +" y añada un nombre de usuario de consola y una contraseña si lo desea." #: i2p2www/pages/site/faq.html:458 msgid "" @@ -2456,7 +2454,6 @@ msgstr "" "las aplicaciones clientes." #: i2p2www/pages/site/faq.html:465 -#, fuzzy msgid "" "After that fires up, you should now be able to reach your console " "remotely. Reload the router at\n" @@ -2469,12 +2466,15 @@ msgid "" "127.0.0.1:7657 as well as\n" "any LAN/WAN IP." msgstr "" -"Después de arrancar debería ser posible acceder a la consola remotamente." -" Se le preguntará por el usuario y la contraseña - el usuario es " -"\\\"admin\\\" y la contraseña la que puso en el paso 2. Nota; " -"0.0.0.0 especifica un dispositivo , no una red o máscara de " -"red. 0.0.0.0 significa \\\"en todos los interfaces\\\" con lo cual es " -"accesible tanto desde 127.0.0.1:7657 como desde la IP de LAN/WAN. " +"Tras establecer eso, ahora debería ser capaz de alcanzar su consola " +"remotamente. Vuelva a cargar el router en http://127.0.0.1:7657 y \n" +"se le solicitará el nombre de usuario y la contraseña que especificó en " +"el \n" +"paso 2 de arriba si su navegador soporta el diálogo emergente de \n" +"autentificación. Nota: el 0.0.0.0 de arriba especifica una \n" +"interfaz, no una red o máscara de red. 0.0.0.0 significa \"ligarla" +" con todas las interfaces\", por lo que puede ser alcanzada en " +"127.0.0.1:7657 así como en cualquier IP LAN/WAN." #: i2p2www/pages/site/faq.html:476 msgid "" @@ -3180,26 +3180,29 @@ msgid "What is I2P?" msgstr "¿Qué es I2P?" #: i2p2www/pages/site/index.html:15 -#, fuzzy msgid "" "I2P is an anonymous overlay network - a network within a network. It is " "intended to protect communication from dragnet surveillance and " "monitoring by third parties such as ISPs.\n" msgstr "" -"I2P es una red anónima superpuesta - una red dentro de otra red. Ha sido " -"creada para proteger las comunicaciones contra la vigilancia y el " -"monitoreo por parte de terceras partes como los ISPs.\n" +"I2P es una red de capa anónima - una red dentro de una red. Está pensada" +" \n" +"para proteger la comunicación del seguimiento de las redes de vigilancia " +"y la \n" +"monitorización por terceras partes como los ISPs (proveedores de \n" +"Internet).\n" +"\n" #: i2p2www/pages/site/index.html:18 -#, fuzzy msgid "" "I2P is used by many people who care about their privacy: activists, " "oppressed people, journalists and whistleblowers, as well as the average " "person.\n" msgstr "" -"I2P es usado por mucha gente que se preocupa de su privacidad: " -"activistas, personas oprimidas, periodistas y personas que denuncian la " -"corrupción - aunque también por la gente común.\n" +"I2P es usado por muchas personas que se preocupan por su privacidad: \n" +"activistas, poblaciones oprimidas, periodistas, denunciantes, así como " +"por \n" +"el ciudadano medio.\n" #: i2p2www/pages/site/index.html:21 msgid "" @@ -3208,16 +3211,19 @@ msgid "" "stronger as the size of the network increases and with ongoing academic " "review.\n" msgstr "" +"Ninguna red puede ser \"perfectamente anónima\". El objetivo continuado " +"de \n" +"I2P es hacer los ataques más y más difíciles de montar. Su anónimato se \n" +"volverá más fuerte al crecer el tamaño de la red, y con la revisión " +"académica que está en marcha.\n" #: i2p2www/pages/site/index.html:24 -#, fuzzy msgid "" "I2P is available on desktops, embedded systems (like the Raspberry Pi) " "and Android phones. Help spread the word!\n" msgstr "" -"I2p se ejecuta con Java por lo cual está disponible allí donde Java " -"funcione, incluyendo sistemas de escritorio, embebidos (como Raspberry " -"Pi) y móviles Android.\n" +"I2P está disponible para escritorios, sistemas embebidos (como el \n" +"Rapsberry Pi) y teléfonos Android. ¡Ayude a extender el mensaje!\n" #: i2p2www/pages/site/index.html:28 msgid "Read more…" diff --git a/i2p2www/translations/fr/LC_MESSAGES/get-involved.po b/i2p2www/translations/fr/LC_MESSAGES/get-involved.po index 10f1bc34..000e70c7 100644 --- a/i2p2www/translations/fr/LC_MESSAGES/get-involved.po +++ b/i2p2www/translations/fr/LC_MESSAGES/get-involved.po @@ -10,8 +10,8 @@ msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" "POT-Creation-Date: 2013-09-16 12:59+0000\n" -"PO-Revision-Date: 2013-08-11 15:29+0000\n" -"Last-Translator: Boxoa590\n" +"PO-Revision-Date: 2013-09-16 13:02+0000\n" +"Last-Translator: str4d \n" "Language-Team: French " "(http://www.transifex.com/projects/p/I2P/language/fr/)\n" "Plural-Forms: nplurals=2; plural=(n > 1)\n" @@ -37,7 +37,7 @@ msgstr "" #: i2p2www/pages/site/get-involved/donate.html:11 #: i2p2www/pages/site/get-involved/donate.html:27 -#, fuzzy, python-format +#, python-format msgid "" "As of %(date)s, eche|on has been running a\n" "%(cointype)s account for the I2P project.\n" @@ -46,12 +46,6 @@ msgid "" "and leave eche|on a note if you'd like your donation to be\n" "mentioned on the I2P webpage." msgstr "" -"Depuis décember 2010, eche|on fait fonctionner un compte Bitcoin pour le projet I2P.\n" -"Si vous souhaitez faire un don en utilisant Bitcoin, il suffit de " -"transférer votre quantité désirée de pièces de monnaie pour le compte\n" -"%(account)s et laisser à eche|on une note si vous souhaitez que " -"votre don soit mentionné sur le site web I2P." #: i2p2www/pages/site/get-involved/donate.html:22 #: i2p2www/pages/site/get-involved/donate.html:38 diff --git a/i2p2www/translations/fr/LC_MESSAGES/priority.po b/i2p2www/translations/fr/LC_MESSAGES/priority.po index 28e4f9ae..ebb29529 100644 --- a/i2p2www/translations/fr/LC_MESSAGES/priority.po +++ b/i2p2www/translations/fr/LC_MESSAGES/priority.po @@ -5,13 +5,14 @@ # Translators: # Boxoa590, 2013 # magma , 2011 +# Towatowa441, 2013 msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" "POT-Creation-Date: 2013-09-16 12:59+0000\n" -"PO-Revision-Date: 2013-09-04 23:49+0000\n" -"Last-Translator: Boxoa590\n" +"PO-Revision-Date: 2013-09-17 19:52+0000\n" +"Last-Translator: Towatowa441\n" "Language-Team: French " "(http://www.transifex.com/projects/p/I2P/language/fr/)\n" "Plural-Forms: nplurals=2; plural=(n > 1)\n" @@ -553,15 +554,15 @@ msgid "Packages for Debian & Ubuntu are available." msgstr "Des packages pour Debian & Ubuntu sont disponibles." #: i2p2www/pages/downloads/list.html:116 -#, fuzzy, python-format +#, python-format msgid "" "The above file is the current release build.\n" " The latest dev build is version %(devbuild)s, and is available from\n" " str4d's eepsite." msgstr "" "Le fichier ci-dessus est l'actuelle version construite.\n" -"La version dev la plus récente est 0.9.7-20_b1-API18, et est disponible " -"depuis\n" +"La version dev la plus récente est la version %(devbuild)s, et est " +"disponible depuis\n" "le Eepsite de str4d." #: i2p2www/pages/downloads/list.html:122 @@ -2565,7 +2566,6 @@ msgstr "" "clientApp.0.args=7657 0.0.0.0 ./webapps/" #: i2p2www/pages/site/faq.html:452 -#, fuzzy msgid "" "Go to http://localhost:7657/configui" @@ -2573,10 +2573,9 @@ msgid "" "and add a console username and password if desired." msgstr "" "Allez à http://localhost:7657/configadvanced.jsp⏎" +"href=\"http://localhost:7657/configui\">http://localhost:7657/configui⏎" "\n" -"et ajoutez une nouvelle option: consolePassword=foo (ou le " -"mot de passe que vous voulez)" +"et ajoutez un nom d'utilisateur de console et un mot de passe si désiré." #: i2p2www/pages/site/faq.html:458 msgid "" @@ -2592,7 +2591,6 @@ msgstr "" "recharge les applications clientes" #: i2p2www/pages/site/faq.html:465 -#, fuzzy msgid "" "After that fires up, you should now be able to reach your console " "remotely. Reload the router at\n" @@ -2606,13 +2604,13 @@ msgid "" "any LAN/WAN IP." msgstr "" "Après que cela se soit déclenché, vous devriez maintenant être en mesure " -"d'atteindre votre console à distance. ⏎\n" -"Vous serez invité à entrer un nom d'utilisateur et mot de passe si - le " -"nom d'utilisateur est ⏎\n" -"«admin» et le mot de passe est celui que vous avez spécifié à l'étape 2 " -"ci-dessus. Remarque: le ⏎\n" +"d'atteindre votre console à distance. Rechargez le routeur depuis⏎\n" +"http://127.0.0.1:7657 et vous serez invité à entrer un nom d'utilisateur " +"et mot de passe que vous avez spécifié à l'étape 2\n" +"ci-dessus si votre navigateur supporte l'authentification par fenêtre " +"popup. Note : le\n" "0.0.0.0 ci-dessus spécifie une interface, pas un " -"réseau ou un masque. 0.0.0.0 ⏎\n" +"réseau ou un masque réseau. 0.0.0.0 ⏎\n" "signifie \"lier à toutes les interfaces\", de sorte qu'il peut être " "accessible sur 127.0.0.1:7657 ainsi que ⏎\n" "tout LAN / WAN IP." @@ -3385,19 +3383,17 @@ msgid "What is I2P?" msgstr "Qu'est-ce que I2P ?" #: i2p2www/pages/site/index.html:15 -#, fuzzy msgid "" "I2P is an anonymous overlay network - a network within a network. It is " "intended to protect communication from dragnet surveillance and " "monitoring by third parties such as ISPs.\n" msgstr "" -"I2P est un réseau superposé anonyme - un réseau au sein d'un réseau. Il " -"est destiné à protéger les communications contre la surveillance par " -"rafle - dragnet surveillance -, et la surveillance par des tiers tels que" -" les fournisseurs de services Internet.\n" +"I2P est un réseau overlay (superposé) anonyme - un réseau au sein d'un " +"réseau. Il est destiné à protéger les communications contre la " +"surveillance par rafle - dragnet surveillance -, et la surveillance par " +"des tiers tels que les fournisseurs d'accès à Internet.\n" #: i2p2www/pages/site/index.html:18 -#, fuzzy msgid "" "I2P is used by many people who care about their privacy: activists, " "oppressed people, journalists and whistleblowers, as well as the average " @@ -3405,7 +3401,7 @@ msgid "" msgstr "" "I2P est utilisé par beaucoup de gens qui se soucient de leur vie privée :" " des militants, des peuples opprimés, des journalistes et des " -"dénonciateurs - ainsi que la personne ordinaire.\n" +"dénonciateurs, ainsi que la personne ordinaire.\n" #: i2p2www/pages/site/index.html:21 msgid "" @@ -3414,16 +3410,18 @@ msgid "" "stronger as the size of the network increases and with ongoing academic " "review.\n" msgstr "" +"Aucun réseau ne peut être \"parfaitement anonyme\". L'objectif continu " +"de I2P est de rendre les attaques de plus en plus difficiles à monter. " +"Son anonymat deviendra plus grand en même temps que la taille augmentera " +"et avec les recherches universitaires en cours.\n" #: i2p2www/pages/site/index.html:24 -#, fuzzy msgid "" "I2P is available on desktops, embedded systems (like the Raspberry Pi) " "and Android phones. Help spread the word!\n" msgstr "" -"I2P fonctionne grâce à Java et il est donc disponible partout où Java " -"s'exécute, y compris les ordinateurs de bureau, les systèmes embarqués " -"(comme le Raspberry Pi) et les téléphones Android.\n" +"I2P est disponible sur ordinateurs de bureau, systèmes incorporés (comme " +"le Raspberry Pi) et téléphones Android. Aidez à passer le mot !\n" #: i2p2www/pages/site/index.html:28 msgid "Read more…" diff --git a/i2p2www/translations/pt/LC_MESSAGES/priority.po b/i2p2www/translations/pt/LC_MESSAGES/priority.po index b9904149..042a1c6e 100644 --- a/i2p2www/translations/pt/LC_MESSAGES/priority.po +++ b/i2p2www/translations/pt/LC_MESSAGES/priority.po @@ -11,7 +11,7 @@ msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" "POT-Creation-Date: 2013-09-16 12:59+0000\n" -"PO-Revision-Date: 2013-09-04 14:25+0000\n" +"PO-Revision-Date: 2013-09-16 13:04+0000\n" "Last-Translator: str4d \n" "Language-Team: Portuguese " "(http://www.transifex.com/projects/p/I2P/language/pt/)\n" diff --git a/i2p2www/translations/sv_SE/LC_MESSAGES/priority.po b/i2p2www/translations/sv_SE/LC_MESSAGES/priority.po index 329c87ec..779aa32d 100644 --- a/i2p2www/translations/sv_SE/LC_MESSAGES/priority.po +++ b/i2p2www/translations/sv_SE/LC_MESSAGES/priority.po @@ -10,7 +10,7 @@ msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" "POT-Creation-Date: 2013-09-16 12:59+0000\n" -"PO-Revision-Date: 2013-09-12 00:43+0000\n" +"PO-Revision-Date: 2013-09-20 03:24+0000\n" "Last-Translator: hottuna \n" "Language-Team: Swedish (Sweden) " "(http://www.transifex.com/projects/p/I2P/language/sv_SE/)\n" @@ -22,12 +22,12 @@ msgstr "" #: i2p2www/pages/blog/category.html:2 msgid "Blog Category" -msgstr "" +msgstr "Bloggkategori" #: i2p2www/pages/blog/category.html:4 #, python-format msgid "I2P Blog ATOM Feed for Category: %(category)s" -msgstr "" +msgstr "I2P Blogg ATOM Flöde för Kategori: %(category)s" #: i2p2www/pages/blog/index.html:2 i2p2www/pages/blog/post.html:3 #: i2p2www/pages/global/nav.html:95 @@ -41,7 +41,7 @@ msgstr "I2P Blogg ATOM flöde" #: i2p2www/pages/blog/index.html:17 #, python-format msgid "Posted %(date)s by %(author)s" -msgstr "" +msgstr "Skriven %(date)s av %(author)s" #: i2p2www/pages/blog/latest.html:5 msgid "More blog posts…" @@ -49,7 +49,7 @@ msgstr "Fler blogg-poster…" #: i2p2www/pages/blog/post.html:6 msgid "Posted:" -msgstr "" +msgstr "Skrivet:" #: i2p2www/pages/blog/post.html:7 msgid "Author:" @@ -443,7 +443,7 @@ msgstr "Rena installationer" #: i2p2www/pages/downloads/list.html:76 i2p2www/pages/downloads/list.html:135 #: i2p2www/pages/downloads/list.html:264 msgid "select alternate link" -msgstr "" +msgstr "välj alternativ länk" #: i2p2www/pages/downloads/list.html:39 msgid "Download that file and run it." @@ -907,15 +907,15 @@ msgstr "Denhär sidan är korrekt för routerversion %(accuratefor)s." #: i2p2www/pages/global/macros:21 msgid "Previous" -msgstr "" +msgstr "Föregående" #: i2p2www/pages/global/macros:36 msgid "Next" -msgstr "" +msgstr "Nästa" #: i2p2www/pages/global/macros:43 msgid "Posted in" -msgstr "" +msgstr "Skriven i" #: i2p2www/pages/global/nav.html:4 msgid "About" @@ -1047,7 +1047,7 @@ msgstr "Konfigurationsfiler" #: i2p2www/pages/global/nav.html:72 msgid "GeoIP files" -msgstr "" +msgstr "GeoIP filer" #: i2p2www/pages/global/nav.html:75 i2p2www/pages/global/nav.html:91 msgid "Plugins" @@ -1241,19 +1241,19 @@ msgstr "" #: i2p2www/pages/meetings/show.html:10 msgid "Full IRC Log" -msgstr "" +msgstr "Full IRC Logg" #: i2p2www/pages/papers/list.html:29 msgid "By topic" -msgstr "" +msgstr "Efter ämne" #: i2p2www/pages/papers/list.html:35 msgid "By date" -msgstr "" +msgstr "Efter datum" #: i2p2www/pages/papers/list.html:41 msgid "By author" -msgstr "" +msgstr "Efter författare" #: i2p2www/pages/papers/list.html:83 #, python-format @@ -1323,6 +1323,9 @@ msgid "" "team of developers prefer to communicate via IRC or the developer forum. " "This may change in future." msgstr "" +"I2P har en mailinglista, men den används sällan eftersom det nuvarande " +"utvecklarteamet föredrar att kommunicera via IRC eller utvecklar-forumet." +" Detta kan förändras i framtiden." #: i2p2www/pages/site/contact.html:33 msgid "Subscribing" @@ -1334,6 +1337,9 @@ msgid "" "below) and fill out the form. I2P-internal email addresses " "(foobar@mail.i2p) can be used." msgstr "" +"För att prenumerera på mailinglista, go till informationssidan för " +"mailinlinstan (länkad till nedan) och fyll i formuläret. I2P-interna " +"e-post addresser (foobar@mail.i2p) kan användas." #: i2p2www/pages/site/contact.html:38 msgid "Unsubscribing" @@ -1345,6 +1351,9 @@ msgid "" "to the list information page (linked below) and enter your subscription " "email address." msgstr "" +"För att avprenumerera från mailinglistan eller ändra dina " +"prenumerationsinställningar, gå till informationssidan för mailinglista " +"(länkad till nedan) och fyll i dinprenumerations-adress." #: i2p2www/pages/site/contact.html:43 msgid "Lists" @@ -1359,186 +1368,208 @@ msgid "" "General I2P discussion - anything that doesn't fit in a different list " "goes here." msgstr "" +"Generell I2P discussion - allt som inte hör hemma in andra mailinglistor " +"hör hemma här." #: i2p2www/pages/site/contact.html:53 msgid "" "You don't like mailing lists? Then this is for you. All mailing lists are" " available via NNTP as well." msgstr "" +"Gillar du inte mailinglistor? Då är dethär för dig. Alla mailinglistor " +"finns tillgängliga via NNTP med." #: i2p2www/pages/site/contact.html:58 msgid "Group-List-mapping:" -msgstr "" +msgstr "Grupp mailinglists-mappning:" #: i2p2www/pages/site/contact.html:62 msgid "Servers:" -msgstr "" +msgstr "Servrar:" #: i2p2www/pages/site/faq.html:2 msgid "Frequently Asked Questions" -msgstr "" +msgstr "Vanliga frågor" #: i2p2www/pages/site/faq.html:4 msgid "Index" -msgstr "" +msgstr "Index" #: i2p2www/pages/site/faq.html:7 msgid "General" -msgstr "" +msgstr "Allmänt" #: i2p2www/pages/site/faq.html:9 i2p2www/pages/site/faq.html:51 msgid "What systems will I2P run on?" -msgstr "" +msgstr "Vilka system kan I2P köras på?" #: i2p2www/pages/site/faq.html:10 msgid "Whats an \"eepsite\" and how do I configure my browser so I can use them?" msgstr "" +"Vad är en \"eepsite\" och hur kan jag konfigurera min webbläsare så att " +"jag kan använda dom?" #: i2p2www/pages/site/faq.html:11 i2p2www/pages/site/faq.html:263 msgid "My router has very few active peers, is this OK?" -msgstr "" +msgstr "Min router har väldigt få aktiva peers, är det OK?" #: i2p2www/pages/site/faq.html:12 i2p2www/pages/site/faq.html:498 msgid "What do the Active x/y numbers mean in the router console?" -msgstr "" +msgstr "Vad betyder Aktiva x/y nummerna i routerkonsollen?" #: i2p2www/pages/site/faq.html:13 i2p2www/pages/site/faq.html:225 msgid "" "My active peers / known peers / participating tunnels / connections / " "bandwidth vary dramatically over time! Is anything wrong?" msgstr "" +"Mina aktiva peers / kända peers / deltagande tunnlar / anslutningar / " +"bandbredd varierar dramatisk över tid! Är något fel?" #: i2p2www/pages/site/faq.html:14 i2p2www/pages/site/faq.html:348 msgid "Is using an outproxy safe?" -msgstr "" +msgstr "Är det säkert att använda en utproxy?" #: i2p2www/pages/site/faq.html:15 i2p2www/pages/site/faq.html:374 msgid "Most of the eepsites within I2P are down?" -msgstr "" +msgstr "De flesta \"eepsites\" inom I2P är nere?" #: i2p2www/pages/site/faq.html:16 i2p2www/pages/site/faq.html:527 msgid "What ports does I2P use?" -msgstr "" +msgstr "Vilka portar använder I2P?" #: i2p2www/pages/site/faq.html:17 msgid "Why is I2P listening for connections on port 32000?" -msgstr "" +msgstr "Varför lyssnar I2P efter anslutningar på port 32000?" #: i2p2www/pages/site/faq.html:18 i2p2www/pages/site/faq.html:62 msgid "I think I found a bug, where can I report it?" -msgstr "" +msgstr "Jag tror jag hittade en bugg, var kan jag rapportera den?" #: i2p2www/pages/site/faq.html:19 i2p2www/pages/site/faq.html:107 msgid "What happened to *.i2p.net? What happened to jrandom? Is I2P dead?" -msgstr "" +msgstr "Vad hände med *.i2p.net? Vad hände med jrandom? Är I2P dött?" #: i2p2www/pages/site/faq.html:20 i2p2www/pages/site/faq.html:845 msgid "I have a question!" -msgstr "" +msgstr "Jag har en fråga!" #: i2p2www/pages/site/faq.html:22 msgid "Setup" -msgstr "" +msgstr "Inställningar" #: i2p2www/pages/site/faq.html:24 i2p2www/pages/site/faq.html:232 msgid "" "My router has been up for several minutes and has zero or very few " "connections" msgstr "" +"Min router har var igång i flera minuter och har noll eller väldigt få " +"anslutningar" #: i2p2www/pages/site/faq.html:25 i2p2www/pages/site/faq.html:390 msgid "Why is I2P so slow?" -msgstr "" +msgstr "Varför är I2P så långsamt?" #: i2p2www/pages/site/faq.html:26 i2p2www/pages/site/faq.html:79 msgid "" "I'm missing lots of hosts in my addressbook. What are some good " "subscription links?" msgstr "" +"Jag saknar en massa av hosts i min adressbok. Vilka prenumerationslänkar " +"är bra?" #: i2p2www/pages/site/faq.html:27 i2p2www/pages/site/faq.html:383 msgid "How do I set up my own eepsite?" -msgstr "" +msgstr "Hur sätter jag igång min egen \"eepsite\"?" #: i2p2www/pages/site/faq.html:28 i2p2www/pages/site/faq.html:416 msgid "Bittorrent / I2PSnark / Azureus I2P Plugin Questions?" -msgstr "" +msgstr "Bittorrent / I2PSnark / Azureus I2P Plugin Frågor?" #: i2p2www/pages/site/faq.html:29 i2p2www/pages/site/faq.html:423 msgid "How do I connect to IRC within I2P?" -msgstr "" +msgstr "Hur ansluter jag till IRC inom I2P?" #: i2p2www/pages/site/faq.html:30 i2p2www/pages/site/faq.html:281 msgid "I can't access regular Internet sites through I2P." -msgstr "" +msgstr "Jag kan inte nå vanliga internetsidor genom I2P." #: i2p2www/pages/site/faq.html:31 i2p2www/pages/site/faq.html:296 msgid "I can't access https:// or ftp:// sites through I2P." -msgstr "" +msgstr "Jag kan inte nå https:// eller ftp:// -sidor genom I2P." #: i2p2www/pages/site/faq.html:32 i2p2www/pages/site/faq.html:506 msgid "Is it possible to use I2P as a SOCKS proxy?" -msgstr "" +msgstr "Är det möjligt att använda I2P som en SOCKS5-proxy?" #: i2p2www/pages/site/faq.html:33 i2p2www/pages/site/faq.html:489 msgid "How do I configure my browser?" -msgstr "" +msgstr "Hur ställer jag in min webbläsare?" #: i2p2www/pages/site/faq.html:34 i2p2www/pages/site/faq.html:434 msgid "" "How can I access the web console from my other machines or password " "protect it?" msgstr "" +"Hur kan jag nå webkonsollen från mina andra maskiner eller " +"lösenordsskydda den?" #: i2p2www/pages/site/faq.html:35 i2p2www/pages/site/faq.html:474 msgid "How can I use applications from my other machines?" -msgstr "" +msgstr "Hur kan jag använda applikationer från mina andra maskiner?" #: i2p2www/pages/site/faq.html:36 i2p2www/pages/site/faq.html:748 msgid "How do I reseed manually?" -msgstr "" +msgstr "Hur reseed:ar jag manuellt?" #: i2p2www/pages/site/faq.html:37 i2p2www/pages/site/faq.html:124 msgid "My router is using too much CPU?!?" -msgstr "" +msgstr "Min router använder för mycket CPU?!?" #: i2p2www/pages/site/faq.html:39 msgid "Misconception" -msgstr "" +msgstr "Missförstånd" #: i2p2www/pages/site/faq.html:41 i2p2www/pages/site/faq.html:366 msgid "" "How do I access IRC, BitTorrent, or other services on the regular " "Internet?" -msgstr "" +msgstr "Hur kan jag nå IRC, BitTorrent, eller andra tjänster på internet?" #: i2p2www/pages/site/faq.html:42 msgid "" "Is my router an \"exit node\"(outproxy) to the regular Internet? I don't " "want it to be." msgstr "" +"Är min router en \"exit nod\" (utproxy) till det vanliga internet? Jag " +"vill inte att den ska vara det." #: i2p2www/pages/site/faq.html:43 i2p2www/pages/site/faq.html:188 msgid "" "I am opposed to certain types of content. How do I keep from " "distributing, storing, or accessing them?" msgstr "" +"Jag är emot vissa sorters innehåll. Hur kan jag undvika att distribuera, " +"lagra eller nå dom?" #: i2p2www/pages/site/faq.html:45 msgid "Errors and Their Solutions" -msgstr "" +msgstr "Fel och Deras Lösningar" #: i2p2www/pages/site/faq.html:47 i2p2www/pages/site/faq.html:784 msgid "" "I'm using FreeBSD and when I start I2P I receive an error about " "libm.so.4!" msgstr "" +"Jag använder FreeBSD och när jag startar I2P får jag ett fel om " +"libm.so.4!" #: i2p2www/pages/site/faq.html:48 msgid "" "In wrapper.log I see an error stating Protocol family " "unavailable when I2P is loading" msgstr "" +"I wrapper.log ser jag ett fel som säger Protocol " +"family unavailable när I2P laddas" #: i2p2www/pages/site/faq.html:52 i2p2www/pages/site/faq.html:63 #: i2p2www/pages/site/faq.html:80 i2p2www/pages/site/faq.html:108 @@ -1557,7 +1588,7 @@ msgstr "" #: i2p2www/pages/site/faq.html:785 i2p2www/pages/site/faq.html:817 #: i2p2www/pages/site/faq.html:846 msgid "link" -msgstr "" +msgstr "länk" #: i2p2www/pages/site/faq.html:53 #, python-format @@ -1570,6 +1601,14 @@ msgid "" "href=\"http://%(trac)s/wiki/java\">http://%(trac)s/wiki/java, but in " "short: it's at all possible, use Sun/Oracle Java or OpenJDK." msgstr "" +"Medan I2P har rapporterats att köra på maskiner så gamla som en Pentium " +"II med 64 MB RAM, så kommer du ha en mycket bättre upplevelse med en " +"Pentium III (eller bättre) med 128MB RAM (eller mer). Ett diagram som jämför prestandan av " +"olika JRE:er kan finnas på http://%(trac)s/wiki/java, men kan" +" sammanfattas som: Om det är alls möjligt, använd Sun/Oracle Java eller " +"OpenJDK." #: i2p2www/pages/site/faq.html:57 msgid "" @@ -1577,18 +1616,23 @@ msgid "" "href=\"#compat6x\">below), OSX, and OpenSolaris. There is work " "underway to bring I2P to the Android platform." msgstr "" +"I2P har testats på Windows, Linux, FreeBSD (se notisen nedan), OSX och OpenSolaris. För tillfället pågår " +"arbete för att ge stöd för Android-platformen." #: i2p2www/pages/site/faq.html:65 msgid "Here are some places, pick one or more." -msgstr "" +msgstr "Här finns några platser, välj en eller flera." #: i2p2www/pages/site/faq.html:71 msgid "Discuss with the developers on IRC in #i2p-dev" -msgstr "" +msgstr "Diskuter med utvecklarna på IRC i #i2p-dev" #: i2p2www/pages/site/faq.html:75 msgid "Please include relevant information from the router logs and wrapper logs." msgstr "" +"Var god inkludera relevant information från router-loggarna och wrapper-" +"loggarna." #: i2p2www/pages/site/faq.html:81 msgid "" @@ -1598,6 +1642,11 @@ msgid "" "\"jump\" links which\n" "is annoying." msgstr "" +"Standard-prenumerationen är för http://www.i2p2.i2p/hosts.txt vilken " +"sällan uppdateras.\n" +"Om du inte har någon annan prenumeration, kan du behöva använda " +"\"hopp\"-länkar vilket\n" +"är irriterande-" #: i2p2www/pages/site/faq.html:87 msgid "" @@ -1621,6 +1670,22 @@ msgid "" "hosts.\n" "Presence on this list does not imply endorsement." msgstr "" +"Här är några andra publika adressboks-prenumerations länkar. Du kanske " +"vill lägga till en eller två till din susidns " +"prenumerationslista.\n" +"Du behöver inte lägga till alla, eftersom dom synkroniserar med varandra " +"periodiskt.\n" +"Länkarna som använder en cgi-bin applikation använder en del strategier " +"för att minimera\n" +"antalet duplicerade adresser som delas ut och borde vara mer effektiv.\n" +"Uppmärksamma att prenumerera till en hosts.txt tjänst är en handling av " +"\"tillit\", eftersom illvilliga\n" +"prenumerationer kan ge dig felaktiga adresser. Så tänk efter om du\n" +"vill lite på några av dessa.\n" +"Operatörerna av dessa tjänster kan ha vissa policy:er för att lista " +"värdar.\n" +"Närvaro på denna lista implicerar inte vårat stöd." #: i2p2www/pages/site/faq.html:109 msgid "" @@ -1630,6 +1695,12 @@ msgid "" "The *.i2p.net domains were left in a non-functioning state after a power\n" "outage at the hosting company." msgstr "" +"Jrandom var huvudetvecklaren för I2P och\n" +"Syndie i flera år.\n" +"Vi vet inte om eller när jrandom kommer komma tillbaka.\n" +"*.i2p.net domänen lämnades i ett icke-fungerande tillstånd efter ett " +"strömavbrott\n" +"hos hosting-företaget." #: i2p2www/pages/site/faq.html:117 #, python-format @@ -1638,14 +1709,19 @@ msgid "" "and additional information\n" "on the migration of *.i2p.net to this website." msgstr "" +"Se denhär sidan för jrandoms avskedmeddelande" +" och ytterliggare information\n" +"om migrationen av *.i2p.net till den är sajten." #: i2p2www/pages/site/faq.html:122 msgid "I2P remains in active development." -msgstr "" +msgstr "I2P förblir i aktiv utveckling." #: i2p2www/pages/site/faq.html:126 msgid "There are many possible causes of high CPU usage. Here is a checklist:" msgstr "" +"Det finns många möjliga anledningar till hög CPU-använding. Här finns en " +"kontrollista:" #: i2p2www/pages/site/faq.html:131 msgid "" @@ -1656,6 +1732,12 @@ msgid "" "command/shell prompt. Performance tends to suffer with other " "implementations of java." msgstr "" +"Försök att använda antingen OpenJDK eller Sun/Oracle Java om det finns " +"tällgängligt för ditt system. Du kan kontrollera\n" +"vilken version av java du har installerad genom att skriva java " +"-version i en\n" +"kommandotolk. Prestanda tenderar att vara värre med andra " +"implementationer av java." #: i2p2www/pages/site/faq.html:138 msgid "" @@ -1663,6 +1745,9 @@ msgid "" "torrents, the bandwidth limits,\n" "or try turning it off completely to see if that helps." msgstr "" +"Kör du en BitTorrent-klient över I2P? Försök att minska antalet torrents," +" bandbredds-gränserna\n" +"eller försök stända av den helt och se om det hjälper." #: i2p2www/pages/site/faq.html:144 msgid "" @@ -1672,12 +1757,19 @@ msgid "" "bandwidth percentage on the configuration page." msgstr "" +"Är dina bandbredds-gränser för höga? Det är möjligt att för mycket " +"traffik går igenom din\n" +"I2P-router och att den är överbelastad. Försök minska inställningarna för" +" utdelad bandbredds-procentkonfigurations-sidan." #: i2p2www/pages/site/faq.html:149 msgid "" "Make sure that you're running the latest version of I2P to get the " "benefits of increased performance and bug fixes." msgstr "" +"Var säker på att du kör den senaste versionen av I2P för att få tillgång " +"till förbättrad prestanda och bugg-fixar." #: i2p2www/pages/site/faq.html:154 msgid "" @@ -1688,6 +1780,12 @@ msgid "" "garbage collection. Increase the setting " "wrapper.java.maxmemory in wrapper.config." msgstr "" +"Har tillräkligt med minne reserverats för användning av I2P? Kika på " +"minnes-grafen på graf-sidan " +"för att se\n" +"om minnes-användningen är \"maxad\"—JVM:en spenderar merparten av " +"sin tid med garbage collection. Öka inställningen " +"wrapper.java.maxmemory i wrapper.config." #: i2p2www/pages/site/faq.html:161 msgid "" @@ -1706,6 +1804,12 @@ msgid "" "See the jbigi page for instructions on\n" "diagnosing, building, and testing methods." msgstr "" +"Du kanske använder det Java-baserade BigInteger-biblioteket istället för " +"platforms-specifika versionen,\n" +"i synnerhet om du kör på ny eller ovanlig hårdvara eller OS (OpenSolaris," +" mipsel, etc.).\n" +"See jbigi-sidan för instruktion om\n" +"diagnosticering, byggande och test-metoder." #: i2p2www/pages/site/faq.html:175 msgid "" @@ -1719,6 +1823,16 @@ msgid "" "configadvanced.jsp." msgstr "" +"Om ditt platforms-specifika jbigi-bibliotek fungerar, kan den största " +"användaren av\n" +"CPU vara routing av trafik fär deltagande tunnlar. Det använder CPU\n" +"för att för varje hopp avkrypteras ett lager av kryptering.\n" +"Du kan begränsa din deltagande traffik på två vis - genom att minska den\n" +"utdelade bandbredden på\n" +" confignet.jsp,⏎\n" +"eller genom att sätta router.maxParticipatingTunnels=### på\n" +" configadvanced.jsp." #: i2p2www/pages/site/faq.html:190 msgid "" @@ -1730,6 +1844,13 @@ msgid "" "Freedom of speech has some costs.\n" "But let's address your question in three parts:" msgstr "" +"Hmm. I2P är ett anonymt nätverk, så det är en svår fråga.\n" +"I2P är designat för att stå emor censur och att tillhandahålla ett sätt " +"för alla att kommunicera fritt.\n" +"Det bästa sättethålla din PC fri från (krypterad) traffik som du ogillar " +"är att inte använda I2P.\n" +"Yttrandefrihet har en kostnad.\n" +"Men vi kan besvara din fråga i tre delar:" #: i2p2www/pages/site/faq.html:199 msgid "" @@ -1753,6 +1874,10 @@ msgid "" "Freenet.\n" "Nobody's content is being stored on your computer by running I2P." msgstr "" +"Lagring - I2P gör ingen distribuerad lagring av innehåll. Du måste" +" tänka på\n" +"Freenet.\n" +"Ingens innehåll lagras på din dator genom att köra I2P." #: i2p2www/pages/site/faq.html:217 msgid "" @@ -1760,12 +1885,19 @@ msgid "" "there.\n" "Or, use a blocking proxy like Privoxy or some type of \"net nanny\"." msgstr "" +"Tillgång - om Det finns eepsites som du inte gillar, besök inte " +"dom.\n" +"Eller använd en blockerand proxy som Privoxy eller någon sorts \"net " +"nanny\"." #: i2p2www/pages/site/faq.html:227 msgid "" "No. This is normal.\n" "All routers adjust dynamically to changing network conditions and demands." msgstr "" +"Nej. Det är normalt.\n" +"Alla routrar justerar sig dynamiskt efter förändrande nätverksförhållande" +" och behov." #: i2p2www/pages/site/faq.html:234 msgid "" @@ -1776,6 +1908,13 @@ msgid "" "method doesn't work—or you're using a very old version—you " "may need to reseed manually." msgstr "" +"Du kan behöva reseeda din I2P-router. Med nyare versioner av I2P kan gå " +"till http://localhost:7657/configreseed" +" och klicka Spara inställningar och Reseeda Nu-knappen. Om " +"denhär metoden inte fungerar—eller du använder en väldigt gammal " +"verion—kan du behöva att reseeda " +"manuellt." #: i2p2www/pages/site/faq.html:237 msgid "" @@ -1793,6 +1932,21 @@ msgid "" "work),\n" "then click \"Apply\", then click the \"reseed\" link on the left." msgstr "" +"Reseed URL:en ändrades för några år sedan. Om dethär är din första " +"installation och du har installerat\n" +"en gammal (0.6.1.30 eller tidigare) version eller\n" +"om du inte har kört I2P på länge, behöver du ändra URL:en och sen\n" +"klicka på \"Reseeda\"-knappen i routerkonsollen för att hitta andra " +"routrar.\n" +"När din router kör,\n" +"på configadvanced.jsp," +"\n" +"lägg till raden i2p.reseedURL=http://netdb.i2p2.de/\n" +"ELLER i2p.reseedURL=http://i2pdb.tin0.de/netDb/ (båda borde " +"fungera),\n" +"klicka sedan \"Apply\", och klicka sedan på \"reseed\"-länken på vänster " +"sida." #: i2p2www/pages/site/faq.html:248 #, python-format @@ -1809,6 +1963,18 @@ msgid "" " click \"reseed\".\n" "Let us know if this works." msgstr "" +"Detta fungerar om du kör 0.6.1.27 eller senare.\n" +"Om du kör release 0.6.1.31 eller senare, så behöver du trolgitvis inte " +"göra det.\n" +"Om du kör release 0.6.1.26 eller tidigare, antingen följ de\n" +"manuella reseed instruktionerna nedan " +"eller installera den senaste releasen." +"\n" +"En möjlig alternativ metod - lägg till\n" +"wrapper.java.additional.5=-Di2p.reseedURL=http://netdb.i2p2.de/\n" +"till wrapper.config, stäng av routern helt, starta den sen igen och " +"klicka slutligen på \"reseed\".\n" +"Berätta för oss om det fungerar." #: i2p2www/pages/site/faq.html:259 #, python-format @@ -1816,6 +1982,8 @@ msgid "" "...but you *really* should upgrade to " "the latest version." msgstr "" +"...men du *borde* uppgradera till den " +"senaste versionen." #: i2p2www/pages/site/faq.html:265 msgid "" @@ -1828,12 +1996,21 @@ msgid "" "The best way to stay \"better-connected\" to the network is to share more bandwidth." msgstr "" +"Om din router har 10 eller fler aktiva peers, så är allting ok. " +"Förändringar i releaserna 0.6.1.31 och 0.6.1.32 förbättrade\n" +"effektiviteten hos routern och minskade antalet aktiva peers.\n" +"Routern borde alltid bibehålla anslutningarna till ett litet antal" +" peers.\n" +"Det bästa sättat att vara \"bättre ansluten\" till nätverket är att\n" +"dela mer bandbredd." #: i2p2www/pages/site/faq.html:272 msgid "" "Is my router an \"exit node\" to the regular Internet? I don't want it to" " be." msgstr "" +"Är min router en \"exit nod\" till det vanliga internet? Jag vill inte " +"att den ska vara det." #: i2p2www/pages/site/faq.html:274 msgid "" @@ -1871,6 +2048,8 @@ msgid "" "to-end.\n" "FTP is not supported for technical reasons." msgstr "" +"Inom I2P finns det inget behov för HTTPS, eftersom all trafik är " +"krypterad från början till slut. Ftp stöds inte av tekniska skäl." #: i2p2www/pages/site/faq.html:302 msgid "" @@ -1883,6 +2062,14 @@ msgid "" "The I2P community may or may not be able to help with the technical " "aspects, feel free to ask." msgstr "" +"Det finns inga FTP \"ut-proxies\" till internet—det kanske inte ens" +" är möjligt konfigurera en.\n" +"Någon annan sorts ut-proxy kan fungera om det konfigureras med en " +"standard-tunnel.\n" +"Om du vill sätta upp någon sorts utproxy, leta noggrant efter potentiella" +" risker.\n" +"I2P-communityn kan eventuellt hjälpa till med de tekniska aspekterna, du " +"är välkommen att fråga." #: i2p2www/pages/site/faq.html:308 msgid "" @@ -1891,6 +2078,9 @@ msgid "" "They are services run by individuals and they may or may not\n" "be operational at any given time." msgstr "" +"Som förklarat flera gånger tidigare ovan, inga existernade utproxies är " +"en integral del av nätverket.\n" +"Tjänsterna körs av individer och kanske inte fungerar alltid." #: i2p2www/pages/site/faq.html:313 msgid "" @@ -1901,18 +2091,28 @@ msgid "" "In case the https outproxy is not available in your version of I2P, you " "can add it easily by doing the following:" msgstr "" +"Uppdatering: Tack vare arbetet av h2ik, så finns det en https " +"utproxy tillgänglig för som kan användas via I2P. Från och med I2P 0.8.4 " +"är tunneln " +"konfigurerad vid installation.
    \n" +"I fallet av att https utproxyn inte är inställd i din version av I2P, så " +"kan du lägga till den lätt genom att göra följande:" #: i2p2www/pages/site/faq.html:319 msgid "" "Open i2p tunnel " "manager. Scroll down to the bottom." msgstr "" +"Öppna I2Ps tunnel " +"hanterare. Skrolla ner till botten." #: i2p2www/pages/site/faq.html:324 msgid "" "Choose CONNECT from New Client Tunnel dropdown list, click " "Create" msgstr "" +"Välj ANSLUT från Ny Klient-Tunnel listan, klicka på " +"Skapa" #: i2p2www/pages/site/faq.html:329 #, python-format @@ -1931,6 +2131,19 @@ msgid "" "Other options should be left at the defaults. Click Save. In tunnel " "manger, click the Start button next to your new tunnel." msgstr "" +"På den nya sidan, namnge och beskriv din nya https tunnel " +"precis som du vill.\n" +"Access-punkten är din lokala port för den nya https proxyn, port " +"4445 rekommenderas.\n" +"Utproxy borde vara utproxyns .i2p adress som stödjer https.\n" +"Se forum-posten av h2ik för " +"adressen.\n" +"Var säker på att Delad Klient, Försenad Anslutning och " +"Autostart ikryssade.\n" +"Andra alternativ bör lämnas med sina standard-värden. Klicka på \"Save\"." +" I tunnelhanteraren, klicka på Start-knappen bredvid din nya " +"tunnel." #: i2p2www/pages/site/faq.html:339 msgid "" @@ -1940,10 +2153,15 @@ msgid "" "Untick Use this proxy for all protocol, set SSL proxy: to " "localhost:4445." msgstr "" +"I Firefox, klicka igenom " +"Verktyg>Alternativ>Advancerade>Nätverk>Inställningar." +"\n" +"Avkryssa Använd denhär proxyn för alla protokoll, sätt SSL " +"proxy: till localhost:4445." #: i2p2www/pages/site/faq.html:344 msgid "Done." -msgstr "" +msgstr "Färdig." #: i2p2www/pages/site/faq.html:350 #, python-format @@ -1954,6 +2172,10 @@ msgid "" "threat model, and how much you trust the " "outproxy operator." msgstr "" +"\n" +"Dethär är en fråga som bara du kan besvaras eftersom det korrekta svaret " +"beror på ditt beteende, din hot-modell " +"och hur mycket du litar på operatören av utproxyn." #: i2p2www/pages/site/faq.html:354 msgid "" @@ -1964,6 +2186,11 @@ msgid "" " FAQ\n" "does a good job of explaining this." msgstr "" +"Precis som Tor, kan I2P inte magiskt kryptera internet.\n" +"Du är sårbar mot avlyssning av operatörerna av utproxyn.\n" +"Tor" +" FAQ:en förklarar detta på ett bra vis." #: i2p2www/pages/site/faq.html:360 #, python-format @@ -1975,6 +2202,11 @@ msgid "" "There is additional discussion about this on %(zzz)s." msgstr "" +"Utöver det, så kan du vara sårbar för sammarbete mellan utproxy " +"operatörer\n" +"och operatörerna av andra I2P-tjänster, om du använder samma tunnlar " +"(\"delade klienter\"). Det finns en ytterliggare diskussion om detta på " +"%(zzz)s." #: i2p2www/pages/site/faq.html:368 msgid "" @@ -2002,6 +2234,8 @@ msgid "" "Click on the Website link\n" "at the top of your router console for instructions." msgstr "" +"Klicka på länken tillWebbsidan\n" +"längst upp på din routerkonsoll för instruktioner." #: i2p2www/pages/site/faq.html:392 msgid "" @@ -2011,6 +2245,11 @@ msgid "" "amount of overhead and limits bandwidth.\n" "Anonymity isn't free." msgstr "" +"Varför är nedladdningar, torrentar, webbsurfande och allt annat så " +"långsamt i I2P?\n" +"Krypteringen och routing inom I2P-nätverket lägger till stora mängder " +"overhead och begränsar bandbredd.\n" +"Anonymitet är inte gratis." #: i2p2www/pages/site/faq.html:397 msgid "" @@ -2025,6 +2264,16 @@ msgid "" "will increase the potential transfer rate for I2PSnark and all other " "applications." msgstr "" +"Utöver det, behöver troligtvis du och alla andra öka dina bandbredds-" +"inställningar.\n" +"De två huvudinställningarna är de inåtgående och utåtgående " +"bandbreddsgränserna på konfigurations-sidan.\n" +"Med standardinställningen 32KB/s så kommer du nog inte få mer än 15KB/s " +"överföringshastighet i I2PSnark.\n" +"Att öka inställningarn (men håll dom inom gränserna för vad din " +"internetanslutning klarar) kommer öka den potentiella " +"överföringshastigheten för I2PSnark och alla andra applikationer." #: i2p2www/pages/site/faq.html:405 msgid "" @@ -2035,6 +2284,10 @@ msgid "" "keeps you well-integrated in the network and helps your own transfer " "speeds." msgstr "" +"Har du tillräkligt med utdelad bandbredd inställd för att kunna delta i " +"tunnlar? Tro det eller ej, genom att delta i andras tunnlar så kommer " +"din router bli väl integrerad i nätverket, vilket hjälper dina egna " +"överföringshastigheter." #: i2p2www/pages/site/faq.html:410 #, python-format @@ -2046,6 +2299,11 @@ msgid "" "If you haven't, install the latest " "release." msgstr "" +"I2P förbättras hela tiden. Massor av förbättringar och fixar " +"implementeras och generellt sett, så förbättras din prestanda av att köra" +" den senaste versionen.\n" +"Om du inte gjort det redan, installera den " +"senaste releasen." #: i2p2www/pages/site/faq.html:418 #, python-format @@ -2053,6 +2311,8 @@ msgid "" "See the\n" "I2P Bittorrent FAQ" msgstr "" +"Se I2P Bittorrent " +"FAQ:en" #: i2p2www/pages/site/faq.html:425 msgid "" @@ -2069,6 +2329,17 @@ msgid "" " "Bypass\n" "proxy server" if you have a proxy server configured)." msgstr "" +"\n" +"En tunnel till huvud IRC servern inom I2P, Irc2P, skapas när I2P " +"installeras\n" +"(see I2PTunnel " +"konfigurationssidan),\n" +"och startas automatiskt när I2P-routern startar. För att ansluta till " +"den, säg till din IRC-klient att ansluta till " +"localhost:6668. XChat-lika klienter kan skapa ett nytt " +"nätverk med servern localhost:6668 (kom ihåg att klicka i " +""Kringå\n" +"proxy-server" om du har en proxy-server inställd)." #: i2p2www/pages/site/faq.html:436 msgid "" @@ -2077,6 +2348,10 @@ msgid "" "for connections on the local interface. However, with a little hacking,\n" "you can make it reachable remotely:" msgstr "" +"Av säkerhetskäl så lyssnar routerns adminkonsoll som default\n" +"efter anslutningar på det lokala nätverksinterface:t. Dock så kan du med " +"lite hackande,\n" +"nå den bortifrån." #: i2p2www/pages/site/faq.html:444 msgid "" @@ -2085,6 +2360,10 @@ msgid "" "with
    \n" "clientApp.0.args=7657 0.0.0.0 ./webapps/" msgstr "" +"Öppna ~/.i2p/clients.config och ersätt
    \n" +"clientApp.0.args=7657 ::1,127.0.0.1 ./webapps/
    \n" +"med
    \n" +"clientApp.0.args=7657 0.0.0.0 ./webapps/" #: i2p2www/pages/site/faq.html:452 msgid "" @@ -2102,6 +2381,11 @@ msgid "" "and hit \"Graceful restart\", which restarts the JVM and reloads the " "client applications" msgstr "" +"Gå till http://localhost:7657/index.jsp" +"\n" +"och klicka på \"Graviös omstart\", vilket startar om JVM:en och laddar om" +" klient-applikationerna" #: i2p2www/pages/site/faq.html:465 msgid "" @@ -2124,10 +2408,14 @@ msgid "" "router advanced configuration option " "i2cp.tcp.bindAllInterfaces=true and restart." msgstr "" +"Som standard så binder I2CP interface:t (port 7654) till adressen " +"127.0.0.1. För att binda den till 0.0.0.0, sätt\n" +"det advancerade konfigurationsalternativet " +"i2cp.tcp.bindAllInterfaces=true och starta om." #: i2p2www/pages/site/faq.html:481 msgid "Whats an \"eepsite\"?" -msgstr "" +msgstr "Var är en \"eepsite\"?" #: i2p2www/pages/site/faq.html:483 msgid "" @@ -2136,6 +2424,10 @@ msgid "" "setting your web browser's HTTP proxy to use the web proxy (typically it\n" "listens on localhost port 4444), and browsing to the site." msgstr "" +"En eepsite är en webbsida som hostas anonymt - du kan nå den genom\n" +"att ställa in din webbläsare HTTP proxy till att använda webbproxyn " +"(normalt sett lyssnar den på localhost port 4444) och att surfa till " +"sajten." #: i2p2www/pages/site/faq.html:491 #, python-format @@ -2146,6 +2438,10 @@ msgid "" "tools\n" "are possible but could introduce leaks in your setup." msgstr "" +"Proxyinställningen för olila webbläsare finns på en separat sida med skärmdumpar. Flera " +"advancerade inställningar med externa verktyg\n" +"är gångbara men kan introducera läckor i din installation." #: i2p2www/pages/site/faq.html:500 msgid "" @@ -2154,6 +2450,9 @@ msgid "" "last\n" "hour or so." msgstr "" +"x är antalet peers du har skickat eller mottaget ett meddelande från den " +"senaste minuten, y är antalet peers som sett på den senaste\n" +"timmer eller så." #: i2p2www/pages/site/faq.html:508 msgid "" @@ -2161,6 +2460,8 @@ msgid "" "supported.\n" "There is no SOCKS outproxy so it is of limited use." msgstr "" +"SOCKS-proxyn fungerar från och med 0.7.1 SOCKS 4/4a/5 stöds.\n" +"Det finns ingen SOCKS-utproxy så det begränsad nytta." #: i2p2www/pages/site/faq.html:512 msgid "" @@ -2174,6 +2475,14 @@ msgid "" "\n" "extremely dangerous." msgstr "" +"Utöver det, så kan många applikationer läcka känslig\n" +"information som skulle kunna identifiera dig på internet. I2P filtrerar\n" +"anslutningsdata, men om programmet du vill köra skickar denhär " +"informationen som innehåll så kan I2P inte skydda din anonymitet. Till\n" +"exempel, så skickar vissa e-post program ip-adressen av maskinen\n" +"de kör som e-post-server. Det finns iget vis I2P kan filtrera\n" +"detta , därför är det extremt farligt att använda I2P för att " +"'socksifiera' existeranda applikationer." #: i2p2www/pages/site/faq.html:522 #, python-format @@ -2182,12 +2491,17 @@ msgid "" "\n" "there are some helpful hints on the socks page." msgstr "" +"Om du vill ha mer information om SOCKS-proxy applikationen iallafall,\n" +"så finns det fler hjälpsamma tips på SOCKS-sidan." #: i2p2www/pages/site/faq.html:529 msgid "" "Okay, here's a rundown of the default ports (everything is configurable\n" "through various settings, of course):" msgstr "" +"Okay, här är en kort lista av standardportarna (allt är konfigurerbart\n" +"genom olika inställningar, så klart):" #: i2p2www/pages/site/faq.html:538 msgid "" @@ -2587,11 +2901,11 @@ msgstr "" #: i2p2www/pages/site/impressum.html:4 msgid "German laws" -msgstr "" +msgstr "Tyska lagar" #: i2p2www/pages/site/index.html:2 msgid "I2P Anonymous Network" -msgstr "" +msgstr "I2P Anonymt Nätverk" #: i2p2www/pages/site/index.html:4 msgid "" @@ -2599,10 +2913,13 @@ msgid "" "source tools and designed to run any traditional Internet service such as" " email, IRC or web hosting." msgstr "" +"Anonymt peer-to-peer distribuerat kommunikationslager byggt med open " +"source-verktyg och designat för att köra alla traditionella internet-" +"tjänster så som e-post, IRC och webb-hosting." #: i2p2www/pages/site/index.html:7 msgid "What does I2P do for you?" -msgstr "" +msgstr "Vad gör I2P för dig?" #: i2p2www/pages/site/index.html:8 msgid "" @@ -2610,15 +2927,18 @@ msgid "" "over the Internet. Many activities that would risk your privacy on the " "public Internet can be conducted anonymously inside I2P." msgstr "" +"I2P-nätverket tillhandahåller starka intergritets-skydd för kommunikation" +" över internet. Många aktiviteter som skulle riskera din intergritet på " +"det publika internet kan skötas anonymt inom I2P." #: i2p2www/pages/site/index.html:9 #, python-format msgid "Get I2P %(version)s" -msgstr "" +msgstr "Hämta I2P %(version)s" #: i2p2www/pages/site/index.html:13 msgid "What is I2P?" -msgstr "" +msgstr "Var är I2P?" #: i2p2www/pages/site/index.html:15 msgid "" @@ -2650,11 +2970,11 @@ msgstr "" #: i2p2www/pages/site/index.html:28 msgid "Read more…" -msgstr "" +msgstr "Läs mer…" #: i2p2www/pages/site/index.html:33 msgid "What can you do with I2P?" -msgstr "" +msgstr "Var kan du göra med I2P?" #: i2p2www/pages/site/index.html:36 #, python-format @@ -2708,15 +3028,15 @@ msgstr "" #: i2p2www/pages/site/index.html:71 #, python-format msgid "More supported applications…" -msgstr "" +msgstr "Fler stödda applikationer…" #: i2p2www/pages/site/index.html:79 msgid "News & Updates" -msgstr "" +msgstr "Nyheter & Uppdateringar " #: i2p2www/pages/site/links.html:4 msgid "Recommended Links & Resources" -msgstr "" +msgstr "Rekommenderade Länkar & Resurser" #: i2p2www/pages/site/links.html:5 #, python-format @@ -2728,21 +3048,21 @@ msgstr "" #: i2p2www/pages/site/links.html:12 msgid "Friends of I2P" -msgstr "" +msgstr "Vänner till I2P" #: i2p2www/pages/site/links.html:24 msgid "More Projects and Documentation" -msgstr "" +msgstr "Fler Projekt och Dokumentation" #: i2p2www/pages/site/links.html:34 msgid "Press" -msgstr "" +msgstr "Press" #: i2p2www/pages/site/links.html:38 msgid "Boards, newssite, others" -msgstr "" +msgstr "Anslagstavlor, nyhetssida, annat" #: i2p2www/pages/site/links.html:42 msgid "Very Old Stuff" -msgstr "" +msgstr "Väldigt Gamla Saker" From 5dd207d29c1194fec87adff7126bd44edc7025c1 Mon Sep 17 00:00:00 2001 From: str4d Date: Fri, 20 Sep 2013 03:58:33 +0000 Subject: [PATCH 630/650] Added ru_RU and zh_CN translations --- i2p2www/__init__.py | 2 +- i2p2www/pages/global/lang.html | 1 + .../static/images/flags/{ru.png => ru_RU.png} | Bin .../translations/ru_RU/LC_MESSAGES/blog.po | 1196 +++++++ .../ru_RU/LC_MESSAGES/priority.po | 2845 +++++++++++++++++ .../zh_CN/LC_MESSAGES/priority.po | 2700 ++++++++++++++++ 6 files changed, 6743 insertions(+), 1 deletion(-) rename i2p2www/static/images/flags/{ru.png => ru_RU.png} (100%) create mode 100644 i2p2www/translations/ru_RU/LC_MESSAGES/blog.po create mode 100644 i2p2www/translations/ru_RU/LC_MESSAGES/priority.po create mode 100644 i2p2www/translations/zh_CN/LC_MESSAGES/priority.po diff --git a/i2p2www/__init__.py b/i2p2www/__init__.py index 939d9c24..3ee5c6d4 100644 --- a/i2p2www/__init__.py +++ b/i2p2www/__init__.py @@ -40,7 +40,7 @@ SUPPORTED_LANGS = [ 'fr', # 'it', # 'nl', -# 'ru', + 'ru_RU', 'sv_SE', # 'cs', # 'ar', diff --git a/i2p2www/pages/global/lang.html b/i2p2www/pages/global/lang.html index dd83130a..4dbe2d5d 100644 --- a/i2p2www/pages/global/lang.html +++ b/i2p2www/pages/global/lang.html @@ -5,5 +5,6 @@
  • +
  • diff --git a/i2p2www/static/images/flags/ru.png b/i2p2www/static/images/flags/ru_RU.png similarity index 100% rename from i2p2www/static/images/flags/ru.png rename to i2p2www/static/images/flags/ru_RU.png diff --git a/i2p2www/translations/ru_RU/LC_MESSAGES/blog.po b/i2p2www/translations/ru_RU/LC_MESSAGES/blog.po new file mode 100644 index 00000000..e7c172a8 --- /dev/null +++ b/i2p2www/translations/ru_RU/LC_MESSAGES/blog.po @@ -0,0 +1,1196 @@ +# Russian (Russia) translations for I2P. +# Copyright (C) 2013 ORGANIZATION +# This file is distributed under the same license as the I2P project. +# +# Translators: +# keedley , 2013 +# Арефьев Денис , 2013 +msgid "" +msgstr "" +"Project-Id-Version: I2P\n" +"Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" +"POT-Creation-Date: 2013-08-30 23:32+0000\n" +"PO-Revision-Date: 2013-09-18 15:02+0000\n" +"Last-Translator: keedley \n" +"Language-Team: Russian (Russia) " +"(http://www.transifex.com/projects/p/I2P/language/ru_RU/)\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 0.9.6\n" + +#: i2p2www/blog/2011/10/11/0.8.9-Release.rst:24 +#: i2p2www/blog/2011/10/20/0.8.10-Release.rst:11 +#: i2p2www/blog/2011/11/08/0.8.11-Release.rst:25 +#: i2p2www/blog/2012/01/06/0.8.12-Release.rst:12 +#: i2p2www/blog/2012/02/27/0.8.13-Release.rst:12 +#: i2p2www/blog/2012/05/02/0.9-Release.rst:17 +#: i2p2www/blog/2012/07/30/0.9.1-Release.rst:12 +#: i2p2www/blog/2012/09/21/0.9.2-Release.rst:16 +#: i2p2www/blog/2012/10/27/0.9.3-Release.rst:16 +#: i2p2www/blog/2012/12/17/0.9.4-Release.rst:26 +#: i2p2www/blog/2013/03/08/0.9.5-Release.rst:19 +#: i2p2www/blog/2013/05/28/0.9.6-Release.rst:19 +msgid "Files are available on the `download page`_." +msgstr "Файлы доступны на `странице загрузки`_." + +#: i2p2www/blog/2011/10/11/0.8.9-Release.rst:28 +#: i2p2www/blog/2011/10/20/0.8.10-Release.rst:15 +#: i2p2www/blog/2011/11/08/0.8.11-Release.rst:29 +#: i2p2www/blog/2012/01/06/0.8.12-Release.rst:16 +#: i2p2www/blog/2012/02/27/0.8.13-Release.rst:16 +#: i2p2www/blog/2012/05/02/0.9-Release.rst:21 +#: i2p2www/blog/2012/07/30/0.9.1-Release.rst:16 +#: i2p2www/blog/2012/09/21/0.9.2-Release.rst:20 +#: i2p2www/blog/2012/10/27/0.9.3-Release.rst:20 +#: i2p2www/blog/2012/12/17/0.9.4-Release.rst:30 +#: i2p2www/blog/2013/03/08/0.9.5-Release.rst:23 +#: i2p2www/blog/2013/05/28/0.9.6-Release.rst:23 +msgid "`download page`" +msgstr "`страница загрузки`" + +#: i2p2www/blog/2011/10/11/0.8.9-Release.rst:30 +#: i2p2www/blog/2011/10/20/0.8.10-Release.rst:17 +#: i2p2www/blog/2011/11/08/0.8.11-Release.rst:31 +#: i2p2www/blog/2012/01/06/0.8.12-Release.rst:18 +#: i2p2www/blog/2012/02/27/0.8.13-Release.rst:19 +#: i2p2www/blog/2012/07/30/0.9.1-Release.rst:18 +#: i2p2www/blog/2012/09/21/0.9.2-Release.rst:22 +#: i2p2www/blog/2012/10/27/0.9.3-Release.rst:22 +#: i2p2www/blog/2012/12/17/0.9.4-Release.rst:32 +#: i2p2www/blog/2013/03/08/0.9.5-Release.rst:25 +#: i2p2www/blog/2013/05/28/0.9.6-Release.rst:79 +#: i2p2www/blog/2013/07/15/0.9.7-Release.rst:45 +#: i2p2www/blog/2013/08/10/0.9.7.1-Release.rst:13 +msgid "RELEASE DETAILS" +msgstr "ПОДРОБНОСТИ РЕЛИЗА" + +#: i2p2www/blog/2011/10/11/0.8.9-Release.rst:32 +#: i2p2www/blog/2011/10/20/0.8.10-Release.rst:19 +#: i2p2www/blog/2011/11/08/0.8.11-Release.rst:33 +#: i2p2www/blog/2012/02/27/0.8.13-Release.rst:40 +#: i2p2www/blog/2012/05/02/0.9-Release.rst:50 +#: i2p2www/blog/2012/09/21/0.9.2-Release.rst:24 +#: i2p2www/blog/2012/10/27/0.9.3-Release.rst:24 +#: i2p2www/blog/2012/12/17/0.9.4-Release.rst:34 +msgid "Major Changes" +msgstr "Основные изменения" + +#: i2p2www/blog/2011/10/11/0.8.9-Release.rst:44 +#: i2p2www/blog/2011/10/20/0.8.10-Release.rst:24 +#: i2p2www/blog/2011/11/08/0.8.11-Release.rst:43 +#: i2p2www/blog/2012/01/06/0.8.12-Release.rst:55 +#: i2p2www/blog/2012/02/27/0.8.13-Release.rst:47 +#: i2p2www/blog/2012/05/02/0.9-Release.rst:58 +#: i2p2www/blog/2012/07/30/0.9.1-Release.rst:43 +#: i2p2www/blog/2012/09/21/0.9.2-Release.rst:32 +#: i2p2www/blog/2012/10/27/0.9.3-Release.rst:30 +#: i2p2www/blog/2012/12/17/0.9.4-Release.rst:39 +#: i2p2www/blog/2013/05/28/0.9.6-Release.rst:81 +#: i2p2www/blog/2013/07/15/0.9.7-Release.rst:54 +msgid "Bug Fixes" +msgstr "Исправлены ошибки" + +#: i2p2www/blog/2011/10/11/0.8.9-Release.rst:54 +#: i2p2www/blog/2011/10/20/0.8.10-Release.rst:30 +#: i2p2www/blog/2011/11/08/0.8.11-Release.rst:47 +#: i2p2www/blog/2012/01/06/0.8.12-Release.rst:69 +#: i2p2www/blog/2012/02/27/0.8.13-Release.rst:63 +#: i2p2www/blog/2012/05/02/0.9-Release.rst:68 +#: i2p2www/blog/2012/07/30/0.9.1-Release.rst:54 +#: i2p2www/blog/2012/09/21/0.9.2-Release.rst:41 +#: i2p2www/blog/2012/10/27/0.9.3-Release.rst:36 +#: i2p2www/blog/2012/12/17/0.9.4-Release.rst:51 +#: i2p2www/blog/2013/03/08/0.9.5-Release.rst:43 +#: i2p2www/blog/2013/05/28/0.9.6-Release.rst:94 +#: i2p2www/blog/2013/07/15/0.9.7-Release.rst:63 +#: i2p2www/blog/2013/08/10/0.9.7.1-Release.rst:19 +msgid "Other" +msgstr "Другое" + +#: i2p2www/blog/2011/10/11/0.8.9-Release.rst:73 +#: i2p2www/blog/2011/10/20/0.8.10-Release.rst:36 +#: i2p2www/blog/2011/11/08/0.8.11-Release.rst:51 +#: i2p2www/blog/2012/01/06/0.8.12-Release.rst:82 +#: i2p2www/blog/2012/02/27/0.8.13-Release.rst:75 +#: i2p2www/blog/2012/05/02/0.9-Release.rst:96 +#: i2p2www/blog/2012/07/30/0.9.1-Release.rst:76 +#: i2p2www/blog/2012/09/21/0.9.2-Release.rst:52 +#: i2p2www/blog/2012/10/27/0.9.3-Release.rst:56 +#: i2p2www/blog/2012/12/17/0.9.4-Release.rst:67 +#: i2p2www/blog/2013/03/08/0.9.5-Release.rst:56 +#: i2p2www/blog/2013/05/28/0.9.6-Release.rst:110 +#: i2p2www/blog/2013/07/15/0.9.7-Release.rst:79 +#: i2p2www/blog/2013/08/10/0.9.7.1-Release.rst:30 +msgid "SHA256 Checksums:" +msgstr "Ключевые суммы SHA256" + +#: i2p2www/blog/2012/01/06/0.8.12-Release.rst:39 +msgid "Major changes" +msgstr "Основные изменения" + +#: i2p2www/blog/2012/01/06/0.8.12-Release.rst:47 +msgid "Wrapper Update" +msgstr "Обновление враппера" + +#: i2p2www/blog/2012/05/02/0.9-Release.rst:23 +msgid "Update Info" +msgstr "Информация об обновлении" + +#: i2p2www/blog/2012/09/21/0.9.2-Release.rst:2 +msgid "0.9.2 Release" +msgstr "Релиз 0.9.2" + +#: i2p2www/blog/2012/09/21/0.9.2-Release.rst:7 +#: i2p2www/blog/2012/09/21/0.9.2-Release.rst:9 +msgid "" +"0.9.2 includes extensive low-level changes to improve the performance and" +" efficiency of the router. We have updated our UPnP library, to hopefully" +" make UPnP work for more people. I2PSnark now has DHT support, but it is " +"not yet enabled by default, as we plan to do more testing during the " +"upcoming 0.9.3 development cycle." +msgstr "" +"0.9.2 включает в себя значительное количество изменений для увеличения " +"производительности и эффективности маршрутизатора. Мы обновили нашу " +"библиотеку UPnP, надеемся, что она будет работать для большего числа " +"случаев. I2PSnark получил поддержку DHT, но она по умолчанию выключена, " +"так как мы надеемся ее активно тестировать в процессе разработки версии " +"0.9.3." + +#: i2p2www/blog/2012/09/21/0.9.2-Release.rst:12 +#: i2p2www/blog/2012/10/27/0.9.3-Release.rst:12 +msgid "" +"As usual, there's also lots of bug fixes in this release, so updating is " +"recommended." +msgstr "" +"Как обычно, в этой версии исправлено много ошибок, поэтому рекомендуется " +"обновление." + +#: i2p2www/blog/2012/09/21/0.9.2-Release.rst:26 +msgid "" +"SSU: Fix several problems in our UDP transport, to improve efficiency and" +" reliability for connection setup. Also improve defenses against various " +"types of bad input." +msgstr "" +"SSU: Исправлено несколько проблем в нашем UDP транспотре, для увеличения " +"эффективности и надежности при установке соединения. Также улучшили " +"защиту от разных типов плохих данных." + +#: i2p2www/blog/2012/09/21/0.9.2-Release.rst:27 +msgid "" +"UPnP: Updated our library to fix several issues, should work for more " +"routers now" +msgstr "" +"UPnP: Обновлили нашу библиотеку, теперь должно работать для большего " +"количества устройств." + +#: i2p2www/blog/2012/09/21/0.9.2-Release.rst:28 +msgid "" +"Transport: Improve performance in both our TCP and UDP transports, to " +"benefit high-bandwidth routers" +msgstr "" +"Транспорт: Улучшили производительность TCP и UDP транспортов, особенно " +"для маршрутизаторов на широких каналах." + +#: i2p2www/blog/2012/09/21/0.9.2-Release.rst:29 +msgid "" +"Crypto: The thresholds and number of ElGamal/AES Session Tags delivered " +"are now much more flexible, which should lessen protocol overhead and " +"reduce stalls caused by dropped tags." +msgstr "" +"Crypto: Отсечки и количество меток сессий ElGamal/AES сейчас гораздо " +"более гибкие, что должно сократить затраты протокола и уменьшить " +"подвисания, связанные с потерянными метками." + +#: i2p2www/blog/2012/09/21/0.9.2-Release.rst:30 +msgid "" +"I2PSnark: Add DHT support, not yet enabled by default, will do further " +"testing and plan to enable by default in 0.9.3." +msgstr "" +"I2PSnark: Добавлена поддержка DHT, не включена по умолчанию, будет " +"тестироваться, планируем включить по умолчанию в 0.9.3" + +#: i2p2www/blog/2012/09/21/0.9.2-Release.rst:34 +msgid "" +"Fix various issues affecting memory usage and performance on high-" +"bandwidth routers" +msgstr "" +"Исправления ряда проблем с использованием памяти и производительностью на" +" маршрутизаторах на широких каналах." + +#: i2p2www/blog/2012/09/21/0.9.2-Release.rst:35 +msgid "Fix problems in UDP for routers using a reduced-MTU connection, e.g. a VPN" +msgstr "" +"Исправлены проблемы в UDP для маршрутизаторов с уменьшенным MTU, " +"напримерн на VPN" + +#: i2p2www/blog/2012/09/21/0.9.2-Release.rst:36 +msgid "Fix i2psnark bug that prevented a completion announcement to the tracker" +msgstr "" +"Исправлена проблема в i2psnark, которая мешала оповещению о завершении " +"закачки на трекере. " + +#: i2p2www/blog/2012/09/21/0.9.2-Release.rst:37 +msgid "Fix a lock contention problem in i2ptunnel" +msgstr "Исправлена проблема с блокировками в i2ptunnel" + +#: i2p2www/blog/2012/09/21/0.9.2-Release.rst:38 +msgid "Fix some OSX installation issues" +msgstr "Исправлены некоторые проблемы при инсталляции в OSX" + +#: i2p2www/blog/2012/09/21/0.9.2-Release.rst:39 +msgid "Remove uses of direct byte buffers that may have been leaking" +msgstr "" +"Избавились от использования direct byte buffers, которые могли утекать по" +" памяти" + +#: i2p2www/blog/2012/09/21/0.9.2-Release.rst:43 +msgid "Reduce overhead in network messages" +msgstr "Уменьшены затраты протокола в сетевых сообщениях" + +#: i2p2www/blog/2012/09/21/0.9.2-Release.rst:44 +msgid "Add \"universal\" theme support" +msgstr "Добавлена поддержка темы \"universal\"" + +#: i2p2www/blog/2012/09/21/0.9.2-Release.rst:45 +msgid "Theme updates" +msgstr "Обновления тем" + +#: i2p2www/blog/2012/09/21/0.9.2-Release.rst:46 +msgid "Add a jbigi library for Raspberry Pi" +msgstr "Добавлена библиотека jbigi, оптимизированная для Rapspberry Pi" + +#: i2p2www/blog/2012/09/21/0.9.2-Release.rst:47 +msgid "New Scala unit test framework" +msgstr "Новая оснастка для юнит тестов Scala" + +#: i2p2www/blog/2012/09/21/0.9.2-Release.rst:48 +msgid "Translation updates for Czech, Dutch, German, and Greek" +msgstr "" +"Обновления переводов для чешского, голландского, немецкого и греческого " +"языков" + +#: i2p2www/blog/2012/09/21/0.9.2-Release.rst:49 +msgid "Update wrapper to 3.5.15 (new installs and PPA only)" +msgstr "Враппер обновлен до 3.5.15 (для новых инсталляций и PPA)" + +#: i2p2www/blog/2012/09/21/0.9.2-Release.rst:50 +#: i2p2www/blog/2012/10/27/0.9.3-Release.rst:53 +#: i2p2www/blog/2012/12/17/0.9.4-Release.rst:63 +#: i2p2www/blog/2013/03/08/0.9.5-Release.rst:53 +#: i2p2www/blog/2013/05/28/0.9.6-Release.rst:108 +#: i2p2www/blog/2013/07/15/0.9.7-Release.rst:77 +msgid "Update GeoIP data (new installs and PPA only)" +msgstr "Обновлены данные GeoIP (для новых инсталляций и PPA)" + +#: i2p2www/blog/2012/10/27/0.9.3-Release.rst:2 +msgid "0.9.3 Release" +msgstr "0.9.3 Релиз" + +#: i2p2www/blog/2012/10/27/0.9.3-Release.rst:7 +#: i2p2www/blog/2012/10/27/0.9.3-Release.rst:9 +msgid "" +"0.9.3 includes extensive low-level changes to the queueing of messages in" +" the router. We implement the CoDel Active Queue Management (AQM) " +"algorithm. We also unify the queueing and priority mechanisms in the " +"transports to aid diagnosis and reduce network latency. Work continues " +"on fixing UDP transport bugs and making UDP more resistant to attacks. " +"There are more changes to improve the performance of the router and " +"reduce its memory usage. Also, we enable i2psnark's DHT support, " +"introduced last release, by default." +msgstr "" +"Релиз 0.9.3 включает значительные изменения на низком уровне в работе с " +"очередями сообщений в маршрутизаторе. Мы реализовали алгоритм CoDel " +"Active Queue Management (AQM). Унифицировали работу с очередями и " +"приоритетами в транспортах для облегчения диагностики и снижения сетевых " +"задержек. Продолжается работа с проблемами в UDP транспорте, чтобы " +"сделать UDP более устойчивым к возможным атакам. Значительные изменения " +"сделаны, чтобы роутер работал эффективнее и с меньшей нагрузкой на " +"память. Также мы включили DHT в i2psnark по умолчанию." + +#: i2p2www/blog/2012/10/27/0.9.3-Release.rst:26 +msgid "Active Queue Management" +msgstr "Active Queue Management" + +#: i2p2www/blog/2012/10/27/0.9.3-Release.rst:27 +msgid "Priority queues" +msgstr "Приоритетные очереди" + +#: i2p2www/blog/2012/10/27/0.9.3-Release.rst:28 +msgid "I2PSnark DHT: Several bug fixes, enable by default." +msgstr "I2PSnark DHT: исправления нескольких проблем, включили по умолчанию." + +#: i2p2www/blog/2012/10/27/0.9.3-Release.rst:32 +msgid "" +"Several SSU fixes including memory leak, and better handling of routers " +"behind firewalls that change UDP ports; additional defenses for malicious" +" packets." +msgstr "" +"Ряд исправлений проблем в SSU, включая утечку памяти, более правильная " +"обработка роутеров за файрволлами которые меняют UDP порты, " +"дополнительные защиты от намеренно плохих пакетов." + +#: i2p2www/blog/2012/10/27/0.9.3-Release.rst:33 +msgid "Fix piece selection (rarest-first) bugs in i2psnark" +msgstr "Исправлен выбор части (редкие вперед) в i2psnark" + +#: i2p2www/blog/2012/10/27/0.9.3-Release.rst:34 +msgid "Fix bug causing multiple browsers to open at startup" +msgstr "Исправлена проблема, приводящая к открытию нескольких браузеров на старте" + +#: i2p2www/blog/2012/10/27/0.9.3-Release.rst:38 +msgid "Improvements in caching" +msgstr "Улучшения в кэшировании" + +#: i2p2www/blog/2012/10/27/0.9.3-Release.rst:39 +msgid "Several synchronization fixes and lock contention reduction" +msgstr "" +"Несколько исправлений в синхронизации и уменьшении использования " +"блокировок" + +#: i2p2www/blog/2012/10/27/0.9.3-Release.rst:40 +msgid "Major reduction in SSU buffers memory use" +msgstr "Большое снижение потребления памяти в SSU буферах" + +#: i2p2www/blog/2012/10/27/0.9.3-Release.rst:41 +msgid "" +"Fix streaming connection timeout back to 1 minute, was inadvertently " +"changed to 5 minutes; set i2ptunnel server read timeout to 5 minutes, was" +" unlimited" +msgstr "" +"Таймаут потоковых соединений установлен в 1 минуту, ранее был 5 минут. " +"Таймаут чтения i2ptunnel server установлен в 5 минут, было без " +"ограничений" + +#: i2p2www/blog/2012/10/27/0.9.3-Release.rst:42 +msgid "Improved defenses in i2ptunnel for \"darkloris\"" +msgstr "Улучшили защиту от \"darkloris\" в i2ptunnel" + +#: i2p2www/blog/2012/10/27/0.9.3-Release.rst:43 +msgid "More validation at torrent creation in i2psnark" +msgstr "Больше проверок при создании торрента в i2psnark" + +#: i2p2www/blog/2012/10/27/0.9.3-Release.rst:44 +msgid "Several parameter changes in SSU to improve throughput" +msgstr "Несколько изменений параметров в SSU для увеличения пропускной способности" + +#: i2p2www/blog/2012/10/27/0.9.3-Release.rst:45 +msgid "" +"New event log for major events including restarts; show multiple restart " +"lines on graphs" +msgstr "" +"Новый журнал для важных событий, включая перезапуски; показываем " +"несколько моментов перезапусков на графиках" + +#: i2p2www/blog/2012/10/27/0.9.3-Release.rst:46 +msgid "Remove duplicate messages from logs" +msgstr "Удалены повторяющиеся сообщения в журнале" + +#: i2p2www/blog/2012/10/27/0.9.3-Release.rst:47 +msgid "Don't respond to blocked streaming connections with a reset, just drop" +msgstr "" +"Не отвечать на заблокированные потоковые соединения reset, просто закрыть" +" соедиение" + +#: i2p2www/blog/2012/10/27/0.9.3-Release.rst:48 +msgid "Remove all uses of inefficient SimpleTimer" +msgstr "Удалить все использование неэффективного SimpleTimer" + +#: i2p2www/blog/2012/10/27/0.9.3-Release.rst:49 +msgid "More checks for valid IPs and ports entered in console" +msgstr "Больше проверок на валидность IP и портов, введенных в консоли" + +#: i2p2www/blog/2012/10/27/0.9.3-Release.rst:50 +msgid "Fix bug that wasted a lot of entropy" +msgstr "Исправлена проблема что приводила к расходу энтропии" + +#: i2p2www/blog/2012/10/27/0.9.3-Release.rst:51 +msgid "Translation updates: Italian, Portuguese, Spanish, Swedish" +msgstr "Обновлены переводы: Итальянский, Португальский, Испанский, Шведский" + +#: i2p2www/blog/2012/10/27/0.9.3-Release.rst:52 +msgid "Add non-NIO configuration in jetty.xml, recommended for Java 5" +msgstr "Добавить не-NIO настройки в jetty.xml, рекомендованные для Java 5" + +#: i2p2www/blog/2012/12/17/0.9.4-Release.rst:2 +msgid "0.9.4 Release" +msgstr "Версия 0.9.4" + +#: i2p2www/blog/2012/12/17/0.9.4-Release.rst:7 +#: i2p2www/blog/2012/12/17/0.9.4-Release.rst:9 +msgid "" +"0.9.4 includes a fix for a network capacity bug, introduced in 0.9.2, " +"that was reducing network performance and reliability. It also includes " +"major changes in the in-network update system, and adds the capability to" +" update via in-network torrents." +msgstr "" +"Версия 0.9.4 включает исправление для проблемы пропускной способности " +"сети, внесенной в 0.9.2, что приводила к снижению производительности и " +"надежности сети. Также включае большие изменения в системе обновления и " +"добавляет возможность обновления через внутрисетевые torrent'ы" + +#: i2p2www/blog/2012/12/17/0.9.4-Release.rst:13 +msgid "" +"We fixed several bugs in the i2psnark DHT implementation that was " +"introduced\n" +"last release. For those of you using console or http proxy passwords,\n" +"we converted to the more-secure digest method and improved the security " +"for console forms." +msgstr "" +"Мы исправили несколько проблем в реализации DHT в i2psnark, которые были " +"внесены\n" +"в последнем релизе. Для тех, кто использует пароли на консоль или " +"прокси-сервер,\n" +"мы сконвертировали их в более безопасный дайджест, а также улучшили " +"безопасность форм." + +#: i2p2www/blog/2012/12/17/0.9.4-Release.rst:19 +msgid "" +"For those of you already running development builds, your router should " +"automatically\n" +"update to 0.9.4-0 using the new in-network torrent facility.\n" +"For those running 0.9.3-0, you will update normally using in-network " +"HTTP, and\n" +"we will have more information for you when we release 0.9.5." +msgstr "" +"Для тех, кто уже работает с девелоперскими сборками, ваш маршрутизатор " +"должен автоматически\n" +"обновиться до 0.9.4.-0, используя новый механизм внутрисетевых торрентов." +"\n" +"Для тех, кто пользуется 0.9.3-0, обновитель через внутрисетевой HTTP, и\n" +"для вас будет больше информации, когда мы выпустим 0.9.5" + +#: i2p2www/blog/2012/12/17/0.9.4-Release.rst:36 +msgid "" +"Big rework of the update system; Preliminary support for updates via " +"i2psnark" +msgstr "" +"Крупная переделка системы обновлений; Предварительная поддержка для " +"обновлений через i2psnark" + +#: i2p2www/blog/2012/12/17/0.9.4-Release.rst:37 +msgid "Add per-destination outbound priorities" +msgstr "Добавить исходящие приоритеты для каждого назначения" + +#: i2p2www/blog/2012/12/17/0.9.4-Release.rst:41 +msgid "" +"Fix major bug that reduced SSU connection limits which reduced tunnel " +"build success rates" +msgstr "" +"Исправить крупную проблему, которая уменьшала ограничения на соединения, " +"что приводило к уменьшению качества построения туннелей" + +#: i2p2www/blog/2012/12/17/0.9.4-Release.rst:42 +msgid "Fix bug with external I2CP that prevented some external apps from working" +msgstr "" +"Исправить проблему с внешним I2CP, которая мешала ряду внешний приложений" +" работать" + +#: i2p2www/blog/2012/12/17/0.9.4-Release.rst:43 +msgid "Fixed several bugs in i2psnark DHT" +msgstr "Исправлено несколько проблем в реализации DHT в i2psnark" + +#: i2p2www/blog/2012/12/17/0.9.4-Release.rst:44 +msgid "Fixed bug in i2psnark PEX that inflated peer counts" +msgstr "Исправлена проблема в i2psnark PEX, которые увеличивали счетчик узлов" + +#: i2p2www/blog/2012/12/17/0.9.4-Release.rst:45 +msgid "Handle dropped I2CP messages better" +msgstr "Лучше обрабатывать отбитые I2CP сообщения" + +#: i2p2www/blog/2012/12/17/0.9.4-Release.rst:46 +msgid "Reduce overhead of I2CP messages" +msgstr "Уменьшить затраты протокола в I2CP сообщениях" + +#: i2p2www/blog/2012/12/17/0.9.4-Release.rst:47 +msgid "Enforce max size in transport outbound message queues" +msgstr "" +"Усилить требования к максимальному размеру в исходящих очередях сообщений" +" транспорта" + +#: i2p2www/blog/2012/12/17/0.9.4-Release.rst:48 +msgid "Fixes for Windows eepget.bat (new installs and PPA only)" +msgstr "Исправления для Windows eepget.bat (новые инсталляции и PPA)" + +#: i2p2www/blog/2012/12/17/0.9.4-Release.rst:49 +msgid "Fix a bug that would drop messages of exactly 512 bytes in SSU" +msgstr "" +"Исправить проблему что приводила к потерям сообщений размером ровно 512 " +"байт" + +#: i2p2www/blog/2012/12/17/0.9.4-Release.rst:53 +msgid "" +"More performance improvements, memory reduction, and object churn " +"reduction" +msgstr "" +"Больше улучшений производительности, уменьшения расхода памяти и расхода " +"ресурсов на постоянное пересоздание объектов" + +#: i2p2www/blog/2012/12/17/0.9.4-Release.rst:54 +msgid "Better detection of network disconnections" +msgstr "Лучшее определение сетевых рассоединений" + +#: i2p2www/blog/2012/12/17/0.9.4-Release.rst:55 +msgid "Further improvements in the SSU transport" +msgstr "Улучшения в SSU транспорте" + +#: i2p2www/blog/2012/12/17/0.9.4-Release.rst:56 +msgid "Add console password form" +msgstr "Добавить форму консольного пароля" + +#: i2p2www/blog/2012/12/17/0.9.4-Release.rst:57 +msgid "" +"Convert http proxy and console from basic to digest authentication for " +"added security" +msgstr "" +"Для увеличения безопасности перейти к digest авторизации для консоли и " +"http-прокси" + +#: i2p2www/blog/2012/12/17/0.9.4-Release.rst:58 +msgid "" +"Improved verification of console form submissions, using jsp sessions. " +"Cookies may now be required on forms, except when the console password is" +" enabled" +msgstr "" +"Улучшенная проверка для форм консоли, используя jsp сессии. Куки могут " +"быть необходимы на формах, кроме тех случаев, когда включен пароль на " +"консоль" + +#: i2p2www/blog/2012/12/17/0.9.4-Release.rst:59 +msgid "" +"Initial work on new interfaces to manage applications started via " +"clients.config" +msgstr "" +"Первоначальная работа над новыми интерфейсами управления приложениями, " +"запускаемыми через clients.config" + +#: i2p2www/blog/2012/12/17/0.9.4-Release.rst:60 +msgid "Increase minimum peer port to 1024" +msgstr "Увеличен минимальный номер порта на узле до 1024" + +#: i2p2www/blog/2012/12/17/0.9.4-Release.rst:61 +msgid "Increase granularity of bandwidth limiter for smoother transmissions" +msgstr "" +"Увеличение гранулярности ограничителя полосы для более ровной передачи " +"данных" + +#: i2p2www/blog/2012/12/17/0.9.4-Release.rst:62 +msgid "" +"Translation updates: Chinese, French, German, Italian, Polish, " +"Portuguese, Swedish, and Ukrainian" +msgstr "" +"Обновлены переводы: китайский, французский, немецкий, итальянский, " +"польский, португальский, шведский и украинский" + +#: i2p2www/blog/2012/12/17/0.9.4-Release.rst:64 +msgid "Update wrapper to 3.5.16 (new installs and PPA only)" +msgstr "Враппер обновлен до 3.5.16 (для новых инсталляций и PPA)" + +#: i2p2www/blog/2012/12/17/0.9.4-Release.rst:65 +msgid "New ARMv6 wrapper for Raspberry Pi" +msgstr "Новый ARMv6 враппер для Raspberry Pi" + +#: i2p2www/blog/2013/03/08/0.9.5-Release.rst:2 +msgid "0.9.5 Release" +msgstr "Версия 0.9.5" + +#: i2p2www/blog/2013/03/08/0.9.5-Release.rst:7 +#: i2p2www/blog/2013/03/08/0.9.5-Release.rst:9 +msgid "" +"0.9.5 includes bug fixes and defenses for some issues and vulnerabilities" +" that are being investigated by researchers at UCSB. We continue to work " +"with them on additional improvements. This is a good opportunity to " +"remind the community that while our network continues to grow rapidly, it" +" is still relatively small. There may be multiple weaknesses or bugs that" +" could compromise your anonymity. Help us grow the network by spreading " +"the word and contributing where you can." +msgstr "" +"Версия 0.9.5 включает исправления проблем и защиту от ряда уязвимостей, " +"которые были исследованы специалистами в UCSB. Мы продолжаем работу " +"вместе с ними над дополнительными улучшениями. Это хорошая возможность " +"напомнить публике, что хотя наша сеть продолжает быстро расти, она все " +"еще относительно невелика. Возможно, что присутствуют проблемы или " +"ошибки, которые могут скомпрометировать вашу анонимность. Помогите нам " +"увеличить сеть, распространяя информацию и принося свой вклад, какой вы " +"можете сделать." + +#: i2p2www/blog/2013/03/08/0.9.5-Release.rst:13 +#, python-format +msgid "" +"In this upgrade cycle, a random 1% of routers, (plus all routers running " +"a\n" +"development build) will attempt to update via the experimental in-network" +" bittorrent\n" +"with i2psnark. If this doesn't work, it should fall back to standard in-" +"network HTTP update." +msgstr "" + +#: i2p2www/blog/2013/03/08/0.9.5-Release.rst:27 +msgid "Defenses and Bug Fixes" +msgstr "Защита и исправление ошибок" + +#: i2p2www/blog/2013/03/08/0.9.5-Release.rst:29 +msgid "Fix router bug causing lockup when using iMule" +msgstr "" +"Исправлена проблема в маршрутизаторе, приводившая к подвисанию при " +"использовании iMule" + +#: i2p2www/blog/2013/03/08/0.9.5-Release.rst:30 +msgid "Recognize, handle, reject duplicate tunnel IDs" +msgstr "Узнаем, обрабатываем и отклоняем дублированный ID туннелей" + +#: i2p2www/blog/2013/03/08/0.9.5-Release.rst:31 +msgid "Fix changing of the log file name" +msgstr "Исправляем смену имени журнального файла" + +#: i2p2www/blog/2013/03/08/0.9.5-Release.rst:32 +msgid "Prevent hashcode attack in session tags" +msgstr "Предотвращаем hashcode attack в метках сессий" + +#: i2p2www/blog/2013/03/08/0.9.5-Release.rst:33 +msgid "Add build request throttler based on previous hop" +msgstr "" + +#: i2p2www/blog/2013/03/08/0.9.5-Release.rst:34 +msgid "Limit concurrent next-hop lookups" +msgstr "Ограничиваем конкуррентные поиски следующего узла" + +#: i2p2www/blog/2013/03/08/0.9.5-Release.rst:35 +msgid "Catch exceptions storing nonces in console" +msgstr "Перехватываем исключения при сохранении в консоли" + +#: i2p2www/blog/2013/03/08/0.9.5-Release.rst:36 +msgid "Fix saving graph settings in console" +msgstr "Исправление настроек графиков в консоли" + +#: i2p2www/blog/2013/03/08/0.9.5-Release.rst:37 +msgid "Fix eepget generation of URLs when not proxied" +msgstr "Исправление генерации URL в eepget, когда работаем без прокси" + +#: i2p2www/blog/2013/03/08/0.9.5-Release.rst:38 +msgid "" +"Encrypt database lookup messages end-to-end when sent through exploratory" +" tunnels" +msgstr "" +"Зашифровать сообщения поиска по базе данных от точки до точки при работе " +"через исследующие туннели" + +#: i2p2www/blog/2013/03/08/0.9.5-Release.rst:39 +msgid "Don't use multiple floodfills from the same /16 in a query" +msgstr "Не использовать множественные floodfills из одной подсети /16 в запросе" + +#: i2p2www/blog/2013/03/08/0.9.5-Release.rst:40 +msgid "Randomize delay before verifying floodfill store" +msgstr "Сделать случайную задержку перед проверкой хранилища floodfill" + +#: i2p2www/blog/2013/03/08/0.9.5-Release.rst:41 +msgid "Increase number of floodfills" +msgstr "Увеличить количество floodfill" + +#: i2p2www/blog/2013/03/08/0.9.5-Release.rst:45 +msgid "Improve support for mobile browsers" +msgstr "Улучшить поддержку мобильных браузеров" + +#: i2p2www/blog/2013/03/08/0.9.5-Release.rst:46 +msgid "Partial defenses for UCSB attacks" +msgstr "Частичная защита от UCSB аттак" + +#: i2p2www/blog/2013/03/08/0.9.5-Release.rst:47 +msgid "Add announce list support to i2psnark" +msgstr "Добавить поддержку списка анонсов в i2psnark" + +#: i2p2www/blog/2013/03/08/0.9.5-Release.rst:48 +msgid "Jetty: upgrade Apache Tomcat to 6.0.36" +msgstr "jetty: обновить Apache Tomcat до 6.0.36" + +#: i2p2www/blog/2013/03/08/0.9.5-Release.rst:49 +msgid "Split router info files into multiple subdirectories" +msgstr "Разделить файлы маршрутизатора по нескольким поддиректориям" + +#: i2p2www/blog/2013/03/08/0.9.5-Release.rst:50 +msgid "Add IP to hostname mapping option in SOCKS" +msgstr "Добавить в SOCKS возможность распознавать IP в hostname" + +#: i2p2www/blog/2013/03/08/0.9.5-Release.rst:51 +msgid "Improve PRNG seeding" +msgstr "Улучшить запуск генератора случайных чисел" + +#: i2p2www/blog/2013/03/08/0.9.5-Release.rst:52 +msgid "" +"Translation updates: French, German, Hungarian, Italian, Norwegian, " +"Polish, Portuguese, Russian, Swedish" +msgstr "" +"Обновления переводов: французский, немецкий, венгерский, итальянский, " +"норвежский, польский, португальский, шведский" + +#: i2p2www/blog/2013/03/08/0.9.5-Release.rst:54 +msgid "Update wrapper to 3.5.17 (new installs and PPA only)" +msgstr "Обновить враппер до 3.5.17 (новые инсталляции и PPA)" + +#: i2p2www/blog/2013/05/28/0.9.6-Release.rst:2 +msgid "0.9.6 Release" +msgstr "Версия 0.9.6" + +#: i2p2www/blog/2013/05/28/0.9.6-Release.rst:7 +#: i2p2www/blog/2013/05/28/0.9.6-Release.rst:9 +msgid "" +"0.9.6 includes bug fixes and an update from Jetty 6.1.26 (2010-11-10) to " +"Jetty 7.6.10 (2013-03-12). See below for important information on the " +"Jetty update. The Jetty 7 series is actively maintained and we plan to " +"stay current with it in future I2P releases." +msgstr "" +"Версия 0.9.6 включает в себя исправления и обновление jetty c Jetty " +"6.1.26 (2010-11-10) до 7.6.10 (2013-03-12). Смотрите ниже важную " +"информацию про обновление jetty. Jetty версии 7 активно поддерживается и " +"мы планируем последовательно обновлять версию до последней при будущих " +"релизах I2P." + +#: i2p2www/blog/2013/05/28/0.9.6-Release.rst:13 +msgid "" +"Most users will update via HTTP. Those running development builds will " +"attempt to update via the\n" +"experimental in-network bittorrent with i2psnark. We've fixed some bugs " +"that will enable more users\n" +"to update via torrent in the 0.9.7 update cycle." +msgstr "" +"Большинство пользователей будут обновляться через HTTP. Те, кто работает " +"на девелоперских сборках будут пытаться обновляться через внутрисетевой " +"bittorrent с помошью i2psnark. Мы починили несколько проблем, это " +"позволит большему количеству пользователей обновиться через torrent в " +"процессе развития 0.9.7." + +#: i2p2www/blog/2013/05/28/0.9.6-Release.rst:25 +msgid "Important fix for Windows Eepsites, first install 0.9.5 only" +msgstr "Важное исправление для Eepsite под Windows изначально запущенных под 0.9.5" + +#: i2p2www/blog/2013/05/28/0.9.6-Release.rst:27 +msgid "" +"If you first installed I2P with version 0.9.5, on Windows only, we " +"recommend that you follow the\n" +"following instructions to fix your eepsite location **before** you update" +" to 0.9.6.\n" +"Only original installations of 0.9.5-0 on Windows are affected by this " +"issue. If your router version\n" +"is 0.9.5-0-win1, you already have the fix and need not take any action." +msgstr "" +"Если вы впервые запустили I2P на версии 0.9.5 под Windows (только это " +"сочетание), мы рекомендуем \n" +"проделать действия по инструкции чтобы сменить расположение сайта **до** " +"обновления на 0.9.6.\n" +"Только изначально установленные на 0.9.5-0 на Windows сайты подвержены " +"этой проблеме. Если версия маршрутизатора \n" +"0.9.5-0-win1, то у вас уже все хорошо и ничего делать дополнительно не " +"надо." + +#: i2p2www/blog/2013/05/28/0.9.6-Release.rst:34 +msgid "See `this page`_ for instructions." +msgstr "См. `this page`_ для инструкций." + +#: i2p2www/blog/2013/05/28/0.9.6-Release.rst:38 +msgid "`this page`" +msgstr "`эта страница`" + +#: i2p2www/blog/2013/05/28/0.9.6-Release.rst:40 +msgid "Jetty 7 Migration Details" +msgstr "Порядок миграции на Jetty 7" + +#: i2p2www/blog/2013/05/28/0.9.6-Release.rst:42 +msgid "" +"For most people, the update should just work. If you have multiple Jetty " +"eepsites,\n" +"OR have made changes to jetty.xml or other Jetty configuration files, " +"including changing the port\n" +"from 7658, you MUST take manual action AFTER updating." +msgstr "" +"Для большинсва людей, просто должен пройти процесс обновления и все. Если" +" у вас несколько eepsite'ов на jetty?\n" +"ИЛИ вы сделали изменения в jetty.xml или других конфигурационных файлах " +"jetty, включая смену порта с 7658,\n" +"вы ДОЛЖНЫ предпринять действия вручную ПОСЛЕ обновления." + +#: i2p2www/blog/2013/05/28/0.9.6-Release.rst:48 +msgid "" +"After update, the router will migrate your jetty.xml files to the new " +"Jetty 7 format." +msgstr "" +"После обновления, маршрутизатор перенесет ваш jetty.xml в новый формат " +"для jetty 7." + +#: i2p2www/blog/2013/05/28/0.9.6-Release.rst:50 +msgid "" +"The migration resets the port to 7658. If you have more than one Jetty " +"eepsite, OR your eepsite\n" +" is NOT on port 7658, OR you have made other modifications to jetty.xml " +"(for example changing the\n" +" listen address from 127.0.0.1 to 0.0.0.0), you MUST edit the jetty.xml " +"file for each eepsite to fix them up\n" +" after updating, and restart again." +msgstr "" +"Процесс миграции скинет порт на 7658. Если у вас более одного eepsite, " +"ИЛИ ваш сайт\n" +"НЕ на порту 7658, ИЛИ вы сделали другие изменения в jetty.xml (например, " +"сменили адрес сервера с 127.0.0.1 на 0.0.0.0), вы ДОЛЖНЫ отредактировать " +"jetty.xml для всех eepsite'ов и внести эти изменения снова,\n" +"после обновления и снова перезапустить сайты. " + +#: i2p2www/blog/2013/05/28/0.9.6-Release.rst:55 +msgid "" +"**The following files will be backed up with a ".jetty6" suffix" +" and then migrated.**\n" +"If you have made local changes, you may have to edit them manually and " +"restart.\n" +"See http://wiki.eclipse.org/Jetty for assistance in configuring Jetty 7." +msgstr "" +"**Следующие файлы будут сохранены с суффиксом ".jetty6" и " +"затем изменены в новый формат**\n" +"Если вы ранее делали локальные изменения в них, вы должны повторить эти " +"изменения в новом формате и перезапуститься\n" +"См. http://wiki.eclipse.org/Jetty для справки по настройкам Jetty 7." + +#: i2p2www/blog/2013/05/28/0.9.6-Release.rst:69 +msgid "Plugins" +msgstr "Плагины" + +#: i2p2www/blog/2013/05/28/0.9.6-Release.rst:71 +msgid "Most plugins should work fine with Jetty 7." +msgstr "Большинство плагинов должно нормально работать с Jetty 7" + +#: i2p2www/blog/2013/05/28/0.9.6-Release.rst:75 +msgid "" +"The I2PControl and zzzot plugins must be updated. Your router should " +"download and install the new versions shortly after starting 0.9.6." +msgstr "" +"Плагины I2PControl и zzzot должны быть обновлены. Ваш маршрутизатор " +"должен скачать и установить новые версии вскоре после запуска 0.9.6." + +#: i2p2www/blog/2013/05/28/0.9.6-Release.rst:77 +msgid "If a plugin does not work, please contact the maintainer for that plugin." +msgstr "Если плагин не работает, пожалуйста, свяжитесь с автором плагина." + +#: i2p2www/blog/2013/05/28/0.9.6-Release.rst:83 +msgid "Several bugs with Windows installation (see above)" +msgstr "Несколько проблем на Windows инсталляциях (см. выше)" + +#: i2p2www/blog/2013/05/28/0.9.6-Release.rst:84 +msgid "Fix default form action in i2ptunnel" +msgstr "Исправить действие в форме по умолчанию в i2ptunnel" + +#: i2p2www/blog/2013/05/28/0.9.6-Release.rst:85 +msgid "Fix links on iframed console pages" +msgstr "Исправлены ссылки на страницах консоли в iframe" + +#: i2p2www/blog/2013/05/28/0.9.6-Release.rst:86 +msgid "Better detection of 64-bit Windows to prevent crashes by systray" +msgstr "" +"Улучшенное определение 64-битных Windows для предотвращения падений в " +"systray" + +#: i2p2www/blog/2013/05/28/0.9.6-Release.rst:87 +msgid "Fix bug preventing router update via torrent" +msgstr "Исправить проблему, приводящую к невозможности обновиться через torrent" + +#: i2p2www/blog/2013/05/28/0.9.6-Release.rst:88 +msgid "Several SSU fixes for NATs that change UDP ports" +msgstr "Несколько проблем в SSU для NAT, которые меняют UDP порты" + +#: i2p2www/blog/2013/05/28/0.9.6-Release.rst:89 +msgid "" +"Ignore unsupported IPs in RouterInfos when selecting an address (prep for" +" IPv6)" +msgstr "" + +#: i2p2www/blog/2013/05/28/0.9.6-Release.rst:90 +msgid "" +"Ignore unused option bits in Database Lookup Message (prep for requesting" +" encrypted response)" +msgstr "" + +#: i2p2www/blog/2013/05/28/0.9.6-Release.rst:91 +msgid "Fix HTTP proxy error response for malformed URIs" +msgstr "Исправить ответы HTTP прокси при ошибках неправильных URI" + +#: i2p2www/blog/2013/05/28/0.9.6-Release.rst:92 +msgid "Recognize UPnP devices without port forwarding capability" +msgstr "Опознавать устройства UPnP без поддержки порт-форвардинга" + +#: i2p2www/blog/2013/05/28/0.9.6-Release.rst:96 +msgid "Jetty 7.6.10 (see above for migration information)" +msgstr "Jetty 7.6.10 (см. выше инструкции по обновлению)" + +#: i2p2www/blog/2013/05/28/0.9.6-Release.rst:97 +msgid "Limit page size in i2psnark" +msgstr "Ограничение на размер страницы в i2psnark" + +#: i2p2www/blog/2013/05/28/0.9.6-Release.rst:98 +msgid "Add data directory and page size configuration to i2psnark" +msgstr "Добавить настройки директории с данными и размера страницы в i2psnark" + +#: i2p2www/blog/2013/05/28/0.9.6-Release.rst:99 +msgid "Support multiple i2psnark instances" +msgstr "Поддержка нескольких экземпляров i2psnark" + +#: i2p2www/blog/2013/05/28/0.9.6-Release.rst:100 +msgid "Piece size adjustments in i2psnark" +msgstr "Настройки размера части в I2psnark" + +#: i2p2www/blog/2013/05/28/0.9.6-Release.rst:101 +msgid "Add more graphing support for combined bandwidth graph" +msgstr "" + +#: i2p2www/blog/2013/05/28/0.9.6-Release.rst:102 +msgid "Block b32.i2p supercookies" +msgstr "Заблокировать b32.i2p supercookies" + +#: i2p2www/blog/2013/05/28/0.9.6-Release.rst:103 +msgid "Allow stopping clients on /configclients" +msgstr "Разрешить останавливать клиентов на /configclients" + +#: i2p2www/blog/2013/05/28/0.9.6-Release.rst:104 +msgid "Check for nonce count replays in HTTP client" +msgstr "" + +#: i2p2www/blog/2013/05/28/0.9.6-Release.rst:105 +msgid "Support SASL authentication in IRC proxy" +msgstr "Поддержка SASL авторизации в IRC прокси" + +#: i2p2www/blog/2013/05/28/0.9.6-Release.rst:106 +msgid "Several cleanups and minor fixes in the update manager" +msgstr "Несколько исправлений и мелких правок в управлении обновлением" + +#: i2p2www/blog/2013/05/28/0.9.6-Release.rst:107 +msgid "Translation updates: German, Portuguese, Russian, Spanish, and Swedish" +msgstr "Обновлены переводы: немецкий, португальский, русский, испанский, шведский" + +#: i2p2www/blog/2013/07/15/0.9.7-Release.rst:2 +msgid "0.9.7 Release" +msgstr "Версия 0.9.7" + +#: i2p2www/blog/2013/07/15/0.9.7-Release.rst:7 +#: i2p2www/blog/2013/07/15/0.9.7-Release.rst:9 +msgid "0.9.7 includes significant bug fixes and improvements." +msgstr "Версия включает значимые исправления и улучшения" + +#: i2p2www/blog/2013/07/15/0.9.7-Release.rst:11 +msgid "" +"For the first time, class 'N' routers (those with a minimumum of 128 " +"KBytes/sec of shared bandwidth)\n" +"will automatically become floodfill (previously it was only 'O' routers " +"with 256 KBps). This will\n" +"increase the floodfill population for additional resistance to certain " +"attacks (see below). Floodfill routers\n" +"don't consume much additional bandwidth, but they do tend to use " +"additional memory and concurrent\n" +"connections. If you do not wish your router to become floodfill, set the " +"advanced configuration\n" +"router.floodfillParticipant=false ." +msgstr "" +"Впервые, маршрутизаторы класса 'N' ( с минимальной полосой 128 " +"Kbytes/sec) \n" +"автоматически становятся floodfill (ранее так себя вели только 'O' " +"маршрутизаторы с полосой 256 KBps). Это позволит\n" +"увеличить количество floodfill для дополнительной защиты от некоторых " +"атак (см. ниже). Floodfill \n" +"не потребляет слишком много ресурсов сети, но есть тенденция к большему " +"расходу памяти и\n" +"соединений. Если вы не хотите чтобы ваш маршрутизатор становился " +"floodfill, поставьте дополнительно настройку " +"router.floodfillParticipant=false." + +#: i2p2www/blog/2013/07/15/0.9.7-Release.rst:20 +#, python-format +msgid "" +"As we think the last release fixed the experimental update-via-torrent " +"bugs, 3% of routers should\n" +"update over in-network bittorrent this cycle." +msgstr "" + +#: i2p2www/blog/2013/07/15/0.9.7-Release.rst:25 +msgid "" +"Plugin update checks, possibly broken for several releases, are fixed. " +"Your plugins should once again\n" +"auto-update after updating the router." +msgstr "" + +#: i2p2www/blog/2013/07/15/0.9.7-Release.rst:30 +msgid "" +"We fixed a major streaming timer bug that contributed to frequent IRC " +"disconnects." +msgstr "" + +#: i2p2www/blog/2013/07/15/0.9.7-Release.rst:34 +msgid "" +"This release contains additional mitigations for the `\"practical " +"attacks\" paper`_.\n" +"However, we have a lot more work to do to resist Sybil attacks on the " +"floodfills, and resist\n" +"traffic analysis at the gateways and endpoints of exploratory tunnels.\n" +"It's a good reminder for everybody that our network is still relatively " +"small and vulnerable.\n" +"We don't currently recommend any uses that would put anybody in serious " +"jeopardy.\n" +"We'll keep working to improve it... please keep working to spread the " +"word. A bigger network is a better network." +msgstr "" + +#: i2p2www/blog/2013/07/15/0.9.7-Release.rst:43 +msgid "`\"practical attacks\" paper`" +msgstr "" + +#: i2p2www/blog/2013/07/15/0.9.7-Release.rst:47 +#: i2p2www/blog/2013/08/10/0.9.7.1-Release.rst:15 +msgid "Anonymity Improvements" +msgstr "" + +#: i2p2www/blog/2013/07/15/0.9.7-Release.rst:49 +msgid "End-to-end encryption of responses to leaseset lookups" +msgstr "" + +#: i2p2www/blog/2013/07/15/0.9.7-Release.rst:50 +msgid "Expand floodfill pool by enabling class 'N' floodfills" +msgstr "" + +#: i2p2www/blog/2013/07/15/0.9.7-Release.rst:51 +msgid "Randomize padding inside encrypted SSU packets" +msgstr "" + +#: i2p2www/blog/2013/07/15/0.9.7-Release.rst:52 +msgid "Preparation for better SSU protocol obfuscation" +msgstr "" + +#: i2p2www/blog/2013/07/15/0.9.7-Release.rst:56 +msgid "Fix newer lease sets not getting stored or published" +msgstr "" + +#: i2p2www/blog/2013/07/15/0.9.7-Release.rst:57 +msgid "" +"Fix classpath bug when used with 4-year-old installations, causing the " +"console not to start" +msgstr "" + +#: i2p2www/blog/2013/07/15/0.9.7-Release.rst:58 +msgid "Fix addressbook database bug preventing update of the reverse index" +msgstr "" + +#: i2p2www/blog/2013/07/15/0.9.7-Release.rst:59 +msgid "" +"Fix i2psnark bug that changed the infohash of torrents created by Robert " +"and fetched via magnet link" +msgstr "" + +#: i2p2www/blog/2013/07/15/0.9.7-Release.rst:60 +msgid "Fix version checking for plugins" +msgstr "" + +#: i2p2www/blog/2013/07/15/0.9.7-Release.rst:61 +msgid "" +"Fix a streaming timer bug causing frequent IRC disconnects (also affects " +"other close-on-idle tunnels)" +msgstr "" + +#: i2p2www/blog/2013/07/15/0.9.7-Release.rst:65 +msgid "Don't install as a service on Windows by default" +msgstr "" + +#: i2p2www/blog/2013/07/15/0.9.7-Release.rst:66 +msgid "Reduce transport idle timeouts" +msgstr "" + +#: i2p2www/blog/2013/07/15/0.9.7-Release.rst:67 +msgid "Reduce tunnels on idle in i2psnark" +msgstr "" + +#: i2p2www/blog/2013/07/15/0.9.7-Release.rst:68 +msgid "Change default in i2ptunnel GUI to 3 hops" +msgstr "" + +#: i2p2www/blog/2013/07/15/0.9.7-Release.rst:69 +msgid "IE 10 support" +msgstr "" + +#: i2p2www/blog/2013/07/15/0.9.7-Release.rst:70 +msgid "" +"Individual expiration times in leases, for efficiency on destinations " +"with a high number of tunnels" +msgstr "" + +#: i2p2www/blog/2013/07/15/0.9.7-Release.rst:71 +msgid "Low-level encryption and XOR speedups" +msgstr "" + +#: i2p2www/blog/2013/07/15/0.9.7-Release.rst:72 +msgid "Jetty 7.6.11" +msgstr "" + +#: i2p2www/blog/2013/07/15/0.9.7-Release.rst:73 +msgid "Tomcat 6.0.37" +msgstr "" + +#: i2p2www/blog/2013/07/15/0.9.7-Release.rst:74 +msgid "Translation updates: Chinese, French, German, Portuguese, Russian, Spanish" +msgstr "" + +#: i2p2www/blog/2013/07/15/0.9.7-Release.rst:75 +msgid "New Turkish translation" +msgstr "" + +#: i2p2www/blog/2013/07/15/0.9.7-Release.rst:76 +msgid "Wrapper 3.5.19 (new installs and PPA only)" +msgstr "" + +#: i2p2www/blog/2013/08/10/0.9.7.1-Release.rst:2 +msgid "0.9.7.1 Release" +msgstr "" + +#: i2p2www/blog/2013/08/10/0.9.7.1-Release.rst:7 +#: i2p2www/blog/2013/08/10/0.9.7.1-Release.rst:9 +msgid "" +"This unscheduled release disables the RouterInfo verification messages " +"that were used in the attack published in the UCSB paper, which should " +"make correlating a LeaseSet and a Router much more difficult. We have " +"also included a limited number of other fixes listed below. Our 0.9.8 " +"release, which will include IPv6 support, is still on-schedule for late " +"September." +msgstr "" + +#: i2p2www/blog/2013/08/10/0.9.7.1-Release.rst:11 +msgid "As usual, we recommend that all users update to this release." +msgstr "" + +#: i2p2www/blog/2013/08/10/0.9.7.1-Release.rst:17 +msgid "Disable RouterInfo verification messages" +msgstr "" + +#: i2p2www/blog/2013/08/10/0.9.7.1-Release.rst:21 +msgid "Extend inbound tunnel expiration" +msgstr "" + +#: i2p2www/blog/2013/08/10/0.9.7.1-Release.rst:22 +msgid "i2prouter: bashism fix" +msgstr "" + +#: i2p2www/blog/2013/08/10/0.9.7.1-Release.rst:23 +msgid "i2psnark: increase max piece size, mime type updates" +msgstr "" + +#: i2p2www/blog/2013/08/10/0.9.7.1-Release.rst:24 +msgid "New reseed host" +msgstr "" + +#: i2p2www/blog/2013/08/10/0.9.7.1-Release.rst:25 +msgid "New update hosts, thanks Meeh and dg" +msgstr "" + +#: i2p2www/blog/2013/08/10/0.9.7.1-Release.rst:26 +msgid "Streaming: RTO changes" +msgstr "" + +#: i2p2www/blog/2013/08/10/0.9.7.1-Release.rst:27 +msgid "Updater: Increase update-via-torrent to 30 percent" +msgstr "" + +#: i2p2www/blog/2013/08/10/0.9.7.1-Release.rst:28 +msgid "UPnP fix for some hardware" +msgstr "" + diff --git a/i2p2www/translations/ru_RU/LC_MESSAGES/priority.po b/i2p2www/translations/ru_RU/LC_MESSAGES/priority.po new file mode 100644 index 00000000..b299bbdc --- /dev/null +++ b/i2p2www/translations/ru_RU/LC_MESSAGES/priority.po @@ -0,0 +1,2845 @@ +# Russian (Russia) translations for I2P. +# Copyright (C) 2013 ORGANIZATION +# This file is distributed under the same license as the I2P project. +# +# Translators: +# tengo , 2013 +# keedley , 2013 +# JD1 , 2013 +# Арефьев Денис , 2013 +msgid "" +msgstr "" +"Project-Id-Version: I2P\n" +"Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" +"POT-Creation-Date: 2013-09-16 12:59+0000\n" +"PO-Revision-Date: 2013-09-18 17:58+0000\n" +"Last-Translator: keedley \n" +"Language-Team: Russian (Russia) " +"(http://www.transifex.com/projects/p/I2P/language/ru_RU/)\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 0.9.6\n" + +#: i2p2www/pages/blog/category.html:2 +msgid "Blog Category" +msgstr "" + +#: i2p2www/pages/blog/category.html:4 +#, python-format +msgid "I2P Blog ATOM Feed for Category: %(category)s" +msgstr "" + +#: i2p2www/pages/blog/index.html:2 i2p2www/pages/blog/post.html:3 +#: i2p2www/pages/global/nav.html:95 +msgid "Blog" +msgstr "Блог" + +#: i2p2www/pages/blog/index.html:4 i2p2www/pages/site/index.html:78 +msgid "I2P Blog ATOM Feed" +msgstr "I2P Блог ATOM " + +#: i2p2www/pages/blog/index.html:17 +#, python-format +msgid "Posted %(date)s by %(author)s" +msgstr "" + +#: i2p2www/pages/blog/latest.html:5 +msgid "More blog posts…" +msgstr "" + +#: i2p2www/pages/blog/post.html:6 +msgid "Posted:" +msgstr "" + +#: i2p2www/pages/blog/post.html:7 +msgid "Author:" +msgstr "" + +#: i2p2www/pages/downloads/debian.html:4 +msgid "Debian I2P Packages" +msgstr "Пакеты I2P для Debian" + +#: i2p2www/pages/downloads/debian.html:6 +#, python-format +msgid "" +"The packages hosted on the I2P Launchpad site\n" +"have been tested and should work on x86/x86_64 platforms running:" +msgstr "" +"Пакеты, размещенные на the I2P Launchpad site⏎\n" +"были проверены и должныработать на x86/x86_64 платформах под " +"управлением:" + +#: i2p2www/pages/downloads/debian.html:11 +msgid "Ubuntu (Precise 12.04 and newer)" +msgstr "" + +#: i2p2www/pages/downloads/debian.html:13 +msgid "" +"Debian Linux (Wheezy and newer) & kFreeBSD" +msgstr "" + +#: i2p2www/pages/downloads/debian.html:17 +#, python-format +msgid "" +"The I2P packages may work on systems not listed above. Please " +"report any issues\n" +"with these packages on Trac at\n" +"http://%(trac)s." +msgstr "" +"Пакеты I2P могут работать на системах, не указанных выше. " +"Пожалуйста, сообщайте о проблемах⏎\n" +"с этими пакетами на Trac по адресу⏎\n" +"http://%(trac)s." + +#: i2p2www/pages/downloads/debian.html:23 +msgid "" +"Option 1: Recent versions of Ubuntu and its " +"derivatives (Try this if you're not using Debian)" +msgstr "" +"Вариант 1: Недавние версии Убунту и ее " +"родственники (Попробуйте, если не используете Debian" + +#: i2p2www/pages/downloads/debian.html:24 +msgid "Option 2: Debian (including Debian-derivatives)" +msgstr "" + +#: i2p2www/pages/downloads/debian.html:25 +msgid "" +"Option 3: Non-Linux (and possibly Non-x86 " +"architectures)" +msgstr "" +"Вариант 3: Не-Linux (и возможно не-x86 " +"архитектуры)" + +#: i2p2www/pages/downloads/debian.html:28 +msgid "" +"Instructions for Ubuntu Precise Pangolin (and newer) and derivatives like" +" Linux Mint & Trisquel" +msgstr "" + +#: i2p2www/pages/downloads/debian.html:29 +msgid "Adding the PPA via the command line and installing I2P" +msgstr "Добавление PPA через командную строку и установка I2P" + +#: i2p2www/pages/downloads/debian.html:32 +msgid "Open a terminal and enter:" +msgstr "Открыть терминал и ввести:" + +#: i2p2www/pages/downloads/debian.html:34 +msgid "" +"This command will add the PPA to /etc/apt/sources.list.d and fetch the\n" +"gpg key that the repository has been signed with. The GPG key ensures\n" +"that the packages have not been tampered with since being built." +msgstr "" +"Эта команда добавит PPA в /etc/apt/sources.list.d и скачает\n" +"ключ gpg, которым подписан репозиторий. Этот ключ удостоверяет\n" +"что пакеты попали к вам в том же виде, как были собраны." + +#: i2p2www/pages/downloads/debian.html:41 +msgid "Notify your package manager of the new PPA by entering:" +msgstr "Теперь нужно уведомить пакетный менеджер о новом репозитории, введя:" + +#: i2p2www/pages/downloads/debian.html:43 +msgid "" +"This command will retrieve the latest list of software from each\n" +"repository that is enabled on your system, including the I2P PPA that\n" +"was added with the earlier command." +msgstr "" +"Эта команда заберет списки последних версий из каждого\n" +"репозитория, что настроен для вашей системы, включая репозиторий I2P, \n" +"который мы добавили предыдущей командой." + +#: i2p2www/pages/downloads/debian.html:49 +#: i2p2www/pages/downloads/debian.html:112 +#: i2p2www/pages/downloads/debian.html:137 +msgid "You are now ready to install I2P!" +msgstr "Теперь Вы готовы к установке I2P!" + +#: i2p2www/pages/downloads/debian.html:53 +msgid "Adding the PPA Using Synaptic" +msgstr "Добавление PPA, используя Synaptic" + +#: i2p2www/pages/downloads/debian.html:56 +msgid "" +"Open Synaptic (System -> Administration -> Synaptic Package " +"Manager)." +msgstr "" +"Запустите Synaptic (System -> Administration -> Synaptic Package " +"Manager)." + +#: i2p2www/pages/downloads/debian.html:61 +msgid "" +"Once Synaptic opens, select Repositories from the " +"Settings menu." +msgstr "" +"Как Synaptic откроется, выберите Repositories из меню " +"Settings." + +#: i2p2www/pages/downloads/debian.html:66 +msgid "" +"Click the Other Sources tab and click Add. Paste " +"ppa:i2p-maintainers/i2p into the APT-line field and click " +"Add Source. Click the Close button then " +"Reload." +msgstr "" +"Кликните на закладку Other Sources и кнопку Add. " +"Вставьте ppa:i2p-maintainers/i2p в поле APT-line и " +"кликните Add Source. Закройте с помощью Closeи " +"перезапустите с помощью Reload." + +#: i2p2www/pages/downloads/debian.html:71 +msgid "" +"In the Quick Filter box, type in i2p and press enter. When " +"i2p is returned in the results list, right click " +"i2p and select Mark for Installation. After doing " +"so you may see a Mark additional required changes? popup. If so," +" click Mark then Apply." +msgstr "" + +#: i2p2www/pages/downloads/debian.html:77 +msgid "" +"After the installation process completes you can move on to the next\n" +"part of starting I2P and configuring " +"it for your system." +msgstr "" + +#: i2p2www/pages/downloads/debian.html:82 +msgid "Instructions for Debian Lenny and newer" +msgstr "Порядок установки для Debian Lenny и более новых" + +#: i2p2www/pages/downloads/debian.html:84 +msgid "" +"For Squeeze you can follow the instructions here." +msgstr "" + +#: i2p2www/pages/downloads/debian.html:86 +msgid "" +"The steps below should be performed with root access (i.e., switching\n" +"user to root with \"su\" or by prefixing each command with \"sudo\")." +msgstr "" +"Шаги ниже должны выполняться от root (например, используя \"su\",\n" +"или ставя \"sudo \" перед каждой командой)." + +#: i2p2www/pages/downloads/debian.html:92 +msgid "Add the GPG key that signs the repository with the following command:" +msgstr "Добавьте GPG ключ для проверки репозитория с помошью следущей команды:" + +#: i2p2www/pages/downloads/debian.html:94 +msgid "You'll have output like the following if the command was successful:" +msgstr "Вот такой вывод вы получите, если команда выполнилась успешно:" + +#: i2p2www/pages/downloads/debian.html:98 +msgid "Add the following entries to /etc/apt/sources.list.d/i2p.list" +msgstr "" + +#: i2p2www/pages/downloads/debian.html:103 +msgid "Notify your package manager of the new PPA by entering" +msgstr "Теперь нужно уведомить пакетный менеджер о новом репозитории, введя:" + +#: i2p2www/pages/downloads/debian.html:105 +msgid "" +"This command will retrieve the latest list of software from every\n" +"repository enabled on your system, including the I2P PPA added in step\n" +"1." +msgstr "" +"Эта команда заберет списки последних версий из каждого\n" +"репозитория, что настроен для вашей системы, включая репозиторий I2P, \n" +"который мы добавили на шаге 1." + +#: i2p2www/pages/downloads/debian.html:116 +#: i2p2www/pages/downloads/debian.html:147 +msgid "" +"After the installation process completes you can move on to the next part" +" of starting I2P and configuring it " +"for your system." +msgstr "" +"После завершения установки вы можете приступать к следующей части запуска I2P и его настройки для вашей " +"системы." + +#: i2p2www/pages/downloads/debian.html:120 +msgid "Instructions for Non-Linux / Non-x86" +msgstr "Порядок установки для не-Linux систем и для архитектур, кроме x86" + +#: i2p2www/pages/downloads/debian.html:122 +msgid "" +"The steps below should be performed with root access (i.e., switching\n" +"user to root with \"su\" or by prefixing each command with " +"\"sudo\")." +msgstr "" +"Шаги ниже должны выполняться от root (например, используя \"su\",\n" +"или ставя \"sudo \" перед каждой командой)." + +#: i2p2www/pages/downloads/debian.html:128 +#, python-format +msgid "" +"Download the i2p-router package from the PPA.\n" +"Alternatively, there are unofficial packages available here for armel, armhf, and kfreebsd." +msgstr "" + +#: i2p2www/pages/downloads/debian.html:135 +msgid "" +"Make sure that you have Java installed. Running apt-get install" +" default-jre should be sufficient." +msgstr "" +"Убедитесь, что у вас установлена Java. Запуска apt-get install " +"default-jre должно быть достаточно для этого." + +#: i2p2www/pages/downloads/debian.html:141 +#, python-format +msgid "" +"It is recommended to compile jbigi for your " +"system to achieve better performance. Instructions are available here." +msgstr "" +"Рекомендуется собрать библиотеку jbigi под " +"вашу систему для наилучшей производительности. Инструкции по сборке " +"доступны тут." + +#: i2p2www/pages/downloads/debian.html:151 +#: i2p2www/pages/downloads/list.html:166 +msgid "Post-install work" +msgstr "Действия после установки" + +#: i2p2www/pages/downloads/debian.html:154 +msgid "" +"Using these I2P packages the I2P router can be started in the following\n" +"three ways:" +msgstr "" +"Используя эти I2P пакеты, маршрутизатор может быть запущен следующими\n" +"тремя путями:" + +#: i2p2www/pages/downloads/debian.html:160 +msgid "" +""on demand" using the i2prouter script. Simply run " +""i2prouter\n" +"start" from a command prompt. (Note: Do " +"not use\n" +"sudo or run it as root!)" +msgstr "" +""по требованию" используя скрипт i2prouter. Просто запустите " +""i2prouter⏎\n" +"start" из командной строки. (Важно: НЕ " +"НАДО использовать⏎\n" +"sudo или запускать его от root!)" + +#: i2p2www/pages/downloads/debian.html:167 +msgid "" +""on demand" without the java service wrapper\n" +"(needed on non-Linux/non-x86 systems) by running \"i2prouter-" +"nowrapper\".\n" +"(Note: Do not\n" +"use sudo or run it as root!)" +msgstr "" +""по требованию" без java service wrapper\n" +"(он нужен для non-Linux/non-x86 систем), запуская \"i2prouter-" +"nowrapper\".\n" +"(Важно: НЕ НАДО\n" +"использовать sudo или запускать от root!)" + +#: i2p2www/pages/downloads/debian.html:175 +msgid "" +"as a service that automatically runs when your system boots, even\n" +"before logging in. The service can be enabled with \"dpkg-" +"reconfigure\n" +"i2p\" as root or using sudo. This is the recommended means of " +"operation." +msgstr "" +"как сервис, который автоматически стартует при запуске системы, даже \n" +"до логина пользователя. Сервис может быть активирован командой \"dpkg-reconfigure\n" +"i2p\" от root или с помошью sudo. Этот вариан рекомендован для " +"использования." + +#: i2p2www/pages/downloads/debian.html:183 +msgid "" +"When installing for the first time, please remember to adjust your " +"NAT/firewall\n" +"if you can. The ports to forward can be found on the \n" +"network configuration page in the router console. If guidance with " +"respect to forwarding ports is needed,\n" +"you may find portforward.com to be" +" helpful." +msgstr "" + +#: i2p2www/pages/downloads/debian.html:190 +msgid "" +"Please review and adjust the bandwidth settings on the\n" +"configuration page,\n" +"as the default settings of 96 KB/s down / 40 KB/s up are fairly " +"conservative." +msgstr "" +"Проверьте и поправьте настройки полосы пропускания на ⏎\n" +"странице настроек,⏎\n" +"так как значения по умолчанию 96 KB/s down / 40 KB/s up довольно " +"ограничены." + +#: i2p2www/pages/downloads/debian.html:196 +#: i2p2www/pages/downloads/list.html:199 +#, python-format +msgid "" +"If you want to reach eepsites via your browser, have a look on the browser proxy setup page for an easy " +"howto." +msgstr "" +"Если вы хотите ходить браузером на сайты в I2P (eepsite), обратите " +"внимание на инструкцию по настройке прокси " +"для браузера " + +#: i2p2www/pages/downloads/list.html:2 i2p2www/pages/downloads/select.html:12 +#: i2p2www/pages/global/nav.html:3 +msgid "Download" +msgstr "Скачать" + +#: i2p2www/pages/downloads/list.html:9 +msgid "Download I2P" +msgstr "Скачать I2P" + +#: i2p2www/pages/downloads/list.html:11 +msgid "Dependency" +msgstr "Зависимость" + +#: i2p2www/pages/downloads/list.html:12 +#, python-format +msgid "" +"\n" +"Java Runtime 1.5 or higher.\n" +"(Oracle Java Version 6/7,\n" +"OpenJDK 6/7, or\n" +"IcedTea6/7\n" +" recommended)\n" +"
    \n" +"Determine" +" your installed Java version here\n" +"or type java -version at your command prompt.\n" +msgstr "" + +#: i2p2www/pages/downloads/list.html:25 +msgid "Clean installs" +msgstr "Новая инсталляция" + +#: i2p2www/pages/downloads/list.html:32 i2p2www/pages/downloads/list.html:49 +#: i2p2www/pages/downloads/list.html:76 i2p2www/pages/downloads/list.html:135 +#: i2p2www/pages/downloads/list.html:264 +msgid "select alternate link" +msgstr "" + +#: i2p2www/pages/downloads/list.html:39 +msgid "Download that file and run it." +msgstr "Скачайте этот файл и запустите его." + +#: i2p2www/pages/downloads/list.html:56 +#, python-format +msgid "" +"Download that file and double-click it (if that works) or\n" +" type java -jar i2pinstall_%(i2pversion)s.jar in a " +"terminal to run the\n" +" installer.\n" +" You may be able to right-click and select\n" +" "Open with Java"." +msgstr "" + +#: i2p2www/pages/downloads/list.html:64 i2p2www/pages/downloads/list.html:91 +msgid "Command line (headless) install:" +msgstr "Установка из командной строки:" + +#: i2p2www/pages/downloads/list.html:65 +#, python-format +msgid "" +"Download the %(i2pversion)s OSX graphical installer file above and\n" +" run java -jar i2pinstall_%(i2pversion)s.jar -console " +"from the command line." +msgstr "" + +#: i2p2www/pages/downloads/list.html:83 +#, python-format +msgid "" +"Download that file and double-click it (if that works) or\n" +" type java -jar i2pinstall_%(i2pversion)s.jar in a " +"terminal to run the\n" +" installer.\n" +" On some platforms you may be able to right-click and select\n" +" "Open with Java"." +msgstr "" +"Скачайте и кликните файл (если это применимо), или\n" +"наберите java -jar i2pinstall_%(i2pversion)s.jar в терминале" +" для запуска\n" +"инсталлятора.\n" +"На некоторых платформах это может быть как правый клик мышкой и выбрать\n" +""Open with Java"." + +#: i2p2www/pages/downloads/list.html:92 +#, python-format +msgid "" +"Download the graphical installer file above and\n" +" run java -jar i2pinstall_%(i2pversion)s.jar -console " +"from the command line." +msgstr "" +"Скачайте инсталлятор выше и\n" +"запустите как java -jar i2pinstall_%(i2pversion)s.jar " +"-console из командной строки." + +#: i2p2www/pages/downloads/list.html:102 +msgid "Packages for Debian & Ubuntu are available." +msgstr "Пакеты для Debian & Ubuntu есть и доступны." + +#: i2p2www/pages/downloads/list.html:116 +#, python-format +msgid "" +"The above file is the current release build.\n" +" The latest dev build is version %(devbuild)s, and is available from\n" +" str4d's eepsite." +msgstr "" + +#: i2p2www/pages/downloads/list.html:122 +msgid "" +"The release and dev versions of the I2P APK are not compatible, as they\n" +" are signed by zzz and str4d respectively. Uninstall one before " +"installing\n" +" the other." +msgstr "" + +#: i2p2www/pages/downloads/list.html:132 +msgid "Source package" +msgstr "Пакет с исходниками" + +#: i2p2www/pages/downloads/list.html:142 +#, python-format +msgid "" +"Alternately, you can fetch the source from monotone\n" +" or via Git from git.repo.i2p or Github.\n" +"
    \n" +" Run (tar xjvf i2psource_%(i2pversion)s.tar.bz2 ; cd " +"i2p-%(i2pversion)s ; ant pkg) then either\n" +" run the GUI installer or headless install as above." +msgstr "" + +#: i2p2www/pages/downloads/list.html:157 +#, python-format +msgid "" +"The files are signed by zzz,\n" +"whose key is here." +msgstr "" +"Эти файлы подписаны zzz,\n" +"и его ключи вот тут." + +#: i2p2www/pages/downloads/list.html:162 +msgid "" +"I2P can also be downloaded from our project pages on Launchpad and Google Code." +msgstr "" +"I2P можно еще скачать с сайтов проекта на Launchpad и Google Code." + +#: i2p2www/pages/downloads/list.html:168 +msgid "" +"After running the installer on windows, simply click on the \"Start I2P\"" +" button\n" +"which will bring up the router console,\n" +"which has further instructions." +msgstr "" +"После успешного запуска инсталлятора на windows, просто щелкните на " +"кнопку \"Start I2P\",\n" +"откроется консоль " +"роутера,\n" +"где будут дальнейшие инструкции." + +#: i2p2www/pages/downloads/list.html:174 +msgid "" +"On Unix-like systems, I2P can be started as a service\n" +"using the \"i2prouter\" script, located in the directory you selected for" +" I2P.\n" +"Changing to that directory in a console and issuing \"sh i2prouter " +"status\"\n" +"should tell you the router's status. The arguments \"start\", \"stop\" " +"and \"restart\"\n" +"control the service. The router console\n" +"can be accessed at its usual location.\n" +"For users on OpenSolaris and other systems for which the wrapper (i2psvc)" +" is not supported,\n" +"start the router with \"sh runplain.sh\" instead." +msgstr "" +"На Unix системах, I2P можно запустить как сервис\n" +"используя \"i2prouter\" скрипт, расположенный в директории, что вы " +"указали для установки i2p.\n" +"Перейдите в эту директорию в командной строке и выполните команду \"sh " +"i2prouter status\",\n" +"это даст вам текущее состояние маршрутизатора. Параметры скрипта могут " +"бытьт \"start\", \"stop\" and \"restart\", \n" +"для запуска, останова и перезапуска, соответственно. Консоль маршрутизкатора⏎\n" +"доступна в обычном месте.\n" +"Для пользователей на OpenSolaris и других системах, где враппер (i2psvc) " +"не поддерживается,\n" +"запускайте маршрутизатор командой \"sh runplain.sh\"." + +#: i2p2www/pages/downloads/list.html:185 +#, python-format +msgid "" +"When installing for the first time, please remember to adjust your " +"NAT/firewall\n" +"if you can, bearing in mind the Internet-facing ports I2P uses,\n" +"described here among other ports.\n" +"If you have successfully opened your port to inbound TCP, also enable " +"inbound TCP on the\n" +"configuration page." +msgstr "" +"Устанавливая впервые, не забудьте отредактировать настройки вашего NAT" +" и firewall\n" +"если возможно, учитывая те номера портов, которые I2P использует в " +"интернет.\n" +"Они описаны здесь, среди остальных портов.\n" +"Если вам удалось открыть порт для входящего tcp, включите также " +"использование входящего TCP на\n" +"странице конфигурации" + +#: i2p2www/pages/downloads/list.html:193 +msgid "" +"Also, please review and adjust the bandwidth settings on the\n" +"configuration page,\n" +"as the default settings of 96 KBps down / 40 KBps up are fairly slow." +msgstr "" +"Пожалуйста, проверьте и поправьте настройки полосы пропускания на⏎" +"\n" +"странице конфигурации,⏎\n" +"так как настройки по умолчанию 96 KBps down / 40 KBps up это, честно " +"говоря, меееееедленнноооо." + +#: i2p2www/pages/downloads/list.html:203 +msgid "Updates from earlier releases:" +msgstr "Обновления с более ранних релизов:" + +#: i2p2www/pages/downloads/list.html:205 +msgid "Both automatic and manual upgrades are available for the release." +msgstr "И автоматические, и ручные обновления возможны для версии." + +#: i2p2www/pages/downloads/list.html:210 +msgid "Automatic updates" +msgstr "Автоматические обновления" + +#: i2p2www/pages/downloads/list.html:212 +msgid "" +"If you are running 0.7.5 or later, your router should detect the\n" +"new release. To upgrade simply click the 'Download Update' button on your" +" router console\n" +"when it appears." +msgstr "" +"Если вы используете 0.7.5 или более новую версию, ваш маршрутизатор " +"должен определить\n" +"выпуск нового релиза. Для обновления просто щелкните кнопку 'Скачать " +"обновление' на консоли маршрутизатора,\n" +"когда она появится." + +#: i2p2www/pages/downloads/list.html:218 +msgid "" +"Due to a bug in release 0.7.6, those whose first I2P installation was " +"that version\n" +"and have not upgraded manually\n" +"may get a \"downloaded version is not greater than current version\" " +"error,\n" +"and should use the manual update method below." +msgstr "" +"Из-за ошибки в версии 0.7.6, первоначально установленные на этой версии " +"системы\n" +"и не обновленные позже вручную\n" +"могут получить сообщение об ошибке \"скачанная версия не новее текущей\"," +"\n" +"и это означает, что обновляться придется вручную, описано ниже." + +#: i2p2www/pages/downloads/list.html:226 +#, python-format +msgid "" +"If you are running 0.7.4 or earlier, please see\n" +"the 0.7.5 release notes\n" +"for important information about how to configure your router to " +"automatically\n" +"receive the release." +msgstr "" +"Если вы используете 0.7.4 или более раннюю версию, смотрите \n" +"the 0.7.5 release notes\n" +"для описания порядка настройки маршрутизатора на \n" +"автоматические обновления" + +#: i2p2www/pages/downloads/list.html:234 +#, python-format +msgid "" +"If you are running 0.6.1.30 or earlier, please see\n" +"instructions\n" +"for important information about how to configure your router to " +"automatically\n" +"receive the release." +msgstr "" +"Если вы используете 0.6.1.30 или более ранние версии, смотрите\n" +"instructions\n" +"для получения информации о настройке маршрутизатора на автоматическое " +"получение обновлений." + +#: i2p2www/pages/downloads/list.html:243 +#, python-format +msgid "" +"If you have reconfigured your router following the instructions, you should see a link on your" +" \n" +" router console " +"allowing\n" +" you to download and install the new release by just clicking on that\n" +" link." +msgstr "" +"Если вы правильно сконфигурировали маршрутизатор по инструкции, вы должны увидеть ссылку на\n" +"консоли, которая позволит" +"\n" +"вам скачать и установить новую версию, просто кликнув по этой\n" +"ссылке" + +#: i2p2www/pages/downloads/list.html:251 +msgid "Alternately, you can use the manual method specified below." +msgstr "Ну, или попробуйте обновиться вручную по методике, описанной ниже." + +#: i2p2www/pages/downloads/list.html:261 +msgid "Manual updates" +msgstr "Обновление вручную" + +#: i2p2www/pages/downloads/list.html:273 +msgid "" +"Download that file to your I2P\n" +" installation directory and rename as i2pupdate.zip.\n" +" (alternately, you can get the source as above and run \"ant " +"updater\", then copy the\n" +" resulting i2pupdate.zip to your I2P installation directory). You do" +" \n" +" NOT need to unzip that file." +msgstr "" +"Скачайте этот файл в директорию установки I2P\n" +"и переименуйте его в i2pupdate.zip.\n" +"(или вы можете взять исходники, как выше, и запустить \"ant updater\", а " +"потом скопировать\n" +"полученный i2pupdate.zip в директорию установки I2P). Нет, \n" +"этот файл вам НЕ НАДО разархивировать самостоятельно." + +#: i2p2www/pages/downloads/list.html:282 +msgid "Click \"Restart\"" +msgstr "" +"Нажмите на \"Перезапустить\"" + +#: i2p2www/pages/downloads/list.html:287 +msgid "Grab a cup of coffee and come back in 11 minutes" +msgstr "Сходите за чашечкой кофе, можно вернуться минут через 11" + +#: i2p2www/pages/downloads/list.html:295 +#, python-format +msgid "" +"The file is signed by zzz,\n" +"whose key is here." +msgstr "" +"Эти файлы подписаны zzz,\n" +"и его ключи вот тут." + +#: i2p2www/pages/downloads/list.html:300 +msgid "Previous Releases" +msgstr "Предыдущие Версии" + +#: i2p2www/pages/downloads/list.html:302 +#, python-format +msgid "" +"Previous releases are available on Google " +"Code\n" +"and Launchpad\n" +"and within the I2P network on %(echelon)s." +msgstr "" +"Предыдущие версии I2P доступны на Google " +"Code⏎\n" +"и на Launchpad,⏎\n" +"а также внутри I2P на %(echelon)s." + +#: i2p2www/pages/downloads/select.html:2 i2p2www/pages/downloads/select.html:4 +msgid "Mirror selection" +msgstr "Выбор зеркала для скачки" + +#: i2p2www/pages/downloads/select.html:5 +msgid "File:" +msgstr "Файл:" + +#: i2p2www/pages/downloads/select.html:10 +msgid "Any mirror" +msgstr "Любое зеркало" + +#: i2p2www/pages/global/bounty.html:19 +msgid "" +"To claim the bounty the author must not be paid by other organizations\n" +"or teams for this work (e.g. GSoC students are not valid)." +msgstr "" +"Чтобы получить награду, авторуне должны платить другие организации\n" +"или команды за эту работу (например, студентам GSoC не будет оплачено)." + +#: i2p2www/pages/global/bounty.html:29 +#, python-format +msgid "" +"Bounty amounts may be increased by further donations. Do\n" +"you think these are important? Add in your " +"donation, \n" +"marking the amount for the %(donatename)s bounty!" +msgstr "" +"Размер награды может быть увеличен за счет пожертвований. Вы\n" +"считаете это важным? Внесите свои " +"пожертвования, ⏎\n" +"указывая количество на награду за %(donatename)s!" + +#: i2p2www/pages/global/error_404.html:3 +msgid "Not found" +msgstr "не найдено" + +#: i2p2www/pages/global/error_404.html:9 +msgid "" +"Yep... the resource, you were searching for, is named differently, " +"doesn't exist or was removed." +msgstr "Или вы не так набрали, или мы потеряли или потерли. " + +#: i2p2www/pages/global/error_500.html:5 +msgid "Server error" +msgstr "Ошибка сервера" + +#: i2p2www/pages/global/error_500.html:13 +msgid "500 Server error" +msgstr "500 Server error" + +#: i2p2www/pages/global/error_500.html:17 +msgid "Umm... the server encountered some sort of error." +msgstr "Сервер столкнулся с какой-то ошибкой." + +#: i2p2www/pages/global/footer.html:2 +msgid "Mirrors" +msgstr "Зеркала" + +#: i2p2www/pages/global/footer.html:9 +msgid "Secure" +msgstr "Безопасно" + +#: i2p2www/pages/global/footer.html:16 +msgid "Misc." +msgstr "Разное" + +#: i2p2www/pages/global/footer.html:19 i2p2www/pages/site/links.html:2 +msgid "Links" +msgstr "Ссылки" + +#: i2p2www/pages/global/footer.html:20 +msgid "Impressum" +msgstr "Контакты" + +#: i2p2www/pages/global/footer.html:24 +msgid "T-Shirts!" +msgstr "Футболки!" + +#: i2p2www/pages/global/footer.html:26 +msgid "Europe" +msgstr "Европа" + +#: i2p2www/pages/global/footer.html:27 +msgid "USA" +msgstr "США" + +#: i2p2www/pages/global/footer.html:31 +msgid "Donate" +msgstr "Пожертвования" + +#: i2p2www/pages/global/layout.html:29 +msgid "Skip navigation" +msgstr "" + +#: i2p2www/pages/global/layout.html:32 +msgid "I2P Logo" +msgstr "I2P Лого" + +#: i2p2www/pages/global/layout.html:32 i2p2www/pages/site/index.html:3 +msgid "The Invisible Internet Project" +msgstr "Проект Невидимый Интернет" + +#: i2p2www/pages/global/layout.html:56 +#, python-format +msgid "" +"This page was last updated in %(lastupdated)s and is accurate for router " +"version %(accuratefor)s." +msgstr "" +"Эта страница была обновлена %(lastupdated)s и содержит сведения для " +"версии маршрутизатора %(accuratefor)s." + +#: i2p2www/pages/global/layout.html:60 +#, python-format +msgid "This page was last updated in %(lastupdated)s." +msgstr "Эта страница была обновлена %(lastupdated)s." + +#: i2p2www/pages/global/layout.html:64 +#, python-format +msgid "This page is accurate for router version %(accuratefor)s." +msgstr "Эта страница содержит сведения для версии %(accuratefor)s." + +#: i2p2www/pages/global/macros:21 +msgid "Previous" +msgstr "" + +#: i2p2www/pages/global/macros:36 +msgid "Next" +msgstr "" + +#: i2p2www/pages/global/macros:43 +msgid "Posted in" +msgstr "" + +#: i2p2www/pages/global/nav.html:4 +msgid "About" +msgstr "О проекте" + +#: i2p2www/pages/global/nav.html:6 +msgid "Introduction to I2P" +msgstr "Введение в I2P" + +#: i2p2www/pages/global/nav.html:7 +msgid "Comparisons" +msgstr "Сравнения" + +#: i2p2www/pages/global/nav.html:9 +msgid "Overview of comparisons" +msgstr "Обзор сравнений" + +#: i2p2www/pages/global/nav.html:13 +msgid "Other anonymous networks" +msgstr "Другие анонимные сети" + +#: i2p2www/pages/global/nav.html:16 +msgid "Documentation" +msgstr "Документация" + +#: i2p2www/pages/global/nav.html:18 +msgid "Documentation index" +msgstr "Список документации" + +#: i2p2www/pages/global/nav.html:19 +msgid "How does it work?" +msgstr "Как работает I2P" + +#: i2p2www/pages/global/nav.html:21 +msgid "Gentle intro" +msgstr "Легкая вводная часть" + +#: i2p2www/pages/global/nav.html:22 +msgid "Tech intro" +msgstr "Технические особенности" + +#: i2p2www/pages/global/nav.html:23 +msgid "Threat model" +msgstr "Модель угроз" + +#: i2p2www/pages/global/nav.html:24 +msgid "Garlic routing" +msgstr "Чесночная маршрутизация" + +#: i2p2www/pages/global/nav.html:25 +msgid "Network database" +msgstr "I2P сетевая база данных" + +#: i2p2www/pages/global/nav.html:26 +msgid "Tunnel routing" +msgstr "Маршрутизация туннелей" + +#: i2p2www/pages/global/nav.html:27 +msgid "Peer selection" +msgstr "Выбор пира" + +#: i2p2www/pages/global/nav.html:28 +msgid "Cryptography" +msgstr "Криптография" + +#: i2p2www/pages/global/nav.html:29 +msgid "ElGamal/AES+SessionTags" +msgstr "ElGamal/AES+Метки сессий" + +#: i2p2www/pages/global/nav.html:32 i2p2www/pages/global/nav.html:116 +msgid "Applications" +msgstr "Приложения для I2P" + +#: i2p2www/pages/global/nav.html:34 +msgid "Supported applications" +msgstr "Поддерживаемые приложения" + +#: i2p2www/pages/global/nav.html:35 +msgid "Bittorrent" +msgstr "Bittorrent" + +#: i2p2www/pages/global/nav.html:38 +msgid "API" +msgstr "API (програмный интерфейс)" + +#: i2p2www/pages/global/nav.html:46 i2p2www/pages/global/nav.html:77 +msgid "Streaming library" +msgstr "Библиотека потоков" + +#: i2p2www/pages/global/nav.html:47 +msgid "Ministreaming library" +msgstr "Библиотека минипотоков" + +#: i2p2www/pages/global/nav.html:48 i2p2www/pages/global/nav.html:71 +msgid "Datagrams" +msgstr "Датаграммы" + +#: i2p2www/pages/global/nav.html:52 +msgid "Protocols" +msgstr "Протоколы" + +#: i2p2www/pages/global/nav.html:54 +msgid "Protocol stack" +msgstr "Стек протоколов" + +#: i2p2www/pages/global/nav.html:59 +msgid "Transports" +msgstr "Транспортные протоколы" + +#: i2p2www/pages/global/nav.html:61 +msgid "Transport layer overview" +msgstr "Обзор траспортного уровня" + +#: i2p2www/pages/global/nav.html:66 +msgid "Specifications" +msgstr "Спецификации" + +#: i2p2www/pages/global/nav.html:68 +msgid "Blockfile" +msgstr "Блокфайл" + +#: i2p2www/pages/global/nav.html:69 +msgid "Common structures" +msgstr "Основные структуры" + +#: i2p2www/pages/global/nav.html:70 +msgid "Configuration files" +msgstr "Конфигурационные файлы" + +#: i2p2www/pages/global/nav.html:72 +msgid "GeoIP files" +msgstr "" + +#: i2p2www/pages/global/nav.html:75 i2p2www/pages/global/nav.html:91 +msgid "Plugins" +msgstr "Плагины" + +#: i2p2www/pages/global/nav.html:78 +msgid "Tunnel creation" +msgstr "Создание туннелей" + +#: i2p2www/pages/global/nav.html:79 +msgid "Tunnel messages" +msgstr "Сообщения туннелей" + +#: i2p2www/pages/global/nav.html:80 +msgid "Software updates" +msgstr "Обновления програмного обеспечения" + +#: i2p2www/pages/global/nav.html:83 +msgid "Tunnels" +msgstr "Туннели" + +#: i2p2www/pages/global/nav.html:85 +msgid "Tunnel implementation" +msgstr "Реализация туннелей" + +#: i2p2www/pages/global/nav.html:86 +msgid "Unidirectional tunnels" +msgstr "Всенаправленные туннели" + +#: i2p2www/pages/global/nav.html:87 +msgid "Old implementation" +msgstr "Старая реализация" + +#: i2p2www/pages/global/nav.html:90 +msgid "Naming and addressbook" +msgstr "Именование и адресная книга" + +#: i2p2www/pages/global/nav.html:94 +msgid "Team" +msgstr "Команда" + +#: i2p2www/pages/global/nav.html:96 +msgid "Hall of Fame" +msgstr "Зал славы" + +#: i2p2www/pages/global/nav.html:97 +msgid "Academic papers and peer review" +msgstr "Научные публикации и рецензирование" + +#: i2p2www/pages/global/nav.html:98 +msgid "Presentations, tutorials and articles" +msgstr "Презентации, учебные материалы и статьи" + +#: i2p2www/pages/global/nav.html:99 +msgid "Contact us" +msgstr "Контакты" + +#: i2p2www/pages/global/nav.html:102 +msgid "Help" +msgstr "Справка" + +#: i2p2www/pages/global/nav.html:104 +msgid "FAQ" +msgstr "FAQ" + +#: i2p2www/pages/global/nav.html:105 +msgid "How to browse I2P" +msgstr "Как в I2P смотреть страницы" + +#: i2p2www/pages/global/nav.html:106 +msgid "Glossary" +msgstr "Список терминов" + +#: i2p2www/pages/global/nav.html:107 +msgid "Performance" +msgstr "Производительность" + +#: i2p2www/pages/global/nav.html:108 i2p2www/pages/site/contact.html:22 +msgid "Forums" +msgstr "Форумы" + +#: i2p2www/pages/global/nav.html:111 +msgid "Volunteer" +msgstr "Волонтерство" + +#: i2p2www/pages/global/nav.html:113 +msgid "Get involved!" +msgstr "Вливайтесь!" + +#: i2p2www/pages/global/nav.html:114 +msgid "Develop" +msgstr "Разработка" + +#: i2p2www/pages/global/nav.html:117 +msgid "Licenses" +msgstr "Лицензии" + +#: i2p2www/pages/global/nav.html:118 +msgid "Release signing keys" +msgstr "Ключи для подписи релизов" + +#: i2p2www/pages/global/nav.html:119 +msgid "Signed keys" +msgstr "Подписанные ключи" + +#: i2p2www/pages/global/nav.html:120 +msgid "Developers keys" +msgstr "Ключи разработчиков" + +#: i2p2www/pages/global/nav.html:121 +msgid "Bug tracker" +msgstr "Заявки о проблемах" + +#: i2p2www/pages/global/nav.html:124 +msgid "Academic research" +msgstr "Научные исследования" + +#: i2p2www/pages/global/nav.html:125 +msgid "Guides" +msgstr "Руководства" + +#: i2p2www/pages/global/nav.html:127 +msgid "New developers" +msgstr "Новые разработчики" + +#: i2p2www/pages/global/nav.html:128 +msgid "Using an IDE with I2P" +msgstr "Использование IDE с I2P" + +#: i2p2www/pages/global/nav.html:129 +msgid "Developer guidelines and coding style" +msgstr "Руководства разработчика и стиль кодирования" + +#: i2p2www/pages/global/nav.html:130 +msgid "Monotone" +msgstr "" + +#: i2p2www/pages/global/nav.html:131 +msgid "New translators" +msgstr "Новые переводчики" + +#: i2p2www/pages/global/nav.html:134 +msgid "Bounties" +msgstr "Награды" + +#: i2p2www/pages/global/nav.html:135 i2p2www/pages/meetings/index.html:2 +msgid "Meetings" +msgstr "Встречи" + +#: i2p2www/pages/global/nav.html:136 +msgid "Roadmap" +msgstr "Дорожная карта" + +#: i2p2www/pages/global/nav.html:137 +msgid "Task list" +msgstr "Задачи" + +#: i2p2www/pages/global/nav.html:140 +msgid "Language" +msgstr "Язык" + +#: i2p2www/pages/meetings/index.html:4 +msgid "I2P Meetings ATOM Feed" +msgstr "Фид Встречи по I2P (ATOM)" + +#: i2p2www/pages/meetings/index.html:7 +msgid "Logs of past I2P meetings" +msgstr "Журналы прежних встреч по I2P" + +#: i2p2www/pages/meetings/index.html:9 +msgid "Meetings are currently on hold until a more suitable time can be chosen." +msgstr "" + +#: i2p2www/pages/meetings/index.html:13 +#, python-format +msgid "" +"If you have something to discuss, please find the developers on IRC in " +"#i2p-dev.\n" +"Status updates from developers are also " +"available." +msgstr "" +"Если у вас есть необходимость что-то обсудить, найдите разработчиков на " +"IRC в канале #i2p-dev.\n" +"Вести от разработчиков на блогах." + +#: i2p2www/pages/meetings/show.html:2 +#, python-format +msgid "I2P Development Meeting %(id)s" +msgstr "" + +#: i2p2www/pages/meetings/show.html:10 +msgid "Full IRC Log" +msgstr "" + +#: i2p2www/pages/papers/list.html:29 +msgid "By topic" +msgstr "" + +#: i2p2www/pages/papers/list.html:35 +msgid "By date" +msgstr "" + +#: i2p2www/pages/papers/list.html:41 +msgid "By author" +msgstr "" + +#: i2p2www/pages/papers/list.html:83 +#, python-format +msgid "" +"Please send new or corrected entries to\n" +"%(email)s.
    \n" +"If you can, please format them as BibTeX; see our\n" +"BibTeX source page for examples.
    \n" +"Remember to include URLs if possible:\n" +"offline papers are less useful." +msgstr "" + +#: i2p2www/pages/site/contact.html:2 +msgid "Contact" +msgstr "Контакты" + +#: i2p2www/pages/site/contact.html:5 +msgid "" +"Our primary IRC network is the Irc2P network within I2P; a default tunnel" +" to this network is set up with new router installs.\n" +" We are also present on multiple standard networks like OFTC,\n" +" EIN and Freenode.\n" +" All I2P-related channels on all these network are linked to the main " +"channels on Irc2P via relay bots." +msgstr "" + +#: i2p2www/pages/site/contact.html:13 +msgid "Channel list:" +msgstr "Список каналов:" + +#: i2p2www/pages/site/contact.html:15 +msgid "General i2p discussion" +msgstr "Общие обсуждения I2P" + +#: i2p2www/pages/site/contact.html:16 +msgid "Offtopic" +msgstr "Оффтопик" + +#: i2p2www/pages/site/contact.html:17 +msgid "Development talk" +msgstr "Общение разработчиков" + +#: i2p2www/pages/site/contact.html:18 +msgid "Help channel" +msgstr "Канал помощи" + +#: i2p2www/pages/site/contact.html:23 +#, python-format +msgid "" +"Most of the discussion about I2P's development happens on the I2P developer forum. This is usually the best" +" place to start with inquiries, if the dev IRC channel is inactive." +msgstr "" +"Большинство дискуссий по развитию I2P происходят на форуме разработчиков I2P. Это обычно " +"наилучшее место для вопросов, если на IRC канале никого нет. " + +#: i2p2www/pages/site/contact.html:27 +msgid "Mailing lists" +msgstr "Списки рассылки" + +#: i2p2www/pages/site/contact.html:28 +msgid "" +"I2P does have a mailing list, but it is rarely used as the current small " +"team of developers prefer to communicate via IRC or the developer forum. " +"This may change in future." +msgstr "" +"Существует список рассылки, но он редко используется, т.к. существующая " +"команда разработки компактна и предпочитает общение на IRC или форуме. " +"Возможно, это изменится в будущем." + +#: i2p2www/pages/site/contact.html:33 +msgid "Subscribing" +msgstr "Подписка" + +#: i2p2www/pages/site/contact.html:34 +msgid "" +"To subscribe to a mailing list, go to the list information page (linked " +"below) and fill out the form. I2P-internal email addresses " +"(foobar@mail.i2p) can be used." +msgstr "" +"Для подписки на список расслыки, перейдите на страницу списка (ниже " +"ссылка) и заполните форму. Можно использовать внутренние I2P адреса " +"(foobar@mail.i2p)." + +#: i2p2www/pages/site/contact.html:38 +msgid "Unsubscribing" +msgstr "Отписаться от списка рассылки" + +#: i2p2www/pages/site/contact.html:39 +msgid "" +"To unsubscribe from a mailing list or edit your subscription options, go " +"to the list information page (linked below) and enter your subscription " +"email address." +msgstr "" +"Для того, чтобы отписаться от списка рассылки или изменить настройки, " +"идите по ссылке (внизу) и введите свой почтовый адрес." + +#: i2p2www/pages/site/contact.html:43 +msgid "Lists" +msgstr "Списки" + +#: i2p2www/pages/site/contact.html:46 +msgid "Archive" +msgstr "Архив" + +#: i2p2www/pages/site/contact.html:47 +msgid "" +"General I2P discussion - anything that doesn't fit in a different list " +"goes here." +msgstr "Общая дискуссия по I2P - все, что не подходит под какой-то другой список." + +#: i2p2www/pages/site/contact.html:53 +msgid "" +"You don't like mailing lists? Then this is for you. All mailing lists are" +" available via NNTP as well." +msgstr "" +"Вам не нравятся списки рассылки? Тогда это для вас. Все рассылки также " +"доступны по NNTP." + +#: i2p2www/pages/site/contact.html:58 +msgid "Group-List-mapping:" +msgstr "Соответстие групп и списков:" + +#: i2p2www/pages/site/contact.html:62 +msgid "Servers:" +msgstr "Сервера:" + +#: i2p2www/pages/site/faq.html:2 +msgid "Frequently Asked Questions" +msgstr "Часто задаваемые вопросы" + +#: i2p2www/pages/site/faq.html:4 +msgid "Index" +msgstr "Список" + +#: i2p2www/pages/site/faq.html:7 +msgid "General" +msgstr "Общая информация" + +#: i2p2www/pages/site/faq.html:9 i2p2www/pages/site/faq.html:51 +msgid "What systems will I2P run on?" +msgstr "На каких системах работает I2P?" + +#: i2p2www/pages/site/faq.html:10 +msgid "Whats an \"eepsite\" and how do I configure my browser so I can use them?" +msgstr "" +"Что такое \"eepsite\" и как я могу настроить свой браузер, чтобы до них " +"дойти?" + +#: i2p2www/pages/site/faq.html:11 i2p2www/pages/site/faq.html:263 +msgid "My router has very few active peers, is this OK?" +msgstr "На моем маршрутизаторе очень мало активных пиров, это нормально?" + +#: i2p2www/pages/site/faq.html:12 i2p2www/pages/site/faq.html:498 +msgid "What do the Active x/y numbers mean in the router console?" +msgstr "Что означают цифры Активно x/y в консоли маршрутизатора?" + +#: i2p2www/pages/site/faq.html:13 i2p2www/pages/site/faq.html:225 +msgid "" +"My active peers / known peers / participating tunnels / connections / " +"bandwidth vary dramatically over time! Is anything wrong?" +msgstr "" +"У меня числа активных пиров / известных пиров / туннелей / соединений / " +"полосы очень сильно меняются! Что нибудь не так?" + +#: i2p2www/pages/site/faq.html:14 i2p2www/pages/site/faq.html:348 +msgid "Is using an outproxy safe?" +msgstr "Безопасно ли использовать outproxy?" + +#: i2p2www/pages/site/faq.html:15 i2p2www/pages/site/faq.html:374 +msgid "Most of the eepsites within I2P are down?" +msgstr "Большая часть eepsites в I2P - лежат?" + +#: i2p2www/pages/site/faq.html:16 i2p2www/pages/site/faq.html:527 +msgid "What ports does I2P use?" +msgstr "Какие порты использует I2P?" + +#: i2p2www/pages/site/faq.html:17 +msgid "Why is I2P listening for connections on port 32000?" +msgstr "Почему I2P слушает на порту 32000?" + +#: i2p2www/pages/site/faq.html:18 i2p2www/pages/site/faq.html:62 +msgid "I think I found a bug, where can I report it?" +msgstr "Я думаю, что нашел баг, где я могу о нем сообщить?" + +#: i2p2www/pages/site/faq.html:19 i2p2www/pages/site/faq.html:107 +msgid "What happened to *.i2p.net? What happened to jrandom? Is I2P dead?" +msgstr "Что случилось с *.i2p.net? Что случилось с jrandom? I2P больше нет?" + +#: i2p2www/pages/site/faq.html:20 i2p2www/pages/site/faq.html:845 +msgid "I have a question!" +msgstr "Имею вопрос!" + +#: i2p2www/pages/site/faq.html:22 +msgid "Setup" +msgstr "Установка" + +#: i2p2www/pages/site/faq.html:24 i2p2www/pages/site/faq.html:232 +msgid "" +"My router has been up for several minutes and has zero or very few " +"connections" +msgstr "" +"Мой маршрутизатор запущен уже несколько минут и у него нет или очень мало" +" соединений" + +#: i2p2www/pages/site/faq.html:25 i2p2www/pages/site/faq.html:390 +msgid "Why is I2P so slow?" +msgstr "Почему I2P такой тормозной?" + +#: i2p2www/pages/site/faq.html:26 i2p2www/pages/site/faq.html:79 +msgid "" +"I'm missing lots of hosts in my addressbook. What are some good " +"subscription links?" +msgstr "" +"У меня в адресной книге нет кучи интересных хостов. Где искать хорошие " +"подписки с ссылками?" + +#: i2p2www/pages/site/faq.html:27 i2p2www/pages/site/faq.html:383 +msgid "How do I set up my own eepsite?" +msgstr "Как запустить мой собственный eepsite?" + +#: i2p2www/pages/site/faq.html:28 i2p2www/pages/site/faq.html:416 +msgid "Bittorrent / I2PSnark / Azureus I2P Plugin Questions?" +msgstr "Вопросы по плагинам Bittorrent / I2PSnark / Azureus I2P" + +#: i2p2www/pages/site/faq.html:29 i2p2www/pages/site/faq.html:423 +msgid "How do I connect to IRC within I2P?" +msgstr "Как попасть в IRC через I2P?" + +#: i2p2www/pages/site/faq.html:30 i2p2www/pages/site/faq.html:281 +msgid "I can't access regular Internet sites through I2P." +msgstr "Я не могу попасть на обычные сайты Internet через I2P." + +#: i2p2www/pages/site/faq.html:31 i2p2www/pages/site/faq.html:296 +msgid "I can't access https:// or ftp:// sites through I2P." +msgstr "Я не могу попасть на https:// или ftp:// сайты через I2P" + +#: i2p2www/pages/site/faq.html:32 i2p2www/pages/site/faq.html:506 +msgid "Is it possible to use I2P as a SOCKS proxy?" +msgstr "Можно использовать I2P как SOCKS proxy?" + +#: i2p2www/pages/site/faq.html:33 i2p2www/pages/site/faq.html:489 +msgid "How do I configure my browser?" +msgstr "Как должен быть настроен мой браузер?" + +#: i2p2www/pages/site/faq.html:34 i2p2www/pages/site/faq.html:434 +msgid "" +"How can I access the web console from my other machines or password " +"protect it?" +msgstr "" +"Как я могу настроить доступ к консоли маршрутизатора с других машин или " +"защитить этот доступ паролем?" + +#: i2p2www/pages/site/faq.html:35 i2p2www/pages/site/faq.html:474 +msgid "How can I use applications from my other machines?" +msgstr "Как я могу использовать приложения с других моих машин?" + +#: i2p2www/pages/site/faq.html:36 i2p2www/pages/site/faq.html:748 +msgid "How do I reseed manually?" +msgstr "Как вручную сделать reseed?" + +#: i2p2www/pages/site/faq.html:37 i2p2www/pages/site/faq.html:124 +msgid "My router is using too much CPU?!?" +msgstr "Мой маршрутизатор использует весь процессор?!?" + +#: i2p2www/pages/site/faq.html:39 +msgid "Misconception" +msgstr "Недопонимание" + +#: i2p2www/pages/site/faq.html:41 i2p2www/pages/site/faq.html:366 +msgid "" +"How do I access IRC, BitTorrent, or other services on the regular " +"Internet?" +msgstr "" +"Как я могу попасть на IRC, BitTorrent или другой сервис в обычном " +"интернете?" + +#: i2p2www/pages/site/faq.html:42 +msgid "" +"Is my router an \"exit node\"(outproxy) to the regular Internet? I don't " +"want it to be." +msgstr "" +"А мой роутер является \"выходным узлом\" (outproxy) в обычный интернет? Я" +" не хочу чтобы он был." + +#: i2p2www/pages/site/faq.html:43 i2p2www/pages/site/faq.html:188 +msgid "" +"I am opposed to certain types of content. How do I keep from " +"distributing, storing, or accessing them?" +msgstr "" +"Я против некоторых типов контента. Как я могу избежать участия в " +"распространении, хранении или доступе к нему?" + +#: i2p2www/pages/site/faq.html:45 +msgid "Errors and Their Solutions" +msgstr "Ошибки и их успешное разрешение" + +#: i2p2www/pages/site/faq.html:47 i2p2www/pages/site/faq.html:784 +msgid "" +"I'm using FreeBSD and when I start I2P I receive an error about " +"libm.so.4!" +msgstr "" +"Я использую FreeBSD и когда стартую I2P - получаю ошибку про " +"libm.so.4!" + +#: i2p2www/pages/site/faq.html:48 +msgid "" +"In wrapper.log I see an error stating Protocol family " +"unavailable when I2P is loading" +msgstr "" +"В wrapper.log я вижу ошибки вида Protocol family " +"unavailable при запуске I2P" + +#: i2p2www/pages/site/faq.html:52 i2p2www/pages/site/faq.html:63 +#: i2p2www/pages/site/faq.html:80 i2p2www/pages/site/faq.html:108 +#: i2p2www/pages/site/faq.html:125 i2p2www/pages/site/faq.html:189 +#: i2p2www/pages/site/faq.html:226 i2p2www/pages/site/faq.html:233 +#: i2p2www/pages/site/faq.html:264 i2p2www/pages/site/faq.html:273 +#: i2p2www/pages/site/faq.html:282 i2p2www/pages/site/faq.html:297 +#: i2p2www/pages/site/faq.html:349 i2p2www/pages/site/faq.html:367 +#: i2p2www/pages/site/faq.html:375 i2p2www/pages/site/faq.html:384 +#: i2p2www/pages/site/faq.html:391 i2p2www/pages/site/faq.html:417 +#: i2p2www/pages/site/faq.html:424 i2p2www/pages/site/faq.html:435 +#: i2p2www/pages/site/faq.html:475 i2p2www/pages/site/faq.html:482 +#: i2p2www/pages/site/faq.html:490 i2p2www/pages/site/faq.html:499 +#: i2p2www/pages/site/faq.html:507 i2p2www/pages/site/faq.html:528 +#: i2p2www/pages/site/faq.html:736 i2p2www/pages/site/faq.html:749 +#: i2p2www/pages/site/faq.html:785 i2p2www/pages/site/faq.html:817 +#: i2p2www/pages/site/faq.html:846 +msgid "link" +msgstr "ссылка" + +#: i2p2www/pages/site/faq.html:53 +#, python-format +msgid "" +"While I2P has been reported to run PCs as meagre as a low-end Pentium II " +"with 64 MB of RAM, you'll have a much better experience on a Pentium III " +"(or better) with 128MB of RAM (or more). A chart comparing the performance of" +" the various JREs can be found at http://%(trac)s/wiki/java, but in " +"short: it's at all possible, use Sun/Oracle Java or OpenJDK." +msgstr "" +"Хотя и известны случаи работы I2P на PC уровня low-end Pentium II 64 MB " +"RAM, вы определенно будете лучше чувствовать на машине уровня хотя бы " +"Pentium III (или лучше) и 128MB RAM (а лучше - больше). График сравнения разных JRE можно " +"найти на http://%(trac)s/wiki/java, но если" +" вкратце: лучше используйте Sun/Oracle Java или OpenJDK." + +#: i2p2www/pages/site/faq.html:57 +msgid "" +"I2P has been tested on Windows, Linux, FreeBSD (see the note below), OSX, and OpenSolaris. There is work " +"underway to bring I2P to the Android platform." +msgstr "" +"I2P проверенно работает на Windows, Linux, FreeBSD (см. ниже), OSX, и OpenSolaris. Работа над версией под " +"Android идет прямо сейчас." + +#: i2p2www/pages/site/faq.html:65 +msgid "Here are some places, pick one or more." +msgstr "Есть несколько мест, выберите одно или несколько." + +#: i2p2www/pages/site/faq.html:71 +msgid "Discuss with the developers on IRC in #i2p-dev" +msgstr "Обсудите с разработчиками на IRC в #i2p-dev" + +#: i2p2www/pages/site/faq.html:75 +msgid "Please include relevant information from the router logs and wrapper logs." +msgstr "" +"Пожалуйста, включите необходимую информацию из журналов маршрутизатора и " +"враппера." + +#: i2p2www/pages/site/faq.html:81 +msgid "" +"The default subscription is to http://www.i2p2.i2p/hosts.txt which is " +"updated rarely.\n" +"If you don't have another subscription, you may often have to use " +"\"jump\" links which\n" +"is annoying." +msgstr "" +"Подписка по умолчанию это http://www.i2p2.i2p/hosts.txt, обновляется " +"редко.⏎\n" +"Если других подписок нет, вам допольно часто придется пользоватся " +"джамп-ссылками, что неудобно." + +#: i2p2www/pages/site/faq.html:87 +msgid "" +"Here are some other public addressbook subscription links. You may wish " +"to add one or two\n" +"to your susidns " +"subscription list.\n" +"You don't need to add all of them, as they sync with each other " +"periodically.\n" +"The links using a cgi-bin application employ various strategies to " +"minimize\n" +"the number of duplicate addresses delivered, so they should be more " +"efficient.\n" +"Note that subscribing to a hosts.txt service is an act of \"trust\", as a" +" malicious\n" +"subscription could give you incorrect addresses. So think about whether " +"you\n" +"want to trust any of these.\n" +"The operators of these services may have various policies for listing " +"hosts.\n" +"Presence on this list does not imply endorsement." +msgstr "" +"Вот несколько других публичных ссылок на подписки для адресной книги. " +"Можете добавить одну-другую в свой набор " +"подписок.\n" +"Все их добавлять не надо, так как они периодически синхронизируются. \n" +"Ссылки, использующие cgi-bin приложения как правило более эффективны, " +"т.к. обычно применяют техники дедупликации данных. \n" +"Обратите внимание, что добавление списка в подписку это акт доверия, так " +"как вредоносный \n" +"список может внести вам недостоверные адреса. Так что стоит подумать, " +"нужно ли вам доверять им.\n" +"Операторы списко могут иметь разные политики по отношению к содержимому " +"сайтов. Наличие в этих списках не означает поддержку или " +"аффилированность оператора подписки с сайтом. " + +#: i2p2www/pages/site/faq.html:109 +msgid "" +"Jrandom was the lead developer of I2P and\n" +"Syndie for several years.\n" +"We do not know if or when jrandom will return.\n" +"The *.i2p.net domains were left in a non-functioning state after a power\n" +"outage at the hosting company." +msgstr "" +"Jrandom был ведущим разработчиком I2P и⏎\n" +"Syndie несколько лет.⏎\n" +"Мы не знаем, когда и вернется ли jrandom вообще.⏎\n" +"Домены *.i2p.net сломались после отключения питания на хостинге и так и " +"остались в таком состоянии." + +#: i2p2www/pages/site/faq.html:117 +#, python-format +msgid "" +"See this page for jrandom's parting message " +"and additional information\n" +"on the migration of *.i2p.net to this website." +msgstr "" +"Смотрите сюда для сообщения от jrandom и " +"дополнительной информации о ⏎\n" +"миграции *.i2p.net на этот сайт." + +#: i2p2www/pages/site/faq.html:122 +msgid "I2P remains in active development." +msgstr "I2P продолжает активное развитие." + +#: i2p2www/pages/site/faq.html:126 +msgid "There are many possible causes of high CPU usage. Here is a checklist:" +msgstr "Есть много причин для высокой нагрузки на CPU. Вот список проверки:" + +#: i2p2www/pages/site/faq.html:131 +msgid "" +"Try to use either OpenJDK or Sun/Oracle Java if it's available for your " +"system. You can check \n" +"which version of java you have installed by typing java " +"-version at a \n" +"command/shell prompt. Performance tends to suffer with other " +"implementations of java." +msgstr "" +"Попробуйте использоать OpenJDK или Sun/Oracle Java, если есть для вашей " +"системы. Вы можете проверить\n" +"версию Java командой java -version в терминале. \n" +"Производительность java других производителей обычно оставляет желать." + +#: i2p2www/pages/site/faq.html:138 +msgid "" +"Are you running a BitTorrent client over I2P? Try reducing the number of " +"torrents, the bandwidth limits,\n" +"or try turning it off completely to see if that helps." +msgstr "" +"Вы используете BitTorrent клиент поверх I2P? Пробуйте уменьшить " +"количество раздач, разрешенные ограничения\n" +"по трафику или временно выключите раздачи и закачки, на случай если это " +"поможет." + +#: i2p2www/pages/site/faq.html:144 +msgid "" +"Are your bandwidth limits set too high? It is possible that too much " +"traffic is going through your\n" +"I2P router and it is overloaded. Try reducing the setting for share " +"bandwidth percentage on the configuration page." +msgstr "" +"Ваши ограничения по трафику установлены очень широко? Возможно, что " +"слишком много данных идет через ваш маршрутизатор и он перегружен. " +"Пробуйте уменьшить настройку процент разделения трафикана странице конфигурации." + +#: i2p2www/pages/site/faq.html:149 +msgid "" +"Make sure that you're running the latest version of I2P to get the " +"benefits of increased performance and bug fixes." +msgstr "" +"Убедитесь, что используете новейшую версию I2P, чтобы воспользоваться " +"достижениями в производительности и свежими исправлениями проблем." + +#: i2p2www/pages/site/faq.html:154 +msgid "" +"Has enough memory been set aside for use by I2P? Look at the memory graph" +" on the graphs page to see\n" +"if the memory usage is \"pegged\"—the JVM is spending most of its " +"time in\n" +"garbage collection. Increase the setting " +"wrapper.java.maxmemory in wrapper.config." +msgstr "" + +#: i2p2www/pages/site/faq.html:161 +msgid "" +"Is the CPU usage simply higher than you would like, or is it pegged at " +"100% for a long time?\n" +"If it's pegged, this could be a bug. Look in the logs for clues." +msgstr "" + +#: i2p2www/pages/site/faq.html:167 +#, python-format +msgid "" +"You may be using the Java-based BigInteger library instead of the native " +"version,\n" +"especially if you are running on a new or unusual OS or hardware " +"(OpenSolaris, mipsel, etc.).\n" +"See the jbigi page for instructions on\n" +"diagnosing, building, and testing methods." +msgstr "" + +#: i2p2www/pages/site/faq.html:175 +msgid "" +"If your native jbigi library is working fine, the biggest user of\n" +"CPU may be routing traffic for participating tunnels. This uses CPU\n" +"because at each hop a layer of encryption must be decoded.\n" +"You can limit participating traffic in two ways - by reducing the\n" +"share bandwidth on\n" +"confignet.jsp,\n" +"or by setting router.maxParticipatingTunnels=nnn on\n" +"configadvanced.jsp." +msgstr "" + +#: i2p2www/pages/site/faq.html:190 +msgid "" +"Hmm. I2P is an anonymous network, so that's a tricky one.\n" +"I2P is designed to withstand censorship, providing a means for everyone " +"to communicate freely. \n" +"The best way to keep your PC free of (encrypted) traffic that you dislike" +" is to not use I2P.\n" +"Freedom of speech has some costs.\n" +"But let's address your question in three parts:" +msgstr "" + +#: i2p2www/pages/site/faq.html:199 +msgid "" +"Distribution - All traffic on I2P is encrypted in multiple layers." +" You don't know\n" +"a message's contents, source, or destination.\n" +"All traffic you route is internal to the I2P network, you are not an exit node (outproxy).\n" +"Your only alternative is to refuse to route\n" +"any traffic, by setting your share bandwidth or maximum " +"participating tunnels to 0 (see above).\n" +"It would be nice if you didn't do this, you should help the network by " +"routing traffic for others.\n" +"Over 95% of users route traffic for others." +msgstr "" + +#: i2p2www/pages/site/faq.html:210 +msgid "" +"Storage - I2P does not do distributed storage of content. You must" +" be thinking of\n" +"Freenet.\n" +"Nobody's content is being stored on your computer by running I2P." +msgstr "" + +#: i2p2www/pages/site/faq.html:217 +msgid "" +"Access - If there are some eepsites you don't like, don't go " +"there.\n" +"Or, use a blocking proxy like Privoxy or some type of \"net nanny\"." +msgstr "" + +#: i2p2www/pages/site/faq.html:227 +msgid "" +"No. This is normal.\n" +"All routers adjust dynamically to changing network conditions and demands." +msgstr "" +"Нет, это нормально.\n" +"Все роутеры динамически подстраиваются под изменения в сети и требования " +"трафика." + +#: i2p2www/pages/site/faq.html:234 +msgid "" +"You may need to reseed your I2P router. With recent versions of I2P you " +"can go to http://localhost:7657/configreseed" +" and click the Save Changes and Reseed Now button. If this " +"method doesn't work—or you're using a very old version—you " +"may need to reseed manually." +msgstr "" +"Возможно, вам нужно сделать reseed маршрутизатора I2P. Вы можете пойти на" +" http://localhost:7657/configreseedи" +" нажать кнопку Сохранить и Сделать Reseed . Если это не " +"помогает, то вы используете очень старую версию—вам придется сделать reseed вручную." + +#: i2p2www/pages/site/faq.html:237 +msgid "" +"The reseed URL changed a few years ago. If this is your first install and" +" you have installed\n" +"an old (0.6.1.30 or earlier) release, or\n" +"you have not run I2P in a long time, you must change the URL and then\n" +"click \"Reseed\" on the console to find other routers.\n" +"After your router is running,\n" +"on configadvanced.jsp," +"\n" +"add the line i2p.reseedURL=http://netdb.i2p2.de/\n" +"OR i2p.reseedURL=http://i2pdb.tin0.de/netDb/ (either should " +"work),\n" +"then click \"Apply\", then click the \"reseed\" link on the left." +msgstr "" + +#: i2p2www/pages/site/faq.html:248 +#, python-format +msgid "" +"This works if you are running 0.6.1.27 or later.\n" +"If you are running release 0.6.1.31 or later, you probably don't need to " +"do this.\n" +"If you are running release 0.6.1.26 or earlier, either follow the\n" +"manual reseed instructions below\n" +"or install the latest release.\n" +"Possible alternate method - add\n" +"wrapper.java.additional.5=-Di2p.reseedURL=http://netdb.i2p2.de/\n" +"to wrapper.config, shutdown the router completely, then start again, then" +" click \"reseed\".\n" +"Let us know if this works." +msgstr "" + +#: i2p2www/pages/site/faq.html:259 +#, python-format +msgid "" +"...but you *really* should upgrade to " +"the latest version." +msgstr "" +"... но вам *действительно* нужно обновиться до последней версии." + +#: i2p2www/pages/site/faq.html:265 +msgid "" +"If your router has 10 or more active peers, everything is fine. Changes " +"in releases 0.6.1.31 and 0.6.1.32 improved the\n" +"efficiency of the router and effectively reduced the number of active " +"peers.\n" +"The router should maintain connections to a few peers at all " +"times.\n" +"The best way to stay \"better-connected\" to the network is to share more bandwidth." +msgstr "" + +#: i2p2www/pages/site/faq.html:272 +msgid "" +"Is my router an \"exit node\" to the regular Internet? I don't want it to" +" be." +msgstr "" +"А мой роутер является \"выходным узлом\" в обычный интернет? Я не хочу " +"чтобы он был." + +#: i2p2www/pages/site/faq.html:274 +msgid "" +"No. Unlike Tor,\n" +"\"exit nodes\" or \"outproxies\" are not an inherent part of the network." +"\n" +"Only volunteers who set up and run separate applications will relay " +"traffic to the regular Internet.\n" +"There are very, very few of these." +msgstr "" + +#: i2p2www/pages/site/faq.html:283 +msgid "" +"See above. There are very few HTTP \"outproxies\", they are not an " +"inherent part of the network,\n" +"and they may not be up.\n" +"In addition, the old outproxies squid.i2p, true.i2p, and krabs.i2p have " +"vanished.\n" +"The only outproxy at the moment is false.i2p.\n" +"To use it, edit your i2ptunnel " +"settings for eepProxy\n" +"and set your outproxy list to 'false.i2p' (only).\n" +"Then stop and restart the eepProxy.\n" +"If it doesn't work, the outproxy is not up. It is not I2P's fault.\n" +"If your primary reason to use an anonymous network is to anonymously " +"access sites\n" +"on the regular Internet, you should probably try Tor." +msgstr "" + +#: i2p2www/pages/site/faq.html:298 +msgid "" +"Within I2P, there is no need for HTTPS, as all traffic is encrypted end-" +"to-end.\n" +"FTP is not supported for technical reasons." +msgstr "" +"Внутри I2P нет необходимости в HTTPS, так как весь трафик шифруется от " +"точки-до-дочки.\n" +"А FTP не поддерживается по техническим причинам." + +#: i2p2www/pages/site/faq.html:302 +msgid "" +"There are no FTP \"outproxies\" to the Internet—it may not even be " +"possible to set up one.\n" +"Any other kind of outproxy may work if it's set up with a standard " +"tunnel. \n" +"If you would like to set up some type of outproxy, carefully research the" +" potential risks.\n" +"The I2P community may or may not be able to help with the technical " +"aspects, feel free to ask." +msgstr "" + +#: i2p2www/pages/site/faq.html:308 +msgid "" +"As explained several times above, any existing outproxy isn't a core part" +" of the network.\n" +"They are services run by individuals and they may or may not\n" +"be operational at any given time." +msgstr "" +"Как ранее уже несколько раз объяснялось, все существующие выходящие " +"прокси не являются частью сети.\n" +"Это сервисы, принадлежащие людям, которые могут, а могут не быть\n" +"работоспособными в любой момент времени." + +#: i2p2www/pages/site/faq.html:313 +msgid "" +"Update: Thanks to the work of h2ik, there is an https outproxy " +"available for use via I2P. Starting with I2P 0.8.4 the tunnel is " +"configured out of the box.
    \n" +"In case the https outproxy is not available in your version of I2P, you " +"can add it easily by doing the following:" +msgstr "" + +#: i2p2www/pages/site/faq.html:319 +msgid "" +"Open i2p tunnel " +"manager. Scroll down to the bottom." +msgstr "" + +#: i2p2www/pages/site/faq.html:324 +msgid "" +"Choose CONNECT from New Client Tunnel dropdown list, click " +"Create" +msgstr "" + +#: i2p2www/pages/site/faq.html:329 +#, python-format +msgid "" +"In the new page, name and describe your new https tunnel as" +" you like.\n" +"The Access Point is your local port for the new https proxy " +"recommended port's 4445.\n" +"Outproxy should be the outproxy's .i2p address which supports " +"https. \n" +"See this forum post of h2ik's for the " +"address. \n" +"Make sure Shared Client, Delay Connect, AutoStart " +"are checked.\n" +"Other options should be left at the defaults. Click Save. In tunnel " +"manger, click the Start button next to your new tunnel." +msgstr "" + +#: i2p2www/pages/site/faq.html:339 +msgid "" +"In firefox, click through " +"Tools>Options>Advanced>Network>Setting." +"\n" +"Untick Use this proxy for all protocol, set SSL proxy: to " +"localhost:4445." +msgstr "" + +#: i2p2www/pages/site/faq.html:344 +msgid "Done." +msgstr "" + +#: i2p2www/pages/site/faq.html:350 +#, python-format +msgid "" +"\n" +"This is a question that only you can answer because the correct answer " +"depends on your behaviours, your\n" +"threat model, and how much you trust the " +"outproxy operator." +msgstr "" + +#: i2p2www/pages/site/faq.html:354 +msgid "" +"Like Tor, I2P does not magically encrypt the Internet.\n" +"You are vulnerable to snooping by the outproxy operators.\n" +"The Tor" +" FAQ\n" +"does a good job of explaining this." +msgstr "" + +#: i2p2www/pages/site/faq.html:360 +#, python-format +msgid "" +"In addition, you may be vulnerable to collusion between the outproxy " +"operator\n" +"and operators of other I2P services, if you use the same tunnels " +"(\"shared clients\").\n" +"There is additional discussion about this on %(zzz)s." +msgstr "" + +#: i2p2www/pages/site/faq.html:368 +msgid "" +"Unless an outproxy has been set up for the service you want to connect " +"to, this cannot be done.\n" +"There are only three types of outproxies running right now: HTTP, HTTPS, " +"and email. Note that there is not a SOCKS outproxy.\n" +"If this type of service is required, try Tor." +msgstr "" + +#: i2p2www/pages/site/faq.html:376 +#, python-format +msgid "" +"If you consider every eepsite that has ever been created, yes, most of " +"them are down.\n" +"People and eepsites come and go.\n" +"A good way to get started in I2P is check out a list of eepsites that are" +" currently up.\n" +"%(eepstatus)s tracks active eepsites." +msgstr "" + +#: i2p2www/pages/site/faq.html:385 +msgid "" +"Click on the Website link\n" +"at the top of your router console for instructions." +msgstr "" + +#: i2p2www/pages/site/faq.html:392 +msgid "" +"Why are downloads, torrents, web browsing, and everything else so slow on" +" I2P?\n" +"The encryption and routing within the I2P network adds a substantial " +"amount of overhead and limits bandwidth.\n" +"Anonymity isn't free." +msgstr "" +"Почему закачки, торренты, браузинг и вообще все такое медленное в I2P?\n" +"Шифрование и маршрутизация в сети I2P добавляет значительные затраты и " +"ограничивает полосу пропускания. \n" +"Анонимность не бывает бесплатной." + +#: i2p2www/pages/site/faq.html:397 +msgid "" +"In addition, you and everybody else probably need to increase your " +"bandwidth limits.\n" +"Two key settings are the inbound and outbound bandwidth limiters on\n" +"the configuration page.\n" +"With the default settings of 32KBps you will generally get no better than" +" 15KBps data transfer in I2PSnark.\n" +"Increasing the settings (but keeping within your actual connection " +"limitations)\n" +"will increase the potential transfer rate for I2PSnark and all other " +"applications." +msgstr "" + +#: i2p2www/pages/site/faq.html:405 +msgid "" +"Also, do you have sufficient share bandwidth configured to allow " +"participating tunnels\n" +"to route through your router? Believe it or not, allowing participating " +"traffic\n" +"keeps you well-integrated in the network and helps your own transfer " +"speeds." +msgstr "" + +#: i2p2www/pages/site/faq.html:410 +#, python-format +msgid "" +"I2P is a work in progress. Lots of improvements and fixes are being " +"implemented, and\n" +"generally speaking, running the latest release will help your " +"performance.\n" +"If you haven't, install the latest " +"release." +msgstr "" + +#: i2p2www/pages/site/faq.html:418 +#, python-format +msgid "" +"See the\n" +"I2P Bittorrent FAQ" +msgstr "" + +#: i2p2www/pages/site/faq.html:425 +msgid "" +"\n" +"A tunnel to the main IRC server within I2P, Irc2P, is created when I2P is" +" installed (see\n" +"the I2PTunnel " +"configuration page),\n" +"and is automatically started when the I2P router starts. To connect to " +"it, tell your IRC\n" +"client to connect to localhost 6668. XChat-like client users" +" can create a\n" +"new network with the server localhost/6668 (remember to tick" +" "Bypass\n" +"proxy server" if you have a proxy server configured)." +msgstr "" + +#: i2p2www/pages/site/faq.html:436 +msgid "" +"For security purposes, the router's admin console by default only listens" +"\n" +"for connections on the local interface. However, with a little hacking,\n" +"you can make it reachable remotely:" +msgstr "" + +#: i2p2www/pages/site/faq.html:444 +msgid "" +"Open ~/.i2p/clients.config and replace
    \n" +"clientApp.0.args=7657 ::1,127.0.0.1 ./webapps/
    \n" +"with
    \n" +"clientApp.0.args=7657 0.0.0.0 ./webapps/" +msgstr "" + +#: i2p2www/pages/site/faq.html:452 +msgid "" +"Go to http://localhost:7657/configui" +"\n" +"and add a console username and password if desired." +msgstr "" + +#: i2p2www/pages/site/faq.html:458 +msgid "" +"Go to http://localhost:7657/index.jsp" +"\n" +"and hit \"Graceful restart\", which restarts the JVM and reloads the " +"client applications" +msgstr "" + +#: i2p2www/pages/site/faq.html:465 +msgid "" +"After that fires up, you should now be able to reach your console " +"remotely. Reload the router at\n" +"http://127.0.0.1:7657 and you will be prompted for the username and " +"password you specified in step 2\n" +"above if your browser supports the authentication popup. Note: the\n" +"0.0.0.0 above specifies an interface, not a network " +"or netmask. 0.0.0.0\n" +"means \"bind to all interfaces\", so it can be reachable on " +"127.0.0.1:7657 as well as\n" +"any LAN/WAN IP." +msgstr "" + +#: i2p2www/pages/site/faq.html:476 +msgid "" +"By default, the router I2CP interface (port 7654) binds to address " +"127.0.0.1. To bind to 0.0.0.0, set the\n" +"router advanced configuration option " +"i2cp.tcp.bindAllInterfaces=true and restart." +msgstr "" + +#: i2p2www/pages/site/faq.html:481 +msgid "Whats an \"eepsite\"?" +msgstr "Что такое \"eepsite\"?" + +#: i2p2www/pages/site/faq.html:483 +msgid "" +"An eepsite is a website that is hosted anonymously - you can access it by" +"\n" +"setting your web browser's HTTP proxy to use the web proxy (typically it\n" +"listens on localhost port 4444), and browsing to the site." +msgstr "" + +#: i2p2www/pages/site/faq.html:491 +#, python-format +msgid "" +"The proxy config for different browsers is on a \n" +"separate page with screenshots. More advanced configs with external " +"tools\n" +"are possible but could introduce leaks in your setup." +msgstr "" + +#: i2p2www/pages/site/faq.html:500 +msgid "" +"x is the number of peers you've sent or received a message from\n" +"successfully in the last minute, y is the number of peers seen in the " +"last\n" +"hour or so." +msgstr "" + +#: i2p2www/pages/site/faq.html:508 +msgid "" +"The SOCKS proxy is working as of release 0.7.1. SOCKS 4/4a/5 are " +"supported.\n" +"There is no SOCKS outproxy so it is of limited use." +msgstr "" + +#: i2p2www/pages/site/faq.html:512 +msgid "" +"In addition, many applications leak sensitive\n" +"information that could identify you on the Internet. I2P only filters\n" +"connection data, but if the program you intend to run sends this\n" +"information as content, I2P has no way to protect your anonymity. For\n" +"example, some mail applications will send the IP address of the machine\n" +"they are running on to a mail server. There is no way for I2P to filter\n" +"this, thus using I2P to 'socksify' existing applications is possible, but" +"\n" +"extremely dangerous." +msgstr "" + +#: i2p2www/pages/site/faq.html:522 +#, python-format +msgid "" +"If you would like more information on the socks proxy application anyway," +"\n" +"there are some helpful hints on the socks page." +msgstr "" + +#: i2p2www/pages/site/faq.html:529 +msgid "" +"Okay, here's a rundown of the default ports (everything is configurable\n" +"through various settings, of course):" +msgstr "" + +#: i2p2www/pages/site/faq.html:538 +msgid "" +"Internet-facing ports\n" +"Note: New installs as of release 0.7.8 do not use port 8887; they select " +"a random port\n" +"between 9000 and 31000 when the program is run for the first time.\n" +"The selected port is shown on the router configuration page." +msgstr "" + +#: i2p2www/pages/site/faq.html:546 +msgid "" +"Outbound UDP from the random port noted on the configuration page to " +"arbitrary remote UDP ports, allowing replies\n" +" " +msgstr "" + +#: i2p2www/pages/site/faq.html:551 +msgid "" +"Outbound TCP from random high ports to arbitrary remote TCP ports\n" +" " +msgstr "" + +#: i2p2www/pages/site/faq.html:556 +msgid "" +"(optional, but recommended) Inbound UDP to the port noted on configuration page from " +"arbitrary locations\n" +" " +msgstr "" + +#: i2p2www/pages/site/faq.html:561 +msgid "" +"(optional, but recommended) Inbound TCP to the port noted on configuration page from " +"arbitrary locations
    \n" +"Inbound TCP may be disabled on the configuration page." +msgstr "" + +#: i2p2www/pages/site/faq.html:567 +msgid "" +"Outbound UDP on port 123, allowing replies
    \n" +"This is necessary for I2P's internal time sync (via SNTP - \n" +"querying a random SNTP host in pool.ntp.org or another\n" +"server you specify)" +msgstr "" + +#: i2p2www/pages/site/faq.html:578 +msgid "" +"Local I2P ports, listening only to local connections by default,\n" +"except where noted:" +msgstr "" + +#: i2p2www/pages/site/faq.html:584 +msgid "" +"1900: UPnP SSDP UDP multicast listener.\n" +"Cannot be changed. Binds to all interfaces.\n" +"May be disabled on confignet.jsp." +msgstr "" + +#: i2p2www/pages/site/faq.html:591 +msgid "" +"2827: BOB bridge, a higher level socket API for clients\n" +"Disabled by default.\n" +"May be enabled/disabled on configclients.jsp.\n" +"May be changed in the bob.config file." +msgstr "" + +#: i2p2www/pages/site/faq.html:599 +msgid "" +"4444: HTTP proxy\n" +"May be disabled or changed on the i2ptunnel page in the router " +"console.\n" +"May also be configured to be bound to a specific interface or all " +"interfaces." +msgstr "" + +#: i2p2www/pages/site/faq.html:606 +msgid "" +"4445: HTTPS proxy\n" +"May be disabled or changed on the i2ptunnel page in the router " +"console.\n" +"May also be configured to be bound to a specific interface or all " +"interfaces." +msgstr "" + +#: i2p2www/pages/site/faq.html:613 +msgid "" +"6668: IRC proxy\n" +"May be disabled or changed on the i2ptunnel page in the router " +"console.\n" +"May also be configured to be bound to a specific interface or all " +"interfaces." +msgstr "" + +#: i2p2www/pages/site/faq.html:620 +msgid "" +"7652: UPnP HTTP TCP event listener.\n" +"Binds to the LAN address.\n" +"May be changed with advanced config i2np.upnp.HTTPPort=nnnn.\n" +"May be disabled on confignet.jsp." +msgstr "" + +#: i2p2www/pages/site/faq.html:628 +msgid "" +"7653: UPnP SSDP UDP search response listener.\n" +"Binds to all interfaces.\n" +"May be changed with advanced config i2np.upnp.SSDPPort=nnnn.\n" +"May be disabled on confignet.jsp." +msgstr "" + +#: i2p2www/pages/site/faq.html:636 +msgid "" +"7654: I2P Client Protocol port, used by client apps.\n" +"May be changed to a different port on\n" +"configclients.jsp" +"\n" +"but this is not recommended.\n" +"May be to bind to a different interface or all interfaces, or disabled, " +"on\n" +"configclients.jsp." +msgstr "" + +#: i2p2www/pages/site/faq.html:646 +msgid "" +"7655: UDP for SAM bridge, a higher level socket API for clients\n" +"Only opened when a SAM V3 client requests a UDP session.\n" +"May be enabled/disabled on configclients.jsp.\n" +"May be changed in the clients.config file with the SAM command line " +"option sam.udp.port=nnnn." +msgstr "" + +#: i2p2www/pages/site/faq.html:654 +msgid "" +"7656: SAM bridge, a higher level socket API for clients\n" +"Disabled by default for new installs as of release 0.6.5.\n" +"May be enabled/disabled on configclients.jsp.\n" +"May be changed in the clients.config file." +msgstr "" + +#: i2p2www/pages/site/faq.html:662 +msgid "" +"7657: Your router console\n" +"May be disabled in the clients.config file.\n" +"May also be configured to be bound to a specific interface or all " +"interfaces in that file." +msgstr "" + +#: i2p2www/pages/site/faq.html:669 +msgid "" +"7658: Your eepsite\n" +"May be disabled in the clients.config file.\n" +"May also be configured to be bound to a specific interface or all " +"interfaces in the jetty.xml file." +msgstr "" + +#: i2p2www/pages/site/faq.html:676 +msgid "" +"7659: Outgoing mail to smtp.postman.i2p\n" +"May be disabled or changed on the i2ptunnel page in the router " +"console.\n" +"May also be configured to be bound to a specific interface or all " +"interfaces." +msgstr "" + +#: i2p2www/pages/site/faq.html:683 +msgid "" +"7660: Incoming mail from pop.postman.i2p\n" +"May be disabled or changed on the i2ptunnel page in the router " +"console.\n" +"May also be configured to be bound to a specific interface or all " +"interfaces." +msgstr "" + +#: i2p2www/pages/site/faq.html:690 +msgid "" +"8998: mtn.i2p2.i2p (Monotone - disabled by default)\n" +"May be disabled or changed on the i2ptunnel page in the router " +"console.\n" +"May also be configured to be bound to a specific interface or all " +"interfaces." +msgstr "" + +#: i2p2www/pages/site/faq.html:697 +msgid "" +"31000: Local connection to the wrapper control channel port.\n" +"Outbound to 32000 only, does not listen on this port.\n" +"Starts at 31000 and will increment until 31999 looking for a free port.\n" +"To change, see the\n" +"wrapper documentation.\n" +"For more information see below." +msgstr "" + +#: i2p2www/pages/site/faq.html:707 +msgid "" +"32000: Local control channel for the service wrapper.\n" +"To change, see the\n" +"wrapper documentation.\n" +"For more information see below." +msgstr "" + +#: i2p2www/pages/site/faq.html:719 +msgid "" +"The local I2P ports and the I2PTunnel ports do not need to be reachable " +"from \n" +"remote machines, but *should* be reachable locally. You can also create" +" \n" +"additional ports for I2PTunnel instances via " +"http://localhost:7657/i2ptunnel/ \n" +"(and in turn, would need to get your firewall to allow you local access, " +"but \n" +"not remote access, unless desired)." +msgstr "" + +#: i2p2www/pages/site/faq.html:727 +msgid "" +"So, to summarize, nothing needs to be reachable by unsolicited remote " +"peers, but\n" +"if you can configure your NAT/firewall to allow inbound UDP and TCP the " +"outbound facing port, you'll" +"\n" +"get better performance. You will also need to be able to send outbound " +"UDP packets\n" +"to arbitrary remote peers (blocking IPs randomly with something like " +"PeerGuardian\n" +"only hurts you - don't do it)." +msgstr "" + +#: i2p2www/pages/site/faq.html:735 +msgid "Why is I2P listening on port 32000?" +msgstr "" + +#: i2p2www/pages/site/faq.html:737 +msgid "" +"The Tanuki java service wrapper that we use opens this port—bound " +"to localhost—in order \n" +"to communicate with software running inside the JVM. When the JVM is " +"launched it is given a key \n" +"so it can connect to the wrapper. After the JVM establishes its " +"connection \n" +"to the wrapper, the wrapper refuses any additional connections." +msgstr "" + +#: i2p2www/pages/site/faq.html:743 +msgid "" +"More information can be found in the \n" +"wrapper documentation." +msgstr "" + +#: i2p2www/pages/site/faq.html:750 +msgid "" +"An I2P router only needs to be seeded once, to join the network for the " +"first time.\n" +"Reseeding is nothing more than sending plain HTTP GET requests\n" +"to fetch a directory listing and download multiple \"routerInfo\" files\n" +"from a predefined reseed URL." +msgstr "" + +#: i2p2www/pages/site/faq.html:757 +msgid "" +"A typical symptom of a failed reseed is the \"Known\" indicator\n" +"(on the left sidebar of the router console) displaying a very small value" +"\n" +"(often less than 5) which does not increase. This can occur, among other " +"things,\n" +"if your firewall limits outbound traffic, and blocked the reseed request." +msgstr "" + +#: i2p2www/pages/site/faq.html:764 +msgid "To reseed an I2P router manually, do the following:" +msgstr "" + +#: i2p2www/pages/site/faq.html:767 +msgid "Stop your I2P router" +msgstr "" + +#: i2p2www/pages/site/faq.html:770 +msgid "" +"Open http://netdb.i2p2.de/ using a " +"web browser" +msgstr "" + +#: i2p2www/pages/site/faq.html:773 +msgid "Save a dozen \"routerInfo\" files to your I2P \"netDb\" directory" +msgstr "" + +#: i2p2www/pages/site/faq.html:780 +msgid "Start your I2P router" +msgstr "" + +#: i2p2www/pages/site/faq.html:787 +msgid "" +"When trying to start the router using \"i2prouter start\", you may see " +"output like the following:" +msgstr "" + +#: i2p2www/pages/site/faq.html:792 +msgid "" +"\n" +"In order to be inclusive and try to ensure that I2P will run on as many " +"systems \n" +"as possible, up until I2P 0.8.9 we used a java wrapper \n" +"compiled for FreeBSD 6.x. If you're receiving this error you most likely " +"are missing the necessary compatibility libraries.\n" +"These libraries may be installed by performing the following steps:" +msgstr "" + +#: i2p2www/pages/site/faq.html:800 +msgid "" +"Switch to the root user with su or log in as " +"root." +msgstr "" + +#: i2p2www/pages/site/faq.html:806 +#, python-format +msgid "" +"If you cannot install these compatibility libraries (or do not want to), " +"other\n" +"possibilities would be to compile the wrapper for your\n" +"system, starting I2P with the runplain.sh script, or you" +" can\n" +"replace the wrapper with one from the source tarball." +msgstr "" + +#: i2p2www/pages/site/faq.html:812 +msgid "" +"For the 0.8.9 release of I2P, the wrapper was upgraded to v3.5.12 and " +"compiled on systems running FreeBSD 7.2." +msgstr "" + +#: i2p2www/pages/site/faq.html:816 +msgid "" +"In wrapper.log I see an error that states \"Protocol " +"family unavailable\" when loading the Router Console" +msgstr "" + +#: i2p2www/pages/site/faq.html:818 +msgid "" +"Often this error will occur with any network enabled java software on " +"some systems that are configured to use IPv6 by default. There are a few " +"ways to solve this:" +msgstr "" + +#: i2p2www/pages/site/faq.html:823 +msgid "" +"On Linux based systems, you can echo 0 > " +"/proc/sys/net/ipv6/bindv6only" +msgstr "" + +#: i2p2www/pages/site/faq.html:825 +msgid "Look for the following lines in wrapper.config." +msgstr "" + +#: i2p2www/pages/site/faq.html:829 +msgid "" +"If the lines are there, uncomment them by removing the \"#\"s. If the " +"lines are not there, add them without the \"#\"s." +msgstr "" + +#: i2p2www/pages/site/faq.html:832 +msgid "" +"Another option would be to remove the ::1 from " +"~/.i2p/clients.config" +msgstr "" + +#: i2p2www/pages/site/faq.html:836 +msgid "" +"WARNING: For any changes to wrapper.config " +"to take effect, you must completely\n" +"stop the router and the wrapper. Clicking Restart on your\n" +"router console will NOT reread this file! You must\n" +"click Shutdown, wait 11 minutes, then start I2P." +msgstr "" + +#: i2p2www/pages/site/faq.html:847 +#, python-format +msgid "" +"Great! Find us on IRC irc.freenode.net #i2p or post to\n" +"the forum and we'll post it here (with\n" +"the answer, hopefully)." +msgstr "" + +#: i2p2www/pages/site/impressum.html:4 +msgid "German laws" +msgstr "" + +#: i2p2www/pages/site/index.html:2 +msgid "I2P Anonymous Network" +msgstr "" + +#: i2p2www/pages/site/index.html:4 +msgid "" +"Anonymous peer-to-peer distributed communication layer built with open " +"source tools and designed to run any traditional Internet service such as" +" email, IRC or web hosting." +msgstr "" + +#: i2p2www/pages/site/index.html:7 +msgid "What does I2P do for you?" +msgstr "" + +#: i2p2www/pages/site/index.html:8 +msgid "" +"The I2P network provides strong privacy protections for communication " +"over the Internet. Many activities that would risk your privacy on the " +"public Internet can be conducted anonymously inside I2P." +msgstr "" + +#: i2p2www/pages/site/index.html:9 +#, python-format +msgid "Get I2P %(version)s" +msgstr "" + +#: i2p2www/pages/site/index.html:13 +msgid "What is I2P?" +msgstr "" + +#: i2p2www/pages/site/index.html:15 +msgid "" +"I2P is an anonymous overlay network - a network within a network. It is " +"intended to protect communication from dragnet surveillance and " +"monitoring by third parties such as ISPs.\n" +msgstr "" + +#: i2p2www/pages/site/index.html:18 +msgid "" +"I2P is used by many people who care about their privacy: activists, " +"oppressed people, journalists and whistleblowers, as well as the average " +"person.\n" +msgstr "" + +#: i2p2www/pages/site/index.html:21 +msgid "" +"No network can be \"perfectly anonymous\". The continued goal of I2P is " +"to make attacks more and more difficult to mount. Its anonymity will get " +"stronger as the size of the network increases and with ongoing academic " +"review.\n" +msgstr "" + +#: i2p2www/pages/site/index.html:24 +msgid "" +"I2P is available on desktops, embedded systems (like the Raspberry Pi) " +"and Android phones. Help spread the word!\n" +msgstr "" + +#: i2p2www/pages/site/index.html:28 +msgid "Read more…" +msgstr "" + +#: i2p2www/pages/site/index.html:33 +msgid "What can you do with I2P?" +msgstr "" + +#: i2p2www/pages/site/index.html:36 +#, python-format +msgid "" +"Email: Integrated web mail interface," +" plugin for serverless email." +msgstr "" + +#: i2p2www/pages/site/index.html:41 +#, python-format +msgid "" +"Web browsing: Anonymous " +"websites, gateways to and from the public Internet." +msgstr "" + +#: i2p2www/pages/site/index.html:46 +#, python-format +msgid "" +"Blogging and forums: " +"Blogging and Syndie plugins." +msgstr "" + +#: i2p2www/pages/site/index.html:51 +#, python-format +msgid "" +"Website hosting: Integrated" +" anonymous web server." +msgstr "" + +#: i2p2www/pages/site/index.html:56 +#, python-format +msgid "" +"Real-time chat: Instant " +"messaging and IRC clients." +msgstr "" + +#: i2p2www/pages/site/index.html:61 +#, python-format +msgid "" +"File sharing: ED2K and " +"Gnutella clients, integrated BitTorrent client." +msgstr "" + +#: i2p2www/pages/site/index.html:66 +#, python-format +msgid "" +"Decentralized file " +"storage: Tahoe-LAFS distributed filesystem plugin." +msgstr "" + +#: i2p2www/pages/site/index.html:71 +#, python-format +msgid "More supported applications…" +msgstr "" + +#: i2p2www/pages/site/index.html:79 +msgid "News & Updates" +msgstr "" + +#: i2p2www/pages/site/links.html:4 +msgid "Recommended Links & Resources" +msgstr "" + +#: i2p2www/pages/site/links.html:5 +#, python-format +msgid "" +"See also the page with\n" +"links to presentations, videos, and tutorials about" +" I2P." +msgstr "" + +#: i2p2www/pages/site/links.html:12 +msgid "Friends of I2P" +msgstr "" + +#: i2p2www/pages/site/links.html:24 +msgid "More Projects and Documentation" +msgstr "" + +#: i2p2www/pages/site/links.html:34 +msgid "Press" +msgstr "" + +#: i2p2www/pages/site/links.html:38 +msgid "Boards, newssite, others" +msgstr "" + +#: i2p2www/pages/site/links.html:42 +msgid "Very Old Stuff" +msgstr "" + diff --git a/i2p2www/translations/zh_CN/LC_MESSAGES/priority.po b/i2p2www/translations/zh_CN/LC_MESSAGES/priority.po new file mode 100644 index 00000000..e5ec3548 --- /dev/null +++ b/i2p2www/translations/zh_CN/LC_MESSAGES/priority.po @@ -0,0 +1,2700 @@ +# Chinese (China) translations for I2P. +# Copyright (C) 2013 ORGANIZATION +# This file is distributed under the same license as the I2P project. +# +# Translators: +# walking , 2013 +# xtoaster , 2013 +msgid "" +msgstr "" +"Project-Id-Version: I2P\n" +"Report-Msgid-Bugs-To: https://trac.i2p2.de/\n" +"POT-Creation-Date: 2013-09-16 12:59+0000\n" +"PO-Revision-Date: 2013-09-16 13:04+0000\n" +"Last-Translator: str4d \n" +"Language-Team: Chinese (China) " +"(http://www.transifex.com/projects/p/I2P/language/zh_CN/)\n" +"Plural-Forms: nplurals=1; plural=0\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 0.9.6\n" + +#: i2p2www/pages/blog/category.html:2 +msgid "Blog Category" +msgstr "文章分类" + +#: i2p2www/pages/blog/category.html:4 +#, python-format +msgid "I2P Blog ATOM Feed for Category: %(category)s" +msgstr "I2P 博客 ATOM 源,文章分类:%(category)s" + +#: i2p2www/pages/blog/index.html:2 i2p2www/pages/blog/post.html:3 +#: i2p2www/pages/global/nav.html:95 +msgid "Blog" +msgstr "博客" + +#: i2p2www/pages/blog/index.html:4 i2p2www/pages/site/index.html:78 +msgid "I2P Blog ATOM Feed" +msgstr "I2P 博客新闻源 (ATOM格式)" + +#: i2p2www/pages/blog/index.html:17 +#, python-format +msgid "Posted %(date)s by %(author)s" +msgstr "发表时间:%(date)s 作者:%(author)s" + +#: i2p2www/pages/blog/latest.html:5 +msgid "More blog posts…" +msgstr "更多博客文章…" + +#: i2p2www/pages/blog/post.html:6 +msgid "Posted:" +msgstr "发表时间:" + +#: i2p2www/pages/blog/post.html:7 +msgid "Author:" +msgstr "文章作者:" + +#: i2p2www/pages/downloads/debian.html:4 +msgid "Debian I2P Packages" +msgstr "Debian I2P 软件包" + +#: i2p2www/pages/downloads/debian.html:6 +#, python-format +msgid "" +"The packages hosted on the I2P Launchpad site\n" +"have been tested and should work on x86/x86_64 platforms running:" +msgstr "" +"本软件包由 " +"I2P Launchpad 项目 托管,\n" +"已经过测试 应在 x86/x86_64 平台上正常运行:" + +#: i2p2www/pages/downloads/debian.html:11 +msgid "Ubuntu (Precise 12.04 and newer)" +msgstr "Ubuntu (Precise 12.04 或更新)" + +#: i2p2www/pages/downloads/debian.html:13 +msgid "" +"Debian Linux (Wheezy and newer) & kFreeBSD" +msgstr "" +"Debian Linux (Wheezy 或更新) & kFreeBSD" + +#: i2p2www/pages/downloads/debian.html:17 +#, python-format +msgid "" +"The I2P packages may work on systems not listed above. Please " +"report any issues\n" +"with these packages on Trac at\n" +"http://%(trac)s." +msgstr "" +"I2P 软件包也许可以在以上未列出的系统中工作。\n" +"如果以上软件包使用中出现任何问题,请提交错误报告至 Trac http://%(trac)s. " + +#: i2p2www/pages/downloads/debian.html:23 +msgid "" +"Option 1: Recent versions of Ubuntu and its " +"derivatives (Try this if you're not using Debian)" +msgstr "" +"选择 1: Ubuntu 最近版本及其衍生版 " +"(如果您使用的不是Debian,请尝试此项。)" + +#: i2p2www/pages/downloads/debian.html:24 +msgid "Option 2: Debian (including Debian-derivatives)" +msgstr "选择 2:Debian (包括 Debian 衍生版)" + +#: i2p2www/pages/downloads/debian.html:25 +msgid "" +"Option 3: Non-Linux (and possibly Non-x86 " +"architectures)" +msgstr "选择 3: 非 Linux (或 非x86 架构)" + +#: i2p2www/pages/downloads/debian.html:28 +msgid "" +"Instructions for Ubuntu Precise Pangolin (and newer) and derivatives like" +" Linux Mint & Trisquel" +msgstr "Ubuntu Precise Pangolin (或更新) 及其衍生版 例如:Linux Mint & Trisquel 的操作说明" + +#: i2p2www/pages/downloads/debian.html:29 +msgid "Adding the PPA via the command line and installing I2P" +msgstr "通过命令行添加PPA源,安装I2P" + +#: i2p2www/pages/downloads/debian.html:32 +msgid "Open a terminal and enter:" +msgstr "打开终端窗口并输入:" + +#: i2p2www/pages/downloads/debian.html:34 +msgid "" +"This command will add the PPA to /etc/apt/sources.list.d and fetch the\n" +"gpg key that the repository has been signed with. The GPG key ensures\n" +"that the packages have not been tampered with since being built." +msgstr "" +"此命令将添加 PPA 至 /etc/apt/source.list.d 中,\n" +"并获取软件源签名所使用的 GPG 密钥。GPG 密钥保证软件包自编译后没有被篡改。" + +#: i2p2www/pages/downloads/debian.html:41 +msgid "Notify your package manager of the new PPA by entering:" +msgstr "输入一下命令,通知您的软件包管理器新添加的PPA源:" + +#: i2p2www/pages/downloads/debian.html:43 +msgid "" +"This command will retrieve the latest list of software from each\n" +"repository that is enabled on your system, including the I2P PPA that\n" +"was added with the earlier command." +msgstr "此命令将从系统中已启用的每个软件源中获取最新的软件列表,包括刚刚通过命令添加的 I2P PPA 源。" + +#: i2p2www/pages/downloads/debian.html:49 +#: i2p2www/pages/downloads/debian.html:112 +#: i2p2www/pages/downloads/debian.html:137 +msgid "You are now ready to install I2P!" +msgstr "您现在可以安装I2P了!" + +#: i2p2www/pages/downloads/debian.html:53 +msgid "Adding the PPA Using Synaptic" +msgstr "使用Synaptic添加PPA" + +#: i2p2www/pages/downloads/debian.html:56 +msgid "" +"Open Synaptic (System -> Administration -> Synaptic Package " +"Manager)." +msgstr "打开 Synaptic (系统 -> 管理 -> Synaptic 软件包管理器)。" + +#: i2p2www/pages/downloads/debian.html:61 +msgid "" +"Once Synaptic opens, select Repositories from the " +"Settings menu." +msgstr "Synaptic 启动后,从 设置 菜单中选择 软件源 。" + +#: i2p2www/pages/downloads/debian.html:66 +msgid "" +"Click the Other Sources tab and click Add. Paste " +"ppa:i2p-maintainers/i2p into the APT-line field and click " +"Add Source. Click the Close button then " +"Reload." +msgstr "" +"点击 其他来源 选项卡,单击 添加。\n" +"粘贴 ppa:i2p-maintainers/i2p 至 APT-行并点击添加来源。\n" +"点击关闭 按钮,然后 重新载入。" + +#: i2p2www/pages/downloads/debian.html:71 +msgid "" +"In the Quick Filter box, type in i2p and press enter. When " +"i2p is returned in the results list, right click " +"i2p and select Mark for Installation. After doing " +"so you may see a Mark additional required changes? popup. If so," +" click Mark then Apply." +msgstr "" +"在快速筛选框中,输入 i2p,按回车键。\n" +"结果列表中出现 i2p 后,右键点击 i2p 并选择 标记为安装。\n" +"此后可能会出现 标记其他需要的变更? 弹出窗口,请选择 标记 然后 应用。" + +#: i2p2www/pages/downloads/debian.html:77 +msgid "" +"After the installation process completes you can move on to the next\n" +"part of starting I2P and configuring " +"it for your system." +msgstr "安装过程结束后,您可以继续到下一部分 启动I2P,根据您的系统对其进行配置。" + +#: i2p2www/pages/downloads/debian.html:82 +msgid "Instructions for Debian Lenny and newer" +msgstr "用于 Debian Lenny 及更新版本的操作指南" + +#: i2p2www/pages/downloads/debian.html:84 +msgid "" +"For Squeeze you can follow the instructions here." +msgstr "Squeeze 用户可以参照此处的操作说明。" + +#: i2p2www/pages/downloads/debian.html:86 +msgid "" +"The steps below should be performed with root access (i.e., switching\n" +"user to root with \"su\" or by prefixing each command with \"sudo\")." +msgstr "以下步骤应以root权限执行 (即通过 \"su\" 切换至 root 用户或在每条命令前加上 \"sudo\")。" + +#: i2p2www/pages/downloads/debian.html:92 +msgid "Add the GPG key that signs the repository with the following command:" +msgstr "通过以下命令添加软件源的 GPG 签名密钥:" + +#: i2p2www/pages/downloads/debian.html:94 +msgid "You'll have output like the following if the command was successful:" +msgstr "如果操作成功您将看到与如下类似的屏幕输出:" + +#: i2p2www/pages/downloads/debian.html:98 +msgid "Add the following entries to /etc/apt/sources.list.d/i2p.list" +msgstr "将如下条目添加至/etc/apt/sources.list.d/i2p.list" + +#: i2p2www/pages/downloads/debian.html:103 +msgid "Notify your package manager of the new PPA by entering" +msgstr "通知您的包管理器新加入的PPA源,输入:" + +#: i2p2www/pages/downloads/debian.html:105 +msgid "" +"This command will retrieve the latest list of software from every\n" +"repository enabled on your system, including the I2P PPA added in step\n" +"1." +msgstr "此命令将从系统中已启用的每个软件源中获取最新的软件列表,包括第一步中添加的 I2P PPA 源。" + +#: i2p2www/pages/downloads/debian.html:116 +#: i2p2www/pages/downloads/debian.html:147 +msgid "" +"After the installation process completes you can move on to the next part" +" of starting I2P and configuring it " +"for your system." +msgstr "安装过程结束后,您可以继续到下一部分 启动I2P,根据您的系统对其进行配置。" + +#: i2p2www/pages/downloads/debian.html:120 +msgid "Instructions for Non-Linux / Non-x86" +msgstr "非Linux/非x86构架的操作说明" + +#: i2p2www/pages/downloads/debian.html:122 +msgid "" +"The steps below should be performed with root access (i.e., switching\n" +"user to root with \"su\" or by prefixing each command with " +"\"sudo\")." +msgstr "" +"以下步骤应以root权限执行 (即通过 \"su\" 切换至 root 用户或在每条命令前加上 " +"\"sudo\")。" + +#: i2p2www/pages/downloads/debian.html:128 +#, python-format +msgid "" +"Download the i2p-router package from the PPA.\n" +"Alternatively, there are unofficial packages available here for armel, armhf, and kfreebsd." +msgstr "" +"从 PPA 源下载 i2p-router 软件包 " +"。\n" +"另外,这里也有适合 armel, armhf, 及 " +"kfreebsd的非官方软件包可用。" + +#: i2p2www/pages/downloads/debian.html:135 +msgid "" +"Make sure that you have Java installed. Running apt-get install" +" default-jre should be sufficient." +msgstr "" +"确定您已经安装了Java。执行apt-get install default-" +"jre应该足以安装Java。" + +#: i2p2www/pages/downloads/debian.html:141 +#, python-format +msgid "" +"It is recommended to compile jbigi for your " +"system to achieve better performance. Instructions are available here." +msgstr "" +"推荐您在自己的系统上编译 jbigi,以获得更好的性能。\n" +"操作说明参见这里。" + +#: i2p2www/pages/downloads/debian.html:151 +#: i2p2www/pages/downloads/list.html:166 +msgid "Post-install work" +msgstr "安装收尾工作" + +#: i2p2www/pages/downloads/debian.html:154 +msgid "" +"Using these I2P packages the I2P router can be started in the following\n" +"three ways:" +msgstr "使用以上 I2P 软件包,I2P 路由可以通过如下方式启动" + +#: i2p2www/pages/downloads/debian.html:160 +msgid "" +""on demand" using the i2prouter script. Simply run " +""i2prouter\n" +"start" from a command prompt. (Note: Do " +"not use\n" +"sudo or run it as root!)" +msgstr "" +""按需启动" 使用 i2prouter 脚本。从命令行执行 "i2prouter\n" +"start" 即可。(注意:要使用 sudo 或以 root 身份运行!)" + +#: i2p2www/pages/downloads/debian.html:167 +msgid "" +""on demand" without the java service wrapper\n" +"(needed on non-Linux/non-x86 systems) by running \"i2prouter-" +"nowrapper\".\n" +"(Note: Do not\n" +"use sudo or run it as root!)" +msgstr "" +""按需运行" 执行 \"i2prouter-nowrapper\",\n" +"不使用 java " +"服务封装直接运行(非Linux/非x86系统中需要这样)。\n" +"(注意:要使用 sudo 或以 root 身份运行!)" + +#: i2p2www/pages/downloads/debian.html:175 +msgid "" +"as a service that automatically runs when your system boots, even\n" +"before logging in. The service can be enabled with \"dpkg-" +"reconfigure\n" +"i2p\" as root or using sudo. This is the recommended means of " +"operation." +msgstr "" +"作为服务在您的系统启动时自动运行,甚至早于用户登录。服务可以通过以root身份或sudo命令执行\"dpkg-reconfigure\n" +"i2p\"启用。这是推荐的操作方式。" + +#: i2p2www/pages/downloads/debian.html:183 +msgid "" +"When installing for the first time, please remember to adjust your " +"NAT/firewall\n" +"if you can. The ports to forward can be found on the \n" +"network configuration page in the router console. If guidance with " +"respect to forwarding ports is needed,\n" +"you may find portforward.com to be" +" helpful." +msgstr "" +"首次安装时,请不要忘记如果可能请调整您的 NAT/防火墙。\n" +"需要转发的端口可以通过路由控制台的 网络配置页面查看。\n" +"如果需要端口转发/端口映射方面的帮助,portforward.com可能会对您有用。" + +#: i2p2www/pages/downloads/debian.html:190 +msgid "" +"Please review and adjust the bandwidth settings on the\n" +"configuration page,\n" +"as the default settings of 96 KB/s down / 40 KB/s up are fairly " +"conservative." +msgstr "" +"请到配置页面,\n" +"检查并调整带宽设置,因为默认设置的 96 KB/s 下行 / 40 KB/s 上行相当保守。" + +#: i2p2www/pages/downloads/debian.html:196 +#: i2p2www/pages/downloads/list.html:199 +#, python-format +msgid "" +"If you want to reach eepsites via your browser, have a look on the browser proxy setup page for an easy " +"howto." +msgstr "" +"如果您希望通过浏览器访问I2P暗网内的网站, 您需要参看 浏览器代理设置 " +"页面了解基本设置方法。" + +#: i2p2www/pages/downloads/list.html:2 i2p2www/pages/downloads/select.html:12 +#: i2p2www/pages/global/nav.html:3 +msgid "Download" +msgstr "下载" + +#: i2p2www/pages/downloads/list.html:9 +msgid "Download I2P" +msgstr "下载 I2P" + +#: i2p2www/pages/downloads/list.html:11 +msgid "Dependency" +msgstr "依赖关系" + +#: i2p2www/pages/downloads/list.html:12 +#, python-format +msgid "" +"\n" +"Java Runtime 1.5 or higher.\n" +"(Oracle Java Version 6/7,\n" +"OpenJDK 6/7, or\n" +"IcedTea6/7\n" +" recommended)\n" +"
    \n" +"Determine" +" your installed Java version here\n" +"or type java -version at your command prompt.\n" +msgstr "" +"\n" +"Java 运行时 1.5 或更高。\n" +"(推荐 Oracle Java 6/7,OpenJDK 6/7, \n" +"或IcedTea6/7)\n" +"
    \n" +"点此" +"\n" +"或在命令行输入 java -version 判断您安装的 Java 版本。\n" + +#: i2p2www/pages/downloads/list.html:25 +msgid "Clean installs" +msgstr "全新安装" + +#: i2p2www/pages/downloads/list.html:32 i2p2www/pages/downloads/list.html:49 +#: i2p2www/pages/downloads/list.html:76 i2p2www/pages/downloads/list.html:135 +#: i2p2www/pages/downloads/list.html:264 +msgid "select alternate link" +msgstr "选择备用链接" + +#: i2p2www/pages/downloads/list.html:39 +msgid "Download that file and run it." +msgstr "下载此文件并运行之。" + +#: i2p2www/pages/downloads/list.html:56 +#, python-format +msgid "" +"Download that file and double-click it (if that works) or\n" +" type java -jar i2pinstall_%(i2pversion)s.jar in a " +"terminal to run the\n" +" installer.\n" +" You may be able to right-click and select\n" +" "Open with Java"." +msgstr "" +"下载此文件并双击它(如果管用)或在终端中输入 java -jar " +"i2pinstall_%(i2pversion)s.jar启动安装程序 installer。\n" +"您也许可以从右键菜单中选择 "用 Java 打开"。" + +#: i2p2www/pages/downloads/list.html:64 i2p2www/pages/downloads/list.html:91 +msgid "Command line (headless) install:" +msgstr "命令行安装命令:" + +#: i2p2www/pages/downloads/list.html:65 +#, python-format +msgid "" +"Download the %(i2pversion)s OSX graphical installer file above and\n" +" run java -jar i2pinstall_%(i2pversion)s.jar -console " +"from the command line." +msgstr "" +"下载以上的 %(i2pversion)s OSX 图形安装文件并在命令行中执行java -jar " +"i2pinstall_%(i2pversion)s.jar -console" + +#: i2p2www/pages/downloads/list.html:83 +#, python-format +msgid "" +"Download that file and double-click it (if that works) or\n" +" type java -jar i2pinstall_%(i2pversion)s.jar in a " +"terminal to run the\n" +" installer.\n" +" On some platforms you may be able to right-click and select\n" +" "Open with Java"." +msgstr "" +"下载此文件并双击它(如果管用)或在终端中输入 java -jar " +"i2pinstall_%(i2pversion)s.jar启动安装程序 installer。\n" +"在其他一些系统中,您也许可以从右键菜单中选择 "用 Java 打开"。" + +#: i2p2www/pages/downloads/list.html:92 +#, python-format +msgid "" +"Download the graphical installer file above and\n" +" run java -jar i2pinstall_%(i2pversion)s.jar -console " +"from the command line." +msgstr "" +"下载以上的图形安装文件并在命令行中执行java -jar i2pinstall_%(i2pversion)s.jar " +"-console。" + +#: i2p2www/pages/downloads/list.html:102 +msgid "Packages for Debian & Ubuntu are available." +msgstr "Debian & Ubuntu 有官方软件包可用。" + +#: i2p2www/pages/downloads/list.html:116 +#, python-format +msgid "" +"The above file is the current release build.\n" +" The latest dev build is version %(devbuild)s, and is available from\n" +" str4d's eepsite." +msgstr "" + +#: i2p2www/pages/downloads/list.html:122 +msgid "" +"The release and dev versions of the I2P APK are not compatible, as they\n" +" are signed by zzz and str4d respectively. Uninstall one before " +"installing\n" +" the other." +msgstr "" + +#: i2p2www/pages/downloads/list.html:132 +msgid "Source package" +msgstr "源码包" + +#: i2p2www/pages/downloads/list.html:142 +#, python-format +msgid "" +"Alternately, you can fetch the source from monotone\n" +" or via Git from git.repo.i2p or Github.\n" +"
    \n" +" Run (tar xjvf i2psource_%(i2pversion)s.tar.bz2 ; cd " +"i2p-%(i2pversion)s ; ant pkg) then either\n" +" run the GUI installer or headless install as above." +msgstr "" +"另外,您可以通过 monotone 或 " +"git.repo.i2pGithub 获取源码。\n" +"
    \n" +"运行 (tar xjvf i2psource_%(i2pversion)s.tar.bz2 ;cd " +"i2p-%(i2pversion)s ;ant pkg) 然后按前述方式启动图形界面安装程序或进行命令行安装。" + +#: i2p2www/pages/downloads/list.html:157 +#, python-format +msgid "" +"The files are signed by zzz,\n" +"whose key is here." +msgstr "" +"文件由 zzz 签名,\n" +"它的公钥可以从这里下载。" + +#: i2p2www/pages/downloads/list.html:162 +msgid "" +"I2P can also be downloaded from our project pages on Launchpad and Google Code." +msgstr "" +"I2P 也可以从我们在 Launchpad \n" +"或 Google Code 上的项目站点下载。" + +#: i2p2www/pages/downloads/list.html:168 +msgid "" +"After running the installer on windows, simply click on the \"Start I2P\"" +" button\n" +"which will bring up the router console,\n" +"which has further instructions." +msgstr "" +"在Windows下安装程序运行完毕后,只要点击 \"启动 I2P\" 按钮\n" +"即可打开 路由控制台,其中有更多的介绍内容。" + +#: i2p2www/pages/downloads/list.html:174 +msgid "" +"On Unix-like systems, I2P can be started as a service\n" +"using the \"i2prouter\" script, located in the directory you selected for" +" I2P.\n" +"Changing to that directory in a console and issuing \"sh i2prouter " +"status\"\n" +"should tell you the router's status. The arguments \"start\", \"stop\" " +"and \"restart\"\n" +"control the service. The router console\n" +"can be accessed at its usual location.\n" +"For users on OpenSolaris and other systems for which the wrapper (i2psvc)" +" is not supported,\n" +"start the router with \"sh runplain.sh\" instead." +msgstr "" +"在 Unix 类系统下, I2P 可以通过执行 \"i2prouter\" 脚本作为服务启动,脚本位于您为 I2P 指定的目录中。\n" +"在终端下进入此目录并执行 \"sh i2prouter status\" 应该可以获得路由器信息。\n" +"命令参数 \"start\", \"stop\" 及 \"restart\" 可以控制服务状态。\n" +"路由控制台可以通过与其他平台相同的地址访问。\n" +"OpenSolaris及其他不支持Java封装程序(i2psvc)的系统用户,需要使用 \"sh runplain.sh\" 启动路由器。" + +#: i2p2www/pages/downloads/list.html:185 +#, python-format +msgid "" +"When installing for the first time, please remember to adjust your " +"NAT/firewall\n" +"if you can, bearing in mind the Internet-facing ports I2P uses,\n" +"described here among other ports.\n" +"If you have successfully opened your port to inbound TCP, also enable " +"inbound TCP on the\n" +"configuration page." +msgstr "" +"首次安装时请不要忘记如果可能 请调整您的 NAT/防火墙 设置,\n" +"I2P 使用的外网端口及其它端口的说明在这里。\n" +"如果您映射了 TCP 端口,请到 配置页面启用入站 TCP 传输。" + +#: i2p2www/pages/downloads/list.html:193 +msgid "" +"Also, please review and adjust the bandwidth settings on the\n" +"configuration page,\n" +"as the default settings of 96 KBps down / 40 KBps up are fairly slow." +msgstr "" +"请到配置页面,检查并调整带宽设置,因为默认设置的" +" 96 KB/s 下行 / 40 KB/s 上行非常缓慢。" + +#: i2p2www/pages/downloads/list.html:203 +msgid "Updates from earlier releases:" +msgstr "从早期版本中更新至新版:" + +#: i2p2www/pages/downloads/list.html:205 +msgid "Both automatic and manual upgrades are available for the release." +msgstr "更新方式有自动更新和手动更新两种。" + +#: i2p2www/pages/downloads/list.html:210 +msgid "Automatic updates" +msgstr "自动更新" + +#: i2p2www/pages/downloads/list.html:212 +msgid "" +"If you are running 0.7.5 or later, your router should detect the\n" +"new release. To upgrade simply click the 'Download Update' button on your" +" router console\n" +"when it appears." +msgstr "" +"如果您正在运行 0.7.5 或更高版本,您的路由器可以检测到新版本。\n" +"要更新,只需在按钮出现时,点击路由控制台中的“下载更新”按钮。" + +#: i2p2www/pages/downloads/list.html:218 +msgid "" +"Due to a bug in release 0.7.6, those whose first I2P installation was " +"that version\n" +"and have not upgraded manually\n" +"may get a \"downloaded version is not greater than current version\" " +"error,\n" +"and should use the manual update method below." +msgstr "" +"因为 0.7.6 版中的错误,第一次使用此版本并没有采取手动更新的路由器\n" +"会出现“已下载的版本没有现有版本新”\n" +"(\"downloaded version is not greater than current version\" )的错误。\n" +"请使用下面的更新方法。" + +#: i2p2www/pages/downloads/list.html:226 +#, python-format +msgid "" +"If you are running 0.7.4 or earlier, please see\n" +"the 0.7.5 release notes\n" +"for important information about how to configure your router to " +"automatically\n" +"receive the release." +msgstr "" +"如果您正在使用 0.7.4 或更早的版本,请参见0.7.5 版本说明 " +"了解关于配置路由器,自动接收更新的重要信息。" + +#: i2p2www/pages/downloads/list.html:234 +#, python-format +msgid "" +"If you are running 0.6.1.30 or earlier, please see\n" +"instructions\n" +"for important information about how to configure your router to " +"automatically\n" +"receive the release." +msgstr "" +"如果您正在运行 0.6.1.30 或更早版本请参见 操作说明 " +"关于如何配置路由器自动接收更新的重要信息。" + +#: i2p2www/pages/downloads/list.html:243 +#, python-format +msgid "" +"If you have reconfigured your router following the instructions, you should see a link on your" +" \n" +" router console " +"allowing\n" +" you to download and install the new release by just clicking on that\n" +" link." +msgstr "" +"如果您已经根据 操作说明 重新配置了路由器,您应该从 路由控制台 " +"看到链接,允许您通过点击此链接,下载并安装新的版本。" + +#: i2p2www/pages/downloads/list.html:251 +msgid "Alternately, you can use the manual method specified below." +msgstr "或者,您可以通过下面的方法手动更新。" + +#: i2p2www/pages/downloads/list.html:261 +msgid "Manual updates" +msgstr "手动更新" + +#: i2p2www/pages/downloads/list.html:273 +msgid "" +"Download that file to your I2P\n" +" installation directory and rename as i2pupdate.zip.\n" +" (alternately, you can get the source as above and run \"ant " +"updater\", then copy the\n" +" resulting i2pupdate.zip to your I2P installation directory). You do" +" \n" +" NOT need to unzip that file." +msgstr "" +"下载此文件到您的 I2P 安装目录并 重命名为 i2pupdate.zip (或者,您可以下载源代码并运行“ant " +"updater”,然后将得到的 i2pupdate.zip 复制到您的 I2P 安装文件夹)。注意您不需要解压此文件。" + +#: i2p2www/pages/downloads/list.html:282 +msgid "Click \"Restart\"" +msgstr "单击 “重启”" + +#: i2p2www/pages/downloads/list.html:287 +msgid "Grab a cup of coffee and come back in 11 minutes" +msgstr "喝杯咖啡 11 分钟后回来" + +#: i2p2www/pages/downloads/list.html:295 +#, python-format +msgid "" +"The file is signed by zzz,\n" +"whose key is here." +msgstr "" +"此文件由 zzz 签名,\n" +"公钥可以从这里找到。" + +#: i2p2www/pages/downloads/list.html:300 +msgid "Previous Releases" +msgstr "之前的版本" + +#: i2p2www/pages/downloads/list.html:302 +#, python-format +msgid "" +"Previous releases are available on Google " +"Code\n" +"and Launchpad\n" +"and within the I2P network on %(echelon)s." +msgstr "" +"之前的版本可以通过 Google " +"CodeLaunchpad " +",或通过 I2P 内的网站%(echelon)s 下载。" + +#: i2p2www/pages/downloads/select.html:2 i2p2www/pages/downloads/select.html:4 +msgid "Mirror selection" +msgstr "镜像选择" + +#: i2p2www/pages/downloads/select.html:5 +msgid "File:" +msgstr "文件:" + +#: i2p2www/pages/downloads/select.html:10 +msgid "Any mirror" +msgstr "任意镜像" + +#: i2p2www/pages/global/bounty.html:19 +msgid "" +"To claim the bounty the author must not be paid by other organizations\n" +"or teams for this work (e.g. GSoC students are not valid)." +msgstr "若要赢取赏金,作者(的项目)不能从其它机构获得薪酬或为其它团队工作(例如 GSoC 学生不符合条件)。" + +#: i2p2www/pages/global/bounty.html:29 +#, python-format +msgid "" +"Bounty amounts may be increased by further donations. Do\n" +"you think these are important? Add in your " +"donation, \n" +"marking the amount for the %(donatename)s bounty!" +msgstr "" +"赏金金额会因后续的捐赠增加。您认为这重要吗? \n" +"为 %(donatename)s 赏金添加捐赠! " + +#: i2p2www/pages/global/error_404.html:3 +msgid "Not found" +msgstr "未找到" + +#: i2p2www/pages/global/error_404.html:9 +msgid "" +"Yep... the resource, you were searching for, is named differently, " +"doesn't exist or was removed." +msgstr "嗯... 您正搜索的资源,或者使用了不同的名称,或者不存在,或者已经删除。" + +#: i2p2www/pages/global/error_500.html:5 +msgid "Server error" +msgstr "服务器错误" + +#: i2p2www/pages/global/error_500.html:13 +msgid "500 Server error" +msgstr "500 服务器错误" + +#: i2p2www/pages/global/error_500.html:17 +msgid "Umm... the server encountered some sort of error." +msgstr "嗯...服务器出现了某些错误。" + +#: i2p2www/pages/global/footer.html:2 +msgid "Mirrors" +msgstr "镜像" + +#: i2p2www/pages/global/footer.html:9 +msgid "Secure" +msgstr "安全" + +#: i2p2www/pages/global/footer.html:16 +msgid "Misc." +msgstr "其它" + +#: i2p2www/pages/global/footer.html:19 i2p2www/pages/site/links.html:2 +msgid "Links" +msgstr "链接" + +#: i2p2www/pages/global/footer.html:20 +msgid "Impressum" +msgstr "名人堂" + +#: i2p2www/pages/global/footer.html:24 +msgid "T-Shirts!" +msgstr "文化衫" + +#: i2p2www/pages/global/footer.html:26 +msgid "Europe" +msgstr "欧洲" + +#: i2p2www/pages/global/footer.html:27 +msgid "USA" +msgstr "美国" + +#: i2p2www/pages/global/footer.html:31 +msgid "Donate" +msgstr "捐赠" + +#: i2p2www/pages/global/layout.html:29 +msgid "Skip navigation" +msgstr "" + +#: i2p2www/pages/global/layout.html:32 +msgid "I2P Logo" +msgstr "I2P 标识" + +#: i2p2www/pages/global/layout.html:32 i2p2www/pages/site/index.html:3 +msgid "The Invisible Internet Project" +msgstr "I2P 隐形网项目" + +#: i2p2www/pages/global/layout.html:56 +#, python-format +msgid "" +"This page was last updated in %(lastupdated)s and is accurate for router " +"version %(accuratefor)s." +msgstr "本页最后更新于 %(lastupdated)s 针对版本 %(accuratefor)s。" + +#: i2p2www/pages/global/layout.html:60 +#, python-format +msgid "This page was last updated in %(lastupdated)s." +msgstr "本页最后更新于 %(lastupdated)s。" + +#: i2p2www/pages/global/layout.html:64 +#, python-format +msgid "This page is accurate for router version %(accuratefor)s." +msgstr "本页针对版本 %(accuratefor)s。" + +#: i2p2www/pages/global/macros:21 +msgid "Previous" +msgstr "" + +#: i2p2www/pages/global/macros:36 +msgid "Next" +msgstr "" + +#: i2p2www/pages/global/macros:43 +msgid "Posted in" +msgstr "发表于" + +#: i2p2www/pages/global/nav.html:4 +msgid "About" +msgstr "关于" + +#: i2p2www/pages/global/nav.html:6 +msgid "Introduction to I2P" +msgstr "介绍 I2P" + +#: i2p2www/pages/global/nav.html:7 +msgid "Comparisons" +msgstr "比较" + +#: i2p2www/pages/global/nav.html:9 +msgid "Overview of comparisons" +msgstr "比较概况" + +#: i2p2www/pages/global/nav.html:13 +msgid "Other anonymous networks" +msgstr "其它匿名网络" + +#: i2p2www/pages/global/nav.html:16 +msgid "Documentation" +msgstr "文档" + +#: i2p2www/pages/global/nav.html:18 +msgid "Documentation index" +msgstr "文档索引" + +#: i2p2www/pages/global/nav.html:19 +msgid "How does it work?" +msgstr "工作原理" + +#: i2p2www/pages/global/nav.html:21 +msgid "Gentle intro" +msgstr "说明性简介" + +#: i2p2www/pages/global/nav.html:22 +msgid "Tech intro" +msgstr "技术性介绍" + +#: i2p2www/pages/global/nav.html:23 +msgid "Threat model" +msgstr "威胁模式" + +#: i2p2www/pages/global/nav.html:24 +msgid "Garlic routing" +msgstr "Garlic 路由" + +#: i2p2www/pages/global/nav.html:25 +msgid "Network database" +msgstr "网络数据库" + +#: i2p2www/pages/global/nav.html:26 +msgid "Tunnel routing" +msgstr "隧道路由" + +#: i2p2www/pages/global/nav.html:27 +msgid "Peer selection" +msgstr "节点选择" + +#: i2p2www/pages/global/nav.html:28 +msgid "Cryptography" +msgstr "加密系统" + +#: i2p2www/pages/global/nav.html:29 +msgid "ElGamal/AES+SessionTags" +msgstr "" + +#: i2p2www/pages/global/nav.html:32 i2p2www/pages/global/nav.html:116 +msgid "Applications" +msgstr "应用" + +#: i2p2www/pages/global/nav.html:34 +msgid "Supported applications" +msgstr "支持的应用" + +#: i2p2www/pages/global/nav.html:35 +msgid "Bittorrent" +msgstr "" + +#: i2p2www/pages/global/nav.html:38 +msgid "API" +msgstr "" + +#: i2p2www/pages/global/nav.html:46 i2p2www/pages/global/nav.html:77 +msgid "Streaming library" +msgstr "Streaming 库" + +#: i2p2www/pages/global/nav.html:47 +msgid "Ministreaming library" +msgstr "Ministreaming 库" + +#: i2p2www/pages/global/nav.html:48 i2p2www/pages/global/nav.html:71 +msgid "Datagrams" +msgstr "数据报" + +#: i2p2www/pages/global/nav.html:52 +msgid "Protocols" +msgstr "协议" + +#: i2p2www/pages/global/nav.html:54 +msgid "Protocol stack" +msgstr "协议栈" + +#: i2p2www/pages/global/nav.html:59 +msgid "Transports" +msgstr "传输方式" + +#: i2p2www/pages/global/nav.html:61 +msgid "Transport layer overview" +msgstr "传输层概要" + +#: i2p2www/pages/global/nav.html:66 +msgid "Specifications" +msgstr "规格" + +#: i2p2www/pages/global/nav.html:68 +msgid "Blockfile" +msgstr "" + +#: i2p2www/pages/global/nav.html:69 +msgid "Common structures" +msgstr "共同架构" + +#: i2p2www/pages/global/nav.html:70 +msgid "Configuration files" +msgstr "配置文件" + +#: i2p2www/pages/global/nav.html:72 +msgid "GeoIP files" +msgstr "GeoIP 文件" + +#: i2p2www/pages/global/nav.html:75 i2p2www/pages/global/nav.html:91 +msgid "Plugins" +msgstr "插件" + +#: i2p2www/pages/global/nav.html:78 +msgid "Tunnel creation" +msgstr "隧道创建" + +#: i2p2www/pages/global/nav.html:79 +msgid "Tunnel messages" +msgstr "隧道消息" + +#: i2p2www/pages/global/nav.html:80 +msgid "Software updates" +msgstr "软件更新" + +#: i2p2www/pages/global/nav.html:83 +msgid "Tunnels" +msgstr "隧道" + +#: i2p2www/pages/global/nav.html:85 +msgid "Tunnel implementation" +msgstr "隧道实现" + +#: i2p2www/pages/global/nav.html:86 +msgid "Unidirectional tunnels" +msgstr "双向隧道" + +#: i2p2www/pages/global/nav.html:87 +msgid "Old implementation" +msgstr "旧实现" + +#: i2p2www/pages/global/nav.html:90 +msgid "Naming and addressbook" +msgstr "节点命名与地址簿" + +#: i2p2www/pages/global/nav.html:94 +msgid "Team" +msgstr "团队" + +#: i2p2www/pages/global/nav.html:96 +msgid "Hall of Fame" +msgstr "名人堂" + +#: i2p2www/pages/global/nav.html:97 +msgid "Academic papers and peer review" +msgstr "学术报告与同行审查" + +#: i2p2www/pages/global/nav.html:98 +msgid "Presentations, tutorials and articles" +msgstr "报告、教程及文章" + +#: i2p2www/pages/global/nav.html:99 +msgid "Contact us" +msgstr "联系我们" + +#: i2p2www/pages/global/nav.html:102 +msgid "Help" +msgstr "帮助" + +#: i2p2www/pages/global/nav.html:104 +msgid "FAQ" +msgstr "常见问题" + +#: i2p2www/pages/global/nav.html:105 +msgid "How to browse I2P" +msgstr "如何浏览 I2P" + +#: i2p2www/pages/global/nav.html:106 +msgid "Glossary" +msgstr "词汇表" + +#: i2p2www/pages/global/nav.html:107 +msgid "Performance" +msgstr "性能" + +#: i2p2www/pages/global/nav.html:108 i2p2www/pages/site/contact.html:22 +msgid "Forums" +msgstr "论坛" + +#: i2p2www/pages/global/nav.html:111 +msgid "Volunteer" +msgstr "志愿者" + +#: i2p2www/pages/global/nav.html:113 +msgid "Get involved!" +msgstr "参与!" + +#: i2p2www/pages/global/nav.html:114 +msgid "Develop" +msgstr "开发" + +#: i2p2www/pages/global/nav.html:117 +msgid "Licenses" +msgstr "许可证" + +#: i2p2www/pages/global/nav.html:118 +msgid "Release signing keys" +msgstr "发行版签名公钥" + +#: i2p2www/pages/global/nav.html:119 +msgid "Signed keys" +msgstr "已签名密钥" + +#: i2p2www/pages/global/nav.html:120 +msgid "Developers keys" +msgstr "开发者公钥" + +#: i2p2www/pages/global/nav.html:121 +msgid "Bug tracker" +msgstr "Bug Tracker" + +#: i2p2www/pages/global/nav.html:124 +msgid "Academic research" +msgstr "学术研究" + +#: i2p2www/pages/global/nav.html:125 +msgid "Guides" +msgstr "" + +#: i2p2www/pages/global/nav.html:127 +msgid "New developers" +msgstr "新开发者" + +#: i2p2www/pages/global/nav.html:128 +msgid "Using an IDE with I2P" +msgstr "I2P 中使用 IDE" + +#: i2p2www/pages/global/nav.html:129 +msgid "Developer guidelines and coding style" +msgstr "开发者指引与代码风格" + +#: i2p2www/pages/global/nav.html:130 +msgid "Monotone" +msgstr "" + +#: i2p2www/pages/global/nav.html:131 +msgid "New translators" +msgstr "新翻译人员" + +#: i2p2www/pages/global/nav.html:134 +msgid "Bounties" +msgstr "赏金" + +#: i2p2www/pages/global/nav.html:135 i2p2www/pages/meetings/index.html:2 +msgid "Meetings" +msgstr "会议" + +#: i2p2www/pages/global/nav.html:136 +msgid "Roadmap" +msgstr "路线图" + +#: i2p2www/pages/global/nav.html:137 +msgid "Task list" +msgstr "任务列表" + +#: i2p2www/pages/global/nav.html:140 +msgid "Language" +msgstr "语言" + +#: i2p2www/pages/meetings/index.html:4 +msgid "I2P Meetings ATOM Feed" +msgstr "I2P 会议 ATOM 源" + +#: i2p2www/pages/meetings/index.html:7 +msgid "Logs of past I2P meetings" +msgstr "过后 I2P 会议记录" + +#: i2p2www/pages/meetings/index.html:9 +msgid "Meetings are currently on hold until a more suitable time can be chosen." +msgstr "直到能找到更合适的时间前,会议目前暂停。" + +#: i2p2www/pages/meetings/index.html:13 +#, python-format +msgid "" +"If you have something to discuss, please find the developers on IRC in " +"#i2p-dev.\n" +"Status updates from developers are also " +"available." +msgstr "" +"如果您有任何需要讨论的话题,请到 IRC #i2p-dev 找开发者。\n" +"开发者的状态更新 仍然更新。" + +#: i2p2www/pages/meetings/show.html:2 +#, python-format +msgid "I2P Development Meeting %(id)s" +msgstr "I2P 开发会议 %(id)s" + +#: i2p2www/pages/meetings/show.html:10 +msgid "Full IRC Log" +msgstr "IRC 完整日志" + +#: i2p2www/pages/papers/list.html:29 +msgid "By topic" +msgstr "按主题" + +#: i2p2www/pages/papers/list.html:35 +msgid "By date" +msgstr "按日期" + +#: i2p2www/pages/papers/list.html:41 +msgid "By author" +msgstr "按作者" + +#: i2p2www/pages/papers/list.html:83 +#, python-format +msgid "" +"Please send new or corrected entries to\n" +"%(email)s.
    \n" +"If you can, please format them as BibTeX; see our\n" +"BibTeX source page for examples.
    \n" +"Remember to include URLs if possible:\n" +"offline papers are less useful." +msgstr "" +"新论文或更正后的论文请发送至 %(email)s。\n" +"
    如果可能,请使用 BibTeX 格式,示例参见 BibTeX 源页面 。\n" +"
    如果可能请提供链接: 离线论文帮助有限。" + +#: i2p2www/pages/site/contact.html:2 +msgid "Contact" +msgstr "联系" + +#: i2p2www/pages/site/contact.html:5 +msgid "" +"Our primary IRC network is the Irc2P network within I2P; a default tunnel" +" to this network is set up with new router installs.\n" +" We are also present on multiple standard networks like OFTC,\n" +" EIN and Freenode.\n" +" All I2P-related channels on all these network are linked to the main " +"channels on Irc2P via relay bots." +msgstr "" +"我们的主 IRC 网络是 I2P 中的 IRC2P 网络; 新安装的路由器设置有默认隧道连接至此网络。\n" +"我们同时也出现在多个标准网络上,例如OFTCEINFreenode。\n" +"这些网络中所有 I2P 相关的频道都通过 IRC2P 中的中继机器人相互连通。" + +#: i2p2www/pages/site/contact.html:13 +msgid "Channel list:" +msgstr "频道列表:" + +#: i2p2www/pages/site/contact.html:15 +msgid "General i2p discussion" +msgstr "一般 i2p 讨论" + +#: i2p2www/pages/site/contact.html:16 +msgid "Offtopic" +msgstr "跑题灌水" + +#: i2p2www/pages/site/contact.html:17 +msgid "Development talk" +msgstr "开发讨论" + +#: i2p2www/pages/site/contact.html:18 +msgid "Help channel" +msgstr "帮助频道" + +#: i2p2www/pages/site/contact.html:23 +#, python-format +msgid "" +"Most of the discussion about I2P's development happens on the I2P developer forum. This is usually the best" +" place to start with inquiries, if the dev IRC channel is inactive." +msgstr "" +"大部分有关 I2P 开发的讨论在 I2P 开发者论坛。如果 IRC " +"太安静,这通常是咨询问题的最佳地方。" + +#: i2p2www/pages/site/contact.html:27 +msgid "Mailing lists" +msgstr "邮件列表" + +#: i2p2www/pages/site/contact.html:28 +msgid "" +"I2P does have a mailing list, but it is rarely used as the current small " +"team of developers prefer to communicate via IRC or the developer forum. " +"This may change in future." +msgstr "I2P 确实有邮件列表,但当前的团队不大倾向使用 IRC 和开发者论坛,很少使用邮件列表。但也许未来会改变。" + +#: i2p2www/pages/site/contact.html:33 +msgid "Subscribing" +msgstr "订阅" + +#: i2p2www/pages/site/contact.html:34 +msgid "" +"To subscribe to a mailing list, go to the list information page (linked " +"below) and fill out the form. I2P-internal email addresses " +"(foobar@mail.i2p) can be used." +msgstr "要加入邮件列表,请到列表的信息页面(下方链接),完成表单。可以使用 I2P-内部邮件地址 (例如foobar@mail.i2p)。" + +#: i2p2www/pages/site/contact.html:38 +msgid "Unsubscribing" +msgstr "取消订阅" + +#: i2p2www/pages/site/contact.html:39 +msgid "" +"To unsubscribe from a mailing list or edit your subscription options, go " +"to the list information page (linked below) and enter your subscription " +"email address." +msgstr "要取消订阅或编辑您的订阅选项,请到信息页面(下方链接)输入您的订阅邮件地址。" + +#: i2p2www/pages/site/contact.html:43 +msgid "Lists" +msgstr "列表" + +#: i2p2www/pages/site/contact.html:46 +msgid "Archive" +msgstr "存档" + +#: i2p2www/pages/site/contact.html:47 +msgid "" +"General I2P discussion - anything that doesn't fit in a different list " +"goes here." +msgstr "一般性 I2P 讨论 - 任何不属于其它列表类型的话题。" + +#: i2p2www/pages/site/contact.html:53 +msgid "" +"You don't like mailing lists? Then this is for you. All mailing lists are" +" available via NNTP as well." +msgstr "您不喜欢邮件列表? 那这也许适合你,所有邮件列表都支持 NNTP 新闻组协议。" + +#: i2p2www/pages/site/contact.html:58 +msgid "Group-List-mapping:" +msgstr "分组-列表-映射" + +#: i2p2www/pages/site/contact.html:62 +msgid "Servers:" +msgstr "服务器:" + +#: i2p2www/pages/site/faq.html:2 +msgid "Frequently Asked Questions" +msgstr "常见问题问答" + +#: i2p2www/pages/site/faq.html:4 +msgid "Index" +msgstr "索引" + +#: i2p2www/pages/site/faq.html:7 +msgid "General" +msgstr "一般话题" + +#: i2p2www/pages/site/faq.html:9 i2p2www/pages/site/faq.html:51 +msgid "What systems will I2P run on?" +msgstr "I2P 支持运行的系统?" + +#: i2p2www/pages/site/faq.html:10 +msgid "Whats an \"eepsite\" and how do I configure my browser so I can use them?" +msgstr "什么是 \"eepsite\" ,如何配置我的浏览器使用它们?" + +#: i2p2www/pages/site/faq.html:11 i2p2www/pages/site/faq.html:263 +msgid "My router has very few active peers, is this OK?" +msgstr "我的路由器活动节点很少,正常吗?" + +#: i2p2www/pages/site/faq.html:12 i2p2www/pages/site/faq.html:498 +msgid "What do the Active x/y numbers mean in the router console?" +msgstr "路由控制台中的活动数值 x/y 是什么意思?" + +#: i2p2www/pages/site/faq.html:13 i2p2www/pages/site/faq.html:225 +msgid "" +"My active peers / known peers / participating tunnels / connections / " +"bandwidth vary dramatically over time! Is anything wrong?" +msgstr "我的活动节点/已知节点/参加通道/连接数/带宽 变化太大!" + +#: i2p2www/pages/site/faq.html:14 i2p2www/pages/site/faq.html:348 +msgid "Is using an outproxy safe?" +msgstr "使用出口代理安全吗?" + +#: i2p2www/pages/site/faq.html:15 i2p2www/pages/site/faq.html:374 +msgid "Most of the eepsites within I2P are down?" +msgstr "I2P中的大部分站点都打不开?" + +#: i2p2www/pages/site/faq.html:16 i2p2www/pages/site/faq.html:527 +msgid "What ports does I2P use?" +msgstr "I2P 使用哪些端口?" + +#: i2p2www/pages/site/faq.html:17 +msgid "Why is I2P listening for connections on port 32000?" +msgstr "我什么我的 I2P " + +#: i2p2www/pages/site/faq.html:18 i2p2www/pages/site/faq.html:62 +msgid "I think I found a bug, where can I report it?" +msgstr "我想我发现了一个bug,到那里报告?" + +#: i2p2www/pages/site/faq.html:19 i2p2www/pages/site/faq.html:107 +msgid "What happened to *.i2p.net? What happened to jrandom? Is I2P dead?" +msgstr "*.i2p.net 和 jrandom 怎么了? ? I2P 结束了吗?" + +#: i2p2www/pages/site/faq.html:20 i2p2www/pages/site/faq.html:845 +msgid "I have a question!" +msgstr "我有问题要问!" + +#: i2p2www/pages/site/faq.html:22 +msgid "Setup" +msgstr "设置" + +#: i2p2www/pages/site/faq.html:24 i2p2www/pages/site/faq.html:232 +msgid "" +"My router has been up for several minutes and has zero or very few " +"connections" +msgstr "我的路由器已经启动几分钟了,仍然只有 0 或非常少的连接数。" + +#: i2p2www/pages/site/faq.html:25 i2p2www/pages/site/faq.html:390 +msgid "Why is I2P so slow?" +msgstr "为什么 I2P 如此慢?" + +#: i2p2www/pages/site/faq.html:26 i2p2www/pages/site/faq.html:79 +msgid "" +"I'm missing lots of hosts in my addressbook. What are some good " +"subscription links?" +msgstr "我的地址簿中缺少很多主机记录。有什么好的订阅链接?" + +#: i2p2www/pages/site/faq.html:27 i2p2www/pages/site/faq.html:383 +msgid "How do I set up my own eepsite?" +msgstr "如果设置我的 eepsite?" + +#: i2p2www/pages/site/faq.html:28 i2p2www/pages/site/faq.html:416 +msgid "Bittorrent / I2PSnark / Azureus I2P Plugin Questions?" +msgstr "Bittorrent / I2PSnark / Azureus I2P 插件的问题?" + +#: i2p2www/pages/site/faq.html:29 i2p2www/pages/site/faq.html:423 +msgid "How do I connect to IRC within I2P?" +msgstr "如何使用 I2P 连接至 IRC?" + +#: i2p2www/pages/site/faq.html:30 i2p2www/pages/site/faq.html:281 +msgid "I can't access regular Internet sites through I2P." +msgstr "我无法通过 I2P 访问普通的网站。" + +#: i2p2www/pages/site/faq.html:31 i2p2www/pages/site/faq.html:296 +msgid "I can't access https:// or ftp:// sites through I2P." +msgstr "我无法通过 I2P 访问 https:// 或 ftp:// 网站。" + +#: i2p2www/pages/site/faq.html:32 i2p2www/pages/site/faq.html:506 +msgid "Is it possible to use I2P as a SOCKS proxy?" +msgstr "是否可以使用 I2P 作为 SOCKS 代理?" + +#: i2p2www/pages/site/faq.html:33 i2p2www/pages/site/faq.html:489 +msgid "How do I configure my browser?" +msgstr "如何设置我的浏览器?" + +#: i2p2www/pages/site/faq.html:34 i2p2www/pages/site/faq.html:434 +msgid "" +"How can I access the web console from my other machines or password " +"protect it?" +msgstr "如何给控制台加密码,通过我的其它电脑访问网页控制台?" + +#: i2p2www/pages/site/faq.html:35 i2p2www/pages/site/faq.html:474 +msgid "How can I use applications from my other machines?" +msgstr "如何从其它电脑使用我的程序?" + +#: i2p2www/pages/site/faq.html:36 i2p2www/pages/site/faq.html:748 +msgid "How do I reseed manually?" +msgstr "如何手工补种(reseed)?" + +#: i2p2www/pages/site/faq.html:37 i2p2www/pages/site/faq.html:124 +msgid "My router is using too much CPU?!?" +msgstr "我的路由器占用了过多的CPU!?" + +#: i2p2www/pages/site/faq.html:39 +msgid "Misconception" +msgstr "误区" + +#: i2p2www/pages/site/faq.html:41 i2p2www/pages/site/faq.html:366 +msgid "" +"How do I access IRC, BitTorrent, or other services on the regular " +"Internet?" +msgstr "如何访问公网上的 IRC,BitTorrent,或其它服务?" + +#: i2p2www/pages/site/faq.html:42 +msgid "" +"Is my router an \"exit node\"(outproxy) to the regular Internet? I don't " +"want it to be." +msgstr "我的路由器是公网的“出口节点”吗?我可不想这样。" + +#: i2p2www/pages/site/faq.html:43 i2p2www/pages/site/faq.html:188 +msgid "" +"I am opposed to certain types of content. How do I keep from " +"distributing, storing, or accessing them?" +msgstr "我反对某些类型的内容。如何防止对它们的散布、储存或访问?" + +#: i2p2www/pages/site/faq.html:45 +msgid "Errors and Their Solutions" +msgstr "错误及解决方法" + +#: i2p2www/pages/site/faq.html:47 i2p2www/pages/site/faq.html:784 +msgid "" +"I'm using FreeBSD and when I start I2P I receive an error about " +"libm.so.4!" +msgstr "我使用 FreeBSD ,当启动 I2P 时,我收到有关 libm.so.4 的错误信息!" + +#: i2p2www/pages/site/faq.html:48 +msgid "" +"In wrapper.log I see an error stating Protocol family " +"unavailable when I2P is loading" +msgstr "" +"I2P 载入时,我在 wrapper.log 中看到错误 Protocol family " +"unavailable" + +#: i2p2www/pages/site/faq.html:52 i2p2www/pages/site/faq.html:63 +#: i2p2www/pages/site/faq.html:80 i2p2www/pages/site/faq.html:108 +#: i2p2www/pages/site/faq.html:125 i2p2www/pages/site/faq.html:189 +#: i2p2www/pages/site/faq.html:226 i2p2www/pages/site/faq.html:233 +#: i2p2www/pages/site/faq.html:264 i2p2www/pages/site/faq.html:273 +#: i2p2www/pages/site/faq.html:282 i2p2www/pages/site/faq.html:297 +#: i2p2www/pages/site/faq.html:349 i2p2www/pages/site/faq.html:367 +#: i2p2www/pages/site/faq.html:375 i2p2www/pages/site/faq.html:384 +#: i2p2www/pages/site/faq.html:391 i2p2www/pages/site/faq.html:417 +#: i2p2www/pages/site/faq.html:424 i2p2www/pages/site/faq.html:435 +#: i2p2www/pages/site/faq.html:475 i2p2www/pages/site/faq.html:482 +#: i2p2www/pages/site/faq.html:490 i2p2www/pages/site/faq.html:499 +#: i2p2www/pages/site/faq.html:507 i2p2www/pages/site/faq.html:528 +#: i2p2www/pages/site/faq.html:736 i2p2www/pages/site/faq.html:749 +#: i2p2www/pages/site/faq.html:785 i2p2www/pages/site/faq.html:817 +#: i2p2www/pages/site/faq.html:846 +msgid "link" +msgstr "链接" + +#: i2p2www/pages/site/faq.html:53 +#, python-format +msgid "" +"While I2P has been reported to run PCs as meagre as a low-end Pentium II " +"with 64 MB of RAM, you'll have a much better experience on a Pentium III " +"(or better) with 128MB of RAM (or more). A chart comparing the performance of" +" the various JREs can be found at http://%(trac)s/wiki/java, but in " +"short: it's at all possible, use Sun/Oracle Java or OpenJDK." +msgstr "" + +#: i2p2www/pages/site/faq.html:57 +msgid "" +"I2P has been tested on Windows, Linux, FreeBSD (see the note below), OSX, and OpenSolaris. There is work " +"underway to bring I2P to the Android platform." +msgstr "" + +#: i2p2www/pages/site/faq.html:65 +msgid "Here are some places, pick one or more." +msgstr "" + +#: i2p2www/pages/site/faq.html:71 +msgid "Discuss with the developers on IRC in #i2p-dev" +msgstr "" + +#: i2p2www/pages/site/faq.html:75 +msgid "Please include relevant information from the router logs and wrapper logs." +msgstr "" + +#: i2p2www/pages/site/faq.html:81 +msgid "" +"The default subscription is to http://www.i2p2.i2p/hosts.txt which is " +"updated rarely.\n" +"If you don't have another subscription, you may often have to use " +"\"jump\" links which\n" +"is annoying." +msgstr "" + +#: i2p2www/pages/site/faq.html:87 +msgid "" +"Here are some other public addressbook subscription links. You may wish " +"to add one or two\n" +"to your susidns " +"subscription list.\n" +"You don't need to add all of them, as they sync with each other " +"periodically.\n" +"The links using a cgi-bin application employ various strategies to " +"minimize\n" +"the number of duplicate addresses delivered, so they should be more " +"efficient.\n" +"Note that subscribing to a hosts.txt service is an act of \"trust\", as a" +" malicious\n" +"subscription could give you incorrect addresses. So think about whether " +"you\n" +"want to trust any of these.\n" +"The operators of these services may have various policies for listing " +"hosts.\n" +"Presence on this list does not imply endorsement." +msgstr "" + +#: i2p2www/pages/site/faq.html:109 +msgid "" +"Jrandom was the lead developer of I2P and\n" +"Syndie for several years.\n" +"We do not know if or when jrandom will return.\n" +"The *.i2p.net domains were left in a non-functioning state after a power\n" +"outage at the hosting company." +msgstr "" + +#: i2p2www/pages/site/faq.html:117 +#, python-format +msgid "" +"See this page for jrandom's parting message " +"and additional information\n" +"on the migration of *.i2p.net to this website." +msgstr "" + +#: i2p2www/pages/site/faq.html:122 +msgid "I2P remains in active development." +msgstr "" + +#: i2p2www/pages/site/faq.html:126 +msgid "There are many possible causes of high CPU usage. Here is a checklist:" +msgstr "" + +#: i2p2www/pages/site/faq.html:131 +msgid "" +"Try to use either OpenJDK or Sun/Oracle Java if it's available for your " +"system. You can check \n" +"which version of java you have installed by typing java " +"-version at a \n" +"command/shell prompt. Performance tends to suffer with other " +"implementations of java." +msgstr "" + +#: i2p2www/pages/site/faq.html:138 +msgid "" +"Are you running a BitTorrent client over I2P? Try reducing the number of " +"torrents, the bandwidth limits,\n" +"or try turning it off completely to see if that helps." +msgstr "" + +#: i2p2www/pages/site/faq.html:144 +msgid "" +"Are your bandwidth limits set too high? It is possible that too much " +"traffic is going through your\n" +"I2P router and it is overloaded. Try reducing the setting for share " +"bandwidth percentage on the configuration page." +msgstr "" + +#: i2p2www/pages/site/faq.html:149 +msgid "" +"Make sure that you're running the latest version of I2P to get the " +"benefits of increased performance and bug fixes." +msgstr "" + +#: i2p2www/pages/site/faq.html:154 +msgid "" +"Has enough memory been set aside for use by I2P? Look at the memory graph" +" on the graphs page to see\n" +"if the memory usage is \"pegged\"—the JVM is spending most of its " +"time in\n" +"garbage collection. Increase the setting " +"wrapper.java.maxmemory in wrapper.config." +msgstr "" + +#: i2p2www/pages/site/faq.html:161 +msgid "" +"Is the CPU usage simply higher than you would like, or is it pegged at " +"100% for a long time?\n" +"If it's pegged, this could be a bug. Look in the logs for clues." +msgstr "" + +#: i2p2www/pages/site/faq.html:167 +#, python-format +msgid "" +"You may be using the Java-based BigInteger library instead of the native " +"version,\n" +"especially if you are running on a new or unusual OS or hardware " +"(OpenSolaris, mipsel, etc.).\n" +"See the jbigi page for instructions on\n" +"diagnosing, building, and testing methods." +msgstr "" + +#: i2p2www/pages/site/faq.html:175 +msgid "" +"If your native jbigi library is working fine, the biggest user of\n" +"CPU may be routing traffic for participating tunnels. This uses CPU\n" +"because at each hop a layer of encryption must be decoded.\n" +"You can limit participating traffic in two ways - by reducing the\n" +"share bandwidth on\n" +"confignet.jsp,\n" +"or by setting router.maxParticipatingTunnels=nnn on\n" +"configadvanced.jsp." +msgstr "" + +#: i2p2www/pages/site/faq.html:190 +msgid "" +"Hmm. I2P is an anonymous network, so that's a tricky one.\n" +"I2P is designed to withstand censorship, providing a means for everyone " +"to communicate freely. \n" +"The best way to keep your PC free of (encrypted) traffic that you dislike" +" is to not use I2P.\n" +"Freedom of speech has some costs.\n" +"But let's address your question in three parts:" +msgstr "" + +#: i2p2www/pages/site/faq.html:199 +msgid "" +"Distribution - All traffic on I2P is encrypted in multiple layers." +" You don't know\n" +"a message's contents, source, or destination.\n" +"All traffic you route is internal to the I2P network, you are not an exit node (outproxy).\n" +"Your only alternative is to refuse to route\n" +"any traffic, by setting your share bandwidth or maximum " +"participating tunnels to 0 (see above).\n" +"It would be nice if you didn't do this, you should help the network by " +"routing traffic for others.\n" +"Over 95% of users route traffic for others." +msgstr "" + +#: i2p2www/pages/site/faq.html:210 +msgid "" +"Storage - I2P does not do distributed storage of content. You must" +" be thinking of\n" +"Freenet.\n" +"Nobody's content is being stored on your computer by running I2P." +msgstr "" + +#: i2p2www/pages/site/faq.html:217 +msgid "" +"Access - If there are some eepsites you don't like, don't go " +"there.\n" +"Or, use a blocking proxy like Privoxy or some type of \"net nanny\"." +msgstr "" + +#: i2p2www/pages/site/faq.html:227 +msgid "" +"No. This is normal.\n" +"All routers adjust dynamically to changing network conditions and demands." +msgstr "" + +#: i2p2www/pages/site/faq.html:234 +msgid "" +"You may need to reseed your I2P router. With recent versions of I2P you " +"can go to http://localhost:7657/configreseed" +" and click the Save Changes and Reseed Now button. If this " +"method doesn't work—or you're using a very old version—you " +"may need to reseed manually." +msgstr "" + +#: i2p2www/pages/site/faq.html:237 +msgid "" +"The reseed URL changed a few years ago. If this is your first install and" +" you have installed\n" +"an old (0.6.1.30 or earlier) release, or\n" +"you have not run I2P in a long time, you must change the URL and then\n" +"click \"Reseed\" on the console to find other routers.\n" +"After your router is running,\n" +"on configadvanced.jsp," +"\n" +"add the line i2p.reseedURL=http://netdb.i2p2.de/\n" +"OR i2p.reseedURL=http://i2pdb.tin0.de/netDb/ (either should " +"work),\n" +"then click \"Apply\", then click the \"reseed\" link on the left." +msgstr "" + +#: i2p2www/pages/site/faq.html:248 +#, python-format +msgid "" +"This works if you are running 0.6.1.27 or later.\n" +"If you are running release 0.6.1.31 or later, you probably don't need to " +"do this.\n" +"If you are running release 0.6.1.26 or earlier, either follow the\n" +"manual reseed instructions below\n" +"or install the latest release.\n" +"Possible alternate method - add\n" +"wrapper.java.additional.5=-Di2p.reseedURL=http://netdb.i2p2.de/\n" +"to wrapper.config, shutdown the router completely, then start again, then" +" click \"reseed\".\n" +"Let us know if this works." +msgstr "" + +#: i2p2www/pages/site/faq.html:259 +#, python-format +msgid "" +"...but you *really* should upgrade to " +"the latest version." +msgstr "" + +#: i2p2www/pages/site/faq.html:265 +msgid "" +"If your router has 10 or more active peers, everything is fine. Changes " +"in releases 0.6.1.31 and 0.6.1.32 improved the\n" +"efficiency of the router and effectively reduced the number of active " +"peers.\n" +"The router should maintain connections to a few peers at all " +"times.\n" +"The best way to stay \"better-connected\" to the network is to share more bandwidth." +msgstr "" + +#: i2p2www/pages/site/faq.html:272 +msgid "" +"Is my router an \"exit node\" to the regular Internet? I don't want it to" +" be." +msgstr "" + +#: i2p2www/pages/site/faq.html:274 +msgid "" +"No. Unlike Tor,\n" +"\"exit nodes\" or \"outproxies\" are not an inherent part of the network." +"\n" +"Only volunteers who set up and run separate applications will relay " +"traffic to the regular Internet.\n" +"There are very, very few of these." +msgstr "" + +#: i2p2www/pages/site/faq.html:283 +msgid "" +"See above. There are very few HTTP \"outproxies\", they are not an " +"inherent part of the network,\n" +"and they may not be up.\n" +"In addition, the old outproxies squid.i2p, true.i2p, and krabs.i2p have " +"vanished.\n" +"The only outproxy at the moment is false.i2p.\n" +"To use it, edit your i2ptunnel " +"settings for eepProxy\n" +"and set your outproxy list to 'false.i2p' (only).\n" +"Then stop and restart the eepProxy.\n" +"If it doesn't work, the outproxy is not up. It is not I2P's fault.\n" +"If your primary reason to use an anonymous network is to anonymously " +"access sites\n" +"on the regular Internet, you should probably try Tor." +msgstr "" + +#: i2p2www/pages/site/faq.html:298 +msgid "" +"Within I2P, there is no need for HTTPS, as all traffic is encrypted end-" +"to-end.\n" +"FTP is not supported for technical reasons." +msgstr "" + +#: i2p2www/pages/site/faq.html:302 +msgid "" +"There are no FTP \"outproxies\" to the Internet—it may not even be " +"possible to set up one.\n" +"Any other kind of outproxy may work if it's set up with a standard " +"tunnel. \n" +"If you would like to set up some type of outproxy, carefully research the" +" potential risks.\n" +"The I2P community may or may not be able to help with the technical " +"aspects, feel free to ask." +msgstr "" + +#: i2p2www/pages/site/faq.html:308 +msgid "" +"As explained several times above, any existing outproxy isn't a core part" +" of the network.\n" +"They are services run by individuals and they may or may not\n" +"be operational at any given time." +msgstr "" + +#: i2p2www/pages/site/faq.html:313 +msgid "" +"Update: Thanks to the work of h2ik, there is an https outproxy " +"available for use via I2P. Starting with I2P 0.8.4 the tunnel is " +"configured out of the box.
    \n" +"In case the https outproxy is not available in your version of I2P, you " +"can add it easily by doing the following:" +msgstr "" + +#: i2p2www/pages/site/faq.html:319 +msgid "" +"Open i2p tunnel " +"manager. Scroll down to the bottom." +msgstr "" + +#: i2p2www/pages/site/faq.html:324 +msgid "" +"Choose CONNECT from New Client Tunnel dropdown list, click " +"Create" +msgstr "" + +#: i2p2www/pages/site/faq.html:329 +#, python-format +msgid "" +"In the new page, name and describe your new https tunnel as" +" you like.\n" +"The Access Point is your local port for the new https proxy " +"recommended port's 4445.\n" +"Outproxy should be the outproxy's .i2p address which supports " +"https. \n" +"See this forum post of h2ik's for the " +"address. \n" +"Make sure Shared Client, Delay Connect, AutoStart " +"are checked.\n" +"Other options should be left at the defaults. Click Save. In tunnel " +"manger, click the Start button next to your new tunnel." +msgstr "" + +#: i2p2www/pages/site/faq.html:339 +msgid "" +"In firefox, click through " +"Tools>Options>Advanced>Network>Setting." +"\n" +"Untick Use this proxy for all protocol, set SSL proxy: to " +"localhost:4445." +msgstr "" + +#: i2p2www/pages/site/faq.html:344 +msgid "Done." +msgstr "" + +#: i2p2www/pages/site/faq.html:350 +#, python-format +msgid "" +"\n" +"This is a question that only you can answer because the correct answer " +"depends on your behaviours, your\n" +"threat model, and how much you trust the " +"outproxy operator." +msgstr "" + +#: i2p2www/pages/site/faq.html:354 +msgid "" +"Like Tor, I2P does not magically encrypt the Internet.\n" +"You are vulnerable to snooping by the outproxy operators.\n" +"The Tor" +" FAQ\n" +"does a good job of explaining this." +msgstr "" + +#: i2p2www/pages/site/faq.html:360 +#, python-format +msgid "" +"In addition, you may be vulnerable to collusion between the outproxy " +"operator\n" +"and operators of other I2P services, if you use the same tunnels " +"(\"shared clients\").\n" +"There is additional discussion about this on %(zzz)s." +msgstr "" + +#: i2p2www/pages/site/faq.html:368 +msgid "" +"Unless an outproxy has been set up for the service you want to connect " +"to, this cannot be done.\n" +"There are only three types of outproxies running right now: HTTP, HTTPS, " +"and email. Note that there is not a SOCKS outproxy.\n" +"If this type of service is required, try Tor." +msgstr "" + +#: i2p2www/pages/site/faq.html:376 +#, python-format +msgid "" +"If you consider every eepsite that has ever been created, yes, most of " +"them are down.\n" +"People and eepsites come and go.\n" +"A good way to get started in I2P is check out a list of eepsites that are" +" currently up.\n" +"%(eepstatus)s tracks active eepsites." +msgstr "" + +#: i2p2www/pages/site/faq.html:385 +msgid "" +"Click on the Website link\n" +"at the top of your router console for instructions." +msgstr "" + +#: i2p2www/pages/site/faq.html:392 +msgid "" +"Why are downloads, torrents, web browsing, and everything else so slow on" +" I2P?\n" +"The encryption and routing within the I2P network adds a substantial " +"amount of overhead and limits bandwidth.\n" +"Anonymity isn't free." +msgstr "" + +#: i2p2www/pages/site/faq.html:397 +msgid "" +"In addition, you and everybody else probably need to increase your " +"bandwidth limits.\n" +"Two key settings are the inbound and outbound bandwidth limiters on\n" +"the configuration page.\n" +"With the default settings of 32KBps you will generally get no better than" +" 15KBps data transfer in I2PSnark.\n" +"Increasing the settings (but keeping within your actual connection " +"limitations)\n" +"will increase the potential transfer rate for I2PSnark and all other " +"applications." +msgstr "" + +#: i2p2www/pages/site/faq.html:405 +msgid "" +"Also, do you have sufficient share bandwidth configured to allow " +"participating tunnels\n" +"to route through your router? Believe it or not, allowing participating " +"traffic\n" +"keeps you well-integrated in the network and helps your own transfer " +"speeds." +msgstr "" + +#: i2p2www/pages/site/faq.html:410 +#, python-format +msgid "" +"I2P is a work in progress. Lots of improvements and fixes are being " +"implemented, and\n" +"generally speaking, running the latest release will help your " +"performance.\n" +"If you haven't, install the latest " +"release." +msgstr "" + +#: i2p2www/pages/site/faq.html:418 +#, python-format +msgid "" +"See the\n" +"I2P Bittorrent FAQ" +msgstr "" + +#: i2p2www/pages/site/faq.html:425 +msgid "" +"\n" +"A tunnel to the main IRC server within I2P, Irc2P, is created when I2P is" +" installed (see\n" +"the I2PTunnel " +"configuration page),\n" +"and is automatically started when the I2P router starts. To connect to " +"it, tell your IRC\n" +"client to connect to localhost 6668. XChat-like client users" +" can create a\n" +"new network with the server localhost/6668 (remember to tick" +" "Bypass\n" +"proxy server" if you have a proxy server configured)." +msgstr "" + +#: i2p2www/pages/site/faq.html:436 +msgid "" +"For security purposes, the router's admin console by default only listens" +"\n" +"for connections on the local interface. However, with a little hacking,\n" +"you can make it reachable remotely:" +msgstr "" + +#: i2p2www/pages/site/faq.html:444 +msgid "" +"Open ~/.i2p/clients.config and replace
    \n" +"clientApp.0.args=7657 ::1,127.0.0.1 ./webapps/
    \n" +"with
    \n" +"clientApp.0.args=7657 0.0.0.0 ./webapps/" +msgstr "" + +#: i2p2www/pages/site/faq.html:452 +msgid "" +"Go to http://localhost:7657/configui" +"\n" +"and add a console username and password if desired." +msgstr "" + +#: i2p2www/pages/site/faq.html:458 +msgid "" +"Go to http://localhost:7657/index.jsp" +"\n" +"and hit \"Graceful restart\", which restarts the JVM and reloads the " +"client applications" +msgstr "" + +#: i2p2www/pages/site/faq.html:465 +msgid "" +"After that fires up, you should now be able to reach your console " +"remotely. Reload the router at\n" +"http://127.0.0.1:7657 and you will be prompted for the username and " +"password you specified in step 2\n" +"above if your browser supports the authentication popup. Note: the\n" +"0.0.0.0 above specifies an interface, not a network " +"or netmask. 0.0.0.0\n" +"means \"bind to all interfaces\", so it can be reachable on " +"127.0.0.1:7657 as well as\n" +"any LAN/WAN IP." +msgstr "" + +#: i2p2www/pages/site/faq.html:476 +msgid "" +"By default, the router I2CP interface (port 7654) binds to address " +"127.0.0.1. To bind to 0.0.0.0, set the\n" +"router advanced configuration option " +"i2cp.tcp.bindAllInterfaces=true and restart." +msgstr "" + +#: i2p2www/pages/site/faq.html:481 +msgid "Whats an \"eepsite\"?" +msgstr "什么是 \"eepsite\"?" + +#: i2p2www/pages/site/faq.html:483 +msgid "" +"An eepsite is a website that is hosted anonymously - you can access it by" +"\n" +"setting your web browser's HTTP proxy to use the web proxy (typically it\n" +"listens on localhost port 4444), and browsing to the site." +msgstr "" + +#: i2p2www/pages/site/faq.html:491 +#, python-format +msgid "" +"The proxy config for different browsers is on a \n" +"separate page with screenshots. More advanced configs with external " +"tools\n" +"are possible but could introduce leaks in your setup." +msgstr "" + +#: i2p2www/pages/site/faq.html:500 +msgid "" +"x is the number of peers you've sent or received a message from\n" +"successfully in the last minute, y is the number of peers seen in the " +"last\n" +"hour or so." +msgstr "" + +#: i2p2www/pages/site/faq.html:508 +msgid "" +"The SOCKS proxy is working as of release 0.7.1. SOCKS 4/4a/5 are " +"supported.\n" +"There is no SOCKS outproxy so it is of limited use." +msgstr "" + +#: i2p2www/pages/site/faq.html:512 +msgid "" +"In addition, many applications leak sensitive\n" +"information that could identify you on the Internet. I2P only filters\n" +"connection data, but if the program you intend to run sends this\n" +"information as content, I2P has no way to protect your anonymity. For\n" +"example, some mail applications will send the IP address of the machine\n" +"they are running on to a mail server. There is no way for I2P to filter\n" +"this, thus using I2P to 'socksify' existing applications is possible, but" +"\n" +"extremely dangerous." +msgstr "" + +#: i2p2www/pages/site/faq.html:522 +#, python-format +msgid "" +"If you would like more information on the socks proxy application anyway," +"\n" +"there are some helpful hints on the socks page." +msgstr "" + +#: i2p2www/pages/site/faq.html:529 +msgid "" +"Okay, here's a rundown of the default ports (everything is configurable\n" +"through various settings, of course):" +msgstr "" + +#: i2p2www/pages/site/faq.html:538 +msgid "" +"Internet-facing ports\n" +"Note: New installs as of release 0.7.8 do not use port 8887; they select " +"a random port\n" +"between 9000 and 31000 when the program is run for the first time.\n" +"The selected port is shown on the router configuration page." +msgstr "" + +#: i2p2www/pages/site/faq.html:546 +msgid "" +"Outbound UDP from the random port noted on the configuration page to " +"arbitrary remote UDP ports, allowing replies\n" +" " +msgstr "" + +#: i2p2www/pages/site/faq.html:551 +msgid "" +"Outbound TCP from random high ports to arbitrary remote TCP ports\n" +" " +msgstr "" + +#: i2p2www/pages/site/faq.html:556 +msgid "" +"(optional, but recommended) Inbound UDP to the port noted on configuration page from " +"arbitrary locations\n" +" " +msgstr "" + +#: i2p2www/pages/site/faq.html:561 +msgid "" +"(optional, but recommended) Inbound TCP to the port noted on configuration page from " +"arbitrary locations
    \n" +"Inbound TCP may be disabled on the configuration page." +msgstr "" + +#: i2p2www/pages/site/faq.html:567 +msgid "" +"Outbound UDP on port 123, allowing replies
    \n" +"This is necessary for I2P's internal time sync (via SNTP - \n" +"querying a random SNTP host in pool.ntp.org or another\n" +"server you specify)" +msgstr "" + +#: i2p2www/pages/site/faq.html:578 +msgid "" +"Local I2P ports, listening only to local connections by default,\n" +"except where noted:" +msgstr "" + +#: i2p2www/pages/site/faq.html:584 +msgid "" +"1900: UPnP SSDP UDP multicast listener.\n" +"Cannot be changed. Binds to all interfaces.\n" +"May be disabled on confignet.jsp." +msgstr "" + +#: i2p2www/pages/site/faq.html:591 +msgid "" +"2827: BOB bridge, a higher level socket API for clients\n" +"Disabled by default.\n" +"May be enabled/disabled on configclients.jsp.\n" +"May be changed in the bob.config file." +msgstr "" + +#: i2p2www/pages/site/faq.html:599 +msgid "" +"4444: HTTP proxy\n" +"May be disabled or changed on the i2ptunnel page in the router " +"console.\n" +"May also be configured to be bound to a specific interface or all " +"interfaces." +msgstr "" + +#: i2p2www/pages/site/faq.html:606 +msgid "" +"4445: HTTPS proxy\n" +"May be disabled or changed on the i2ptunnel page in the router " +"console.\n" +"May also be configured to be bound to a specific interface or all " +"interfaces." +msgstr "" + +#: i2p2www/pages/site/faq.html:613 +msgid "" +"6668: IRC proxy\n" +"May be disabled or changed on the i2ptunnel page in the router " +"console.\n" +"May also be configured to be bound to a specific interface or all " +"interfaces." +msgstr "" + +#: i2p2www/pages/site/faq.html:620 +msgid "" +"7652: UPnP HTTP TCP event listener.\n" +"Binds to the LAN address.\n" +"May be changed with advanced config i2np.upnp.HTTPPort=nnnn.\n" +"May be disabled on confignet.jsp." +msgstr "" + +#: i2p2www/pages/site/faq.html:628 +msgid "" +"7653: UPnP SSDP UDP search response listener.\n" +"Binds to all interfaces.\n" +"May be changed with advanced config i2np.upnp.SSDPPort=nnnn.\n" +"May be disabled on confignet.jsp." +msgstr "" + +#: i2p2www/pages/site/faq.html:636 +msgid "" +"7654: I2P Client Protocol port, used by client apps.\n" +"May be changed to a different port on\n" +"configclients.jsp" +"\n" +"but this is not recommended.\n" +"May be to bind to a different interface or all interfaces, or disabled, " +"on\n" +"configclients.jsp." +msgstr "" + +#: i2p2www/pages/site/faq.html:646 +msgid "" +"7655: UDP for SAM bridge, a higher level socket API for clients\n" +"Only opened when a SAM V3 client requests a UDP session.\n" +"May be enabled/disabled on configclients.jsp.\n" +"May be changed in the clients.config file with the SAM command line " +"option sam.udp.port=nnnn." +msgstr "" + +#: i2p2www/pages/site/faq.html:654 +msgid "" +"7656: SAM bridge, a higher level socket API for clients\n" +"Disabled by default for new installs as of release 0.6.5.\n" +"May be enabled/disabled on configclients.jsp.\n" +"May be changed in the clients.config file." +msgstr "" + +#: i2p2www/pages/site/faq.html:662 +msgid "" +"7657: Your router console\n" +"May be disabled in the clients.config file.\n" +"May also be configured to be bound to a specific interface or all " +"interfaces in that file." +msgstr "" + +#: i2p2www/pages/site/faq.html:669 +msgid "" +"7658: Your eepsite\n" +"May be disabled in the clients.config file.\n" +"May also be configured to be bound to a specific interface or all " +"interfaces in the jetty.xml file." +msgstr "" + +#: i2p2www/pages/site/faq.html:676 +msgid "" +"7659: Outgoing mail to smtp.postman.i2p\n" +"May be disabled or changed on the i2ptunnel page in the router " +"console.\n" +"May also be configured to be bound to a specific interface or all " +"interfaces." +msgstr "" + +#: i2p2www/pages/site/faq.html:683 +msgid "" +"7660: Incoming mail from pop.postman.i2p\n" +"May be disabled or changed on the i2ptunnel page in the router " +"console.\n" +"May also be configured to be bound to a specific interface or all " +"interfaces." +msgstr "" + +#: i2p2www/pages/site/faq.html:690 +msgid "" +"8998: mtn.i2p2.i2p (Monotone - disabled by default)\n" +"May be disabled or changed on the i2ptunnel page in the router " +"console.\n" +"May also be configured to be bound to a specific interface or all " +"interfaces." +msgstr "" + +#: i2p2www/pages/site/faq.html:697 +msgid "" +"31000: Local connection to the wrapper control channel port.\n" +"Outbound to 32000 only, does not listen on this port.\n" +"Starts at 31000 and will increment until 31999 looking for a free port.\n" +"To change, see the\n" +"wrapper documentation.\n" +"For more information see below." +msgstr "" + +#: i2p2www/pages/site/faq.html:707 +msgid "" +"32000: Local control channel for the service wrapper.\n" +"To change, see the\n" +"wrapper documentation.\n" +"For more information see below." +msgstr "" + +#: i2p2www/pages/site/faq.html:719 +msgid "" +"The local I2P ports and the I2PTunnel ports do not need to be reachable " +"from \n" +"remote machines, but *should* be reachable locally. You can also create" +" \n" +"additional ports for I2PTunnel instances via " +"http://localhost:7657/i2ptunnel/ \n" +"(and in turn, would need to get your firewall to allow you local access, " +"but \n" +"not remote access, unless desired)." +msgstr "" + +#: i2p2www/pages/site/faq.html:727 +msgid "" +"So, to summarize, nothing needs to be reachable by unsolicited remote " +"peers, but\n" +"if you can configure your NAT/firewall to allow inbound UDP and TCP the " +"outbound facing port, you'll" +"\n" +"get better performance. You will also need to be able to send outbound " +"UDP packets\n" +"to arbitrary remote peers (blocking IPs randomly with something like " +"PeerGuardian\n" +"only hurts you - don't do it)." +msgstr "" + +#: i2p2www/pages/site/faq.html:735 +msgid "Why is I2P listening on port 32000?" +msgstr "为什么 I2P 监听于 32000 端口?" + +#: i2p2www/pages/site/faq.html:737 +msgid "" +"The Tanuki java service wrapper that we use opens this port—bound " +"to localhost—in order \n" +"to communicate with software running inside the JVM. When the JVM is " +"launched it is given a key \n" +"so it can connect to the wrapper. After the JVM establishes its " +"connection \n" +"to the wrapper, the wrapper refuses any additional connections." +msgstr "" + +#: i2p2www/pages/site/faq.html:743 +msgid "" +"More information can be found in the \n" +"wrapper documentation." +msgstr "" + +#: i2p2www/pages/site/faq.html:750 +msgid "" +"An I2P router only needs to be seeded once, to join the network for the " +"first time.\n" +"Reseeding is nothing more than sending plain HTTP GET requests\n" +"to fetch a directory listing and download multiple \"routerInfo\" files\n" +"from a predefined reseed URL." +msgstr "" + +#: i2p2www/pages/site/faq.html:757 +msgid "" +"A typical symptom of a failed reseed is the \"Known\" indicator\n" +"(on the left sidebar of the router console) displaying a very small value" +"\n" +"(often less than 5) which does not increase. This can occur, among other " +"things,\n" +"if your firewall limits outbound traffic, and blocked the reseed request." +msgstr "" + +#: i2p2www/pages/site/faq.html:764 +msgid "To reseed an I2P router manually, do the following:" +msgstr "" + +#: i2p2www/pages/site/faq.html:767 +msgid "Stop your I2P router" +msgstr "" + +#: i2p2www/pages/site/faq.html:770 +msgid "" +"Open http://netdb.i2p2.de/ using a " +"web browser" +msgstr "" + +#: i2p2www/pages/site/faq.html:773 +msgid "Save a dozen \"routerInfo\" files to your I2P \"netDb\" directory" +msgstr "" + +#: i2p2www/pages/site/faq.html:780 +msgid "Start your I2P router" +msgstr "" + +#: i2p2www/pages/site/faq.html:787 +msgid "" +"When trying to start the router using \"i2prouter start\", you may see " +"output like the following:" +msgstr "" + +#: i2p2www/pages/site/faq.html:792 +msgid "" +"\n" +"In order to be inclusive and try to ensure that I2P will run on as many " +"systems \n" +"as possible, up until I2P 0.8.9 we used a java wrapper \n" +"compiled for FreeBSD 6.x. If you're receiving this error you most likely " +"are missing the necessary compatibility libraries.\n" +"These libraries may be installed by performing the following steps:" +msgstr "" + +#: i2p2www/pages/site/faq.html:800 +msgid "" +"Switch to the root user with su or log in as " +"root." +msgstr "" + +#: i2p2www/pages/site/faq.html:806 +#, python-format +msgid "" +"If you cannot install these compatibility libraries (or do not want to), " +"other\n" +"possibilities would be to compile the wrapper for your\n" +"system, starting I2P with the runplain.sh script, or you" +" can\n" +"replace the wrapper with one from the source tarball." +msgstr "" + +#: i2p2www/pages/site/faq.html:812 +msgid "" +"For the 0.8.9 release of I2P, the wrapper was upgraded to v3.5.12 and " +"compiled on systems running FreeBSD 7.2." +msgstr "" + +#: i2p2www/pages/site/faq.html:816 +msgid "" +"In wrapper.log I see an error that states \"Protocol " +"family unavailable\" when loading the Router Console" +msgstr "" + +#: i2p2www/pages/site/faq.html:818 +msgid "" +"Often this error will occur with any network enabled java software on " +"some systems that are configured to use IPv6 by default. There are a few " +"ways to solve this:" +msgstr "" + +#: i2p2www/pages/site/faq.html:823 +msgid "" +"On Linux based systems, you can echo 0 > " +"/proc/sys/net/ipv6/bindv6only" +msgstr "" + +#: i2p2www/pages/site/faq.html:825 +msgid "Look for the following lines in wrapper.config." +msgstr "" + +#: i2p2www/pages/site/faq.html:829 +msgid "" +"If the lines are there, uncomment them by removing the \"#\"s. If the " +"lines are not there, add them without the \"#\"s." +msgstr "" + +#: i2p2www/pages/site/faq.html:832 +msgid "" +"Another option would be to remove the ::1 from " +"~/.i2p/clients.config" +msgstr "" + +#: i2p2www/pages/site/faq.html:836 +msgid "" +"WARNING: For any changes to wrapper.config " +"to take effect, you must completely\n" +"stop the router and the wrapper. Clicking Restart on your\n" +"router console will NOT reread this file! You must\n" +"click Shutdown, wait 11 minutes, then start I2P." +msgstr "" + +#: i2p2www/pages/site/faq.html:847 +#, python-format +msgid "" +"Great! Find us on IRC irc.freenode.net #i2p or post to\n" +"the forum and we'll post it here (with\n" +"the answer, hopefully)." +msgstr "" + +#: i2p2www/pages/site/impressum.html:4 +msgid "German laws" +msgstr "德国法律" + +#: i2p2www/pages/site/index.html:2 +msgid "I2P Anonymous Network" +msgstr "I2P 匿名网络" + +#: i2p2www/pages/site/index.html:4 +msgid "" +"Anonymous peer-to-peer distributed communication layer built with open " +"source tools and designed to run any traditional Internet service such as" +" email, IRC or web hosting." +msgstr "通过开源工具设计建立的匿名点对点分布式通讯层,可以允许任意传统网络服务例如 电邮,IRC 或 Web 托管。" + +#: i2p2www/pages/site/index.html:7 +msgid "What does I2P do for you?" +msgstr "I2P 能为您做什么?" + +#: i2p2www/pages/site/index.html:8 +msgid "" +"The I2P network provides strong privacy protections for communication " +"over the Internet. Many activities that would risk your privacy on the " +"public Internet can be conducted anonymously inside I2P." +msgstr "I2P 网络为通过 Internet 进行的通讯提供强有力的隐私保护。很多在公网上可能威胁用户隐私的活动可以在 I2P 中匿名进行。" + +#: i2p2www/pages/site/index.html:9 +#, python-format +msgid "Get I2P %(version)s" +msgstr "下载 I2P %(version)s" + +#: i2p2www/pages/site/index.html:13 +msgid "What is I2P?" +msgstr "I2P 是什么?" + +#: i2p2www/pages/site/index.html:15 +msgid "" +"I2P is an anonymous overlay network - a network within a network. It is " +"intended to protect communication from dragnet surveillance and " +"monitoring by third parties such as ISPs.\n" +msgstr "" + +#: i2p2www/pages/site/index.html:18 +msgid "" +"I2P is used by many people who care about their privacy: activists, " +"oppressed people, journalists and whistleblowers, as well as the average " +"person.\n" +msgstr "" + +#: i2p2www/pages/site/index.html:21 +msgid "" +"No network can be \"perfectly anonymous\". The continued goal of I2P is " +"to make attacks more and more difficult to mount. Its anonymity will get " +"stronger as the size of the network increases and with ongoing academic " +"review.\n" +msgstr "" + +#: i2p2www/pages/site/index.html:24 +msgid "" +"I2P is available on desktops, embedded systems (like the Raspberry Pi) " +"and Android phones. Help spread the word!\n" +msgstr "" + +#: i2p2www/pages/site/index.html:28 +msgid "Read more…" +msgstr "了解更多 …" + +#: i2p2www/pages/site/index.html:33 +msgid "What can you do with I2P?" +msgstr "我能用 I2P 做什么?" + +#: i2p2www/pages/site/index.html:36 +#, python-format +msgid "" +"Email: Integrated web mail interface," +" plugin for serverless email." +msgstr "" + +#: i2p2www/pages/site/index.html:41 +#, python-format +msgid "" +"Web browsing: Anonymous " +"websites, gateways to and from the public Internet." +msgstr "" + +#: i2p2www/pages/site/index.html:46 +#, python-format +msgid "" +"Blogging and forums: " +"Blogging and Syndie plugins." +msgstr "" + +#: i2p2www/pages/site/index.html:51 +#, python-format +msgid "" +"Website hosting: Integrated" +" anonymous web server." +msgstr "" + +#: i2p2www/pages/site/index.html:56 +#, python-format +msgid "" +"Real-time chat: Instant " +"messaging and IRC clients." +msgstr "" + +#: i2p2www/pages/site/index.html:61 +#, python-format +msgid "" +"File sharing: ED2K and " +"Gnutella clients, integrated BitTorrent client." +msgstr "" + +#: i2p2www/pages/site/index.html:66 +#, python-format +msgid "" +"Decentralized file " +"storage: Tahoe-LAFS distributed filesystem plugin." +msgstr "" + +#: i2p2www/pages/site/index.html:71 +#, python-format +msgid "More supported applications…" +msgstr "更多支持的应用 …" + +#: i2p2www/pages/site/index.html:79 +msgid "News & Updates" +msgstr "新闻 & 更新" + +#: i2p2www/pages/site/links.html:4 +msgid "Recommended Links & Resources" +msgstr "推荐链接 & 资源" + +#: i2p2www/pages/site/links.html:5 +#, python-format +msgid "" +"See also the page with\n" +"links to presentations, videos, and tutorials about" +" I2P." +msgstr "" +"同时请看\n" +"有关 I2P 的演讲、视频及教程。" + +#: i2p2www/pages/site/links.html:12 +msgid "Friends of I2P" +msgstr "I2P 之友" + +#: i2p2www/pages/site/links.html:24 +msgid "More Projects and Documentation" +msgstr "更多项目和文档" + +#: i2p2www/pages/site/links.html:34 +msgid "Press" +msgstr "新闻" + +#: i2p2www/pages/site/links.html:38 +msgid "Boards, newssite, others" +msgstr "论坛,新闻站,其它" + +#: i2p2www/pages/site/links.html:42 +msgid "Very Old Stuff" +msgstr "" + From 3d9e74220fa3f269837c5c0bfd63ba7c272603c3 Mon Sep 17 00:00:00 2001 From: str4d Date: Sat, 21 Sep 2013 19:37:05 +0000 Subject: [PATCH 631/650] Fixed button overlap on front page --- i2p2www/static/styles/duck/default.css | 1 - i2p2www/static/styles/duck/desktop.css | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/i2p2www/static/styles/duck/default.css b/i2p2www/static/styles/duck/default.css index e95432d0..17403fbc 100644 --- a/i2p2www/static/styles/duck/default.css +++ b/i2p2www/static/styles/duck/default.css @@ -78,7 +78,6 @@ div#content .main h1 { .main .get-i2p { display:block; top:50%; - height:1em; padding:.5em; line-height:1em; font-size:2em; diff --git a/i2p2www/static/styles/duck/desktop.css b/i2p2www/static/styles/duck/desktop.css index 5759ec8c..d4a3d500 100644 --- a/i2p2www/static/styles/duck/desktop.css +++ b/i2p2www/static/styles/duck/desktop.css @@ -227,7 +227,7 @@ div#content .main { text-shadow:1px 1px 2px rgba(0,0,0,.3); color:white; margin-bottom:.5em;} .main .get-i2p { position:absolute; display:block; top:50%; right: 10%; - margin-top:-1em; height:1em; padding:.5em; line-height:1em; + margin-top:-1em; max-width:20%; padding:.5em; line-height:1em; font-size:2em; color:white; font-family:Arial, Helvetica, sans-serif; font-weight:bold; text-transform:uppercase; text-decoration:none; text-align:center; background:green; border-radius:.3em; -moz-transform:rotate(-5deg); From 2d17699e04afae95109235d08372163866c7d072 Mon Sep 17 00:00:00 2001 From: str4d Date: Mon, 30 Sep 2013 00:48:08 +0000 Subject: [PATCH 632/650] Added modified DREAD rating support to threat model TODO: The ratings are all currently set to low, and MUST be discussed and set properly before site launch. --- i2p2www/pages/site/docs/how/threat-model.html | 136 ++++++++++++++++-- i2p2www/static/styles/duck/default.css | 13 ++ 2 files changed, 134 insertions(+), 15 deletions(-) diff --git a/i2p2www/pages/site/docs/how/threat-model.html b/i2p2www/pages/site/docs/how/threat-model.html index 4e544193..435ff3fb 100644 --- a/i2p2www/pages/site/docs/how/threat-model.html +++ b/i2p2www/pages/site/docs/how/threat-model.html @@ -2,6 +2,45 @@ {% block title %}{% trans %}I2P's Threat Model{% endtrans %}{% endblock %} {% block lastupdated %}{% trans %}November 2010{% endtrans %}{% endblock %} {% block accuratefor %}0.8.1{% endblock %} + +{% macro get_level(num) %} +{%- if num == 1 %}{{ _('low') }} +{%- elif num == 2 %}{{ _('medium') }} +{%- elif num == 3 %}{{ _('high') }} +{%- else %}ERR_INVALID +{%- endif %} +{%- endmacro %} + +{% macro calculate_severity(Da, R, A) %} +{%- if R + A > 4 %}{{ caller(Da + 2) }} +{%- elif R + A > 3 %}{{ caller(Da + 1) }} +{%- else %}{{ caller(Da) }} +{%- endif %} +{%- endmacro %} + +{% macro calculate_priority(Da, R, E, A, Di) %} +{%- call(severity) calculate_severity(Da, R, A) %} +{%- if E == 3 and Di == 3 %}{{ severity + 4 }} +{%- elif (E == 3 and Di == 2) or ( E == 2 and Di == 3) %}{{ severity + 3}} +{%- elif (E == 3 and Di == 1) or ( E == 1 and Di == 3) %}{{ severity + 2}} +{%- elif E == 2 and Di == 2 %}{{ severity + 1}} +{%- else %}{{ severity }} +{%- endif %} +{%- endcall %} +{%- endmacro %} + +{% macro DREAD_score(Da, R, E, A, Di) %} +
      +
    • {{ _('Damage Potential') }}: {{ get_level(Da) }}
    • +
    • {{ _('Reliability') }}: {{ get_level(R) }}
    • +
    • {{ _('Exploitability') }}: {{ get_level(E) }}
    • +
    • {{ _('Affected Users') }}: {{ get_level(A) }}
    • +
    • {{ _('Discoverability') }}: {{ get_level(Di) }}
    • +
    • {{ _('Severity') }}: {% call(S) calculate_severity(Da, R, A) %}{{ S }}{% endcall %}/5
    • +
    • {{ _('Priority') }}: {{ calculate_priority(Da, R, E, A, Di) }}/10
    • +
    +{% endmacro %} + {% block content %}

    {% trans %}What do we mean by "anonymous"?{% endtrans %}

    @@ -75,7 +114,7 @@ the current implementation does not. {%- endtrans %}

    -

    {% trans %}The Threat Model (Attacks){% endtrans %}

    +

    {% trans %}The Threat Model{% endtrans %}

    {% trans -%} I2P design started in 2003, not long after the advent of [Onion Routing], @@ -118,7 +157,25 @@ The to review. {%- endtrans %}

    -

    {% trans %}Index{% endtrans %}

    +

    {% trans DREAD='https://blogs.msdn.com/b/david_leblanc/archive/2007/08/13/dreadful.aspx' -%} +Attacks are judged using the modified DREAD model: +{%- endtrans %}

    + +
      +
    • {{ _('Damage Potential') }}: {% trans %}If a threat exploit occurs, how much damage will be caused?{% endtrans %}
    • +
    • {{ _('Reliability') }}: {% trans %}How reliable is the attack?{% endtrans %}
    • +
    • {{ _('Exploitability') }}: {% trans %}What is needed to exploit this threat?{% endtrans %}
    • +
    • {{ _('Affected Users') }}: {% trans %}How many users will be affected?{% endtrans %}
    • +
    • {{ _('Discoverability') }}: {% trans %}How easy is it to discover this threat?{% endtrans %}
    • +
    + +

    {% trans DREAD='https://blogs.msdn.com/b/david_leblanc/archive/2007/08/13/dreadful.aspx' -%} +Each category is given a rating of low, medium or high. The severity +and priority scores are calculated using the equations outlined +here. +{%- endtrans %}

    + +

    {% trans %}Index of Attacks{% endtrans %}

    • {% trans %}Brute force attacks{% endtrans %}
    • {% trans %}Timing attacks{% endtrans %}
    • @@ -142,6 +199,8 @@ to review.

      {% trans %}Brute force attacks{% endtrans %}

      +{{ DREAD_score(1, 1, 1, 1, 3) }} +

      {% trans -%} A brute force attack can be mounted by a global passive or active adversary, watching all the messages pass between all of the nodes and attempting to correlate @@ -184,6 +243,8 @@ are discussed on the

      {% trans %}Timing attacks{% endtrans %}

      +{{ DREAD_score(1, 1, 1, 1, 1) }} +

      {% trans -%} I2P's messages are unidirectional and do not necessarily imply that a reply will be sent. However, applications on top of I2P will most likely have @@ -219,6 +280,8 @@ References: Low-Resource Routing Attacks Against Anonymous S

      {% trans %}Intersection attacks{% endtrans %}

      +{{ DREAD_score(1, 1, 1, 1, 1) }} +

      {% trans -%} Intersection attacks against low latency systems are extremely powerful - periodically make contact with the target and keep track of what peers are on @@ -301,12 +364,13 @@ Reference: One Cell Enough There are a whole slew of denial of service attacks available against I2P, each with different costs and consequences: {%- endtrans %}

      -
        -
      • {% trans -%} + +{{ DREAD_score(1, 1, 1, 1, 1) }} +

        {% trans -%} Greedy user attack: This is simply people trying to consume significantly more resources than they are willing to contribute. The defense against this is: -{%- endtrans %} +{%- endtrans %}

        • {% trans comparisons=site_url('comparison') -%} Set defaults so that most users provide resources to the network. @@ -323,8 +387,10 @@ metrics such as "share ratio" so that users may see what they are contributing. Maintain a strong community with blogs, forums, IRC, and other means of communication. {%- endtrans %}
        -
      • -
      • {% trans peerselection=site_url('docs/how/peer-selection') -%} +
        + +{{ DREAD_score(1, 1, 1, 1, 1) }} +

        {% trans peerselection=site_url('docs/how/peer-selection') -%} Starvation attack: A hostile user may attempt to harm the network by creating a significant number of peers in the network who are not identified as being under control of the same entity (as with Sybil). These nodes then @@ -340,8 +406,11 @@ them, or using them rarely. We have significantly enhanced the ability to recognize and avoid troublesome peers; however there are still significant efforts required in this area. -{%- endtrans %}

      • -
      • {% trans todo=site_url('get-involved/todo') -%} +{%- endtrans %}

        +
        + +{{ DREAD_score(1, 1, 1, 1, 1) }} +

        {% trans todo=site_url('get-involved/todo') -%} Flooding attack: A hostile user may attempt to flood the network, a peer, a destination, or a tunnel. Network and peer flooding is possible, and I2P does nothing to prevent standard IP layer flooding. The flooding of @@ -356,8 +425,11 @@ larger load. If, on the other hand, the load is more than the client can deal with, they can instruct the tunnels to throttle the number of messages or bytes they should pass on (once the advanced tunnel operation is implemented). -{%- endtrans %}

      • -
      • {% trans -%} +{%- endtrans %}

        +
        + +{{ DREAD_score(1, 1, 1, 1, 1) }} +

        {% trans -%} CPU load attack: There are currently some methods for people to remotely request that a peer perform some cryptographically expensive operation, and a hostile attacker could use these to flood that peer with @@ -366,8 +438,11 @@ engineering practices and potentially requiring nontrivial certificates (e.g. HashCash) to be attached to these expensive requests should mitigate the issue, though there may be room for an attacker to exploit various bugs in the implementation. -{%- endtrans %}

      • -
      • {% trans peerselection=site_url('docs/how/peer-selection'), +{%- endtrans %}

        +
        + +{{ DREAD_score(1, 1, 1, 1, 1) }} +

        {% trans peerselection=site_url('docs/how/peer-selection'), netdb=site_url('docs/how/network-database') -%} Floodfill DOS attack: A hostile user may attempt to harm the network by becoming a floodfill router. The current defenses against unreliable, @@ -379,10 +454,13 @@ Some defenses and however there is much more to do. For more information see the network database page. -{%- endtrans %}

      • -
      +{%- endtrans %}

      +

      {% trans %}Tagging attacks{% endtrans %}

      + +{{ DREAD_score(1, 1, 1, 1, 1) }} +

      {% trans todo=site_url('get-involved/todo') -%} Tagging attacks - modifying a message so that it can later be identified further along the path - are by themselves impossible in I2P, as messages @@ -399,6 +477,8 @@ as the links are encrypted and messages signed.

      {% trans %}Partitioning attacks{% endtrans %}

      +{{ DREAD_score(1, 1, 1, 1, 1) }} +

      {% trans -%} Partitioning attacks - finding ways to segregate (technically or analytically) the peers in a network - are important to keep in mind when dealing with a @@ -437,6 +517,8 @@ Also discussed on the network database page (bo

      {% trans %}Predecessor attacks{% endtrans %}

      +{{ DREAD_score(1, 1, 1, 1, 1) }} +

      {% trans -%} The predecessor attack is passively gathering statistics in an attempt to see what peers are 'close' to the destination by participating in their tunnels and @@ -479,6 +561,9 @@ which is an update to the 2004 predecessor attack paper

      {% trans %}Harvesting attacks{% endtrans %}

      + +{{ DREAD_score(1, 1, 1, 1, 1) }} +

      {% trans -%} "Harvesting" means compiling a list of users running I2P. It can be used for legal attacks and to help @@ -523,6 +608,9 @@ enact other restricted route methods.

      {% trans %}Identification Through Traffic Analysis{% endtrans %}

      + +{{ DREAD_score(1, 1, 1, 1, 1) }} +

      {% trans transport=site_url('docs/transport') -%} By inspecting the traffic into and out of a router, a malicious ISP or state-level firewall could identify that a computer is running I2P. @@ -581,6 +669,8 @@ Reference: Breaking and Improving Protocol Obfuscation

      {% trans %}Sybil attacks{% endtrans %}

      +{{ DREAD_score(1, 1, 1, 1, 1) }} +

      {% trans -%} Sybil describes a category of attacks where the adversary creates arbitrarily large numbers of colluding nodes and uses the increased numbers to help @@ -627,6 +717,9 @@ for more Sybil discussion.

      {% trans %}Buddy Exhaustion attacks{% endtrans %}

      + +{{ DREAD_score(1, 1, 1, 1, 1) }} +

      {% trans pdf='http://www.eecs.berkeley.edu/~pmittal/publications/nisan-torsk-ccs10.pdf' -%} (Reference: In Search of an Anonymouns and Secure Lookup Section 5.2) {%- endtrans %}

      @@ -650,6 +743,8 @@ Further research and defenses may be necessary.

      {% trans %}Cryptographic attacks{% endtrans %}

      +{{ DREAD_score(1, 1, 1, 1, 1) }} +

      {% trans cryptography=site_url('docs/how/cryptography') -%} We use strong cryptography with long keys, and we assume the security of the industry-standard cryptographic primitives used in I2P, as documented @@ -689,6 +784,9 @@ end to end messages include simple random padding.

      {% trans %}Floodfill Anonymity attacks{% endtrans %}

      + +{{ DREAD_score(1, 1, 1, 1, 1) }} +

      {% trans netdb=site_url('docs/how/network-database') -%} In addition to the floodfill DOS attacks described above, floodfill routers are uniquely positioned @@ -716,6 +814,9 @@ Several scenarios are discussed on the

      {% trans %}Central Resource Attacks{% endtrans %}

      + +{{ DREAD_score(1, 1, 1, 1, 1) }} +

      {% trans -%} There are a few centralized or limited resources (some inside I2P, some not) that could be attacked or used as a vector for attacks. @@ -769,6 +870,8 @@ and would shrink the network (in the short-to-medium term), just as the loss of

      {% trans %}Development attacks{% endtrans %}

      +{{ DREAD_score(1, 1, 1, 1, 1) }} +

      {% trans -%} These attacks aren't directly on the network, but instead go after its development team by either introducing legal hurdles on anyone contributing to the development @@ -807,6 +910,9 @@ should any defense be necessary. {%- endtrans %}

      {% trans %}Implementation attacks (bugs){% endtrans %}

      + +{{ DREAD_score(1, 1, 1, 1, 1) }} +

      {% trans -%} Try as we might, most nontrivial applications include errors in the design or implementation, and I2P is no exception. There may be bugs that could be exploited to diff --git a/i2p2www/static/styles/duck/default.css b/i2p2www/static/styles/duck/default.css index 17403fbc..d1b7f60d 100644 --- a/i2p2www/static/styles/duck/default.css +++ b/i2p2www/static/styles/duck/default.css @@ -175,6 +175,7 @@ div#content .inner h1, div#content .inner h2, div#content .inner h3, div#content margin:1em 0 .5em; border-bottom:1px solid white; padding-bottom:.2em; + clear:both; } div#content .inner h1 { @@ -247,6 +248,18 @@ div#content .inner td.blue { padding: 5px; } +/* + * Threat model + */ + +div#content .inner ul.DREAD { + border: 2px solid red; + float: left; + list-style: none; + margin: 1em 1.5em 1em 0; + padding: 0.5em; +} + /* * Additions to syntax.css */ From 6a2f6c5ce32dbad943e815deafde263e8b780d99 Mon Sep 17 00:00:00 2001 From: str4d Date: Mon, 30 Sep 2013 02:31:56 +0000 Subject: [PATCH 633/650] Fixed priority range --- i2p2www/pages/site/docs/how/threat-model.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/i2p2www/pages/site/docs/how/threat-model.html b/i2p2www/pages/site/docs/how/threat-model.html index 435ff3fb..3105e84a 100644 --- a/i2p2www/pages/site/docs/how/threat-model.html +++ b/i2p2www/pages/site/docs/how/threat-model.html @@ -37,7 +37,7 @@

    • {{ _('Affected Users') }}: {{ get_level(A) }}
    • {{ _('Discoverability') }}: {{ get_level(Di) }}
    • {{ _('Severity') }}: {% call(S) calculate_severity(Da, R, A) %}{{ S }}{% endcall %}/5
    • -
    • {{ _('Priority') }}: {{ calculate_priority(Da, R, E, A, Di) }}/10
    • +
    • {{ _('Priority') }}: {{ calculate_priority(Da, R, E, A, Di) }}/9
    {% endmacro %} From 8970f6541c1537eaf8310aca3a7c715000329913 Mon Sep 17 00:00:00 2001 From: str4d Date: Mon, 30 Sep 2013 11:37:21 +0000 Subject: [PATCH 634/650] Updated papers --- i2p2www/pages/papers/anonbib.bib | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/i2p2www/pages/papers/anonbib.bib b/i2p2www/pages/papers/anonbib.bib index da5f5e32..68ea60f1 100644 --- a/i2p2www/pages/papers/anonbib.bib +++ b/i2p2www/pages/papers/anonbib.bib @@ -82,6 +82,25 @@ www_section = traffic, } +%% hal-00744902, version 1 +%% http://hal.inria.fr/hal-00744902 +@inproceedings{timpanaro:hal-00744902, + hal_id = {hal-00744902}, + url = {http://hal.inria.fr/hal-00744902}, + title = {{I2P's Usage Characterization}}, + author = {Timpanaro, Juan Pablo and Chrisment, Isabelle and Festor, Olivier}, + abstract = {{We present the first monitoring study aiming to characterize the usage of the I2P network, a low-latency anonymous network based on garlic routing. We design a distributed monitoring architecture for the I2P network and show through three one-week measurement experiments the ability of the system to identify a significant number of all running applications, among web servers and file-sharing clients. Additionally, we identify 37\% of published I2P applications, which turn out to be unreachable after their publication on the I2P distributed database.}}, + language = {English}, + affiliation = {MADYNES - INRIA Nancy - Grand Est / LORIA}, + booktitle = {{Proceedings of the 4th International Workshop on Traffic Monitoring and Analysis (TMA 2012)}}, + address = {Vienne, Austria}, + audience = {international }, + year = {2012}, + month = Mar, + www_pdf = {http://hal.inria.fr/hal-00744902/PDF/TMA2012-LNCS.pdf}, + www_section = traffic, +} + @misc{ehlert2011:usability-comparison-i2p-tor, title = {I2P Usability vs. Tor Usability A Bandwidth and Latency Comparison}, author = {Mathias Ehlert}, @@ -132,12 +151,12 @@ @inproceedings{BlackHat2011-crenshaw, url = {http://www.irongeek.com/i.php?page=security/darknets-i2p-identifying-hidden-servers}, - title = {Darknets - I2P Identifying Hidden Servers}, + title = {Darknets and hidden servers: Identifying the true IP/network identity of I2P service hosts}, author = {Adrian Crenshaw}, - booktitle = {Proceedings of Black Hat}, + booktitle = {Proceedings of Black Hat 2011}, year = {2011}, month = {January}, - location = {DC}, + location = {Washington, DC}, www_pdf_url = {http://www.irongeek.com/downloads/Identifying%20the%20true%20IP%20of%20I2P%20service%20hosts.pdf}, www_section = traffic, } From 6c1b78a86a9f9a6d4bf11e9920555409e8e4a0a0 Mon Sep 17 00:00:00 2001 From: str4d Date: Mon, 30 Sep 2013 11:38:12 +0000 Subject: [PATCH 635/650] Added list of sites with I2P info pages (that might need regular updating) --- i2p2www/pages/site/links.html | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/i2p2www/pages/site/links.html b/i2p2www/pages/site/links.html index 33abeda0..63b096e0 100644 --- a/i2p2www/pages/site/links.html +++ b/i2p2www/pages/site/links.html @@ -9,6 +9,14 @@ See also the page with