From ed19b23c9242378de1cc9e279029da5b9c073945 Mon Sep 17 00:00:00 2001 From: duck Date: Sat, 31 Jul 2010 15:24:13 +0000 Subject: [PATCH 01/75] 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 02/75] 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 03/75] 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 04/75] 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 05/75] 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 06/75] 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 %}
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 07/75] 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 08/75] 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 09/75] 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 10/75] 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 11/75] 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 12/75] 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() }}