Compare commits
553 Commits
i2pbote_0_
...
i2pbote_0_
Author | SHA1 | Date | |
---|---|---|---|
616df8de9f | |||
427e293bac | |||
163f8d58c0 | |||
43e34eb221 | |||
c2d1334c04 | |||
a05890eaec | |||
2a744fb1cd | |||
ed60728edd | |||
48e69d3cd5 | |||
df09332ead | |||
585413fa2b | |||
68c48cb332 | |||
ae87a801ea | |||
901b051546 | |||
6590e3122a | |||
e601b5f46e | |||
641085ab24 | |||
5d371f983a | |||
8fc111fc86 | |||
2dc809c025 | |||
7b0149dc39 | |||
24509df2b5 | |||
263b68550e | |||
ae3ac8b5be | |||
7c22899f32 | |||
3970d6d015 | |||
4464301119 | |||
f0622d202b | |||
63e260f932 | |||
87ad8db92a | |||
cc7e0209ec | |||
1a4c25a32f | |||
79339a0208 | |||
249389a4d3 | |||
92a5a998d6 | |||
e1a49cf440 | |||
e30cb79c5f | |||
49268b21ea | |||
74384e0517 | |||
9bfde0ac33 | |||
55d5ea6084 | |||
0e36c3dcc3 | |||
0155e5f57f | |||
a2b3833602 | |||
200d9ceb3d | |||
69fd2431c8 | |||
66020b2fc7 | |||
34e76ce627 | |||
79393f0ea8 | |||
c4cdbb98cc | |||
eda69d1e7e | |||
1f2c528b9b | |||
6a99b034b7 | |||
17db81eee1 | |||
d50c843145 | |||
7cbf364407 | |||
bd8674950e | |||
0a0418f83f | |||
a5832cd1e4 | |||
ccbc2c3e01 | |||
d5c6c2d046 | |||
d8a606946e | |||
dbaa00d5b1 | |||
844bfcb842 | |||
882a6d207a | |||
730aff2a50 | |||
de6d2d60a9 | |||
a724a521cd | |||
eaaf3c90e4 | |||
a0febacdfd | |||
2f0cb066ab | |||
fc89896246 | |||
e9c262c8b7 | |||
093e439e04 | |||
bf07f9c664 | |||
bba9ac405a | |||
a0457273b7 | |||
e6a330944d | |||
20940f209b | |||
bbc71ad13c | |||
64917757a4 | |||
b966ebbcfd | |||
ca7f4124c4 | |||
b24fe46661 | |||
1db3aee096 | |||
db5a566e15 | |||
f485c68472 | |||
78013d6725 | |||
261d05a1d6 | |||
4a79a28d28 | |||
844a7a24fe | |||
9937ec73f9 | |||
54629d8d05 | |||
15dcd78936 | |||
087a4a68be | |||
7829c44d0d | |||
476d06a588 | |||
53223be28d | |||
691b8ade1c | |||
7ac255ec94 | |||
cf84a6aeee | |||
15c45ad820 | |||
10100b8177 | |||
6adef679ac | |||
00411877ad | |||
7dc9f6caa0 | |||
dcb2b0f945 | |||
f396729698 | |||
0aff058acd | |||
55f363aa73 | |||
6fec35ce85 | |||
42001079b5 | |||
ab3d23a3af | |||
3b0c9774e5 | |||
8b44166b90 | |||
46ca0add8a | |||
6e967b2365 | |||
bc72ebb865 | |||
e204d01fa2 | |||
4a05868f11 | |||
6400913229 | |||
d7d3f2f01c | |||
f9014d7b7b | |||
a64ece90c2 | |||
e8f16cc83c | |||
d7b7355dd1 | |||
816cf49b8c | |||
bf2e2224c9 | |||
2824c9a773 | |||
1dbbcd8b78 | |||
d7d6257a36 | |||
020ef33b95 | |||
8cfe4c5660 | |||
e04deb28a1 | |||
fc0837ede4 | |||
3ade199175 | |||
7bffe19e9e | |||
3ffcf9d8d3 | |||
111b3d8dbb | |||
e177cd4567 | |||
a0ce9017a9 | |||
bc1848ddcf | |||
1f595fc079 | |||
22c0b789c4 | |||
967286aed0 | |||
ef357a5f2a | |||
9fb05ba42e | |||
f13743d7b9 | |||
549c39681d | |||
a3e8f657dd | |||
9cb3409a1a | |||
5e87d6fa2d | |||
902db81fa7 | |||
3cd0f09a41 | |||
d0204effa2 | |||
ec619dd830 | |||
10e3df428c | |||
e11f41d7f2 | |||
f7aae2de4e | |||
d1e4d1a715 | |||
9435b23ab2 | |||
bdffd2b8c4 | |||
590b9a9e05 | |||
86ec61db22 | |||
45f60e9242 | |||
56be74a167 | |||
14376afddb | |||
d2adcd64a7 | |||
13c19addff | |||
dad6a579c1 | |||
83d585f651 | |||
90ceef4583 | |||
0bf899e291 | |||
bbdfc5745b | |||
c3e6a437c9 | |||
dbe4400409 | |||
bb5d075a54 | |||
5d87d5ec00 | |||
d24eea365c | |||
abd4a55956 | |||
732b14115b | |||
4455fbb172 | |||
673d43cd86 | |||
b45a162826 | |||
b06d07b5d1 | |||
52ac133ffa | |||
4a240fbb5b | |||
252a7f0dad | |||
1cd51c811d | |||
dda1f5b585 | |||
fb5e1fc4c2 | |||
0e6a32a0a0 | |||
d9bc25e1aa | |||
b124a1046d | |||
cd21435b60 | |||
44130323ad | |||
ef339c29d0 | |||
8ea8e86d99 | |||
0edf2cfbe3 | |||
a4b284a71c | |||
e1b9eb5bbc | |||
f45a185502 | |||
be545c0836 | |||
6c10b8ac64 | |||
92ff6b58f0 | |||
1f54ed9ba8 | |||
19452867b4 | |||
1fe6c4fc36 | |||
57ead77d39 | |||
dd3ed14174 | |||
efc2363ade | |||
19a586b170 | |||
3851faff3f | |||
a583a1fcc3 | |||
0464c76884 | |||
2bc05d4d46 | |||
19970b1d53 | |||
035cd346a4 | |||
cb1d5bbf67 | |||
058d09d262 | |||
14c728c588 | |||
7823b38d24 | |||
cb76489c0f | |||
fb0352cd7e | |||
b7fcbb5829 | |||
80a04a70cb | |||
b48534b5f7 | |||
a1085909e1 | |||
dc7777be7f | |||
0ed58252d9 | |||
660b77c112 | |||
1c2fe9a481 | |||
dc2d8397ab | |||
926a06e53c | |||
7de621dc82 | |||
35bf2b930a | |||
307e4e8863 | |||
04569977d5 | |||
b11bd7b53b | |||
4f42050cf2 | |||
4b95f34430 | |||
e10933cc0e | |||
db4c3f23cd | |||
3ff443fcc8 | |||
3c302441ea | |||
250f12a69f | |||
cc15bff91b | |||
9b8828109c | |||
72e033e2ef | |||
08f96661fa | |||
7bfffe413c | |||
1425a641ae | |||
8ed88d1331 | |||
a99c08d0e7 | |||
c1191d803c | |||
844f1d3741 | |||
612753b39e | |||
cecccddc2e | |||
17073ed8cd | |||
efe14faae4 | |||
08aa68d257 | |||
2b9b19030f | |||
87b70ff7bc | |||
6776b87040 | |||
210ad7f767 | |||
3960e41534 | |||
32fc56754a | |||
082f553be4 | |||
bcb31dca0a | |||
a508fa1a0f | |||
dbf769a8cb | |||
f3825f3890 | |||
4125ada488 | |||
6a425d1880 | |||
173c89306f | |||
8c6e3bedfb | |||
db9a13d58d | |||
fa37238e00 | |||
2f10c2bb29 | |||
437686b1e6 | |||
53508009b9 | |||
49ff872b88 | |||
115688de03 | |||
346d0cd822 | |||
e51c29565e | |||
15f209844d | |||
86a50c7986 | |||
5d44198fef | |||
3ab31b8b16 | |||
4bbab19d14 | |||
d532c6117d | |||
63dc3ea208 | |||
82cb40e9bf | |||
ec0b072fca | |||
4718424d11 | |||
4300ce67e8 | |||
c58a8bb562 | |||
55859d669b | |||
e11e80832a | |||
e5f7e1e78f | |||
6893f5b487 | |||
d56ccaf436 | |||
1110bbe386 | |||
65290098e6 | |||
5fd314753b | |||
8dd98f2733 | |||
d33882848f | |||
0e174f870c | |||
6954e5c7a8 | |||
8de6a0ab07 | |||
d7cf897072 | |||
596d19d212 | |||
4e44fc204e | |||
277a535be4 | |||
1dbd6ebc4c | |||
bcf869586f | |||
6b5bc59775 | |||
17feb49b0a | |||
9625566913 | |||
b2a3308c2e | |||
89e5a195f8 | |||
e4c130f51f | |||
899c0f6796 | |||
fc1287a016 | |||
fd3ca21a0c | |||
789f8ddc3f | |||
bda40109ed | |||
8c44d3890d | |||
0e2b89dff1 | |||
7c46127738 | |||
d33b8da111 | |||
5d6c30f0bb | |||
7008c26545 | |||
b8597014dd | |||
0457bd307f | |||
eb446f8703 | |||
9df307365c | |||
fcd4fb63ed | |||
27713fb7b6 | |||
0db3ce5026 | |||
0f04c2c51a | |||
206be17615 | |||
2511c5b851 | |||
4db98b2c2b | |||
8d2d360180 | |||
7d7b509eb9 | |||
124ca1ba62 | |||
e9cd4a9f6c | |||
c627299a35 | |||
e0f183efa8 | |||
89395885ba | |||
a77309ab36 | |||
efd04f322c | |||
a12f90d432 | |||
5919da4930 | |||
2d291f1ce2 | |||
e299d2e83d | |||
76551e3d3f | |||
2f134bfbe4 | |||
c03c481b94 | |||
7d1fed76da | |||
7148172e9c | |||
5c102da3a0 | |||
f3a1c618e5 | |||
5c221f31d9 | |||
7ac42c0e4e | |||
4da3ee6aed | |||
3aecc56933 | |||
5ea124b7d2 | |||
7fb33a0d35 | |||
6d2878db5c | |||
9bee5057f1 | |||
bdce2ecad5 | |||
d3ee66ff60 | |||
647efead3b | |||
09f5d107c9 | |||
d33bc11a31 | |||
2d6066ad58 | |||
0bdd216ef0 | |||
75336e899d | |||
3870ca5335 | |||
5aaae853af | |||
a64cdca34e | |||
99f64adc05 | |||
05c24ab545 | |||
897d43ff51 | |||
46b9e3a039 | |||
018209bed5 | |||
fe14f97dfd | |||
f2b1d3cc1c | |||
0600b6e595 | |||
aab0b139d3 | |||
872c386929 | |||
23f57da28e | |||
7fbd29b75d | |||
b8fd5b5c1d | |||
c81f2cb46c | |||
6c859388c5 | |||
087b8ddc42 | |||
0eba059a8c | |||
7136ab215c | |||
3f867d8041 | |||
a8bb3652fe | |||
1672d95ae6 | |||
c3c832649c | |||
c115278016 | |||
a65653b30b | |||
d92f66720a | |||
0954398245 | |||
50da5ccc80 | |||
2b71438c82 | |||
1b5356e845 | |||
9c951dc2f1 | |||
117c35cc5a | |||
dbd46e2b4f | |||
a2c55a78fc | |||
c423b7331e | |||
a031f4da28 | |||
7573eed929 | |||
1e78638692 | |||
19ea512d79 | |||
b9155254d0 | |||
0ebe7e68c7 | |||
48340cb790 | |||
02b803fda7 | |||
4d306d5f85 | |||
388843a439 | |||
e03521821a | |||
ac77853485 | |||
ce664ebf8b | |||
93041cb1d4 | |||
d68fd5429e | |||
a7b4b9acc6 | |||
20841b7a4a | |||
e7f186b7f3 | |||
2a2adc6645 | |||
9989940693 | |||
f71f0e1470 | |||
3c7bd9acf6 | |||
1439358221 | |||
0895c3c976 | |||
8a6c6c2627 | |||
c3883bb069 | |||
4e5104ff52 | |||
ecf093119a | |||
cbd7a8dffb | |||
08cd5406f4 | |||
af2f63565f | |||
1b481dcf24 | |||
6ee5005944 | |||
b4b94ad38a | |||
aa4551fc14 | |||
9d77f57123 | |||
3115faedb2 | |||
4e7b0c115e | |||
c28c99060b | |||
d3a072c54b | |||
174a94f492 | |||
9f6806a738 | |||
809dc90bc8 | |||
c14faf5fc4 | |||
d9034fee31 | |||
c30180fcbf | |||
110a4bd484 | |||
06106c0b57 | |||
a006e3b688 | |||
d37911e5b1 | |||
b128693296 | |||
85d958a0cc | |||
ca1d5e6d8c | |||
245e50aaa9 | |||
4d0d5d245c | |||
f1d8554ab3 | |||
c76a33fa69 | |||
5a3e49c4dd | |||
2ad8d2ac8e | |||
d0c4fd7ca8 | |||
6b38f0d520 | |||
0105bb360a | |||
35d22a9638 | |||
2cce8c9a7a | |||
a525c3d920 | |||
8f090fd3e3 | |||
c36b24bad6 | |||
9b8fd8e6fc | |||
078f0952ef | |||
834331903e | |||
b112ad89f3 | |||
73f8295c9c | |||
c2da679543 | |||
ac46459a0d | |||
c663415ebc | |||
68f9360f40 | |||
e0436d1e43 | |||
a488294bb3 | |||
175345dfe4 | |||
78bb4f7366 | |||
29f485f4e2 | |||
b794aaf0e0 | |||
465d509bcc | |||
a4b25f0ae8 | |||
7feba2f15e | |||
2e72fb7f36 | |||
a225fa20b1 | |||
f87fe26811 | |||
d2b38a3f33 | |||
ef8a143eb0 | |||
e33d186ed0 | |||
0527c1f246 | |||
7ee570e375 | |||
c7182a27cf | |||
f972c9e2e6 | |||
29df785ab6 | |||
e3448c9b17 | |||
a3a8c77963 | |||
67dab8aaf7 | |||
7c2fc47933 | |||
0a3a2bedf8 | |||
38ab0630af | |||
d6be15ca4d | |||
77ec925d45 | |||
2bd6eac5af | |||
50673b6358 | |||
ee578e7b06 | |||
4025734680 | |||
2bbba38007 | |||
479b28f35f | |||
07a3340ffa | |||
69f289b0d9 | |||
308330c8a0 | |||
aac785dda8 | |||
6bd4cab290 | |||
816eb59c94 | |||
889a28063d | |||
a783a0ddb8 | |||
617122dfe1 | |||
e471ddd57a | |||
1999eb2432 | |||
a22eea0f66 | |||
62a1a85a8f | |||
00fbabded2 | |||
53a052382f | |||
66b970d22b | |||
2b5ce8cf27 | |||
408f63bdf9 | |||
1ce75177e9 | |||
0df770bc68 | |||
120de4af9e | |||
b557973e79 | |||
6b833622cf | |||
99baa56af3 | |||
95ac52b7ea | |||
e4696b2bad |
22
.tx/config
Normal file
@ -0,0 +1,22 @@
|
||||
[I2P.plugin_i2pbote]
|
||||
source_file = locale/messages_en.po
|
||||
source_lang = en
|
||||
trans.ar = locale/messages_ar.po
|
||||
trans.cs = locale/messages_cs.po
|
||||
trans.de = locale/messages_de.po
|
||||
trans.es = locale/messages_es.po
|
||||
trans.fr = locale/messages_fr.po
|
||||
trans.hu = locale/messages_hu.po
|
||||
trans.it = locale/messages_it.po
|
||||
trans.nl = locale/messages_nl.po
|
||||
trans.nb = locale/messages_nb.po
|
||||
trans.pl = locale/messages_pl.po
|
||||
trans.pt = locale/messages_pt.po
|
||||
trans.ru = locale/messages_ru.po
|
||||
trans.sv_SE = locale/messages_sv.po
|
||||
trans.uk_UA = locale/messages_uk.po
|
||||
trans.vi = locale/messages_vi.po
|
||||
trans.zh_CN = locale/messages_zh.po
|
||||
|
||||
[main]
|
||||
host = http://www.transifex.net
|
462
WebContent/FAQ.html
Normal file
@ -0,0 +1,462 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<title>Frequently Asked Questions</title>
|
||||
<meta http-equiv="Content-Language" content="English" />
|
||||
<meta name="Robots" content="index,follow" />
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
||||
<link rel="stylesheet" type="text/css" href="css/style.css" media="screen" />
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div id="wrap">
|
||||
|
||||
<div id="top">
|
||||
<div class="rights"> </div>
|
||||
<div id="search">
|
||||
|
||||
</div>
|
||||
<div class="lefts">
|
||||
<h1>I2P-Bote</h1>
|
||||
<h2>Secure Distributed Email</h2>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="topmenu">
|
||||
<div class="rights"></div>
|
||||
<div class="lefts"><ul>
|
||||
<li><a href="index.html" title="Home">HOME</a></li>
|
||||
<li><a href="download.html" title="Download I2P-Bote">DOWNLOAD</a></li>
|
||||
<li><a href="screenshots.html" title="Screenshots">SCREENSHOTS</a></li>
|
||||
<li><a href="userguide.html" title="User Guide">USER GUIDE</a></li>
|
||||
<li><a href="faq.html" title="Frequently Asked Questions">FAQ</a></li>
|
||||
<li><a href="http://forum.i2p/viewforum.php?f=35" title="Forum">FORUM</a></li>
|
||||
<li><a href="contact.html" title="Contact">CONTACT</a></li>
|
||||
|
||||
</ul></div>
|
||||
</div>
|
||||
|
||||
<div style="text-align: justify;" id="main">
|
||||
<div id="leftside">
|
||||
<p>
|
||||
<h2>Frequently Asked Questions</h2>
|
||||
</p>
|
||||
<p>
|
||||
<div class="date"></div>
|
||||
</p><p>
|
||||
<strong>What is I2P-Bote?</strong><br/>
|
||||
A peer-to-peer email program designed to protect your privacy.<br/>
|
||||
I2P-Bote is an end-to-end encrypted, network-internal, fully decentralized
|
||||
(serverless) e-mail system. It supports different identities and does
|
||||
not expose e-mail headers. Currently, it is still alpha software and
|
||||
can only by accessed via web console. It soon will have POP3 support,
|
||||
and it is planned to guarantee additional anonymity by providing a
|
||||
high-latency transport option. All bote-mails are automatically
|
||||
end-to-end encrypted, so that there's no need to set up e-mail
|
||||
encryption (though the option does exist), and bote-mails will be
|
||||
authenticated automatically. As
|
||||
it is decentralized, there is no e-mail server that could link
|
||||
different e-mail identities as communicating with each other
|
||||
(profiling): Even the nodes relaying the mails will not know the
|
||||
sender and apart from sender and receiver, only the end of the
|
||||
high-latency mail tunnel and the storing nodes will know to whom
|
||||
(anonymous identity) the mail is destined. The original sender can
|
||||
have gone offline, long before the mail becomes available on the
|
||||
other side. This adds on the degree of anonymity that can be reached
|
||||
with I2P-Bote. For those who do not want high delays: All these
|
||||
settings are be user-adjustable, so each user decides on how much
|
||||
anonymity he wants.
|
||||
</p>
|
||||
<div class="date"></div>
|
||||
|
||||
<p>
|
||||
<strong>Why is it named I2P-Bote?</strong><br/>
|
||||
Bote is the German word for messenger.
|
||||
</p>
|
||||
<div class="date"></div>
|
||||
|
||||
<p>
|
||||
<strong>Why I2P-Bote?</strong><br/>
|
||||
Because it's cool.
|
||||
And because I2P was lacking a decentralized e-mail service, and seeing
|
||||
the creation of such as an opportunity to improve on neglected
|
||||
anonymity aspects, it was decided to add an optional high-latency
|
||||
transport. You can use a normal e-mail account and end-to-end encrypt your mails, but
|
||||
they are still not anonymous. You can use anonymous server-bound e-mails, yet they are not automatically
|
||||
end-to-end encrypted.<br>
|
||||
Or you can use I2P-Bote in which your mails
|
||||
are anonymous and <i>automatically</i> end-to-end-encrypted.<br>In contrast
|
||||
to standard e-mail systems there is no need to setup an additional
|
||||
key management application. Everything you need is already there. <br/>But
|
||||
despite it being simple and easy to use, it still offers military
|
||||
grade encryption and options for extremely strong anonymity.
|
||||
</p>
|
||||
<div class="date"></div>
|
||||
|
||||
<p>
|
||||
<strong>What happens with an email after I click "Send"?</strong><br/>
|
||||
It is encrypted and stored on other I2P-Bote participants' computers. From there, it is delivered to the recipient when they check their email.
|
||||
</p>
|
||||
<div class="date"></div>
|
||||
|
||||
<p>
|
||||
<strong>Wait a minute, all email I send is saved on some random person's hard drive? That sounds like a really dumb idea!</strong><br/>
|
||||
All they see is garbage data because it is encrypted with "military-grade" encryption. Only you and the recipient know what is in the email. Additionally, if you send the email with relays enabled, it is not even possible to tell who sent it.<br/>
|
||||
Between this and using an email account with a
|
||||
<a href="http://www.theregister.co.uk/2009/12/07/schmidt_on_privacy/">company that doesn't respect your privacy</a>, over an internet line that <a href="http://www.eff.org/issues/nsa-spying">is being spied on by shady agencies</a>, which would you say is more trustworthy?
|
||||
</p>
|
||||
<div class="date"></div>
|
||||
|
||||
<p>
|
||||
<strong>How does it work exactly?</strong><br/>
|
||||
– see the section “Concept” of the Manual –<br/>In short:
|
||||
I2P-Bote nodes form a p2p-network, relaying mail packets for one another and storing them into a DHT.
|
||||
</p>
|
||||
<div class="date"></div>
|
||||
|
||||
<p>
|
||||
<strong>Why would I use it? I have nothing to hide …</strong><br/>
|
||||
Because you wouldn't go out to the street naked either, would you?<br/>Well, maybe you would. But the point is, sometimes you want private e-mail communication to be secret and untraceable and not let the whole world know when you say what to whom.<br/>
|
||||
And sometimes you simply want to communicate fully anonymously with others.<br/>Therefor I2P-Bote is the ideal tool, giving you a hell lot of protection while preserving a great deal of flexibility.<br/>
|
||||
It aims at providing professional military grade security and n00b-proof usability:<br/>
|
||||
You can have really paranoid settings, where it takes a mail an eternity to arrive; or have faster communication and still enjoy very high anonymity.<br/>
|
||||
You decide – easily with a click of your mouse.</p>
|
||||
<div class="date"></div>
|
||||
|
||||
<p>
|
||||
<strong>What about <a href="http://www.pgp.com/">PGP</a> and <a href="http://gnupg.org/">GPG</a>?</strong><br/>
|
||||
PGP and GPG let you encrypt email and send it through your existing email account. They offer strong encryption, but they only encrypt the email text, not the headers, which means the subject line, your computer name, and other information is not secure.<br/>
|
||||
Another privacy issue is that PGP/GPG cannot prevent anybody from finding out who is talking to whom.<br/>
|
||||
I2P-Bote, in contrast, encrypts everything but the recipient's Email Destination. (In fact even the recipient's destination is only visible to nodes who do not know who the sender of the mail was.) It also has the ability to send an email through several relays (similar to <a href="http://mixmaster.sourceforge.net/">Mixmaster</a>), so nobody can find out who is sending email to whom.
|
||||
<br/>
|
||||
</p>
|
||||
<div class="date"></div>
|
||||
|
||||
<p>
|
||||
<strong>Can I still use GPG/PGP with I2P-Bote?</strong><br/>
|
||||
Of course. Either have GPG encrypt your e-mail's text before pasting it into the I2P-Bote mail composition field, or use a mail app with GPG support. [<font color="#ff0000">POP3 support not implemented</font>]
|
||||
</p>
|
||||
<div class="date"></div>
|
||||
|
||||
<p>
|
||||
<strong>How does it compare to Susimail?</strong><br/>
|
||||
I2P-Bote is better because it has a higher version number. Just kidding.<br/>
|
||||
I2P-Bote offers more privacy, but Susimail has some features I2P-Bote doesn't have yet (see below), and Susimail is more bandwidth-efficient because it doesn't store emails redundantly.
|
||||
</p>
|
||||
<div class="date"></div>
|
||||
|
||||
<p>
|
||||
<strong>Why is I2P-Bote better?</strong><br/>
|
||||
<i>We</i> think it's better for <i>us</i> (and maybe for you, too; decide yourself!), than … <ul><li><p style="line-height: 150%;"><font face="Arial, sans-serif">mixminion as it is easy to use and as n00b-proof as we could get it.</font></p>
|
||||
</li><li><p style="line-height: 150%;"><font face="Arial, sans-serif">anonymous e-mail services not based on destination key routing: as those do not deliver built-in end-to-end encryption.</font></p>
|
||||
</li><li><p style="line-height: 150%;"><font face="Arial, sans-serif">centralized services, as the server could go down (due to attacks, legal problems, lack of funding or interest, …) and the server admin has too many means to do profiling.</font></p>
|
||||
</li></ul></p>
|
||||
<div class="date"></div>
|
||||
|
||||
<p>
|
||||
<strong>How is my identity kept safe when I exchange mail with someone?</strong><br/>
|
||||
Never is your ip number or even your I2P-destination included in any e-mail you send.<br/>
|
||||
The high-latency transport counters timing attacks.<br/>
|
||||
End-to-end encryption, per-hop encryption, relaying packets for other nodes, one single packet size* (padding), a constant rate of sending (test and dummy messages)*, and a rather balanced incoming/outgoing ratio* counter traffic analysis attacks, and in combination with per-hop delays, I2P-Bote offers good means against intersection attacks.<br/>
|
||||
The open source nature of I2P-Bote guarantees that you yourself can see the implementation and check it for bugs.
|
||||
<br/>*[<font color="#ff0000">not yet implemented</font>]</p>
|
||||
<div class="date"></div>
|
||||
|
||||
<p>
|
||||
<strong>How do I use it?</strong><br/>
|
||||
Read the manual or see the other questions and answers here!<br>
|
||||
If you still have unanswered questions, ask on the forum:
|
||||
<a href="http://forum.i2p/viewforum.php?f=35">http://forum.i2p/viewforum.php?f=35</a>
|
||||
</p>
|
||||
<div class="date"></div>
|
||||
|
||||
<p>
|
||||
<strong>Can I use an email program like Thunderbird?</strong><br/>
|
||||
No, but it is on the roadmap.
|
||||
<!--Yes, you can use the e-mail client of your choice, as long as it supports POP3 and SMTP<br/>[<font color="#ff0000">POP3 and SMTP not yet implemented</font>]-->
|
||||
</p>
|
||||
<div class="date"></div>
|
||||
|
||||
<p>
|
||||
<strong>Can I send attachments, and what limits are there?</strong><br/>
|
||||
Yes, attachments are supported as of release 0.2.5.<br/>The overall size of attached files should be kept small, preferably below 500kB.</p>
|
||||
<div class="date"></div>
|
||||
|
||||
<p>
|
||||
<strong>How do I create an email account?</strong><br/>
|
||||
I2P-Bote calls them Email Identities. You can create one in the I2P-Bote web interface under the "Identities" link. The reason why it's not called an account is that there is no provider like GMail or GMX. You alone hold the (cryptographic) keys to the Email Identity.<br/>
|
||||
When you create an Email Identity, I2P-Bote generates a string of numbers and letters called an Email Destination. This is the address you can be reached at.<br/>
|
||||
Example: <tt><b>wsq-8u5bTWbaOsrS0JuXRKL-RsbTkckV4W7u2mIu0Yrlfetixq1F~03CArnvbd6tDWwjPHYEuoKyWqwxplSdix</b></tt>
|
||||
</p>
|
||||
<div class="date"></div>
|
||||
|
||||
<p>
|
||||
<strong>What's an Email Destination? What about email addresses?</strong><br/>
|
||||
Email destinations (aka bote dests) are between 86 and 512 characters long, depending on the type of encryption. Support for easy-to-remember, user-chosen addresses is planned for the near future.<br/>
|
||||
The e-mail identities consist of public and private keys, as well as a name the user chooses for it. The public part is your e-mail destination, your pseudonymous identity. And one real user can have more than one of those identities. They serve for addressing mails to certain users –therefore it is referred to as a “destination” or short “dest” – as well as for encrypting the mails for them.
|
||||
Hence, your e-mail destination is the key others use in order to encrypt mails which they send to you, and in
|
||||
order to verify the authenticity and integrity of mails they receive from you.<br/>
|
||||
It is save to give your e-mail destination to anybody you want to get e-mails from.<br/>
|
||||
It is important to distinguish between the mail dest and the router id! Your I2P-Bote mail identity is not related to your I2P-Bote router/node id, which is used for I2P-Bote nodes to contact each other and this way for the Bote network.<br>
|
||||
If you have problems with your I2P-Bote app – in the highly unlikely case it should be necessary – you can tell your I2P-Bote router id in irc2p, I2P's IRC channels, or the forum or manually add other peer's id's in order to connect, though until now this has never been necessary. <br>It is <b>not linked to your ip</b>. Nonetheless, do not relate your I2P-Bote router id with your I2P-Bote mail dests since this might destroy the additional anonymity I2P-Bote itself generates!
|
||||
</p>
|
||||
<div class="date"></div>
|
||||
|
||||
<p>
|
||||
<strong>Why are the e-mail addresses so long?</strong><br/>
|
||||
In I2P-Bote every mail is (automatically) encrypted. In order not to require you to exchange an e-mail address <b>and</b> a long key, we simply made that key the address. This comes with two additional benefits: You won't have
|
||||
to worry if an e-mail address is already taken or not (at least not if you do not send or receive e-mails to or from the internet) and you don't need a key management app apart, for taking care of your keys.<br>
|
||||
It is safe to give away this key, as it is only the public key which everybody may know about without compromising your e-mails' secrecy.<br/>
|
||||
Using the ECC encryption as option will yield shorter e-mail destination keys.
|
||||
</p>
|
||||
<div class="date"></div>
|
||||
|
||||
<p>
|
||||
<strong>But I cannot remember those long destinations …</strong><br/>
|
||||
That's what the integrated addressbook is there. Once you have become more acquainted qith I2P-Bote, you will appreciate the built-in encrpytion and authentication, which can only be achieved using cryptographic keys.
|
||||
<br/>Again, the alternatove would be to have short and easy addresses <b>plus</b> a long key for encryption and authentication, <b>and</b> to rely on some authority to map the e-mail addresses to some anonymous recipient.
|
||||
</p>
|
||||
<div class="date"></div>
|
||||
|
||||
<p>
|
||||
<strong>What's the point of using multiple mail identities?</strong><br/>
|
||||
I2P-Bote is not an instant messenger, so you can have several identities without having to keep many tunnels open. Only for fetching requests you'd use up more resources but at the same time provide more cover for others.<br/>
|
||||
Now, imagine you communicate with your friends unobservedly (see: data retention laws) via I2P-Bote, and want to quickly send out a mail that you'll be meeting each other in a different location tonight.
|
||||
Then, you need no super-anonymity and can renounce mail routes and delays. Your friends, on the other hand, would want to have a shorter check interval, so they will receive the mail in time. Yet you still want super high anonymity for some of your other communications ‧ that's where a different mail identity with mail routes, delays and long check intervals comes in handy.
|
||||
</p>
|
||||
<div class="date"></div>
|
||||
|
||||
<p>
|
||||
<strong>Which encryption type is best?</strong><br/>
|
||||
256-bit <a href="http://en.wikipedia.org/wiki/Elliptic_curve_cryptography">ECC</a> produces short and handy Email Destinations, and it is considered stronger than 2048-bit ElGamal.<br/>
|
||||
521-bit <a href="http://en.wikipedia.org/wiki/Elliptic_curve_cryptography">ECC</a> is stronger than 256-bit ECC, but it makes Email Destinations longer.<br/>
|
||||
2048-bit <a href="http://en.wikipedia.org/wiki/ElGamal">ElGamal</a> produces even longer Email Destinations, and it is the cryptographically weakest of the three options. However, ElGamal is better researched than ECC, which makes it less likely that there is an unknown weakness in ElGamal than in ECC.
|
||||
<br>
|
||||
</p>
|
||||
<div class="date"></div>
|
||||
|
||||
<p>
|
||||
<strong>What algorithms are used for symmetric encryption, and for hashing?</strong><br/>
|
||||
<a href="http://en.wikipedia.org/wiki/Advanced_Encryption_Standard">AES-256</a> in
|
||||
<a href="http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Cipher-block_chaining_.28CBC.29">CBC</a> mode and <a href="http://en.wikipedia.org/wiki/SHA-2">SHA-256</a>.
|
||||
</p>
|
||||
<div class="date"></div>
|
||||
|
||||
<p>
|
||||
<strong>Are there any anti-spam measures?</strong><br/>
|
||||
I2P-Bote does no active spam filtering, but the fact that mass emails have to be sent individually should discourage spammers. Another line of defense is <a href="http://www.hashcash.org/">HashCash</a> which is supported at the protocol level and may be implemented in a future version if spam becomes a problem.
|
||||
</p>
|
||||
<div class="date"></div>
|
||||
|
||||
<p>
|
||||
<strong>How about HTML or styled text?</strong><br/>
|
||||
The webinterface does not render html.
|
||||
</p>
|
||||
<div class="date"></div>
|
||||
|
||||
<p>
|
||||
<strong>How long are emails kept around?</strong><br/>
|
||||
Emails are available for 100 days after they have been sent. Emails that have not been downloaded by then are deleted.<br/>
|
||||
Emails you have received stay on your local machine until you delete them.
|
||||
</p>
|
||||
<div class="date"></div>
|
||||
|
||||
<p>
|
||||
<strong>When do Email Identities expire?</strong><br/>
|
||||
Never.
|
||||
</p>
|
||||
<div class="date"></div>
|
||||
|
||||
<p>
|
||||
<strong>Can I send email to, and receive email from normal internet email servers?</strong><br/>
|
||||
No, but this is being worked on.
|
||||
<!-- Yes. You can both send and receive mails to/from ordinary internet e-mail accounts -->
|
||||
</p>
|
||||
<div class="date"></div>
|
||||
|
||||
<p>
|
||||
<strong>Can I send email to, and receive email from postman's traditional I2P mail accounts?</strong><br/>
|
||||
No, but this too is being worked on.
|
||||
<!-- Yes. You can both send and receive mails to/from some_name@mail.i2p addresses -->
|
||||
</p>
|
||||
<div class="date"></div>
|
||||
|
||||
<p>
|
||||
<strong>What does it mean when Know is x'ed for a mail in my inbox?</strong><br/>
|
||||
When the sender's destination is not known locally the mail is marked by an x in the “Know” column
|
||||
<!--or by putting “[UNK]” before the sender's address in POP3-->.<br/>
|
||||
This means that you have no proof this user is really who he claims to be, in his user name. Of course, if the signature is valid, you know he possesses the destination key with which the mail was signed, and that the mail content is from that person. But you cannot rely on the short name here. In case you had gotten a mail from a user with this name before, you cannot be sure it is the same user this time, even if the signature is valid. In this
|
||||
case you must compare the destination keys or add them to your addressbook. A user not locally known, is not necessarily evil, but you shouldn't trust it's the user you might think it is. But, if verified against locally stored keys, you know it's the same user when you receive another mail from him and “Know” has a green check.
|
||||
</p>
|
||||
<div class="date"></div>
|
||||
|
||||
<p>
|
||||
<strong>What do “BktPfx”, “Distance” and “Locked?” mean?</strong><br/>
|
||||
• BktPfx = BucketPrefix<br>
|
||||
• Distance: the distance of an I2P-Bote node to your own node in keyspace<br>
|
||||
• Locked: If a node is not reachable for whatever reason, it is marked as locked, plus the time it has been found unreachable.<br>
|
||||
</p>
|
||||
<div class="date"></div>
|
||||
|
||||
<p>
|
||||
<strong>What can I do to be more anonymous?</strong><br/>
|
||||
<ul>
|
||||
<li><p>Don't send identifying information about you! (name, address, photos, geographic location, time zone, age, sex, websites, login names, I2P router id, I2P-Bote id, Files that contain author information about you, …)</p></li>
|
||||
<li><p>don't send personal information or information that only you can possess,</p></li>
|
||||
<li><p>leave I2P-Bote running 24/7,</p></li>
|
||||
<li><p>use mailroutes with randomized per-hop delays and/or per-hop fixed send times, <font color="#ff0000">[not yet fully implemented]</font></p></li>
|
||||
<li><p>use a long check interval,</p></li>
|
||||
<li><p>use a long local delay for own packets,</p></li>
|
||||
<li><p>use a big check interval randomization. <span style="color: red;">[not yet implemented]</span></p></li>
|
||||
<li><p>suppress the sending of date and time in the e-mails' header,</p></li>
|
||||
<li><p>suppress translation of markers like “Re:” into another language,</p></li>
|
||||
<li><p>watch your language and writing style,</p></li>
|
||||
<li><p>use different e-mail identities,</p></li>
|
||||
<li><p>consider discarding e-mail identities after longer periods of usage,</p></li>
|
||||
<li><p>...</p></li>
|
||||
</ul>
|
||||
</p>
|
||||
<div class="date"></div>
|
||||
|
||||
<p>
|
||||
<strong>How do I not send timestamps?</strong><br/>
|
||||
Go to settings and disable sending of timestamps. This will have the effect that your mail will not contain a date or time of sending.
|
||||
<!-- <br/>(When using mailroutes, the timestamps are automatically disabled.) <span style="color: red;">[not yet implemented]</span></p> -->
|
||||
</p>
|
||||
<div class="date"></div>
|
||||
|
||||
<p>
|
||||
<strong>How do I migrate my settings and data to another computer, or back them up?</strong><br/>
|
||||
I2P-Bote stores all email and other data in the <tt>i2pbote</tt> folder. On Windows, that folder can be found at
|
||||
<tt>%APPDATA%\I2P\i2pbote</tt>; on Linux, it is <tt>$HOME/.i2p/i2pbote</tt>.<br/>
|
||||
To back up or migrate everything, just copy the whole <tt>i2pbote</tt> folder.<br/>
|
||||
If you are only interested in your Email Identities, copy the file <tt>identities.txt</tt>. For the address book, copy <tt>addressBook.txt</tt>.
|
||||
</p>
|
||||
<div class="date"></div>
|
||||
|
||||
<p>
|
||||
<strong>What is a <i>mail route?</i></strong><br/>
|
||||
see: What does high-latency transport mean?<br/>
|
||||
<!-- (When using mail routes, the timestamps are automatically disabled.) [yet to be implemented] -->
|
||||
</p>
|
||||
<div class="date"></div>
|
||||
|
||||
<p>
|
||||
<strong>What does high-latency transport mean?</strong><br/>
|
||||
It means that you can enable an option where e-mail packets are not sent directly to storing nodes, but are relayed (forwarded) by other peers (who cannot read the e-mails, as they are encrypted with several layers and ripped into small parts), who do not send them on immediately but wait a user-specified time – in case of sending
|
||||
specified by the sender, in case of receiving specified by recipient.<br/>
|
||||
Therefore it takes the mail some time to arrive. Thus an attacker cannot simply run stats on node uptimes (who was connected when) and times a message was received to be stored (which in a low-latency environment would be about the time it was sent), in order to uncover the real life identities behind I2P-Bote e-mail identities.
|
||||
</p>
|
||||
<div class="date"></div>
|
||||
|
||||
<p>
|
||||
<strong>What latencies are there, and how can they be controlled (if at all)?</strong><br/>
|
||||
I2P-Bote is distributed and running on top of the I2P network, so it takes some time. Speed is not our strength, but we compare well with other anon mail systems. Without mail routes enabled it takes 3 to 10 minutes from hitting the
|
||||
“Send” button to being displayed in the receiver's inbox.<br/>
|
||||
If speed is what you want, fully disable mail routes or set them to the minimum number of hops and minimum per-hop delay you can live with.
|
||||
</p>
|
||||
<div class="date"></div>
|
||||
|
||||
<p>
|
||||
<strong>If I2P-Bote generates its own anonymity, why does it need I2P?</strong><br/>
|
||||
I2P-Bote is built on top of I2P mainly for five reasons:<br/>
|
||||
• I2P was lacking a decentralized e-mail service and HungryHobo is an I2P user.<br/>
|
||||
• I2P offers very good anonymity, is mature and incorporates years of experience.<br>
|
||||
• So being on top of it, kind of represents an anonymity fall-back even if there were some crucial bugs in I2P-Bote.<br/>
|
||||
• Flexibility: We want to offer an easy way to anonymous low-latency e-mail communication as well, with still a high level of protection.<br/>
|
||||
• I2P with it the many other apps running on top of it creates a lot of traffic that blends with I2P-Bote traffic.<br/>
|
||||
• Even I2P-Bote relays are thus location-hidden.
|
||||
</p>
|
||||
<div class="date"></div>
|
||||
|
||||
<p>
|
||||
<strong>How anonymous/secure is I2P-Bote without mail routes?</strong><br/>
|
||||
Pretty anonymous and very secure.<br/>
|
||||
It then basically enjoys the same anonymity other apps have on I2P, the anonymity provided by the I2P router – which is rather strong anonymity already. However, I2P is a low-latency network, with all the shortcomings a
|
||||
low-latency network comes with by its very nature. There are attacks against which I2P cannot protect you or not protect you very reliably. I2P-Bote does its best to augment I2P anonymity with its high-latency transport option, which make – if enabled –
|
||||
I2P-Bote mails <i>paranoidly</i> anonymous.
|
||||
</p>
|
||||
<div class="date"></div>
|
||||
|
||||
<p>
|
||||
<strong>Is I2P-Bote open source?</strong><br/>
|
||||
Of course!<br/>“ <i>
|
||||
This software is licensed under the GPL version 3 (see licenses/GPLv3.txt), except for bcprov-ecc-jdk16-145.jar which is licensed under the Bouncy Castle License
|
||||
(see licenses/BouncyCastle.txt).</i>” <br>(Both of which are free open source licences.)
|
||||
</p>
|
||||
<div class="date"></div>
|
||||
|
||||
<p>
|
||||
<strong>Who made I2P-Bote?</strong><br/>
|
||||
(See also Credits!)<br>
|
||||
Conception, technical design, implementation and web user interface were/are done by HungryHobo, an anonymous developer. For feedback or if you want to offer help, you can contact him using I2P-Bote. His destination key is: <br><b>hobo37SEJsEMfQHwcpVlvEgnrERGFz34GC1yjVyuRvl1QHnTi0UAoOtrLP~qkFY0oL59BBqj5sCep0RA8I5G8n</b>
|
||||
</p>
|
||||
<div class="date"></div>
|
||||
|
||||
<p>
|
||||
<strong>What languages are available?</strong><br/>
|
||||
English, German, Russian, French, Spanish, Portuguese, Dutch, Norwegian, Swedish, Chinese, and Arabic.
|
||||
</p>
|
||||
<div class="date"></div>
|
||||
|
||||
<p>
|
||||
<strong>How can I help translate I2P-Bote into my language?</strong><br/>
|
||||
Translations are done the same way as the rest of I2P. If you would like to help and have questions, please
|
||||
<a href=contact.html>contact the author.</a>
|
||||
</p>
|
||||
<div class="date"></div>
|
||||
|
||||
<p>
|
||||
<strong>How does it work on a technical level?</strong><br/>
|
||||
Have a look at the file <tt>doc/techdoc.txt</tt> in the source code.
|
||||
</p>
|
||||
<div class="date"></div>
|
||||
|
||||
<p>
|
||||
<strong>What are some other ways I can help?</strong><br/><br/>
|
||||
• Use I2P-Bote and give feedback<br/><br/>
|
||||
• Tell your friends, family, collegues et al. about I2P-Bote and lend them a hand<br/><br/>
|
||||
• Mention I2P-Bote on your blog, eepsite or website<br/><br/>
|
||||
• Write a user's guide or improve the technical documentation<br/><br/>
|
||||
• Add features or fix bugs (<a href=contact.html>contact the author first</a>)<br/><br/>
|
||||
</p>
|
||||
<div class="date"></div>
|
||||
|
||||
<p>
|
||||
<br/><br/><br/><br/><br/><br/><br/>
|
||||
<strong>Credits:</strong><br/><br/>
|
||||
Idea & technical concept: <i>HungryHobo</i>, <i>Mixxy</i><br/><br/>
|
||||
Implementation: <i>HungryHobo</i><br/><br/>
|
||||
Plugin support: <i>zzz</i>, <i>HungryHobo</i><br/><br/>
|
||||
User interface: <i>HungryHobo</i><br/><br/>
|
||||
Seedless integration: <i>sponge</i><br/><br/>
|
||||
German translation: <i>HungryHobo</i><br/><br/>
|
||||
Russian translation: <i>suhr</i><br/><br/>
|
||||
French translation: <i>albat</i>, <i>Redzara</i>, <i>Mixxy</i><br/><br/>, <i>magma</i><br/><br/>
|
||||
Spanish translation: <i>Mixxy</i><br/><br/>
|
||||
Portuguese translation: <i>Mixxy</i><br/><br/>
|
||||
Dutch translation: <i>KwukDuck</i><br/><br/>
|
||||
Norwegian translation: <i>hej</i><br/><br/>
|
||||
Swedish translation: <i>hottuna</i><br/><br/>
|
||||
Chinese translation: <i>walking</i><br/><br/>
|
||||
Arabic translation: <i>hamada</i><br/><br/>
|
||||
Alpha testing: <i>HungryHobo</i>, <i>Mixxy</i>, <i>Returning Novice</i>, <i>sponge</i>, and many others<br><br/>
|
||||
Manual: <i>Mixxy</i><br/><br/>
|
||||
<br><br/>
|
||||
</p>
|
||||
|
||||
<div class="date"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="footer">
|
||||
<div class="rside">CSS: <a href="http://www.free-css-templates.com" title="Design by David Herreman">David Herreman</a></div>
|
||||
<p>
|
||||
<a href="http://validator.w3.org/check?uri=referer" title="Validate">XHTML</a> - <a href="http://jigsaw.w3.org/css-validator/check/referer" title="Validate">CSS</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
622
WebContent/FAQ_fr.html
Normal file
@ -0,0 +1,622 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head>
|
||||
|
||||
|
||||
<title>Foire aux questions</title>
|
||||
<meta http-equiv="Content-Language" content="English">
|
||||
<meta name="Robots" content="index,follow">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<link rel="stylesheet" type="text/css" href="FAQ_fr_files/style.html"
|
||||
media="screen">
|
||||
</head><body>
|
||||
|
||||
<div id="wrap">
|
||||
|
||||
<div id="top">
|
||||
<div class="rights"> </div>
|
||||
<div id="search">
|
||||
|
||||
</div>
|
||||
<div class="lefts">
|
||||
<h1>I2P-Bote</h1>
|
||||
<h2>Messagerie décentralisée sécurisée</h2>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="topmenu">
|
||||
<div class="rights"></div>
|
||||
<div class="lefts"><ul>
|
||||
<li><a
|
||||
href="http://t5qds7twb7eyyvp2fchhbn74tgdzv774rlru5guit5jkn4a6do7a.b32.i2p/index.html"
|
||||
title="Home">Accueil</a></li>
|
||||
<li><a
|
||||
href="http://t5qds7twb7eyyvp2fchhbn74tgdzv774rlru5guit5jkn4a6do7a.b32.i2p/download.html"
|
||||
title="Download I2P-Bote">Téléchargement</a></li>
|
||||
<li><a
|
||||
href="http://t5qds7twb7eyyvp2fchhbn74tgdzv774rlru5guit5jkn4a6do7a.b32.i2p/screenshots.html"
|
||||
title="Screenshots">Captures d'écrans</a></li>
|
||||
<li><a
|
||||
href="http://t5qds7twb7eyyvp2fchhbn74tgdzv774rlru5guit5jkn4a6do7a.b32.i2p/userguide.html"
|
||||
title="User Guide">Guide d'utilisation</a></li>
|
||||
<li><a
|
||||
href="http://t5qds7twb7eyyvp2fchhbn74tgdzv774rlru5guit5jkn4a6do7a.b32.i2p/faq.html"
|
||||
title="Frequently Asked Questions">Foire aux questions</a></li>
|
||||
<li><a href="http://forum.i2p/viewforum.php?f=35" title="Forum">Forum</a></li>
|
||||
<li><a
|
||||
href="http://t5qds7twb7eyyvp2fchhbn74tgdzv774rlru5guit5jkn4a6do7a.b32.i2p/contact.html"
|
||||
title="Contact">Contact</a></li>
|
||||
|
||||
</ul></div>
|
||||
</div>
|
||||
|
||||
<div style="text-align: justify;" id="main">
|
||||
<div id="leftside">
|
||||
<p>
|
||||
</p><h2>Foire aux questions</h2>
|
||||
|
||||
<p>
|
||||
</p><div class="date"></div>
|
||||
<p>
|
||||
<strong>I2P-Bote, kesako?</strong><br>
|
||||
C'est un programme de messagerie P2P conçu pour protéger votre vie privée.<br>
|
||||
I2P-Bote un système de messagerie entièrement décentralisé (sans serveur)
|
||||
qui fonctionne sur le réseau I2P.
|
||||
Il prend en charge les identités multiples et n'expose pas les
|
||||
en-têtes de messages. Il est encore en phase de développement et n'est
|
||||
accessible que via la console du routeur I2P. Il sera bientôt doté de la prise en
|
||||
charge de POP3, et de plus d'anonymat via une option de transport
|
||||
à haute latence. Tous les messages bote sont automatiquement
|
||||
cryptés de bout en bout sans avoir à régler de cryptage de mails
|
||||
(bien que cette option soit disponible), et ils sont authentifiés
|
||||
automatiquement. Comme il est décentralisé, aucun serveur de mail ne peut
|
||||
faire de rapprochement entre expéditeur et destinataire (profilage):
|
||||
même les nœuds relayant les messages ne peuvent identifier l'expéditeur
|
||||
et en dehors de expéditeur et du destinataire, seuls le point terminal du
|
||||
tunnel à haute latence et les nœuds de stockage connaissent à qui (l'identité
|
||||
anonyme) est destiné le message. L'expéditeur peut se déconnecter bien avant que
|
||||
le message arrive à destination.
|
||||
Ceci augmente encore le niveau d'anonymat que peut atteindre I2P-Bote.
|
||||
Pour ceux qui ne veulent pas de forts délais, tous ces paramètre sont
|
||||
modifiables pour s'adapter au niveau de leur besoin d'anonymat.
|
||||
</p>
|
||||
<div class="date"></div>
|
||||
|
||||
<p>
|
||||
<strong>Pourquoi ce nom d'I2P-Bote?</strong><br>
|
||||
Bote est le mot allemand pour dire "messager".
|
||||
</p>
|
||||
<div class="date"></div>
|
||||
|
||||
<p>
|
||||
<strong>Pourquoi I2P-Bote?</strong><br>
|
||||
Parce que c'est sympa. Et parce qu'un système décentralisé faisait cruellement
|
||||
défaut et qu'I2P n'avait pas de système de messagerie décentralisé, et qu'y voyant
|
||||
une opportunité d'améliorer un aspect négligé des considérations sur l'anonymat,
|
||||
il fut décidé d'ajouter une méthode de transport à latence élevée.
|
||||
Vous pourriez utiliser un compte de messagerie normal et crypter vos messages,
|
||||
mais ils ne seraient pas pour autant anonymes. Vous pourriez alors utiliser un serveur
|
||||
d'envoi anonyme, mais ils ne seraient pas automatiquement cryptés de bout en bout.<br>
|
||||
Ou vous pouvez utiliser I2P-Bote grâce auquel vos messages sont anonymes et
|
||||
<i>automatiquement</i> cryptés de bout en bout.<br> À la différence des messageries
|
||||
traditionnelles, il n'y a pas à s'occuper de gérer en plus un système de clés. Tout
|
||||
ce dont vous avez besoin est déjà prêt.<br> Et ne vous y trompez pas, malgré son
|
||||
apparente simplicité et sa réelle facilité d'utilisation, I2P-bote vous offre un niveau
|
||||
de cryptage de qualité militaire et des options d'anonymat extrêmement efficaces.
|
||||
</p>
|
||||
<div class="date"></div>
|
||||
|
||||
<p>
|
||||
<strong>Que se passe-t-il quand je clique sur "Envoyer"?</strong><br>
|
||||
Le message est crypté et stocké sur des ordinateurs d'autres utilisateurs d'I2P-Bote.
|
||||
À partir de là, il est expédié au destinataire quand il relève son courrier.
|
||||
</p>
|
||||
<div class="date"></div>
|
||||
|
||||
<p>
|
||||
<strong>Une minute! Tous mes envois sont stockés dans les ordinateurs de personnes
|
||||
choisies aléatoirement? C'est une idée de fou!</strong><br>
|
||||
Tout ce qu'elles peuvent voir n'est qu'un tas d'ordures car les données sont cryptée
|
||||
à un niveau militaire. Seuls vous et le destinataire savez ce qu'il y a dans le
|
||||
message. De plus, si vous envoyez en ayant activé le relayage, il ne leur est même pas
|
||||
possible de savoir qui l'a envoyé.<br> Entre ça et l'utilisation d'un compte fourni par
|
||||
une <a href="http://www.theregister.co.uk/2009/12/07/schmidt_on_privacy/">société
|
||||
qui ne respecte pas votre vie privée</a>, sur une liaison Internet qui
|
||||
<a href="http://www.eff.org/issues/nsa-spying">peut être espionnée par des entités
|
||||
occultes</a>, quelle est la solution la plus digne de confiance?
|
||||
</p>
|
||||
<div class="date"></div>
|
||||
|
||||
<p>
|
||||
<strong>Comment cela marche-t-il exactement?</strong><br>
|
||||
– Voyez le chapitre “Concept” du Guide –<br>En bref:
|
||||
Les nœuds I2P-Bote constituent un réseau p2p relayant les paquets de messages
|
||||
pour le compte des autres et les stockant dans une table de hachage décentralisée (DHT).
|
||||
</p>
|
||||
<div class="date"></div>
|
||||
|
||||
<p>
|
||||
<strong>Pourquoi devrais-je m'en servir? Je n'ai rien à cacher…</strong><br>
|
||||
Vous vous baladez à poil dans la rue, vous?<br>Bon, après tout c'est possible. Mais il
|
||||
faut quand même noter qu'il peut parfois vous arriver d'avoir des besoins de correspondances
|
||||
épistolaires secrètes et intraçables, et ne pas faire savoir au monde entier que vous
|
||||
dites ceci ou cela et à qui vous le dites.<br>
|
||||
Parfois, vous pouvez aussi vouloir communiquer de façon entièrement anonyme avec
|
||||
un tiers.<br>I2P-Bote est alors le moyen idéal qui vous donne une protection d'enfer
|
||||
tout en restant très facile à utiliser.<br>
|
||||
Il parvient à combiner une sécurité de niveau militaire et une ergonomie de niveau
|
||||
débutant:<br>
|
||||
vous pouvez avoir réglé un niveau d'anonymat paranoïaque, qui retardera l'arrivée du message
|
||||
d'une demi-éternité, ou avoir des échanges plus rapides et cependant garder un fort
|
||||
niveau d'anonymat.<br>
|
||||
À vous de décider, d'un simple clic de souris.</p>
|
||||
<div class="date"></div>
|
||||
|
||||
<p>
|
||||
<strong>Et au sujet de <a href="http://www.pgp.com/">PGP</a> et
|
||||
<a href="http://gnupg.org/">GPG</a>?</strong><br>
|
||||
PGP et GPG vous permettent de crypter le courrier et de l'envoyer par votre compte de
|
||||
messagerie existant. Il offrent du cryptage fort, mais uniquement du corps du message,
|
||||
pas des en-têtes, ce qui veut dire que les champs "Objet", le nom de votre ordinateur,
|
||||
et d'autres informations ne sont pas protégées.<br> Une autre faiblesse de PGP/GPG
|
||||
est qu'ils ne peuvent pas empêcher de trouver qui parle à qui.<br>
|
||||
I2P-Bote, au contraire, crypte tout sauf la destination (en fait, même la destination
|
||||
n'est visible que par les nœuds qui ignorent de qui vient le message). Il peut aussi
|
||||
envoyer le message via plusieurs relais (comme
|
||||
<a href="http://mixmaster.sourceforge.net/">Mixmaster</a>), de sorte que personne ne
|
||||
puisse trouver qui envoie à qui.<br>
|
||||
</p>
|
||||
<div class="date"></div>
|
||||
|
||||
<p>
|
||||
<strong>Puis-je toujours utiliser GPG/PGP avec I2P-Bote?</strong><br>
|
||||
Bien sûr. Cryptez le texte de votre message avec GPG avant de le coller dans le corps
|
||||
du message I2P-Bote, ou utilisez une application de messagerie compatible GPG
|
||||
[<font color="#ff0000">Prise en charge POP3 non implémentée</font>].
|
||||
</p>
|
||||
<div class="date"></div>
|
||||
|
||||
<p>
|
||||
<strong>Quelle différence y a-t-il avec Susimail?</strong><br>
|
||||
I2P-Bote est meilleur parce que son numéro de version est plus élevé… blague.<br>
|
||||
I2P-Bote apporte plus d'anonymat, mais Susimail dispose de fonctionnalités dont
|
||||
I2P-Bote est pour l'instant dépourvu (voir plus bas), et Susimail est plus efficace en
|
||||
terme de consommation de bande passante car il ne fait pas de stockage redondant
|
||||
réparti.
|
||||
</p>
|
||||
<div class="date"></div>
|
||||
|
||||
<p>
|
||||
<strong>Pourquoi I2P-Bote est-il meilleur?</strong><br>
|
||||
<i>Nous</i> pensons qu'il est meilleur… <i>pour nous</i> (et peut-être pour vous, aussi;
|
||||
décidez vous-même!), que…</p><ul><li><p style="line-height: 150%;">
|
||||
<font face="Arial, sans-serif">mixminion car il est facile à utiliser et aussi simple à prendre
|
||||
en main que nous avons pu.</font></p>
|
||||
</li><li><p style="line-height: 150%;"><font face="Arial, sans-serif">les services de mail
|
||||
anonymes n'utilisant pas le routage basé sur des clés de destination, car ils ne permettent pas
|
||||
le cryptage de bout en bout.</font></p>
|
||||
</li><li><p style="line-height: 150%;"><font face="Arial, sans-serif">les services centralisés,
|
||||
car que le serveur pourrait s'arrêter (à cause d'attaques, de problèmes légaux, manque de
|
||||
financement ou d'intérêt…) et car l'administrateur du serveur dispose de trop de moyens
|
||||
pour faire de l'espionnage.</font></p>
|
||||
</li></ul>
|
||||
<div class="date"></div>
|
||||
|
||||
<p>
|
||||
<strong>Comment mon identité est-elle protégée quand j'échange du courrier?</strong><br>
|
||||
Jamais votre adresse IP ni même votre destination I2P n'est inclue dans les messages que vous
|
||||
envoyez.<br>
|
||||
Les compteurs de transports à haute latence protègent des attaques de timing.<br>
|
||||
Le cryptage de bout en bout et par saut, le relayage des paquets pour d'autres nœuds, les
|
||||
paquets à taille unique* (bourrage/padding), le débit d'envoi constant (messages de test
|
||||
et bidons/dummy)*, et un rapport assez équilibré des taux d'envoi/réception* protègent des
|
||||
attaques d'analyse de trafic, et en combinaison avec les delais par saut, I2P-Bote offre de
|
||||
bons moyens de prévention des attaques d'intersection.<br>
|
||||
La nature open source d'I2P-Bote garantit que vous pouvez vous-même voir la mise en œuvre et
|
||||
la vérifier pour y chercher ou trouver des bogues.
|
||||
<br>*[<font color="#ff0000">pas encore implémenté</font>]</p>
|
||||
<div class="date"></div>
|
||||
|
||||
<p>
|
||||
<strong>Comment faire pour l'utiliser?</strong><br>
|
||||
Lisez le Guide ou les autres questions/réponses ici!<br>
|
||||
Si vous avez toujours des questions, posez-les sur le forum:
|
||||
<a href="http://forum.i2p/viewforum.php?f=35">http://forum.i2p/viewforum.php?f=35</a>
|
||||
</p>
|
||||
<div class="date"></div>
|
||||
|
||||
<p>
|
||||
<strong>Puis-je utiliser un programme comme Thunderbird?</strong><br>
|
||||
Non, mais c'est sur la feuille de route.
|
||||
<!--Yes, you can use the e-mail client of your choice, as long as it supports POP3 and
|
||||
SMTP<br/>[<font color="#ff0000">POP3 and SMTP not yet implemented</font>]-->
|
||||
</p>
|
||||
<div class="date"></div>
|
||||
|
||||
<p>
|
||||
<strong>Puis-je envoyer des pièce-jointes, et quelles sont les limites?</strong><br>
|
||||
Oui, depuis la version 0.2.5.<br>La taille cumulée des pièces jointes devrait être petite et de
|
||||
préférence ne pas dépasser les 500ko.</p>
|
||||
<div class="date"></div>
|
||||
|
||||
<p>
|
||||
<strong>Comment créer un compte de messagerie?</strong><br>
|
||||
I2P-Bote les appelle "Identités". Vous pouvez en créer une dans l'interface web d'I2P-Bote
|
||||
via le lien "Identités". La raison pour laquelle on ne les appelle pas "comptes" est qu'il
|
||||
n'y a pas de fournisseur comme GMail ou autre. Vous êtes le seul dépositaire du porte-clés
|
||||
(cryptographique) de l'identité.<br>Quand vous la créez, I2P-bote génère une chaîne de
|
||||
chiffres et de lettres appelée "Destination". C'est l'adresse à laquelle on peut vous joindre.
|
||||
<br>
|
||||
Exemple: <tt><b>wsq-8u5bTWbaOsrS0JuXRKL-RsbTkckV4W7u2mIu0Yrlfetixq1F~03CArnvbd6tDWwjPHYEuoKyWqwxplSdix</b></tt>
|
||||
</p>
|
||||
<div class="date"></div>
|
||||
|
||||
<p>
|
||||
<strong>Qu'est-ce qu'une destination? Et l'adresse mail?</strong><br>
|
||||
La longueur des destinations est comprise entre 86 et 512 caractères, suivant le type de
|
||||
cryptage. La prise en charge d'adresses faciles à mémoriser et choisies par l'utilisateur est
|
||||
au programme d'un futur proche.<br>Les identités sont une paire de clés privée et publique,
|
||||
et d'un nom que l'utilisateur lui attribue. La clé publique est la destination,
|
||||
votre identité pseudonymique. Un utilisateur réel peut en avoir plusieurs. Elles servent à
|
||||
envoyer des messages à certains utilisateurs – donc aussi appelés “destinations” – tout comme
|
||||
pour crypter les messages qui leur sont… destinés. Votre destination est donc pour les
|
||||
autres aussi la clé qu'ils utilisent pour crypter les messages qu'ils vous envoient et pour
|
||||
pour vérifier l'intégrité et l'authenticité de ceux qu'ils reçoivent… de vous.<br>
|
||||
Il est sans danger (et indispensable) de donner votre destination à toute personne de laquelle
|
||||
vous voulez recevoir du courrier.<br>Il est important de faire la distinction entre votre
|
||||
destination de messagerie et la destination de votre routeur I2P! Votre identité de messagerie
|
||||
n'a rien à voir avec l'identité de votre nœud/routeur I2P-Bote qui est utilisée pour permettre
|
||||
aux nœuds I2P-Bote de se contacter les uns les autres pour constituer le réseau Bote.<br>
|
||||
Si vous avez des problèmes avec l'application I2P-Bote – dans le cas très improbable où ça
|
||||
serait nécessaire – vous pouvez indiquer votre destination (au sens d'application I2P) sur
|
||||
irc2p, les canaux IRC ou le forum I2P, ou ajouter manuellement des identités d'autres pairs
|
||||
pour pouvoir vous connecter, bien que ceci n'ait jamais été nécessaire à ce jour.<br>
|
||||
Elle <b>n'est pas liée à votre adresse IP</b>. Néanmoins, ne révélez d'aucune façon la relation
|
||||
entre votre identité de routeur I2P-Bote et celle d'une de vos propres destinations de courrier
|
||||
I2P-Bote car cela réduirait à néant le niveau d'anonymat supplémentaire qu'I2P-Bote porte en
|
||||
lui-même!
|
||||
</p>
|
||||
<div class="date"></div>
|
||||
|
||||
<p>
|
||||
<strong>Pourquoi les adresses sont-elles si longues?</strong><br>
|
||||
Dans I2P-Bote chaque message est (automatiquement) crypté. Pour vous éviter d'avoir à échanger
|
||||
votre adresse <b>ET</b> de très longues clés publiques, on a simplement fait de ces clés les
|
||||
adresses. Deux autres avantages en découlent: vous n'avez pas à vous soucier de la préexistence
|
||||
de votre adresse (au moins tant que vous ne recevez ni n'envoyez courrier vers
|
||||
l'Internet normal), et vous n'avez pas à avoir un système de gestion de clés séparé pour
|
||||
s'occuper de vos clés.<br>
|
||||
Il est sans danger (et indispensable) de donner cette clé, car elle n'est que la clé publique,
|
||||
que certains peuvent avoir à connaître, sans pour autant que cela compromette la
|
||||
confidentialité de vos messages.<br>
|
||||
L'utilisation du cryptage ECC conduit à des clés plus courtes.
|
||||
</p>
|
||||
<div class="date"></div>
|
||||
|
||||
<p>
|
||||
<strong>Mais je n'arrive pas à mémoriser de si longues destinations…</strong><br>
|
||||
Le carnet d'adresses est là pour ça. Une fois convaincu par le principe d'I2P-Bote, vous
|
||||
apprécierez le cryptage et l'authentification intégrés, qui ne peuvent être atteints que par
|
||||
l'utilisation de clés cryptographiques.
|
||||
<br>Encore une fois, l'alternative serait d'avoir des adresses courtes et simples <b>plus</b>
|
||||
de longues clés de cryptage et authentification, <b>ET</b> de se reposer sur quelqu'autorité
|
||||
pour faire la relation entre l'adresse et un destinataire anonyme.
|
||||
</p>
|
||||
<div class="date"></div>
|
||||
|
||||
<p>
|
||||
<strong>Quel est l'intérêt d'utiliser de multiples identités?</strong><br>
|
||||
I2P-Bote n'est pas une messagerie instantanée, donc vous pouvez avoir plusieurs identités sans
|
||||
avoir à tenir plusieurs tunnels ouverts en même temps. Vous utiliserez seulement un peu plus de
|
||||
ressources au moment de la relève mais en même temps vous fournirez une meilleure couverture
|
||||
aux autres.<br>
|
||||
Maintenant, imaginez que vous communiquez incognito avec des amis (voir: lois sur le stockage
|
||||
de données) via I2P-Bote, et que vous voulez envoyer rapidement un message pour vous retrouver
|
||||
ce soir ailleurs qu'à l'habituel Café des Arts. Vous n'avez pas besoin d'un super-anonymat et
|
||||
pouvez renoncer aux relayages et délais de mails. Vos amis, d'autre part, devraient raccourcir
|
||||
leur intervalle de vérification pour recevoir le message à temps. Mais pour d'autres types de
|
||||
communications, vous avez besoin d'un super niveau d'anonymat, <!--et c'est là qu'une autre
|
||||
identité avec un relayage et des délais différents peut être utile-->
|
||||
</p>
|
||||
<div class="date"></div>
|
||||
|
||||
<p>
|
||||
<strong>Quel est le meilleur cryptage?</strong><br>
|
||||
<a href="http://fr.wikipedia.org/wiki/Cryptographie_sur_les_courbes_elliptiques">ECC</a> à 256
|
||||
bits produit des adresses destinations courtes et maniables, et est considéré comme plus solide
|
||||
que l'ElGamal à 2048 bits.<br>
|
||||
<a href="http://en.wikipedia.org/wiki/Elliptic_curve_cryptography">ECC</a> à 521 bits est plus
|
||||
solide que sa version à 256 bits, mais il génère des destinations (clés) très longues.<br>
|
||||
<a href="http://fr.wikipedia.org/wiki/Cryptosyst%C3%A8me_de_ElGamal">ElGamal</a> à 2048 bits
|
||||
génère des clés encore plus longues, et il est le plus faible des trois algorithmes. Cependant,
|
||||
ElGamal fait l'objet de plus recherches que ECC, ce qui rend moins probable qu'une faiblesse de
|
||||
cet algorithme passe inaperçue pendant plus longtemps que dans ECC.<br>
|
||||
</p>
|
||||
<div class="date"></div>
|
||||
|
||||
<p>
|
||||
<strong>Quels algorithmes sont-ils utilisés pour le cryptage symétrique et le hachage?</strong><br>
|
||||
<a href="http://fr.wikipedia.org/wiki/Advanced_Encryption_Standard_process">AES</a>-
|
||||
<a href="http://fr.wikipedia.org/wiki/Advanced_Encryption_Standard">256</a> en mode
|
||||
<a href="http://fr.wikipedia.org/wiki/Mode_d%27op%C3%A9ration_%28cryptographie%29#Encha.C3.AEnement_des_blocs_:_.C2.AB_
|
||||
Cipher_Block_Chaining_.C2.BB_.28CBC.29">CBC</a> et
|
||||
<a href="http://http://fr.wikipedia.org/wiki/Secure_Hash_Algorithm">SHA-256</a>.
|
||||
</p>
|
||||
<div class="date"></div>
|
||||
|
||||
<p>
|
||||
<strong>Y a-t-il des protections anti-spam?</strong><br>
|
||||
I2P-Bote ne filtre pas le spam, mais le fait que l'envoi en masse doive être fait
|
||||
individuellement devrait décourager les spammers. Un autre moyen de défense repose sur des
|
||||
pénalités (<a href="http://www.hashcash.org/">HashCash</a>) qui sont un mécanisme supporté au
|
||||
niveau du protocole, et qui pourrait être implémenté dans une version ultérieure si le spam
|
||||
devenait un problème.
|
||||
</p>
|
||||
<div class="date"></div>
|
||||
|
||||
<p>
|
||||
<strong>Deux mot sur HTML et le formatage de texte?</strong><br>
|
||||
L'interface web ne restitue pas la mise en forme HTML.
|
||||
</p>
|
||||
<div class="date"></div>
|
||||
|
||||
<p>
|
||||
<strong>Pendant combien de temps les messages restent-ils dans la nature?</strong><br>
|
||||
Ils restent disponibles 100 jours après l'émission. Les messages n'ayant pas été relevés
|
||||
au-delà de cette période sont supprimés.<br>
|
||||
Les messages relevés restent sur votre ordinateur jusqu'à ce que vous les supprimiez.</p>
|
||||
<div class="date"></div>
|
||||
<p>
|
||||
<strong>Quand les identités expirent-elle?</strong><br>
|
||||
Jamais. Mais la votre peut devenir inutilisable si vous perdez le contenu de votre disque dur.
|
||||
Vous seriez alors amené à en créer une ou plusieurs autres en remplacement, et en informer vos
|
||||
correspondants habituels.
|
||||
</p>
|
||||
<div class="date"></div>
|
||||
|
||||
<p>
|
||||
<strong>Puis-je recevoir et envoyer des messages de/vers des serveurs de l'Internet normal?
|
||||
</strong><br>
|
||||
Non, mais on y travaille.
|
||||
<!-- Yes. You can both send and receive mails to/from ordinary internet e-mail accounts -->
|
||||
</p>
|
||||
<div class="date"></div>
|
||||
|
||||
<p>
|
||||
<strong>Et de/vers les comptes traditionnels de postman?</strong><br>
|
||||
Non plus, mais on y travaille aussi.
|
||||
<!-- Yes. You can both send and receive mails to/from some_name@mail.i2p addresses -->
|
||||
</p>
|
||||
<div class="date"></div>
|
||||
|
||||
<p>
|
||||
<strong>Que signifient les icônes dans la colonne "Connu" de la boîte de réception?</strong><br>
|
||||
Quand la destination expéditrice est inconnue localement le message est marqué d'un X dans la
|
||||
colonne "Connu"
|
||||
<!--or by putting “[UNK]” before the sender's address in POP3-->.<br>
|
||||
Cela veut dire que vous n'avez aucune preuve que cet utilisateur est vraiment qui il prétend
|
||||
être dans son nom public "humain". Bien sûr, si la signature est valide, vous êtes assuré(e)
|
||||
qu'il possède la clé privée de destination avec laquelle il a signé le message, et donc que le
|
||||
contenu du message est bien issu de cette personne. Mais vous ne pouvez pas vous fier au nom
|
||||
court malgré tout (il vous faudrait un autre moyen de vous en assurer: qu'il vous ait remis sa
|
||||
destination en main propre par exemple, ou vérifiée au téléphone, etc…). Dans le cas où
|
||||
vous avez déjà eu un message d'un utilisateur affichant ce nom, vous ne pouvez pas être sûr(e)
|
||||
que c'est le même utilisateur cette fois, même si la signature est valide. Dans ce cas, vous
|
||||
devez comparer les clés de destination ou les ajouter à votre carnet d'adresses. Un utilisateur
|
||||
inconnu localement n'est pas forcément une vermine, mais vous ne devriez pas lui faire
|
||||
confiance à priori sur la seule foi du nom qu'il annonce. Mais s'il passe avec succès le test de
|
||||
comparaison avec la clé précédemment par vous stockée localement, vous avez au moins la preuve
|
||||
qu'il s'agit bien du même utilisateur quand vous recevez un nouveau message de sa part, et la
|
||||
colonne "Connu" est maintenant décorée d'une jolie coche verte.
|
||||
</p>
|
||||
<div class="date"></div>
|
||||
|
||||
<p>
|
||||
<strong>“BktPfx”, “Distance” et “Verrouillé?"&hellips; c'est quoi?</strong><br>
|
||||
• BktPfx = BucketPrefix (préfixe de paquet)<br>
|
||||
• Distance: la distance d'un nœud I2P-Bote au votre propre dans l'espace de clés.
|
||||
<br>
|
||||
• Verrouillé: si un nœud n'est pas joignable, quelle qu'en soit la raison, il est
|
||||
marqué "Verrouillé", et le temps depuis lequel sa défection a été découverte est affiché.<br>
|
||||
</p>
|
||||
<div class="date"></div>
|
||||
|
||||
<p>
|
||||
<strong>Comment rester plus anonyme?</strong><br>
|
||||
</p><ul>
|
||||
<li><p>N'envoyez aucune information à votre sujet! (nom, adresse, photos, situation
|
||||
géographique, fuseau horaire, âge, sexe, sites web, identifiants, id de routeur I2P, id
|
||||
I2P-Bote, fichiers contenant des informations sur l'auteur, …)</p></li>
|
||||
<li><p>N'envoyez pas d'information personnelles c'est à dire des informations qui vous
|
||||
identifient de façon unique en tant que vous seul les connaissez,</p></li>
|
||||
<li><p>Laissez I2P-Bote tourner 24/24 7/7,</p></li>
|
||||
<li><p>Utilisez des routes de messages avec des délais aléatoires par-saut et/ou des temps
|
||||
fixes par saut <font color="#ff0000">[not yet fully implemented]</font>,</p></li>
|
||||
<li><p>Utilisez de longs intervalles de relève,</p></li>
|
||||
<li><p>Utilisez un délais long pour vos propres paquets,</p></li>
|
||||
<li><p>Utilisez un fort niveau d'intervalle de relève aléatoire. <span style="color:
|
||||
red;">[not yet implemented]</span></p></li>
|
||||
<li><p>Supprimez l'envoi de la date et de l'heure dans les en-têtes de messages,</p></li>
|
||||
<li><p>Renoncez aux marqueurs de suivi tels que “Tr:” traduits dans votre langue,</p></li>
|
||||
<li><p>Surveillez votre style de langage et d'écriture,</p></li>
|
||||
<li><p>Utilisez différentes identités,</p></li>
|
||||
<li><p>Envisagez d'abandonner vos identités après de longues périodes d'utilisation,</p></li>
|
||||
<li><p>...</p></li>
|
||||
<li><p>Cette liste n'est pas destinée à vous rendre paranoïaque, mais à vous montrer par où
|
||||
l'anonymat peut-être amoindri.</p></li>
|
||||
</ul>
|
||||
|
||||
<div class="date"></div>
|
||||
|
||||
<p>
|
||||
<strong>Comment ne pas envoyer de tampons horaires?</strong><br>
|
||||
L'option est dans les "Préférences". Les messages n'auront pas de date/heure d'envoi;
|
||||
<!-- <br/>(When using mailroutes, the timestamps are automatically disabled.)
|
||||
<span style="color: red;">[not yet implemented]</span></p> -->
|
||||
</p>
|
||||
<div class="date"></div>
|
||||
|
||||
<p>
|
||||
<strong>Comment migrer mes réglages et données vers un autre ordinateur, ou les
|
||||
sauvegarder?</strong><br>
|
||||
I2P-Bote stocke tout le courrier et autres données dans le dossier <tt>i2pbote</tt>. Sur
|
||||
Windows, <tt>%APPDATA%\I2P\i2pbote</tt>; sur Linux, <tt>$HOME/.i2p/i2pbote</tt>.<br>
|
||||
Une simple copie du dossier <tt>i2pbote</tt> fait l'affaire.<br>
|
||||
Si seules vos identités vous intéressent, copiez le fichier <tt>identities.txt</tt>.
|
||||
Pour le carnet d'adresses, copiez <tt>addressBook.txt</tt>.
|
||||
</p>
|
||||
<div class="date"></div>
|
||||
|
||||
<p>
|
||||
<strong>qu'est-ce qu'une <i>route de messages</i>?</strong><br>
|
||||
voir: Que signifie "Transport à haute latence"?<br>
|
||||
<!-- (When using mail routes, the timestamps are automatically disabled.) [yet to be implemented] -->
|
||||
</p>
|
||||
<div class="date"></div>
|
||||
|
||||
<p>
|
||||
<strong>Que signifie "Transport à haute latence"?</strong><br>
|
||||
Cela signifie que (par une option que vous pouvez activer) les paquets de messages ne sont pas
|
||||
envoyés directement aux nœuds de stockage, mais sont relayés (transférés) par d'autres pairs
|
||||
(qui ne peuvent pas les lire car ils sont cryptés sur plusieurs niveaux et découpés en petits
|
||||
morceaux) qui ne les traitent pas immédiatement mais attendent un certain temps défini au
|
||||
niveau utilisateur – pour l'envoi, par l'expéditeur, pour la réception, par le destinataire.<br>
|
||||
En conséquence le message est long à arriver. L'attaquant ne peut pas utiliser de statistiques
|
||||
sur les temps de fonctionnement des nœuds (qui s'est connecté à quel moment) ni les moments où
|
||||
un message a été reçu pour être stocké (ce dans un environnement à faible latence serait à peu
|
||||
près le moment où il a été envoyé), pour en déduire les identités réelles sous-jacentes aux
|
||||
identités I2P-Bote.
|
||||
</p>
|
||||
<div class="date"></div>
|
||||
|
||||
<p>
|
||||
<strong>Quelles latences y a-t-il, et comment les contrôler?</strong><br>
|
||||
I2P-Bote est décentralisé et s'exécute sur le reéseau I2P, donc ça prend du temps. La vitesse
|
||||
n'est pas notre force, mais il supporte bien la comparaison à d'autres systèmes de messagerie
|
||||
anonyme. Sans apport des routes de messages, il faut 3 à 10 mn entre le clic sur "Envoyer" et
|
||||
l'affichage chez le destinataire.<br>Si la vitesse vous préoccupe, désactivez les routes ou
|
||||
réglez-les au nombre de sauts et de retard par saut minimums avec lesquels vous pouvez vivre.
|
||||
</p>
|
||||
<div class="date"></div>
|
||||
|
||||
<p>
|
||||
<strong>Si I2P-Bote son propre anonymat, pourquoi a-t-il besoin d'I2P?</strong><br>
|
||||
I2P-Bote est bâti sur I2P pour cinq raisons principales:<br>
|
||||
• I2P manquait d'une messagerie décentralisée et HungryHobo est un utilisateur
|
||||
d'I2P.<br>
|
||||
• I2P offre un excellent anonymat, il est bien au point et bénéficie de
|
||||
nombreuses années d'expérience.<br>
|
||||
• Donc, en faire ses fondations représente une assurance d'anonymat s'il y avait
|
||||
des bogues critiques dans I2P-Bote.<br>
|
||||
• Souplesse: nous voulons aussi offrir une méthode de communication à faible
|
||||
latence, tout en gardant un haut niveau de protection.<br>
|
||||
• I2P, avec toutes les autres applications qui l'utilisent, génère beaucoup de
|
||||
trafic dans lequel le trafic I2P-Bote peut se camoufler.<br>
|
||||
• En conséquence, même les relais I2P-Bote sont masqués en terme de localisation.
|
||||
</p>
|
||||
<div class="date"></div>
|
||||
|
||||
<p>
|
||||
<strong>Que valent l'anonymat et la sécurité d'I2P-Bote sans les routes?</strong><br>
|
||||
Plutôt bonne pour l'anonymat et très sécurisé.<br>
|
||||
Il bénéficie de base du même anonymat que les autres applications I2P, l'anonymat procuré par
|
||||
le routeur 2P router – qui est déjà fort conséquent. Cependant, I2P est un réseau à faible
|
||||
latence, avec tous les défauts intrinsèques de ce genre de réseaux. Il a des attaques contre
|
||||
lesquelles I2P ne peut pas vous protéger ou au moins très efficacement. I2P-Bote améliore
|
||||
l'anonymat grâce à ses options de transport à haute latence, qui rendent – si vous les
|
||||
activez – les messages I2P-Bote à un niveau d'anonymat <i>paranoïaque</i>.
|
||||
</p>
|
||||
<div class="date"></div>
|
||||
|
||||
<p>
|
||||
<strong>I2P-Bote, open source?</strong><br>
|
||||
Bien sûr!<br>“ <i>Ce logiciel est sous licence GPL version 3 (voir licenses/GPLv3.txt),
|
||||
sauf pour bcprov-ecc-jdk16-145.jar qui est sous licence Bouncy Castle (voir
|
||||
licenses/BouncyCastle.txt).</i>” <br>(Toutes deux sont des licences libres et ouvertes).
|
||||
</p>
|
||||
<div class="date"></div>
|
||||
|
||||
<p>
|
||||
<strong>Qui a créé I2P-Bote?</strong><br>
|
||||
(Voir aussi les "Remerciements"!)<br>
|
||||
La conception, la structure technique, l'implémentation et l'interface web user sont de
|
||||
HungryHobo, un développeur anonyme. Pour les retours techniques ou proposer votre aide, vous
|
||||
pouvez le contacter avec I2P-Bote. Sa destination est: <br>
|
||||
<b>hobo37SEJsEMfQHwcpVlvEgnrERGFz34GC1yjVyuRvl1QHnTi0UAoOtrLP~qkFY0oL59BBqj5sCep0RA8I5G8n</b>
|
||||
</p>
|
||||
<div class="date"></div>
|
||||
|
||||
<p>
|
||||
<strong>Langues disponibles</strong><br>
|
||||
Anglais, allemand, russe, français, espagnol, portugais, hollandais, norvégien, suédois,
|
||||
chinois et arabe.
|
||||
</p>
|
||||
<div class="date"></div>
|
||||
|
||||
<p>
|
||||
<strong>Comment puis-je aider à la traduction d'I2P-Bote dans ma langue?</strong><br>
|
||||
Comme pour I2P.
|
||||
<a href="http://t5qds7twb7eyyvp2fchhbn74tgdzv774rlru5guit5jkn4a6do7a.b32.i2p/contact.html">
|
||||
Contactez l'auteur.</a>
|
||||
</p>
|
||||
<div class="date"></div>
|
||||
|
||||
<p>
|
||||
<strong>Fonctionnement technique?</strong><br>
|
||||
Regardez <tt>doc/techdoc.txt</tt> dans le code source.
|
||||
</p>
|
||||
<div class="date"></div>
|
||||
|
||||
<p>
|
||||
<strong>D'autres moyens pour aider?</strong><br><br>
|
||||
• Utilisez I2P-Bote et faites part de vos commentaires/<br><br>
|
||||
• Parlez d'I2P-Bote à vos amis, à votre famille et à vos collègues, et aidez-les.
|
||||
<br><br>
|
||||
• Mentionnez I2P-Bote sur votre blog, votre eepsite et votre web.<br><br>
|
||||
• Rédigez un guide utilisateur ou améliorez la documentation technique.<br><br>
|
||||
• Ajoutez des fonctionnalités ou corrigez des bogues (<a
|
||||
href="http://t5qds7twb7eyyvp2fchhbn74tgdzv774rlru5guit5jkn4a6do7a.b32.i2p/contact.html">contactez tout d'abord l'auteur
|
||||
</a>).<br><br>
|
||||
</p>
|
||||
<div class="date"></div>
|
||||
|
||||
<p>
|
||||
<br><br><br><br><br><br><br>
|
||||
<strong>Remerciements:</strong><br><br>
|
||||
Idée & conception technique: <i>HungryHobo</i>, <i>Mixxy</i><br><br>
|
||||
Implémentation: <i>HungryHobo</i><br><br>
|
||||
Maintenance du greffon: <i>zzz</i>, <i>HungryHobo</i><br><br>
|
||||
Interface utilisateur: <i>HungryHobo</i><br><br>
|
||||
Intégration de Seedless: <i>sponge</i><br><br>
|
||||
Traduction allemande: <i>HungryHobo</i><br><br>
|
||||
Traduction russe: <i>suhr</i><br><br>
|
||||
Traduction française: <i>albat</i>, <i>Redzara</i>, <i>Mixxy</i>, <i>magma</i><br><br>
|
||||
Traduction espagnole: <i>Mixxy</i><br><br>
|
||||
Traduction portugaise: <i>Mixxy</i><br><br>
|
||||
Traduction hollandaise: <i>KwukDuck</i><br><br>
|
||||
Traduction norvégienne: <i>hej</i><br><br>
|
||||
Traduction suédoise: <i>hottuna</i><br><br>
|
||||
Traduction chinoise: <i>walking</i><br><br>
|
||||
Traduction arabe: <i>hamada</i><br><br>
|
||||
Testeurs versions Alpha: <i>HungryHobo</i>, <i>Mixxy</i>, <i>Returning Novice</i>,
|
||||
<i>sponge</i>, et de nombreux autres<br><br>
|
||||
Manuel: <i>Mixxy</i><br><br>
|
||||
<br><br>
|
||||
</p>
|
||||
|
||||
<div class="date"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="footer">
|
||||
<div class="rside">CSS: <a href="http://www.free-css-templates.com/"
|
||||
title="Design by David Herreman">David Herreman</a></div>
|
||||
<p>
|
||||
<a href="http://validator.w3.org/check?uri=referer" title="Validate">XHTML</a>
|
||||
- <a href="http://jigsaw.w3.org/css-validator/check/referer"
|
||||
title="Validate">CSS</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</body></html>
|
879
WebContent/User's Guide.html
Normal file
@ -0,0 +1,879 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
|
||||
<html><head>
|
||||
<meta content="text/html; charset=ISO-8859-1" http-equiv="content-type"><title>User's Guide</title><meta http-equiv="CONTENT-TYPE" content="text/html; charset=utf-8"><meta name="GENERATOR" content="OpenOffice.org 3.2 (Unix)"><style type="text/css">
|
||||
<!--
|
||||
@page { margin: 2cm }
|
||||
P { margin-bottom: 0.21cm }
|
||||
A:link { so-language: zxx }
|
||||
-->
|
||||
</style><meta http-equiv="CONTENT-TYPE" content="text/html; charset=utf-8"><meta name="GENERATOR" content="OpenOffice.org 3.2 (Unix)"><style type="text/css">
|
||||
<!--
|
||||
@page { margin: 2cm }
|
||||
P { margin-bottom: 0.21cm }
|
||||
-->
|
||||
</style></head><body>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<p style="line-height: 150%; font-weight: bold;" align="center"><font face="Arial, sans-serif">I2P-Bote
|
||||
Manual</font></p>
|
||||
<p style="line-height: 150%;"><br></p>
|
||||
<p style="line-height: 150%;"><br>
|
||||
</p>
|
||||
|
||||
<p style="line-height: 150%;"><font face="Arial, sans-serif"><b>1.
|
||||
Introduction</b></font></p>
|
||||
|
||||
<p style="line-height: 150%;"><br><br>
|
||||
<font face="Arial, sans-serif">I2P-Bote
|
||||
is an easy-to-use, highly anonymous secure e-mail application for
|
||||
I2P. It is a serverless, fully decentralized system that
|
||||
establishes/forms a peer-to-peer network built on top of
|
||||
state-of-the-art low latency anonymizing network I2P; adding to it an
|
||||
optional mixminion-like high-latency transport and thus avoiding the
|
||||
shortcomings of low-latency networks.</font></p>
|
||||
<p style="line-height: 150%;"><font face="Arial, sans-serif">Therefore,
|
||||
I2P-Bote makes full use of the anonymity provided by I2P, plus it
|
||||
generates its own anonymity by adding another anonymizing layer
|
||||
(overlay network).</font></p>
|
||||
<p style="line-height: 150%;"><font face="Arial, sans-serif">This
|
||||
concept of layered anonymity is what makes I2P-Bote so flexible:</font></p>
|
||||
<p style="line-height: 150%;"><font face="Arial, sans-serif">You can
|
||||
configure it to be extremely anonymous and slow or less anonymous but
|
||||
faster/more efficient. In any event, I2P-Bote<font color="#000000">
|
||||
always provides a very good anonymity for both, sender and receiver,
|
||||
as well as end-to-end encryption*. </font></font>
|
||||
</p>
|
||||
<p style="line-height: 150%;"><font color="#000000"><font face="Arial, sans-serif">I2P-Bote
|
||||
offers the option to make your communications even more anonymous, by
|
||||
enabling the high-latency mail routes – at cost of performance,
|
||||
however. Users that want their anonymous e-mails to arrive as quickly
|
||||
as possible, will want to disable the mail routes and use 'direct'
|
||||
sending through I2P. It is guaranteed that you will never be less
|
||||
anonymous than the anonymity provided by standard I2P connections. </font></font>
|
||||
</p>
|
||||
<p style="line-height: 150%;"><font face="Arial, sans-serif"><font color="#000000">In
|
||||
order to achieve high usability, we have enabled it to be used with
|
||||
standard mail clients such as Thunderbird, Evolution or Kmail,
|
||||
without having to worry about what extra information these
|
||||
applications send in their headers. [</font><font color="#ff0000">YET
|
||||
TO BE IMPLEMENTED</font><font color="#000000">] Furthermore there is
|
||||
a web interface that lets you send and read e-mails or manage your
|
||||
settings and identities.</font></font></p>
|
||||
|
||||
<p style="line-height: 150%;"><font face="Arial, sans-serif">I2P-Bote
|
||||
is easy to use: If you're
|
||||
not yet using I2P, just install I2P from <a href="http://www.i2p2.de/">http://www.i2p2.de</a>
|
||||
and then install the I2P-Bote plugin as described in this manual.
|
||||
Otherwise simply read on!**</font></p>
|
||||
<p style="line-height: 150%;"><font face="Arial, sans-serif"><i>Current
|
||||
version is 0.2.6.</i></font><br><br>
|
||||
</p>
|
||||
<p style="line-height: 150%;"><font face="Arial, sans-serif">*Unless
|
||||
you send e-mails to or receive them from the regular internet, ALL
|
||||
emails – the mail body, attachments and the header except
|
||||
recipient's address (subject, date, time, sender address, ...) are
|
||||
automatically and transparently end-to-end encrypted. The recipient's
|
||||
address is only visible for the mail route's last node that stores
|
||||
the packets into the kad network, and the respective storing nodes,
|
||||
but they cannot read the mail's content nor who sent it nor who will
|
||||
fetch it.</font></p>
|
||||
<p style="line-height: 150%;"><br><br>
|
||||
</p>
|
||||
<p style="line-height: 150%;"><font face="Arial, sans-serif">**Of
|
||||
course you can also compile from source.</font></p>
|
||||
<p style="line-height: 150%;"><br>
|
||||
</p>
|
||||
<p style="line-height: 150%;"><br>
|
||||
<br>
|
||||
</p>
|
||||
|
||||
<p style="line-height: 150%;"><font face="Arial, sans-serif"><b>2.
|
||||
Howto</b></font></p>
|
||||
<p style="line-height: 150%;"><br>
|
||||
</p>
|
||||
<p style="line-height: 150%;"><font face="Arial, sans-serif"><u>2.1.
|
||||
Installation</u></font></p>
|
||||
<p style="line-height: 150%;"><br>
|
||||
</p>
|
||||
<p style="line-height: 150%;"><font face="Arial, sans-serif">In order
|
||||
to install I2P-Bote, go to the bottom of the I2P Client Configuration
|
||||
page at </font>
|
||||
</p>
|
||||
|
||||
<p style="line-height: 150%;"><font face="Arial, sans-serif"><a href="http://localhost:7657/configclients.jsp">http://localhost:7657/configclients.jsp</a>
|
||||
</font>
|
||||
</p>
|
||||
|
||||
<p style="line-height: 150%;"><font face="Arial, sans-serif">and
|
||||
enter:</font></p>
|
||||
|
||||
<p style="line-height: 150%;"><a href="http://tjgidoycrw6s3guetge3kvrvynppqjmvqsosmtbmgqasa6vmsf6a.b32.i2p/i2pbote.xpi2p"><font face="Arial, sans-serif">http://tjgidoycrw6s3guetge3kvrvynppqjmvqsosmtbmgqasa6vmsf6a.b32.i2p/i2pbote.xpi2p</font></a></p>
|
||||
|
||||
<p style="line-height: 150%;"><font face="Arial, sans-serif">(
|
||||
<a href="http://i2pbote.i2p/i2pbote.xpi2p">http://i2pbote.i2p/i2pbote.xpi2p</a>
|
||||
might work, too, if you have i2pbote.i2p in your address book or a
|
||||
subscription )</font></p>
|
||||
|
||||
|
||||
<p style="line-height: 150%;"><font face="Arial, sans-serif">in the
|
||||
“Plugin Installation Download Url” line, then hit “Install
|
||||
Plugin”. Wait
|
||||
until your sidebar says plugin installed and started. </font>
|
||||
</p>
|
||||
<p style="line-height: 150%;"><br>
|
||||
</p>
|
||||
<p style="line-height: 150%;"><font face="Arial, sans-serif">In order
|
||||
to update your I2P-Bote instance, click 'Update' under I2P-Bote on
|
||||
the I2P Client Configuration page at
|
||||
<a href="http://localhost:7657/configclients.jsp">http://localhost:7657/configclients.jsp</a></font></p>
|
||||
|
||||
<p style="line-height: 150%;"><br><br>
|
||||
</p><p style="line-height: 150%;"><font face="Arial, sans-serif"><u>2.2.
|
||||
Using I2P-Bote</u></font></p>
|
||||
|
||||
<p style="line-height: 150%;"><br><font face="Arial, sans-serif">On your
|
||||
router console <a href="http://127.0.0.1:7657/">http://127.0.0.1:7657/</a>
|
||||
click on <span style="font-style: italic;">SecureMail</span> on the upper left (in the sidebar). Now you are
|
||||
on I2P-Bote's web interface.</font></p>
|
||||
|
||||
|
||||
<p style="line-height: 150%;"><font face="Arial, sans-serif">After
|
||||
starting I2P-Bote (by default it is set to start automatically when
|
||||
your I2P router starts up) it takes a bit more than three minutes for
|
||||
everything to be up and running. </font>
|
||||
</p>
|
||||
<p style="line-height: 150%;"><font face="Arial, sans-serif">So have a
|
||||
look at 'Network Status' on the left. It should state 'Connected'.</font></p>
|
||||
|
||||
<p style="line-height: 150%;"><font face="Arial, sans-serif">If you
|
||||
want to use I2P-Bote for yourself, you first need to create an
|
||||
identity.</font>
|
||||
</p>
|
||||
|
||||
|
||||
<p style="line-height: 150%;"><br><br>
|
||||
</p>
|
||||
<p style="line-height: 150%;"><font face="Arial, sans-serif"><u>2.2.1
|
||||
Creating an Identity</u></font></p>
|
||||
|
||||
<p style="line-height: 150%;"><br><font face="Arial, sans-serif">Click on
|
||||
'Identities' on the left, then hit the “New Identity” button.</font></p>
|
||||
<p style="line-height: 150%;"><font face="Arial, sans-serif">Enter at
|
||||
least a 'Public Name' and hit 'Create'. That's all that's needed to
|
||||
create an identity.</font></p>
|
||||
<p style="line-height: 150%;"><font face="Arial, sans-serif">The
|
||||
public name is the name you see for this identity (useful in case you
|
||||
have different identities for different sets of users you communicate
|
||||
with or different purposes) and it will be sent as “sender's name”
|
||||
to the mail's recipient. There is no need for Public Name to be
|
||||
unique. </font>
|
||||
</p>
|
||||
<p style="line-height: 150%;"><font face="Arial, sans-serif">(As you
|
||||
can choose any name here – anyone could call himself HungryHobo
|
||||
there – it is not suited to be used by the recipient for telling if
|
||||
two mails come from the same sender. This is why the name saved in
|
||||
the local addressbook (there can only by one name per destination
|
||||
key) is displayed, if there is any, and you will see a green mark in
|
||||
the “Know” column, stating it is the locally known name. If there
|
||||
is no entry for a destination in local addressbook, the name
|
||||
specified by the sender will be displayed with a prefixed [UNK] in
|
||||
the mail clients). [<font color="#ff0000">POP3 NOT YET IMPLEMENTED</font>]</font></p>
|
||||
|
||||
<p style="line-height: 150%;"><br><font face="Arial, sans-serif">You can
|
||||
also fill out the other fields, if you like:</font></p>
|
||||
<p style="line-height: 150%;"><font face="Arial, sans-serif">Description
|
||||
– this field is kept locally. It's just for your convenience: If
|
||||
you want to add some additional information for yourself about that
|
||||
identity, you can enter it here. </font>
|
||||
</p>
|
||||
|
||||
<p style="line-height: 150%;"><font face="Arial, sans-serif">Email
|
||||
Address – this field is not used yet.<font color="#ff0000"><br></font></font><br><font color="#000000"><font face="Arial, sans-serif">Choose
|
||||
from one of the given encryption algorithms. If in doubt, stick to
|
||||
the defaults.</font></font></p>
|
||||
|
||||
|
||||
|
||||
<p style="line-height: 150%;"><font face="Arial, sans-serif">You click
|
||||
on the name of one of your identities and copy the long key displayed
|
||||
under 'Email Destination'. This is your I2P-Bote e-mail address. If
|
||||
you want anybody to be able to send you a bote mail, he need to be
|
||||
given this long key.</font><br>
|
||||
<br><font face="Arial, sans-serif">Now you
|
||||
can send and receive I2P-Bote mails.</font></p>
|
||||
<p style="line-height: 150%;"><font face="Arial, sans-serif">But you
|
||||
should also have a look at your I2P-Bote settings and see if they fit
|
||||
your needs.</font></p>
|
||||
<p style="line-height: 150%;"><font face="Arial, sans-serif">(You can
|
||||
also create various identities and assign different settings to each
|
||||
of them.)</font></p>
|
||||
<p style="line-height: 150%;"><br></p><p style="line-height: 150%;"><font face="Arial, sans-serif"><u><br>
|
||||
2.2.2
|
||||
Sending and Receiving E-Mails</u></font></p>
|
||||
<p style="line-height: 150%;"><br>
|
||||
</p>
|
||||
<p style="line-height: 150%;"><font face="Arial, sans-serif">You need
|
||||
to have the I2P-Bote e-mail destination key of the user you to whom
|
||||
you want to send a bote mail. </font>
|
||||
</p>
|
||||
<p style="line-height: 150%;"><font face="Arial, sans-serif">In order
|
||||
to send a message, click on 'New', choose your own sender identity or
|
||||
'Anonymous' under “From” and enter the recipient's e-mail
|
||||
destination key or alternatively an address in the “To:” line.</font></p>
|
||||
<p style="line-height: 150%;"><font face="Arial, sans-serif">Alternatively,
|
||||
you can hit the “Addr. Book” button right under this very line,
|
||||
in order to chose from e-mail dests stored locally in your address
|
||||
book: Mark the user(s) to which you want your mail to be sent and hit
|
||||
the “Add Recipients” button.)</font></p>
|
||||
<p style="line-height: 150%;"><font face="Arial, sans-serif">You can
|
||||
add several recipients and change the 'To:' to 'CC:' or 'BCC:'.</font></p>
|
||||
<p style="line-height: 150%;"><font face="Arial, sans-serif">The “+”
|
||||
button adds additional recipient lines.</font></p>
|
||||
<p style="line-height: 150%;"><br>
|
||||
</p>
|
||||
<p style="line-height: 150%;"><font face="Arial, sans-serif">Now write
|
||||
your bote mail and hit 'Send' for sending it, or 'Save' in order to
|
||||
store it as a draft into your 'drafts' folder or any user-defined
|
||||
folder. [<font color="#ff0000">not yet implemented</font>]</font></p>
|
||||
<p style="line-height: 150%;"><font face="Arial, sans-serif">Hitting
|
||||
“Send” will place your e-mail into the Outbox folder and you can
|
||||
go on using I2P-Bote, e.g. writing another e-mail, or simply do other
|
||||
things. I2P-Bote is now sending your e-mail. Once it is sent, it's
|
||||
automatically removed from Outbox and stored into your Sent folder.
|
||||
This means, your mail is entirely on the way to its destination
|
||||
(unless you have set a delay time, which is disabled by default).</font></p>
|
||||
|
||||
<p style="line-height: 150%;"><font face="Arial, sans-serif">In
|
||||
I2P-Bote e-mails are automatically signed (unless send without any
|
||||
sender identity).<br>
|
||||
You can
|
||||
also send e-mails without specifying <i>any </i><span style="font-style: normal;">sender
|
||||
identity/destination/address, just select “Anonymous” in the
|
||||
scroll-down menu “From:”.</span></font></p>
|
||||
|
||||
|
||||
<p style="line-height: 150%;"><br><font face="Arial, sans-serif">In the
|
||||
default settings I2P-Bote will automatically check for new mails, and
|
||||
all you need to do in order to see if you got e-mails is look into
|
||||
your Inbox (link 'Inbox' on the left).<br>
|
||||
You can
|
||||
force a manual check by clicking the 'Check Mail' button. This is a
|
||||
global checking, that tries to fetch new mails for all of your
|
||||
identities, except for those you have excluded from global checking.
|
||||
[<font color="#ff0000">not yet implemented</font>]</font></p>
|
||||
|
||||
<p style="line-height: 150%;"><br><font face="Arial, sans-serif">The
|
||||
number of unread e-mails is shown in parenthesis next to the folder's
|
||||
name in the sidebar. </font>
|
||||
</p>
|
||||
<p style="line-height: 150%;"><font face="Arial, sans-serif">Click on
|
||||
“<span style="font-style: normal;">Inbox”</span> to have a list of
|
||||
received e-mails displayed. You will see two columns with x's or
|
||||
green checks. Those show you if a mail contains a valid signature and
|
||||
is thus authentic (Sig) and if the sender's e-mail destination key is
|
||||
locally known, i.e. in your addressbook (Know). Hence, two green
|
||||
checks next to a mail entry mean that you already know that e-mail
|
||||
identity and that the mail is signed by that identity. </font>
|
||||
</p>
|
||||
<p style="line-height: 150%;"><font face="Arial, sans-serif">If you
|
||||
have a certain name in your address book and you get a mail from an
|
||||
identity with that name, yet Know is <i><u>not</u></i><i> </i><span style="font-style: normal;">displaying
|
||||
a green check, then it is a </span><i><u>different</u></i><span style="font-style: normal;">
|
||||
destination that sent and signed this mail; he simply has chosen the
|
||||
same name you have chosen for one of your contacts.</span></font></p>
|
||||
<p style="font-style: normal; line-height: 150%;"><font face="Arial, sans-serif">Is
|
||||
there a green check mark for “Sig”, then the mail is correctly
|
||||
signed by the sender and you may add it to your addressbook under a
|
||||
different name, which now will be displayed as the sender.</font></p>
|
||||
<p style="font-style: normal; line-height: 150%;"><font face="Arial, sans-serif">Of
|
||||
course, a mail without sender destination (“Anonymous” is
|
||||
displayed as sender) will have two x's.</font></p>
|
||||
<p style="line-height: 150%;"><font face="Arial, sans-serif">Clicking
|
||||
one of the e-mails displayed in your inbox will open the mail. </font>
|
||||
</p>
|
||||
<p style="line-height: 150%;"><font face="Arial, sans-serif">The same
|
||||
applies to all other folders.</font></p>
|
||||
|
||||
<p style="line-height: 150%;"><br><font face="Arial, sans-serif">(Due to
|
||||
the distributed nature of I2P-Bote, sending as well as checking for
|
||||
and retrieving e-mails takes a few minutes. With mail routes
|
||||
activated respectively more. But you need not keep the browser open
|
||||
for that, simply leave I2P-Bote running as a background process –
|
||||
this is also benefits your anonymity)</font></p>
|
||||
<p style="line-height: 150%;"><br>
|
||||
</p>
|
||||
|
||||
|
||||
|
||||
|
||||
<p style="line-height: 150%;"><br><font face="Arial, sans-serif"><u>2.2.3
|
||||
Local Address Book</u></font></p>
|
||||
|
||||
<p style="line-height: 150%;"><br><font face="Arial, sans-serif">If you
|
||||
have the I2P-Bote e-mail key from somebody you want to write to more
|
||||
frequently, it is handy to store that key locally into your address
|
||||
book (link on the left), specify a name of your own choosing for this
|
||||
contact and paste his mail destination in the corresponding line,
|
||||
<font color="#000000">then save.</font></font></p>
|
||||
<p style="line-height: 150%;"><font color="#000000"><font face="Arial, sans-serif">You
|
||||
should normally save destinations to your addressbook, so that next
|
||||
time you get a mail from the same sender it will be shown to be from
|
||||
the same, locally known sender (“Loc” is checked) and a mail sent
|
||||
by someone else who is just using the same user name will be marked
|
||||
as NOT known locally (an x in web-UI's 'Know' column or [UNK] before
|
||||
the sender address in POP3), so you know it's a new/different one. </font></font>
|
||||
</p>
|
||||
|
||||
|
||||
|
||||
<p style="line-height: 150%;"><br><br>
|
||||
<font face="Arial, sans-serif"><u>2.2.4
|
||||
Settings (and what they mean)</u></font></p>
|
||||
|
||||
<p style="line-height: 150%;"><br><font face="Arial, sans-serif">Under
|
||||
settings you can choose the I2P-Bote interface's <i>language</i>
|
||||
(currently English or German) and decide whether even with a
|
||||
non-English language setting everything that will be automatically
|
||||
added to an e-mail when replying will nonetheless stay in English, so
|
||||
that the recipient does not know your I2P-Bote is set to a different
|
||||
language.<br>Otherwise the recipient could guess about your
|
||||
nationality which would decrease your anonymity. </font>
|
||||
</p>
|
||||
|
||||
<p style="line-height: 150%;"><font face="Arial, sans-serif">Here you
|
||||
can also adjust the interval for <i>automatic checking</i> of e-mails
|
||||
and decide whether or not to send any <i>time stamp</i> with your
|
||||
mails, indicating date and time when the mail was sent. The time
|
||||
stamps are always in UTC.</font></p>
|
||||
<p style="font-style: normal; line-height: 150%;"><font face="Arial, sans-serif">(When
|
||||
using mail routes, the timestamps are automatically disabled.) [<font color="#ff0000">not
|
||||
yet implemented</font>]</font></p>
|
||||
<p style="font-style: normal; line-height: 150%;"><br>
|
||||
</p>
|
||||
<p style="line-height: 150%;"><font face="Arial, sans-serif"><i>automatic
|
||||
checking for e-mails:</i></font></p>
|
||||
<p style="line-height: 150%;"><font face="Arial, sans-serif">For more
|
||||
comfort there is the “Check for mail every XX minutes“ option. </font>
|
||||
</p>
|
||||
<p style="line-height: 150%;"><font face="Arial, sans-serif">Here you
|
||||
can specify how often your I2P-Bote app should try to fetch unread
|
||||
mails for your identities. This can be set on a per-identity basis
|
||||
[<font color="#ff0000">not yet implemented</font>]</font></p>
|
||||
<p style="line-height: 150%;"><font face="Arial, sans-serif">If you
|
||||
specify a random offset, then it will not check _exactly_ every XX
|
||||
minutes, but rather every (XX+-offset*XX)minutes, i.e. after a
|
||||
randomly chosen time between (1-offset)XX minutes and (1+offset)XX
|
||||
minutes. [<font color="#ff0000">not yet implemented</font>]</font></p>
|
||||
<p style="line-height: 150%;"><font face="Arial, sans-serif">You can
|
||||
also totally disable the automatic checking for a given identity.</font></p>
|
||||
<p style="line-height: 150%;"><font face="Arial, sans-serif">(If you
|
||||
are not sure about these settings, the defaults should be ok for
|
||||
you.)</font></p>
|
||||
|
||||
<p style="line-height: 150%;"><br><br>
|
||||
<font face="Arial, sans-serif"><i>Mail
|
||||
routes</i> are chains of I2P-Bote nodes acting as relays/routers for
|
||||
other peers and obeying to per-hop delays, thus providing the
|
||||
high-latency transport for increased anonymity. </font>
|
||||
</p>
|
||||
<p style="line-height: 150%;"><font face="Arial, sans-serif">You can
|
||||
specify the number of nodes (here called hops) that should be chained
|
||||
to form a mail route. Then each of the e-mail packets sent by the
|
||||
identity that has mail routes enabled will go through a mail route of
|
||||
n hops before being stored. You can set a delay for each hop
|
||||
individually, as no hop should know the time a packet will wait at
|
||||
the next hop, making the timing unpredictable. [<font color="#ff0000">individual
|
||||
per-hop and per-identity setting of delays not yet implemented</font>]</font></p>
|
||||
<p style="line-height: 150%;"><font face="Arial, sans-serif">As delay
|
||||
you can specify a time frame (e.g. 60-600 minutes) – then a random
|
||||
wait time between the two values will be chosen for the packet at
|
||||
that hop – or a fix time, then the packet will be forwarded at that
|
||||
fix time, e. g. noon UTC, no matter when it arrived. [<font color="#ff0000">fix
|
||||
time not yet implemented</font>] </font>
|
||||
</p>
|
||||
<p style="line-height: 150%;"><font face="Arial, sans-serif">(When
|
||||
using mail routes, the timestamps are automatically disabled. [<font color="#ff0000">not
|
||||
yet implemented</font>])</font></p>
|
||||
|
||||
|
||||
|
||||
<p style="line-height: 150%;"><br><font face="Arial, sans-serif">Under
|
||||
“<i>mínimo en el bote</i>” (minimum threshold number of relay packets that
|
||||
will be sent) you can specify a threshold. As your node can only act
|
||||
reliably as a mix, if there are enough foreign packets to mix and to
|
||||
blend own packets with, it will accumulate messages who's delay time
|
||||
is over until reaching this lower limit. Only when it is surpassed,
|
||||
your node starts sending them out in random order. [<font color="#ff0000">Not
|
||||
yet implemented</font>]</font><br><br>
|
||||
</p>
|
||||
<p style="line-height: 150%;"><font face="Arial, sans-serif"><i>exclude
|
||||
identity from global checking</i> [<font color="#ff0000">Not yet
|
||||
implemented</font>]</font></p>
|
||||
<p style="line-height: 150%;"><font face="Arial, sans-serif">If you
|
||||
enable this option for one of your identities, then this one will not
|
||||
be affected by the global manual checking for mails nor by any global
|
||||
automatic mail checking.</font></p>
|
||||
<p style="line-height: 150%;"><br><br>
|
||||
</p>
|
||||
|
||||
<p style="line-height: 150%;"><font face="Arial, sans-serif"><u>2.2.5
|
||||
E-mails to and from the Internet</u><span style="text-decoration: none;">
|
||||
[</span><font color="#ff0000"><span style="text-decoration: none;">NOT
|
||||
YET FULLY IMPLEMENTED!</span></font><span style="text-decoration: none;">]</span></font></p>
|
||||
|
||||
<p style="line-height: 150%;"><br><font face="Arial, sans-serif">In order
|
||||
to be able to send bote mails to the internet and to receive e-mails
|
||||
from the internet with your I2P-Bote application, you must first
|
||||
register with an appropriate mail gateway. Currently there is only
|
||||
one: postman. </font>
|
||||
</p>
|
||||
|
||||
|
||||
<p style="line-height: 150%;"><br><font face="Arial, sans-serif">1) First, go to:
|
||||
<a href="http://hq.postman.i2p/?page_id=16">http://hq.postman.i2p/?page_id=16</a> and
|
||||
register an account. If you already have an account or if you have
|
||||
just created one as described, proceed with #2.</font></p>
|
||||
|
||||
<p style="line-height: 150%;"><br><font face="Arial, sans-serif">2) For an
|
||||
existing account you can add your I2P-Bote mail destination, so that
|
||||
e-mails coming from the internet are forwarded to your I2P-Bote app.
|
||||
To do so go to: <a href="http://hq.postman.i2p/?page_id=74">http://hq.postman.i2p/?page_id=74</a>
|
||||
and provide the requested information.</font></p>
|
||||
<p style="line-height: 150%;"><font face="Arial, sans-serif">Now all
|
||||
e-mails sent to that address (<a href="mailto:name@i2pmail.org">name@i2pmail.org</a>
|
||||
from the outer internet or <a href="mailto:name@mail.i2p">name@mail.i2p</a>
|
||||
for mails from other postman subscribers) will be forwarded via the
|
||||
I2P-Bote network to your I2P-Bote app.</font></p>
|
||||
<p style="line-height: 150%;"><font face="Arial, sans-serif">(N.B.
|
||||
When using the <a href="mailto:name@mail.i2p">name@mail.i2p</a> or
|
||||
<a href="mailto:name@i2pmail.org">name@i2pmail.org</a> addresses
|
||||
instead of the long addresses, e-mails are no longer end-to-end
|
||||
encrypted. Therefore, it is recommended to exchange the I2P-Bote mail
|
||||
destination keys for communicating within the network. Postman has
|
||||
offered high quality services in I2P for quite a while already, but
|
||||
be aware that it's a centralized point that might go offline one day,
|
||||
or worse be taken over by an evildoer that will manipulate mails. As
|
||||
for network-internal e-mail communication, I2P-Bote makes sure that
|
||||
if you use the address keys, nobody can tamper with the mails you
|
||||
send or receive.)</font></p>
|
||||
|
||||
|
||||
|
||||
|
||||
<p style="line-height: 150%;"><font face="Arial, sans-serif">If you
|
||||
want not only to receive e-mails from the internet, but also enable
|
||||
sending e-mails from I2P-Bote to the internet, you must provide your
|
||||
I2P-Bote client with the gateway's mail destination key, so that your
|
||||
I2P-Bote knows where to send those mails to.<br>
|
||||
You can
|
||||
do this under “settings”. </font><font face="Arial, sans-serif">This
|
||||
gateway will allow I2P-Bote users to communicate with the standard
|
||||
e-mail users on the internet as well as with users of postman's
|
||||
classical i2pmail service (@mail.i2p).</font><br>
|
||||
<font face="Arial, sans-serif"><br>
|
||||
In order
|
||||
to fight abuse, there will be a limitation of the number of e-mails
|
||||
you can send out to the internet; just like for normal postman mail
|
||||
service users: If an I2P-Bote user exceeds the quota with outgoing
|
||||
e-mails, the additional e-mails will be sent back as bounce.</font></p>
|
||||
<p style="line-height: 150%;"><br><br>
|
||||
<br>
|
||||
</p>
|
||||
<p style="line-height: 150%;"><font face="Arial, sans-serif"><b>3.
|
||||
Considerations about Anonymity</b></font></p>
|
||||
|
||||
<p style="line-height: 150%;"><br>
|
||||
<font face="Arial, sans-serif">Don't
|
||||
send identifying information about you (name, address, geographic
|
||||
location, time zone, age, websites you have just visited or blogged
|
||||
about, user names, ip numbers, I2P router id, I2P-Bote id, social
|
||||
security number, credit card number, …, copies of your passport,
|
||||
driver's license, home rental contract, photos – nude or with
|
||||
clothes –, documents that contain your username in author's
|
||||
settings, and many many more)!</font></p>
|
||||
|
||||
<p style="line-height: 150%;"><font face="Arial, sans-serif"><br>
|
||||
If
|
||||
possible, </font>
|
||||
</p>
|
||||
<ul><li><p style="line-height: 150%;"><font face="Arial, sans-serif">leave
|
||||
I2P-Bote running 24/7,</font></p>
|
||||
</li><li><p style="line-height: 150%;"><font face="Arial, sans-serif">use
|
||||
mailroutes with randomized per-hop delays and/or per-hop fixed send
|
||||
times, [<font color="#ff0000">not yet </font><font color="#ff0000"><i>fully</i></font><font color="#ff0000">
|
||||
implemented</font>]</font></p>
|
||||
</li><li><p style="line-height: 150%;"><font face="Arial, sans-serif">use
|
||||
a long check interval,</font></p>
|
||||
</li><li><p style="line-height: 150%;"><font face="Arial, sans-serif">use
|
||||
a long local delay for own packets,</font></p>
|
||||
</li><li><p style="line-height: 150%;"><font face="Arial, sans-serif">use
|
||||
a big check interval randomization. [<font color="#ff0000">not yet
|
||||
implemented</font>]</font></p>
|
||||
</li></ul>
|
||||
|
||||
<p style="line-height: 150%;"><br><font face="Arial, sans-serif">You can
|
||||
suppress the sending of date and time in the e-mails' header.</font></p>
|
||||
|
||||
<p style="line-height: 150%;"><font face="Arial, sans-serif">When you
|
||||
reply to an e-mail, certain markers, such as “Re: [subject of the
|
||||
mail you're replying to]” or “[username] wrote:”. Those are
|
||||
different for the languages you can chose from in your language
|
||||
settings. However, if you don't want the recipient to know what
|
||||
language you have set, you can suppress translation of these markers,
|
||||
so that they will be in English, no matter what you language setting
|
||||
is. In order to do so, mark “Use English for text added to outgoing
|
||||
email ('Re:', 'wrote:', etc.) “</font></p>
|
||||
|
||||
|
||||
<p style="line-height: 150%;"><font face="Arial, sans-serif">Be
|
||||
careful with the contents you send! Don't include personal
|
||||
information or information that only you can possess. Don't write I'm
|
||||
going to bed now, it's late when including time stamps.<br>
|
||||
The
|
||||
language in which your write your e-mails, your style and
|
||||
formulations can also be of interest for an attacker.</font></p>
|
||||
|
||||
<p style="line-height: 150%;"><br><font face="Arial, sans-serif">I2P-Bote
|
||||
also offers the possibility to use different e-mail
|
||||
identities.<br>Suppose one of you contacts learns about your
|
||||
identity, as you forgot to erase identifying information in a secret
|
||||
document you have sent to him. Now if this e-mail's recipient was to
|
||||
collaborate with others you are in contact with, he could tell them
|
||||
the real world identity belonging to the Bote address he knows from
|
||||
you. Thusly, if you communicate with those others using the same Bote
|
||||
address, they will know who you are.<br>Not so, if you used a
|
||||
different address for sending mails to them.</font></p>
|
||||
|
||||
|
||||
|
||||
<p style="line-height: 150%;"><br><br>
|
||||
<font face="Arial, sans-serif"><b>4.
|
||||
Technical Concept</b></font></p>
|
||||
|
||||
<p style="line-height: 150%;"><br>
|
||||
<font face="Arial, sans-serif">I2P-Bote
|
||||
is an end-to-end encrypted, network-internal, fully decentralized
|
||||
(i.e. serverless) e-mail system. It supports different identities and
|
||||
does not expose e-mail headers. Currently, it is still alpha software
|
||||
and can only by accessed via web console. It soon will have POP3
|
||||
support, and it is planned to guarantee additional anonymity by
|
||||
providing a high-latency transport option. All bote-mails are
|
||||
automatically end-to-end encrypted, so that there's no need to set up
|
||||
extra e-mail encryption (though you can do that), and bote-mails will
|
||||
be authenticated automatically. As it is decentralized, there is no
|
||||
e-mail server that could link different e-mail identities as
|
||||
communicating with each other (<i>profiling</i>): Even the nodes
|
||||
relaying the mails will not know the sender and apart from sender and
|
||||
receiver, only the end of the high-latency mail tunnel and the
|
||||
storing nodes will know to whom (anonymous identity) the mail is
|
||||
destined. The original sender can have gone offline, long before the
|
||||
mail becomes available on the other side. This adds on the degree of
|
||||
anonymity that can be reached with I2P-Bote. For those who do not
|
||||
want high delays: All these settings are be user-adjustable, so each
|
||||
user decides on how much anonymity he wants.</font></p><font face="Arial, sans-serif"><font color="#000000"><br>I2P-Bote
|
||||
nodes store encrypted e-mails into a Kademlia DHT. Therefore, an
|
||||
e-mail can be sent through a number of other
|
||||
nodes (relays) for increased security, or directly to<font face="Arial, sans-serif"><font color="#000000"> a
|
||||
set of storage nodes for faster delivery. The same applies to
|
||||
retrieving email.<br>(When using mail routes, timestamps are
|
||||
automatically disabled.)<br></font>[Retrieving via relays not yet
|
||||
implemented]</font></font></font>
|
||||
<p><br>
|
||||
</p>
|
||||
<p style="line-height: 150%;"><font color="#000000"><font face="Arial, sans-serif">All
|
||||
nodes are created equal: There are no "supernodes" or
|
||||
designated relay/storage nodes. Everybody acts as a potential relay
|
||||
and storage node. The maximum amount of disk space used for
|
||||
relayed/stored email packets can be configured by the user.</font></font></p>
|
||||
<p style="line-height: 150%;"><font color="#000000"><font face="Arial, sans-serif">Before
|
||||
an email is sent to a relay, it is broken up into packets and
|
||||
encrypted with the recipient's public key. These packets are stored
|
||||
redundantly in a distributed hash table (DHT).</font></font></p>
|
||||
<p style="line-height: 150%;"><font color="#000000"><font face="Arial, sans-serif">They
|
||||
are kept for at least 100 days, during which the recipient can
|
||||
download them.</font></font></p>
|
||||
<p style="line-height: 150%;"><font color="#000000"><font face="Arial, sans-serif">Relay
|
||||
packets also expire after 100 days or more.</font></font></p>
|
||||
<p style="line-height: 150%;"><font color="#000000"><font face="Arial, sans-serif">If
|
||||
a node runs out of email storage space, and there are no old packets
|
||||
that can be deleted, the node refuses storage requests.</font></font></p>
|
||||
|
||||
<p style="line-height: 150%;"><font face="Arial, sans-serif">Furthermore,
|
||||
I2P-Bote sanitizes the mail headers and does not allow any unneeded
|
||||
information to be transmitted, thus allowing the use of e-mail
|
||||
clients without prior checks of what this client sends in the mail
|
||||
headers. [<font color="#ff0000">POP3 not yet implemented</font>]</font></p>
|
||||
|
||||
<p style="line-height: 150%;"><font face="Arial, sans-serif">All the
|
||||
encryption, path choosing and profiling is done locally so that there
|
||||
is no trusted party involved.</font></p>
|
||||
<p style="font-weight: normal; line-height: 150%;"><font face="Arial, sans-serif">Using
|
||||
I2P-Bote appropriately, that means keeping in mind the considerations
|
||||
given above and showing some common sense, nobody will be able to
|
||||
find out who or where you are. And if you are already being observed
|
||||
and your internet connection sniffed, the observer will not be able
|
||||
to find out what you send or receive or to whom you are sending to or
|
||||
receiving from or where your contacts are located.</font></p>
|
||||
|
||||
<p style="line-height: 150%;"><br></p>
|
||||
<p style="line-height: 150%;"><font face="Arial, sans-serif"><br>
|
||||
Let's go
|
||||
a bit more into detail:</font></p>
|
||||
|
||||
<p style="line-height: 150%;"><br>
|
||||
</p>
|
||||
<p style="line-height: 150%;"><font face="Arial, sans-serif"><u>What
|
||||
I2P-Bote <i>does hide</i>:</u></font></p>
|
||||
|
||||
<p style="line-height: 150%;"><br><font face="Arial, sans-serif"><i>I2P-Bote
|
||||
hides</i> both, the identity and location of sender and receiver, as
|
||||
well as those of intermediary nodes (relays and storing nodes), the
|
||||
content of your mails, their size, the number of mails you send.</font></p>
|
||||
<p style="line-height: 150%;"><font face="Arial, sans-serif">Only the
|
||||
recipient can know the sender's bote mail destination, and if he
|
||||
choses not to send his destination, not even the recipient will know
|
||||
it.</font></p>
|
||||
<p style="line-height: 150%;"><font face="Arial, sans-serif">Even if
|
||||
you send time stamps, your time zone will not be disclosed.</font></p>
|
||||
|
||||
<p style="line-height: 150%;"><font face="Arial, sans-serif">Furthermore,
|
||||
I2P-Bote hides ...</font></p>
|
||||
<p style="line-height: 150%;"> <font face="Arial, sans-serif">- the
|
||||
fact that you run I2P-Bote</font></p>
|
||||
<p style="line-height: 150%;"> <font face="Arial, sans-serif">- the
|
||||
fact that you send a mail</font></p>
|
||||
<p style="line-height: 150%;"> <font face="Arial, sans-serif">- the
|
||||
fact that you receive a mail</font></p>
|
||||
<p style="line-height: 150%;"> <font face="Arial, sans-serif">and
|
||||
hence</font></p>
|
||||
<p style="line-height: 150%;"> <font face="Arial, sans-serif">- the
|
||||
time you send a mail</font></p>
|
||||
<p style="line-height: 150%;"> <font face="Arial, sans-serif">- the
|
||||
time you receive a mail</font></p>
|
||||
<p style="line-height: 150%;"> <font face="Arial, sans-serif">and</font></p>
|
||||
<p style="line-height: 150%;"> <font face="Arial, sans-serif">- the
|
||||
upper limit of number of mails an unknown user receives, - nota bene:
|
||||
an abstract <br> user, no concrete one, just concluding its
|
||||
existence from the existence of the mail identity<br> - as he
|
||||
could always have more than one e-mail identity; and the lower limit
|
||||
as an <br> identity also sends out test and dummy messages</font></p>
|
||||
<p style="line-height: 150%;"><br><br>
|
||||
</p>
|
||||
<p style="line-height: 150%;"><font face="Arial, sans-serif"><u>What
|
||||
I2P-Bote <i>hides partially</i>: </u></font>
|
||||
</p>
|
||||
|
||||
<p style="line-height: 150%;"><br><font face="Arial, sans-serif">The
|
||||
I2P-Bote address of the recipient will only be known to sender and
|
||||
recipient(s). </font>
|
||||
</p>
|
||||
<p style="line-height: 150%;"><font face="Arial, sans-serif">In case
|
||||
of multiple recipients, each one will see all other recipients that
|
||||
the mail was addressed to via “To:” or “CC:”. </font>
|
||||
</p>
|
||||
<p style="line-height: 150%;"><font face="Arial, sans-serif">All
|
||||
entries that were under “BCC:” will only be visible to the sender
|
||||
and this very recipient. </font>
|
||||
</p>
|
||||
<p style="line-height: 150%;"><font face="Arial, sans-serif">The time
|
||||
an sent time will, if at all, only be visible to sender and
|
||||
recipient.</font></p>
|
||||
|
||||
|
||||
|
||||
<p style="line-height: 150%;"><br><br>
|
||||
<font face="Arial, sans-serif"><u>What
|
||||
I2P-Bote <i>can hide</i> optionally: </u></font>
|
||||
</p>
|
||||
|
||||
<p style="line-height: 150%;"><br><br>
|
||||
<font face="Arial, sans-serif">- If
|
||||
mail routes are use, the time a bote mail is sent</font></p>
|
||||
<p style="line-height: 150%;"> <font face="Arial, sans-serif">- If
|
||||
mail routes are used, the time a bote mail is fetched. [<font color="#ff0000">not
|
||||
yet implemented</font>]</font></p>
|
||||
<p style="line-height: 150%;"> <font face="Arial, sans-serif">- If the
|
||||
sender suppresses timestamps only the sender himself will know when
|
||||
he sent a<br> mail.</font></p>
|
||||
|
||||
|
||||
<p style="line-height: 150%;"><br><br>
|
||||
<font face="Arial, sans-serif"><u>What
|
||||
I2P-Bote <i>cannot hide</i>: </u></font>
|
||||
</p>
|
||||
<p style="line-height: 150%;"><font face="Arial, sans-serif"><br>
|
||||
I2P-Bote
|
||||
cannot hide the frequency a given identity checks for new mails nor
|
||||
the number of mails a given identity receives.</font></p>
|
||||
<p style="line-height: 150%;"><br><br>
|
||||
</p>
|
||||
<p style="line-height: 150%;"><font face="Arial, sans-serif"><br>
|
||||
Not even
|
||||
for bootstrapping I2P-Bote depends on a central node, as it uses
|
||||
Seedless.<br>
|
||||
</font></p>
|
||||
|
||||
<p style="line-height: 150%;"><br><br>
|
||||
<br>
|
||||
</p>
|
||||
<p style="line-height: 150%;"><font face="Arial, sans-serif"><b>5
|
||||
Terminology/Glossary of Terms:</b></font></p>
|
||||
<p style="line-height: 150%;"><br>
|
||||
</p>
|
||||
<p style="line-height: 150%;"><font face="Arial, sans-serif"><i><u>I2P-Bote
|
||||
(router/node) id</u>:</i></font></p>
|
||||
<p style="line-height: 150%;"><font face="Arial, sans-serif">This is
|
||||
the id an I2P-Bote router is known as. It is used for contacting this
|
||||
router, for storing, relaying and fetching mails, but also used in
|
||||
the hop-to-hop encryption and for simply contacting it via I2P, as it
|
||||
is at the same the I2P-Bote router's I2P tunnel destination. It is
|
||||
displayed to represent an I2P-Bote node in the stats.</font></p>
|
||||
<p style="line-height: 150%;"><font face="Arial, sans-serif">So the
|
||||
router id corresponds to the I2P destination (the address of an
|
||||
I2P-Bote node on the I2P network - there is no need to know it unless
|
||||
you are having problems connecting to other I2P-Bote nodes.)</font></p>
|
||||
|
||||
|
||||
<p style="font-weight: normal; line-height: 150%;"><br><font face="Arial, sans-serif"><i><u>I2P-Bote
|
||||
e-mail destination:</u></i></font></p>
|
||||
<p style="line-height: 150%;"><font face="Arial, sans-serif">The
|
||||
I2P-Bote e-mail destination (key) is an identifier by which somebody
|
||||
can be reached via I2P-Bote, so as the name states: an e-mail
|
||||
destination. Thus it is for I2P-Bote what an e-mail address is for
|
||||
standard e-mail system: The e-mail destination is the actual address
|
||||
for sending e-mails, for storing them into and for fetching them from
|
||||
the DHT. <br>At the same time it used for the end-to-end encryption
|
||||
of e-mails, header information and attachments. </font>
|
||||
</p>
|
||||
<p style="line-height: 150%;"><font face="Arial, sans-serif">An
|
||||
I2P-Bote e-mail destination is a Base64 string containing a public
|
||||
encryption key and a signature verification key. Example:</font></p>
|
||||
<p style="line-height: 150%;">
|
||||
</p>
|
||||
<p style="line-height: 150%;">
|
||||
<font face="Arial, sans-serif">uQtdwFHqbWHGyxZN8wChjWbCcgWrKuoBRNoziEpE8XDt8koHdJiskYXeUyq7JmpG</font></p>
|
||||
<p style="line-height: 150%;">
|
||||
<font face="Arial, sans-serif">In8WKXY5LNue~62IXeZ-ppUYDdqi5V~9BZrcbpvgb5tjuu3ZRtHq9Vn6T9hOO1fa</font></p>
|
||||
<p style="line-height: 150%;">
|
||||
<font face="Arial, sans-serif">FYZbK-FqHRiKm~lewFjSmfbBf1e6Fb~FLwQqUBTMtKYrRdO1d3xVIm2XXK83k1Da</font></p>
|
||||
<p style="line-height: 150%;">
|
||||
<font face="Arial, sans-serif">-nufGASLaHJfsEkwMMDngg8uqRQmoj0THJb6vRfXzRw4qR5a0nj6dodeBfl2NgL9</font></p>
|
||||
<p style="line-height: 150%;">
|
||||
<font face="Arial, sans-serif">HfOLInwrD67haJqjFJ8r~vVyOxRDJYFE8~f9b7k3N0YeyUK4RJSoiPXtTBLQ2RFQ</font></p>
|
||||
<p style="line-height: 150%;">
|
||||
<font face="Arial, sans-serif">gOaKg4CuKHE0KCigBRU-Fhhc4weUzyU-g~rbTc2SWPlfvZ6n0voSvhvkZI9V52X3</font></p>
|
||||
<p style="line-height: 150%;">
|
||||
<font face="Arial, sans-serif">SptDXk3fAEcwnC7lZzza6RNHurSMDMyOTmppAVz6BD8PB4o4RuWq7MQcnF9znElp</font></p>
|
||||
<p style="line-height: 150%;">
|
||||
<font face="Arial, sans-serif">HX3Q10QdV3omVZJDNPxo-Wf~CpEd88C9ga4pS~QGIHSWtMPLFazeGeSHCnPzIRYD</font></p>
|
||||
<p style="line-height: 150%;"><font face="Arial, sans-serif"><br>I2P-Bote
|
||||
router/node id and I2P-Bote e-mail destinations look similar, but are
|
||||
completely independent of each other.</font></p>
|
||||
|
||||
|
||||
<p style="line-height: 150%;"><br><font face="Arial, sans-serif"><i><u>E-mail
|
||||
address:</u></i></font></p>
|
||||
<p style="line-height: 150%;"><font face="Arial, sans-serif">E-mail
|
||||
addresses in I2P-Bote are shortcuts for e-mail destinations.</font></p>
|
||||
<p style="line-height: 150%;"><font face="Arial, sans-serif">The
|
||||
e-mail address <--> e-mail destination mappings are stored in
|
||||
two places: the local address book and the distributed address
|
||||
directory [<font color="#ff0000">the latter not yet implemented</font>].</font></p>
|
||||
|
||||
|
||||
<p style="line-height: 150%;"><br><font face="Arial, sans-serif"><i><u>I2P-Bote
|
||||
e-mail identity:</u></i></font></p>
|
||||
<p style="line-height: 150%;"><font face="Arial, sans-serif">The
|
||||
I2P-Bote e-mail identity is a set of an I2P-Bote e-mail destination
|
||||
key, the corresponding private keys and a name given to it by the
|
||||
user. This name will be sent with the destination key if you do not
|
||||
suppress sending information about the sender.</font></p>
|
||||
<p style="line-height: 150%;"><font face="Arial, sans-serif">However
|
||||
it will only be displayed for the recipient in case he does not have
|
||||
a name for this destination in his local address book.</font></p>
|
||||
<p style="line-height: 150%;"><font face="Arial, sans-serif">So
|
||||
technically speaking, an e-mail identity consists of four things:</font></p>
|
||||
<p style="line-height: 150%;"> <font face="Arial, sans-serif">* an
|
||||
e-mail destination (i.e. two public keys)</font></p>
|
||||
<p style="line-height: 150%;"> <font face="Arial, sans-serif">* two
|
||||
private keys for the e-mail destination</font></p>
|
||||
<p style="line-height: 150%;"> <font face="Arial, sans-serif">* a
|
||||
public name which can be shown to other people in e-mails</font></p>
|
||||
<p style="line-height: 150%;"> <font face="Arial, sans-serif">* a
|
||||
description which is not shown to anybody but you.</font></p>
|
||||
<p style="line-height: 150%;"> <font face="Arial, sans-serif">(It
|
||||
helps you remember which e-mail identity you use for which purpose.)</font></p>
|
||||
<p style="line-height: 150%;"><font face="Arial, sans-serif">An e-mail
|
||||
identity is not required for sending emails (although then only
|
||||
"Anonymous" can be selected for the "sender"
|
||||
field).</font></p>
|
||||
<p style="line-height: 150%;"><br></p><p style="line-height: 150%;"><font face="Arial, sans-serif"><span style="text-decoration: underline; font-style: italic;">Mail
|
||||
routes</span>:</font></p>
|
||||
<p style="line-height: 150%;"><font face="Arial, sans-serif">Mail
|
||||
routes are an additional high-latency transport for I2P-Bote. For
|
||||
this, a chain of I2P-Bote nodes is built, acting as relays/routers
|
||||
for packets and obeying to individual per-hop delays; [<font color="#ff0000">still
|
||||
no individual setting for delays implemented</font>]</font></p>
|
||||
<p style="line-height: 150%; font-weight: bold;"><font face="Arial, sans-serif"><br>
|
||||
BEWARE!</font></p>
|
||||
|
||||
<p style="line-height: 150%;"><font face="Arial, sans-serif">If you
|
||||
choose this option - especially with many hops and / or long delay
|
||||
times, don't be surprised if your mail does not reach its destination
|
||||
too soon. It will, of course, take longer – up to several days!</font><br>
|
||||
</p>
|
||||
<p style="line-height: 150%;"><br>
|
||||
<br>
|
||||
</p>
|
||||
|
||||
<p style="line-height: 150%; font-weight: bold; font-style: italic;"><font face="Arial, sans-serif">6. Credits</font></p>
|
||||
<p style="line-height: 150%;">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</p><p style="line-height: 150%;"><font face="Arial, sans-serif">Idea &
|
||||
technical concept: HungryHobo, Mixxy</font></p>
|
||||
<p style="line-height: 150%;"><font face="Arial, sans-serif">Implementation:
|
||||
HungryHobo</font></p>
|
||||
<p style="line-height: 150%;"><font face="Arial, sans-serif">Plugin
|
||||
support: zzz, HungryHobo</font></p>
|
||||
<p style="line-height: 150%;"><font face="Arial, sans-serif">User
|
||||
interface: HungryHobo</font></p>
|
||||
<p style="line-height: 150%;"><font face="Arial, sans-serif">Seedless
|
||||
integration: sponge</font></p>
|
||||
<p style="line-height: 150%;"><font face="Arial, sans-serif">German
|
||||
translation: HungryHobo</font></p>
|
||||
<p style="line-height: 150%;"><font face="Arial, sans-serif">French
|
||||
translation: albat, Redzara, Mixxy</font></p>
|
||||
<p style="line-height: 150%;"><font face="Arial, sans-serif">Spanish
|
||||
translation: Mixxy</font></p>
|
||||
<p style="line-height: 150%;"><font face="Arial, sans-serif">Alpha
|
||||
testing: HungryHobo, Mixxy, Returning Novice, sponge, and many others</font></p>
|
||||
|
||||
<p style="line-height: 150%;"><font face="Arial, sans-serif"><b><br>
|
||||
<br>
|
||||
</b></font></p>
|
||||
<p style="line-height: 150%;"><font face="Arial, sans-serif"><b>7.
|
||||
Technical Details</b></font></p>
|
||||
|
||||
<p style="line-height: 150%;"><font face="Arial, sans-serif">-- see
|
||||
techdoc.txt --</font></p>
|
||||
<p style="line-height: 150%;"><br><br>
|
||||
</p>
|
||||
<p style="line-height: 150%;"><br><br>
|
||||
</p>
|
||||
<p style="line-height: 150%; font-weight: bold; font-style: italic;"><font face="Arial, sans-serif">ENJOY THE
|
||||
BOTE FEELING!!</font></p>
|
||||
</body></html>
|
862
WebContent/User's Guide_fr.html
Normal file
@ -0,0 +1,862 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=utf-8">
|
||||
<TITLE>Guide de l'utilisateur</TITLE>
|
||||
<META NAME="GENERATOR" CONTENT="LibreOffice 3.3 (Linux)">
|
||||
<META NAME="CREATED" CONTENT="0;0">
|
||||
<META NAME="CHANGED" CONTENT="20110407;10200100">
|
||||
<STYLE TYPE="text/css">
|
||||
<!--
|
||||
@page { margin: 2cm }
|
||||
P { margin-bottom: 0.21cm }
|
||||
A:link { so-language: zxx }
|
||||
-->
|
||||
</STYLE>
|
||||
</HEAD>
|
||||
<BODY LANG="fr-FR" DIR="LTR">
|
||||
<P ALIGN=CENTER STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif"><B>Guide
|
||||
de l'utilisateur I2P-Bote</B></FONT></P>
|
||||
<P STYLE="line-height: 150%"><BR><BR>
|
||||
</P>
|
||||
<P STYLE="line-height: 150%"><BR><BR>
|
||||
</P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif"><B>1.
|
||||
Introduction</B></FONT></P>
|
||||
<P STYLE="line-height: 150%"><BR><BR><FONT FACE="Arial, sans-serif">I2P-Bote
|
||||
est une application de messagerie sécurisée pour I2P, à anonymat
|
||||
élevé et simple à utiliser. C'est un système sans serveur,
|
||||
entièrement décentralisé, qui constitue et génère un réseau
|
||||
pairs à pairs sur le réseau d'anonymisation I2P, lui-même conçu
|
||||
selon les règles de l'art ; l'adjonction optionnelle d'un transport
|
||||
à la façon de Mixminion le débarrasse des faiblesses intrinsèques
|
||||
des réseaux à basse latence.</FONT></P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif">I2P-Bote
|
||||
tire donc le meilleur de l'anonymat fourni par I2P, à quoi il
|
||||
apporte son propre niveau supplémentaire d'anonymat par l'ajout
|
||||
d'une autre couche d'anonymisation (sur-réseau).</FONT></P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif">Ce
|
||||
concept d'anonymat étagé est ce rend I2P-Bote si souple :</FONT></P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif">Vous
|
||||
pouvez le configurer pour être extrêmement anonyme et lent, ou
|
||||
moins anonyme mais plus rapide et efficace. Dans tous les cas,
|
||||
I2P-Bote<FONT COLOR="#000000"> procure toujours un très bon anonymat
|
||||
à l'expéditeur et au destinataire, ainsi qu'un cryptage de bout en
|
||||
bout*. </FONT></FONT>
|
||||
</P>
|
||||
<P STYLE="line-height: 150%"><FONT COLOR="#000000"><FONT FACE="Arial, sans-serif">I2P-Bote
|
||||
permet de rendre vos communications encore plus anonymes, en activant
|
||||
les routes à haute latence – au prix d'une baisse de performance,
|
||||
cependant. Les utilisateurs qui souhaitent que leurs messages
|
||||
arrivent au plus vite peuvent désactiver les routes de messages et
|
||||
utiliser l'envoi « direct » sur I2P. Ils sont ainsi
|
||||
assurés de bénéficier au minimum de l'anonymat d'origine des
|
||||
connexions I2P. </FONT></FONT>
|
||||
</P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif"><FONT COLOR="#000000">Pour
|
||||
atteindre une ergonomie élevée, nous l'avons conçu pour qu'il
|
||||
puisse fonctionner avec les logiciels clients de messagerie standards
|
||||
tels que Thunderbird, Evolution ou Kmail, sans avoir à se préoccuper
|
||||
des informations supplémentaires que ces applications envoient dans
|
||||
leurs en-têtes [</FONT><FONT COLOR="#ff0000">PAS ENCORE IMPLÉMENTÉ</FONT><FONT COLOR="#000000">].
|
||||
De plus, il y a une interface web qui vous permet d'envoyer et de
|
||||
recevoir des messages, et de gérer vos préférences et vos
|
||||
identités.</FONT></FONT></P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif">I2P-Bote
|
||||
est facile à utiliser : si vous n'utilisez pas déjà I2P, installez
|
||||
le depuis <A HREF="http://www.i2p2.de/">http://www.i2p2.de</A> puis
|
||||
installez le greffon I2P-Bote comme expliqué dans ce manuel. Sinon,
|
||||
continuez la lecture!**</FONT></P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif"><I>La
|
||||
version actuelle est la 0.2.6.</I></FONT></P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif">*Sauf si
|
||||
vous recevez ou envoyez des messages de/vers l'Internet classique,
|
||||
TOUS les messages – le corps, les pièces jointes et les en-têtes
|
||||
à part l'adresse du destinataire (objet, date et heure,
|
||||
expéditeur,...) sont automatiquement cryptés de bout en bout de
|
||||
façon transparente. L'adresse du destinataire n'est visible que par
|
||||
le dernier nœud de la route qui stocke les paquets dans le réseau
|
||||
kad, ainsi que par les nœuds de stockage, mais ils ne peuvent pas
|
||||
lire les messages, ni qui l'a envoyé, ni qui le relèvera.</FONT></P>
|
||||
<P STYLE="line-height: 150%"><BR><BR>
|
||||
</P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif">**Bien
|
||||
sûr, vous pouvez aussi le compiler à partir des sources.</FONT></P>
|
||||
<P STYLE="line-height: 150%"><BR><BR>
|
||||
</P>
|
||||
<P STYLE="line-height: 150%"><BR><BR>
|
||||
</P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif"><B>2.
|
||||
Procédures</B></FONT></P>
|
||||
<P STYLE="line-height: 150%"><BR><BR>
|
||||
</P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif"><U>2.1.
|
||||
Installation</U></FONT></P>
|
||||
<P STYLE="line-height: 150%"><BR><BR>
|
||||
</P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif">Pour
|
||||
installer I2P-Bote, rendez-vous en bas de la page de configuration du
|
||||
client I2P sur </FONT>
|
||||
</P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif"><A HREF="http://localhost:7657/configclients.jsp">http://localhost:7657/configclients.jsp</A>
|
||||
</FONT>
|
||||
</P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif">en entrez
|
||||
:</FONT></P>
|
||||
<P STYLE="line-height: 150%"><A HREF="http://tjgidoycrw6s3guetge3kvrvynppqjmvqsosmtbmgqasa6vmsf6a.b32.i2p/i2pbote.xpi2p"><FONT FACE="Arial, sans-serif">http://tjgidoycrw6s3guetge3kvrvynppqjmvqsosmtbmgqasa6vmsf6a.b32.i2p/i2pbote.xpi2p</FONT></A></P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif">(<A HREF="http://i2pbote.i2p/i2pbote.xpi2p">http://i2pbote.i2p/i2pbote.xpi2p</A>
|
||||
marche aussi, si vous avez i2pbote.i2p dans votre carnet d'adresses
|
||||
ou un abonnement)</FONT></P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif">dans le
|
||||
champ « …, URL de téléchargement : », puis
|
||||
cliquez sur le bouton « Installer le greffon ». Attendez
|
||||
jusque à ce que le panneau de surveillance sur la gauche indique que
|
||||
le greffon est installé et démarré. </FONT>
|
||||
</P>
|
||||
<P STYLE="line-height: 150%"><BR><BR>
|
||||
</P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif">Pour
|
||||
mettre à jour I2P-Bote, dans la même page, cliquez sur « Mise
|
||||
à jour »dans le cadre dédié au greffon une fois celui-ci
|
||||
installé.</FONT></P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif"><U>2.2.
|
||||
Utiliser I2P-Bote</U></FONT></P>
|
||||
<P STYLE="line-height: 150%"><BR><FONT FACE="Arial, sans-serif">Dans
|
||||
la console du routeur <A HREF="http://127.0.0.1:7657/">http://127.0.0.1:7657/</A>
|
||||
cliquez sur </FONT><FONT FACE="Arial, sans-serif"><I>SecureMail</I></FONT>
|
||||
<FONT FACE="Arial, sans-serif">en haut à gauche dans le panneau de
|
||||
surveillance. Vous êtes maintenant dans l'interface web d'I2P-Bote.</FONT></P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif">Après
|
||||
son lancement, I2P-Bote a besoin d'un peu plus de trois minutes pour
|
||||
être entièrement opérationnel (Il est configuré pour démarrer
|
||||
automatiquement en même temps que le routeur). </FONT>
|
||||
</P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif">Donc,
|
||||
quand le panneau de surveillance indique « Réseau : OK »,
|
||||
c'est prêt..</FONT></P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif">Si vous
|
||||
utiliser I2P-Bote pour vous-même, il vous faut créer une identité.</FONT>
|
||||
</P>
|
||||
<P STYLE="line-height: 150%"><BR><BR>
|
||||
</P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif"><U>2.2.1
|
||||
Création d'une identité</U></FONT></P>
|
||||
<P STYLE="line-height: 150%"><BR><FONT FACE="Arial, sans-serif">Cliquez
|
||||
sur « Identités » sur la gauche, puis sur le bouton
|
||||
« Nouvelle identité ».</FONT></P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif">Entrez au
|
||||
moins un « Nom public » et cliquez sur « Créer ».
|
||||
C'est tout ce qu'il faut faire pour créer une identité.</FONT></P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif">Le nom
|
||||
public est le nom que vous voyez pour cette identité (utile quand
|
||||
vous en avez plusieurs, pour communiquer avec différents groupes
|
||||
d'utilisateurs ou pour des besoins différents) et il sera envoyé
|
||||
aux destinataires en tant que « nom d'expéditeur ». Il
|
||||
n'est pas nécessaire qu'il soit unique. </FONT>
|
||||
</P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif">(Comme on
|
||||
peut choisir ici n'importe quel nom – n'importe qui pourrait
|
||||
choisir ici HungryHobo comme nom public – ce champ n'est pas conçu
|
||||
pour apporter au destinataire la certitude que deux messages
|
||||
proviennent du même expéditeur. C'est pourquoi c'est le nom
|
||||
sauvegardé dans le carnet d'adresses local [il ne peut y avoir qu'un
|
||||
seul nom par clé de destination] qui est affiché dans la boîte de
|
||||
réception si l'expéditeur en a sélectionné un lors de l'envoi
|
||||
[envoi non anonyme], et vous verrez alors une marque verte dans la
|
||||
colonne « Connu » même si le nom public spécifié par
|
||||
l'expéditeur est différent pour cette sienne identité, indiquant
|
||||
ainsi qu'il s'agit bien de la destination connue localement. S'il n'y
|
||||
a pas d'entrée pour une destination donnée dans le carnet
|
||||
d'adresses, le nom indiqué par l'expéditeur est affiché précédé
|
||||
du préfixe [UNK] dans les logiciels clients de messagerie) [<FONT COLOR="#ff0000">POP3
|
||||
N'EST PAS ENCORE IMPLÉMENTÉ</FONT>].</FONT></P>
|
||||
<P STYLE="line-height: 150%"><BR><FONT FACE="Arial, sans-serif">Vous
|
||||
pouvez aussi compléter les autres champs, si vous le souhaitez :</FONT></P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif">Description
|
||||
– ce champ est conservé localement, pas diffusé. Il ne sert qu'à
|
||||
vous : si vous voulez ajouter des informations supplémentaires à
|
||||
votre usage au sujet de cette identité, ce champ est prévu pour
|
||||
cela. </FONT>
|
||||
</P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif">Adresse
|
||||
e-mail – champ pas encore utilisé.</FONT><FONT COLOR="#ff0000"><FONT FACE="Arial, sans-serif"><BR></FONT></FONT><BR><FONT COLOR="#000000"><FONT FACE="Arial, sans-serif">Choisissez
|
||||
un algorithme de cryptage parmi ceux proposés. Dans le doute, gardez
|
||||
celui proposé par défaut.</FONT></FONT></P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif">Vous
|
||||
pouvez cliquer sur une de vos identités et copier la longue clé
|
||||
affichée sous « Destination de messagerie ». C'est votre
|
||||
adresse e-mail I2P-Bote. Si vous voulez recevoir des messages de
|
||||
quelqu'un, il faudra la lui transmettre.</FONT><BR><BR><FONT FACE="Arial, sans-serif">Vous
|
||||
pouvez maintenant envoyer et recevoir des messages I2P-Bote.</FONT></P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif">Mais vous
|
||||
devriez regarder les réglages d'I2P-Bote et vous assurer qu'il sont
|
||||
conformes à vos besoins.</FONT></P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif">(Vous
|
||||
pouvez créer plusieurs identités et leur associer des réglages
|
||||
différents.)</FONT></P>
|
||||
<P STYLE="line-height: 150%"><BR><BR>
|
||||
</P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif"><U><BR>2.2.2
|
||||
Envoyer et recevoir des messages</U></FONT></P>
|
||||
<P STYLE="line-height: 150%"><BR><BR>
|
||||
</P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif">Vous avez
|
||||
besoin de la clé de destination de message I2P-Bote du correspondant
|
||||
à qui vous voulez envoyer un message bote. </FONT>
|
||||
</P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif">Pour
|
||||
envoyer un message, cliquez sur « Nouveau », choisissez
|
||||
votre identité d'expéditeur ou « Anonyme » dans le
|
||||
champ « De : » et entrez la destination du
|
||||
destinataire dans le champ « À : », ou une adresse
|
||||
mail.</FONT></P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif">(Vous
|
||||
pouvez aussi cliquer sur le bouton « Carnet d'adresses »
|
||||
tout proche de ce champ, pour choisir une destination stockée
|
||||
localement dans votre carnet d'adresses : cochez le/les
|
||||
utilisateur(s) destinataires et cliquez sur le bouton “Ajouter les
|
||||
destinataires »)</FONT></P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif">Vous
|
||||
pouvez ajouter plusieurs destinataires et changer l'attribut « À : »
|
||||
pour « Cc: » ou « Cci: ».</FONT></P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif">Le bouton
|
||||
« + » ajoute des lignes destinataires supplémentaires.</FONT></P>
|
||||
<P STYLE="line-height: 150%"><BR><BR>
|
||||
</P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif">Rédigez
|
||||
maintenant votre message bote et cliquez sur « Envoyer »pour...
|
||||
l'envoyer, ou « Enregistrer » pour le sauvegarder dans
|
||||
votre dossier « Brouillons » ou tout autre dossier
|
||||
personnel [<FONT COLOR="#ff0000">pas encore implémenté</FONT>].</FONT></P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif">L'action
|
||||
d'envoi déplace le message dans le dossier « Boîte d'envoi »
|
||||
et vous pouvez continuer à utiliser I2P-Bote, par exemple pour
|
||||
écrire un autre message, gérer votre carnet d'adresses, etc...
|
||||
I2P-Bote est alors en train d'envoyer votre message. Une fois envoyé,
|
||||
il est déplacé de la boîte d'envoi vers le dossier « Courriers
|
||||
envoyés ». Votre message est en route (à moins que vous
|
||||
n'ayez défini un retard, ce qui n'est pas activé pas défaut).</FONT></P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif">Dans
|
||||
I2P-Bote, les messages sont signés automatiquement (sauf ceux que
|
||||
vous envoyez comme « Anonyme », c'est à dire sans
|
||||
choisir d'identité d'expéditeur) : en effet, vous pouvez
|
||||
décider de ne pas choisir d'identité d'expéditeur.</FONT></P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif">De par
|
||||
les réglages par défaut, I2P-Bote relève le automatiquement
|
||||
courrier, et tout ce que vous avez à faire pour savoir si vous avez
|
||||
reçu de nouveaux messages est de regarder dans la boîte de
|
||||
réception (lien sur la gauche).<BR>Vous pouvez forcer une relève en
|
||||
cliquant cliquant sur le bouton « Relever le courrier ».
|
||||
C'est une vérification globale qui tente de récupérer les nouveaux
|
||||
messages destinés à toutes vos identités à l'exception de celles
|
||||
exclues de cette fonctionnalité [</FONT><FONT COLOR="#ff0000"><FONT FACE="Arial, sans-serif">pas
|
||||
encore implémenté</FONT></FONT><FONT FACE="Arial, sans-serif">].</FONT></P>
|
||||
<P STYLE="line-height: 150%"><BR><FONT FACE="Arial, sans-serif">Le
|
||||
nombre de messages non lus est indiqué entre parenthèses à
|
||||
proximité du nom du dossier dans le cadre de gauche. </FONT>
|
||||
</P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif">Cliquez
|
||||
sur « Boîte de réception » pour visualiser la liste des
|
||||
messages reçus. Vous y voyez deux colonnes peuplées de « x »
|
||||
et de coches vertes. Elles vous indiquent si le message en question
|
||||
contient un signature valide et qu'il est donc certifié comme
|
||||
authentique et intègre (Sig), et si la destination de l'expéditeur
|
||||
est déjà connue, c'est à dire déjà enregistrée dans votre
|
||||
carnet d'adresses (Connu). Donc, deux coches vertes pour un message
|
||||
signalent que vous connaissez son expéditeur et que le message a été
|
||||
signalé par lui. </FONT>
|
||||
</P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif">Si vous
|
||||
avez dans votre carnet d'adresses un certain nom et que vous recevez
|
||||
un message de la part d'une identité affichant ce nom, alors si la
|
||||
colonne « Connu » <U>n'indique pas</U> une <SPAN STYLE="font-style: normal">coche
|
||||
verte, c'est que le message provient d'une destination </SPAN><SPAN STYLE="font-style: normal"><U>différente</U></SPAN>
|
||||
<SPAN STYLE="font-style: normal">de celle contenue dans votre carnet
|
||||
d'adresses ; son propriétaire a simplement choisi le même nom
|
||||
que celui d'un de vos contacts déjà enregistré.</SPAN></FONT></P>
|
||||
<P STYLE="font-style: normal; line-height: 150%"><FONT FACE="Arial, sans-serif">S'il
|
||||
y a une coche verte dans la colonne « Sig », c'est que le
|
||||
message est correctement signé et vous pouvez ajouter l'expéditeur
|
||||
à votre carnet d'adresses sous un nom différent qui sera dès lors
|
||||
affiché en tant qu'expéditeur.</FONT></P>
|
||||
<P STYLE="font-style: normal; line-height: 150%"><FONT FACE="Arial, sans-serif">Évidemment,
|
||||
un message sans destination d'expéditeur (“Anonyme” affiché
|
||||
comme expéditeur) sera repéré par deux marques « x ».</FONT></P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif">Un clic
|
||||
sur un des messages de la liste ouvre celui-ci. </FONT>
|
||||
</P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif">Ceci vaut
|
||||
pour tous les autres dossiers.</FONT></P>
|
||||
<P STYLE="line-height: 150%"><BR><FONT FACE="Arial, sans-serif">(De
|
||||
par la nature décentralisée d'I2P-Bote, l'envoi comme la relève
|
||||
prennent quelques minutes. Sensiblement plus lorsque les routes de
|
||||
messages sont activées. Mais vous n'avez pas besoin de garder le
|
||||
navigateur ouvert : il suffit de laisser tourner I2P-Bote en
|
||||
tant que processus d'arrière plan – ce dont profite aussi votre
|
||||
anonymat)</FONT></P>
|
||||
<P STYLE="line-height: 150%"><BR><BR>
|
||||
</P>
|
||||
<P STYLE="line-height: 150%"><BR><FONT FACE="Arial, sans-serif"><U>2.2.3
|
||||
Carnet d'adresses local</U></FONT></P>
|
||||
<P STYLE="line-height: 150%"><BR><FONT FACE="Arial, sans-serif">Si
|
||||
vous avez la clé de destination I2P-Bote de quelqu'un à qui vous
|
||||
voulez écrire souvent, il est commode de l'enregistrer dans votre
|
||||
carnet d'adresses local (lien sur la gauche) : choisissez un nom
|
||||
(de façon complètement arbitraire), collez la clé dans le champ
|
||||
idoine et sauvegardez.</FONT></P>
|
||||
<P STYLE="line-height: 150%"><FONT COLOR="#000000"><FONT FACE="Arial, sans-serif">C'est
|
||||
normalement ce que vous devriez faire, en sorte que le prochain
|
||||
message de ce destinataire soit marqué comme « Connu »,
|
||||
alors qu'un message d'un autre expéditeur de même nom serait marqué
|
||||
d'un « x » (ou préfixé [UNK] dans un client de
|
||||
messagerie), vous prévenant ainsi qu'il provient de quelqu'un
|
||||
d'autre. </FONT></FONT>
|
||||
</P>
|
||||
<P STYLE="line-height: 150%"><BR><BR><FONT FACE="Arial, sans-serif"><U>2.2.4
|
||||
Les préférences de réglages (et ce qu'elles signifient)</U></FONT></P>
|
||||
<P STYLE="line-height: 150%"><BR><FONT FACE="Arial, sans-serif">Dans
|
||||
les préférences vous pouvez choisir la langue de l'interface
|
||||
d'I2P-Bote et décider que même si vous choisissez une autre langue,
|
||||
tout ce qui sera automatiquement ajouté comme titres d'en-têtes
|
||||
restera cependant en anglais pour ne pas dévoiler votre langue (et
|
||||
par là même, peut-être en déduire votre nationalité et
|
||||
compromettre votre anonymat – à ce sujet, la FAQ I2P-Bote et le
|
||||
chapitre 3 de ce manuel donnent d'autres conseils).</FONT></P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif">Vous
|
||||
pouvez aussi régler l'intervalle de relève automatique, et
|
||||
l'inclusion ou l'exclusion des horodatages pour vos messages (les
|
||||
horodatages sont toujours en UTC).</FONT></P>
|
||||
<P STYLE="font-style: normal; line-height: 150%"><FONT FACE="Arial, sans-serif">(Quand
|
||||
vous utilisez les routes de messages, les horodatages sont
|
||||
automatiquement désactivés [<FONT COLOR="#ff0000">pas encore
|
||||
implémenté</FONT>]).</FONT></P>
|
||||
<P STYLE="line-height: 150%"><BR><BR>
|
||||
</P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif"><I>Relève
|
||||
automatique:</I></FONT></P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif">Pour le
|
||||
confort d'utilisation, cochez « Relever le courrier toutes les
|
||||
XX minutes : » et saisissez la valeur de l'intervalle. </FONT>
|
||||
</P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif">Ceci
|
||||
définit la fréquence de tentatives de téléchargement de nouveaux
|
||||
messages pour vos identités. Ça peut être différentié par
|
||||
identité [<FONT COLOR="#ff0000">pas encore implémenté</FONT>].</FONT></P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif">Si vous
|
||||
définissez un décalage aléatoire, la relève n'aura pas lieu
|
||||
exactement toutes les XX minutes, mais toutes les
|
||||
(XX+/-décalage*XX)minutes, c'est à dire après un temps aléatoire
|
||||
compris entre (1-décalage)*XX minutes et (1+décalage)*XX minutes
|
||||
[<FONT COLOR="#ff0000">pas encore implémenté</FONT>].</FONT></P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif">Vous
|
||||
pouvez également désactiver complètement la relève automatique
|
||||
pour une identité donnée.</FONT></P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif">(Si vous
|
||||
n'êtes pas à l'aise avec ces réglages, les valeurs par défaut
|
||||
vous conviendront très bien)</FONT></P>
|
||||
<P STYLE="line-height: 150%"><BR><BR><FONT FACE="Arial, sans-serif">Les
|
||||
</FONT><FONT FACE="Arial, sans-serif"><I>Routes de messagerie </I></FONT><FONT FACE="Arial, sans-serif">sont
|
||||
des chînes de nœuds I2P-Bote agissant en tant que routeurs relais
|
||||
pour le compte d'autres pairs et obéissant à des délais par saut
|
||||
définis par l'expéditeur, fournissant ainsi le transport à haute
|
||||
latence garant d'un anonymat plus élevé. </FONT>
|
||||
</P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif">Vous
|
||||
pouvez spécifier le nombre de nœuds (sauts) nécessaires à la
|
||||
constitution d'une route de messagerie. Ensuite, chacun des paquets
|
||||
de message envoyés par l'identité qui a activé la fonction routes
|
||||
de messagerie passera par une route de n sauts avant d'être stocké.
|
||||
Vous pouvez définir un délai pour chaque saut individuel, pour
|
||||
qu'aucun saut ne puisse savoir combien de temps le paquet attendra au
|
||||
niveau du saut suivant, ce qui rend la prédiction horaire impossible
|
||||
[<FONT COLOR="#ff0000">les définitions des retards par saut et par
|
||||
identité ne sont pas encore implémentées</FONT>].</FONT></P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif">Vous
|
||||
pouvez définir une tranche de temps (p.e. 60-600 minutes) – puis
|
||||
un retard aléatoire entre ces deux valeurs sera choisi pour le
|
||||
paquet au niveau de tel saut – ou une heure fixe à laquelle le
|
||||
paquet sera transféré, p.e. cet après-midi UTC, indépendamment du
|
||||
moment où il est arrivé [<FONT COLOR="#ff0000">heure fixe pas
|
||||
encore implémentée</FONT>]. </FONT>
|
||||
</P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif">(Quand
|
||||
vous utilisez les routes de messagerie, les horodatages sont
|
||||
automatiquement désactivés [<FONT COLOR="#ff0000">pas encore
|
||||
implémenté</FONT>]).</FONT></P>
|
||||
<P STYLE="line-height: 150%"><BR><FONT FACE="Arial, sans-serif">Sous
|
||||
« </FONT><FONT FACE="Arial, sans-serif"><I>Minimum dans la
|
||||
messagerie</I></FONT> <FONT FACE="Arial, sans-serif">» (nombre
|
||||
minimum de paquets relayés à envoyer), vous pouvez indiquer un
|
||||
seuil. Comme votre instance I2P-Bote peut fonctionner comme un relais
|
||||
mélangeur, s'il y a suffisamment de paquets étrangers à mélanger
|
||||
et avec lesquels camoufler les vôtres, elle va accumuler les
|
||||
messages pour lesquels le retard demandé n'est pas échu jusqu'à
|
||||
atteindre ce seuil. Une fois atteint, votre bote commence à les
|
||||
transférer aléatoirement [</FONT><FONT COLOR="#ff0000"><FONT FACE="Arial, sans-serif">pas
|
||||
encore implémenté</FONT></FONT><FONT FACE="Arial, sans-serif">].</FONT></P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif"><I>Exclure
|
||||
l'identité de la relève globale</I> [<FONT COLOR="#ff0000">pas
|
||||
encore implémenté</FONT>].</FONT></P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif">Si vous
|
||||
activez cette option pour une de vos identités, elle ne sera pas
|
||||
prise en compte ni par la fonction de relève globale automatique
|
||||
planifiée, ni par la relève manuelle globale.</FONT></P>
|
||||
<P STYLE="line-height: 150%"><BR><BR>
|
||||
</P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif"><U>2.2.5
|
||||
E-mails de et vers l'Internet</U><SPAN STYLE="text-decoration: none">
|
||||
[</SPAN><FONT COLOR="#ff0000"><SPAN STYLE="text-decoration: none">NOT
|
||||
YET FULLY IMPLEMENTED!</SPAN></FONT><SPAN STYLE="text-decoration: none">]</SPAN></FONT></P>
|
||||
<P STYLE="line-height: 150%"><BR><FONT FACE="Arial, sans-serif">Pour
|
||||
pouvoir envoyer des messages bote vers l'Internet et recevoir des
|
||||
e-mails venant de l'Internet dans l'application I2P-Bote, vous devez
|
||||
d'abord vous enregistrer auprès d'une passerelle de messagerie. Il
|
||||
n'y en a actuellement qu'une seule : postman. </FONT>
|
||||
</P>
|
||||
<P STYLE="line-height: 150%"><BR><FONT FACE="Arial, sans-serif">1)
|
||||
D'abord, allez sur : <A HREF="http://hq.postman.i2p/?page_id=16">http://hq.postman.i2p/?page_id=16</A>
|
||||
et créez un compte. Si vous en avez déjà un, ou si vous venez de
|
||||
le créer, passer à l'étape 2).</FONT></P>
|
||||
<P STYLE="line-height: 150%"><BR><FONT FACE="Arial, sans-serif">2)
|
||||
Pour un compte donné, vous pouvez ajouter votre clé de destination
|
||||
de messagerie, pour que les messages arrivant d'Internet puissent
|
||||
être transférés vers votre application I2P-Bote. Pour ce faire
|
||||
allez sur : <A HREF="http://hq.postman.i2p/?page_id=74">http://hq.postman.i2p/?page_id=74</A>
|
||||
et indiquez les informations demandées.</FONT></P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif">Maintenant,
|
||||
tous les e-mails envoyés à cette adresse (<A HREF="mailto:name@i2pmail.org">nom@i2pmail.org</A>
|
||||
depuis l'Internet externe ou depuis <A HREF="mailto:name@mail.i2p">blaze@mail.i2p</A>
|
||||
pour les messages d'autres comptes postman) seront transférés par
|
||||
le réseau I2P-Bote à votre application I2P-Bote.</FONT></P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif">(N.B. En
|
||||
utilisant les adresses <A HREF="mailto:name@mail.i2p">nom@mail.i2p</A>
|
||||
ou <A HREF="mailto:name@i2pmail.org">nom@i2pmail.org</A> au lieu des
|
||||
longues clés de destination, les messages ne sont plus cryptés de
|
||||
bout en bout. En conséquence, il est recommandé d'échanger les
|
||||
clés I2P-Bote pour la communication intra réseau. Postman offre des
|
||||
services de haute qualité sur I2P depuis déjà un bon moment, mais
|
||||
soyez conscient qu'il s'agit d'un point centralisé qui pourrait un
|
||||
jour cesser de fonctionner, ou pire, tomber sous le contrôle d'un
|
||||
nuisible qui pourrait manipuler les courriers. Comme pour la
|
||||
messagerie intra réseau, I2P-Bote vous assure que si vous utilisez
|
||||
des clés de destination, personne ne peut bricoler les messages que
|
||||
vous recevez ou envoyez.)</FONT></P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif">Si vous
|
||||
voulez non seulement recevoir des messages d'Internet, mais aussi
|
||||
pouvoir en envoyer vers Internet depuis I2P-Bote, vous devez indiquer
|
||||
à votre application cliente I2P-Bote la clé de destination de la
|
||||
passerelle de messagerie, pour que votre I2P-Bote sache où envoyer
|
||||
les messages.<BR>Ceci se fait dans les « Préférences ».
|
||||
Cette passerelle permet aux utilisateurs d'I2P-Bote de communiquer
|
||||
avec les utilisateurs de messagerie standard sur l'Internet classique
|
||||
et avec ceux qui utilisent le service i2pmail de postman
|
||||
(@mail.i2p).</FONT><BR><FONT FACE="Arial, sans-serif"><BR>Pour
|
||||
combattre les abus, il y a une limitation au nombre de messages que
|
||||
vous pouvez envoyer vers Internet, comme avec le service normal de
|
||||
postman : si un utilisateur d'I2P-Bote dépasse le quota de
|
||||
messages envoyés, les messages supplémentaires sont retournés à
|
||||
l'envoyeur.</FONT></P>
|
||||
<P STYLE="line-height: 150%"><BR><BR><BR>
|
||||
</P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif"><B>3.
|
||||
Considérations sur l'anonymat</B></FONT></P>
|
||||
<P STYLE="line-height: 150%"><BR><FONT FACE="Arial, sans-serif">N'envoyez
|
||||
pas d'informations susceptibles de vous identifier (nom, adresse,
|
||||
situation géographique, fuseau horaire, horodatages, âge, sites web
|
||||
que vous venez de visiter ou sur lesquels vous venez de parler sur un
|
||||
blog, noms d'utilisateurs, adresses IP, identités de routeur I2P
|
||||
routeur, de nœud I2P-Bote, numéros de sécurité sociale, de carte
|
||||
de crédit, …, copies de passeport, de permis de conduire, de
|
||||
contrats de location, de photos – nu ou habillé –, documents qui
|
||||
contiennent votre nom comme auteur dans les réglages, et une
|
||||
multitude d'autres) !</FONT></P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif"><BR>Si
|
||||
possible, </FONT>
|
||||
</P>
|
||||
<UL>
|
||||
<LI><P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif">laissez
|
||||
I2P-Bote tourner 24h/24 7j/7,</FONT></P>
|
||||
<LI><P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif">utilisez
|
||||
les routes de messagerie en conjonction avec les retards aléatoires
|
||||
ou fixes par saut [<FONT COLOR="#ff0000">pas encore </FONT><FONT COLOR="#ff0000"><I>complètement</I></FONT><FONT COLOR="#ff0000">
|
||||
implémenté</FONT>],</FONT></P>
|
||||
<LI><P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif">utilisez
|
||||
un intervalle de relève long,</FONT></P>
|
||||
<LI><P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif">utilisez
|
||||
un long retard pour vos propres paquets,</FONT></P>
|
||||
<LI><P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif">utilisez
|
||||
un large intervalle de relève aléatoire [<FONT COLOR="#ff0000">pas
|
||||
encore implémenté</FONT>].</FONT></P>
|
||||
</UL>
|
||||
<P STYLE="line-height: 150%"><BR><FONT FACE="Arial, sans-serif">Vous
|
||||
pouvez supprimer l'envoi des horodatages des en-têtes de messages.</FONT></P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif">Quand
|
||||
vous répondez, certains marqueurs comme, « Rép: [Top
|
||||
secret] » ou « [mégaphone] a écrit : » sont
|
||||
ajoutés à votre réponse. Ils diffèrent d'une langue à l'autre,
|
||||
suivant vos préférences de réglage de langue de l'interface
|
||||
d'I2P-Bote. Cependant, si vous ne voulez pas que vos destinataires
|
||||
puissent savoir comment vous avez effectué ce réglage (révélateur
|
||||
de votre langue et peut-être de votre nationalité), vous pouvez
|
||||
désactiver la traduction de ces marqueurs pour qu'il restent en
|
||||
anglais, quelle que soit votre réglage de langue : Cochez la
|
||||
case « Utiliser l'anglais pour les titres d'en-têtes de
|
||||
messages sortants ('Re', 'wrote', etc.) ».</FONT></P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif">Soyez
|
||||
prudent sur le contenu de vos envois! N'incluez pas d'information
|
||||
personnelles ou des informations que vous seul pouvez posséder.
|
||||
N'écrivez pas « je vais me coucher, il est tard »,
|
||||
lorsque les tampons horaires ne sont pas désactivés.<BR>La langue
|
||||
dans laquelle vous écrivez, votre style et vos particularités
|
||||
d'expression sont autant d'autres éléments qui pourraient
|
||||
intéresser un attaquant.</FONT></P>
|
||||
<P STYLE="line-height: 150%"><BR><FONT FACE="Arial, sans-serif">I2P-Bote
|
||||
permet aussi l'utilisation d'identités multiples. Supposez qu'un de
|
||||
vos contacts découvre votre identité, car vous avez oublié
|
||||
d'enlever une information vous concernant d'un document confidentiel
|
||||
que vous lui avez transmis (par erreur ou pas). Maintenant, si ce
|
||||
correspondant est amené a communiquer/collaborer avec d'autres de
|
||||
vos contacts, il pourrait leur révéler l'identité réelle liée à
|
||||
l'identité Bote qu'il connait de vous. Donc, si vous communiquez
|
||||
avec ces autres avec la même adresse il vous reconnaitrons. Ils ne
|
||||
pourraient pas si vous aviez utilisé une identité différente pour
|
||||
vous adresser à eux.</FONT></P>
|
||||
<P STYLE="line-height: 150%"><BR><BR><FONT FACE="Arial, sans-serif"><B>4.
|
||||
Concept technique</B></FONT></P>
|
||||
<P STYLE="line-height: 150%"><BR><FONT FACE="Arial, sans-serif">I2P-Bote
|
||||
est un système de messagerie totalement décentralisé (sans
|
||||
serveur) intra réseau crypté de bout en bout. Il supporte
|
||||
l'utilisation d'identités multiples et n'expose pas les en-têtes de
|
||||
messages. Il est actuellement encore en version alpha et ne peut être
|
||||
utilisé que par son interface web intégré à la console du routeur
|
||||
I2P. Il disposera bientôt du support de POP3, et il est prévu qu'il
|
||||
garantisse un niveau d'anonymat supplémentaire via une option de
|
||||
transport à haute latence. Tous les messages bote sont cryptés
|
||||
automatiquement de bout en bout, de telle sorte qu'il ne soit pas
|
||||
nécessaire d'utiliser un autre système de cryptage (bien que ça
|
||||
soit possible), et les messages sont automatiquement authentifiés.
|
||||
Comme il est décentralisé, il n'y a pas de serveur de messagerie
|
||||
qui puisse établir de relation entre différentes identités en tant
|
||||
qu'elles communiqueraient les unes avec les autres (profilage) : même
|
||||
les nœuds relayant les messages ne connaissent pas l'expéditeur, et
|
||||
hormis l'expéditeur et le destinataire, seuls le point terminal du
|
||||
tunnel de messages à haute latence et les nœuds de stockage savent
|
||||
à qui (identité anonyme) le message est destiné. L'expéditeur
|
||||
peut être passé hors ligne depuis longtemps lorsque le message
|
||||
devient disponible côté destinataire. Ceci améliore la classe
|
||||
d'anonymat qui peut être atteinte par I2P-Bote. Pour ceux qui ne
|
||||
veulent pas de longs retards, tous ces réglages sont accessibles à
|
||||
l'utilisateur et chacun peut ainsi ajuster le niveau d'anonymat à
|
||||
ses désirs.</FONT></P>
|
||||
<P><FONT COLOR="#000000"><FONT FACE="Arial, sans-serif"><BR>Les
|
||||
nœudsI2P-Bote stockent les messages cryptés dans une table de
|
||||
hachage décentralisée (DHT) Kademlia. En conséquence, un message
|
||||
peut être envoyé via de nombreux autres nœuds (relais) pour
|
||||
augmenter la sécurité, ou directement sur un groupe de nœuds de
|
||||
stockage pour une livraison plus rapide. Le même scenario s'applique
|
||||
aussi à le relève des messages.<BR>(L'utilisation des routes de
|
||||
message désactive automatiquement les tampons horaires)<BR>[</FONT></FONT><FONT COLOR="#ff0000"><FONT FACE="Arial, sans-serif">La
|
||||
relève via les relais n'est pas encore implémentée</FONT></FONT><FONT COLOR="#000000"><FONT FACE="Arial, sans-serif">].</FONT></FONT></P>
|
||||
<P><BR><BR>
|
||||
</P>
|
||||
<P STYLE="line-height: 150%"><FONT COLOR="#000000"><FONT FACE="Arial, sans-serif">Tous
|
||||
les nœuds sont créés égaux : il n'y a pas de « super-nœuds »
|
||||
ni de nœuds désignés comme relais ou stockeurs. Tout le monde agit
|
||||
en tant que relais et stockage potentiels. L'utilisation d'espace
|
||||
disque est configurable par l'utilisateur.</FONT></FONT></P>
|
||||
<P STYLE="line-height: 150%"><FONT COLOR="#000000"><FONT FACE="Arial, sans-serif">Avant
|
||||
qu'un message ne soit envoyé à un relais, il est découpé en
|
||||
paquets et crypté avec la clé publique du destinataire. Ces paquets
|
||||
sont stockés de façon redondante dans la DHT.</FONT></FONT></P>
|
||||
<P STYLE="line-height: 150%"><FONT COLOR="#000000"><FONT FACE="Arial, sans-serif">Il
|
||||
sont conservés au moins 100 jours, pendant lesquels le destinataire
|
||||
peut les télécharger.</FONT></FONT></P>
|
||||
<P STYLE="line-height: 150%"><FONT COLOR="#000000"><FONT FACE="Arial, sans-serif">Les
|
||||
paquets relayés expirent aussi après 100 jours ou plus.</FONT></FONT></P>
|
||||
<P STYLE="line-height: 150%"><FONT COLOR="#000000"><FONT FACE="Arial, sans-serif">Si
|
||||
un nœud manque d'espace de stockage et qu'il n'y a pas de vieux
|
||||
paquets à supprimer, ce nœud refuse les requêtes de stockage.</FONT></FONT></P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif">De plus,
|
||||
I2P-Bote nettoie les en-têtes de messages en n'autorisant que les
|
||||
informations indispensables à la transmission, permettant ainsi
|
||||
l'utilisation de clients de messagerie sans vérification préalable
|
||||
de ce qu'ils ajoutent comme en-têtes bavardes [<FONT COLOR="#ff0000">POP3
|
||||
pas encore implémenté</FONT>].</FONT></P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif">Tout le
|
||||
cryptage, le choix des chemins et le profilage sont effectués
|
||||
localement en sorte qu'aucune tierce partie de confiance ne soit mise
|
||||
à contribution.</FONT></P>
|
||||
<P STYLE="font-weight: normal; line-height: 150%"><FONT FACE="Arial, sans-serif">Par
|
||||
une utilisation appropriée d'I2P-Bote, c'est à dire en gardant à
|
||||
l'esprit les considérations signalées plus haut relatives au bon
|
||||
sens, personne ne saura qui vous êtes ni où vous vous trouvez. Et
|
||||
si vous êtes déjà surveillé et que votre connexion Internet est
|
||||
sur écoutes, le nuisible ne pourra pas savoir ce que vous envoyez ou
|
||||
recevez, ni avec qui vous communiquez et où sont situés vos
|
||||
correspondants.</FONT></P>
|
||||
<P STYLE="line-height: 150%"><BR><BR>
|
||||
</P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif"><BR>Rentrons
|
||||
un peu dans les détails :</FONT></P>
|
||||
<P STYLE="line-height: 150%"><BR><BR>
|
||||
</P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif"><U>Ce
|
||||
qu'I2P-Bote <I>cache</I> :</U></FONT></P>
|
||||
<P STYLE="line-height: 150%"><BR><FONT FACE="Arial, sans-serif"><I>I2P-Bote
|
||||
cache à la fois, l'identité et la situation de l'expéditeur et du
|
||||
ou destinataires, celles des nœuds intermédiaires (relais et
|
||||
stockage), le contenu des messages, leur taille, le nombre que vous
|
||||
envoyez.</I></FONT></P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif">Seul le
|
||||
destinataire peut connaître l'adresse de l'expéditeur du message
|
||||
bote, et si ce dernier l'a décidé, même le destinataire peut être
|
||||
tenu dans l'ignorance de cette donnée.</FONT></P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif">Même si
|
||||
envoyez des horodatages, votre fuseau horaire ne sera pas dévoilé.</FONT></P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif">De plus,
|
||||
I2P-Bote masque ...</FONT></P>
|
||||
<P STYLE="line-height: 150%"> <FONT FACE="Arial, sans-serif">-
|
||||
le fait que vous utilisez... I2P-Bote</FONT></P>
|
||||
<P STYLE="line-height: 150%"> <FONT FACE="Arial, sans-serif">-
|
||||
le fait que vous envoyez un message</FONT></P>
|
||||
<P STYLE="line-height: 150%"> <FONT FACE="Arial, sans-serif">-
|
||||
le fait que vous recevez un message</FONT></P>
|
||||
<P STYLE="line-height: 150%"> <FONT FACE="Arial, sans-serif">et
|
||||
donc</FONT></P>
|
||||
<P STYLE="line-height: 150%"> <FONT FACE="Arial, sans-serif">-
|
||||
le moment d'envoi d'un message</FONT></P>
|
||||
<P STYLE="line-height: 150%"> <FONT FACE="Arial, sans-serif">-
|
||||
le moment de réception d'un message</FONT></P>
|
||||
<P STYLE="line-height: 150%"> <FONT FACE="Arial, sans-serif">ainsi
|
||||
que</FONT></P>
|
||||
<P STYLE="line-height: 150%"> <FONT FACE="Arial, sans-serif">-
|
||||
la limite supérieure du nombre de messages qu'un utilisateur inconnu
|
||||
reçoit, - nota bene : un utilisateur abstrait, pas un concret,
|
||||
extrapolant simplement son existence de celle de la destination de
|
||||
messagerie<BR> - car il pourrait toujours avoir
|
||||
plus d'une identité ; et la limite basse, car une identité envoie
|
||||
également des messages de test et des messages leurres/« bidons »</FONT></P>
|
||||
<P STYLE="line-height: 150%"><BR><BR>
|
||||
</P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif"><U>Ce
|
||||
qu'I2P-Bote <I>masque partiellement</I> : </U></FONT>
|
||||
</P>
|
||||
<P STYLE="line-height: 150%"><BR><FONT FACE="Arial, sans-serif">L'adresse
|
||||
I2P-Bote du destinataire n'est connue que par l'expéditeur et le(s)
|
||||
destinataire(s). </FONT>
|
||||
</P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif">En cas de
|
||||
destinataires multiples, chacun verra tous les autres destinataires
|
||||
dont les adresses ont été indiquées en « A :» OU
|
||||
« Cc : ».</FONT></P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif">Toutes
|
||||
les entrées « Cci : » ne sont visibles qu'à
|
||||
l'expéditeur et au destinataire spécifique. </FONT>
|
||||
</P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif">Le moment
|
||||
de l'envoi, s'il est précisé, n'est visible que par l'expéditeur
|
||||
et le destinataire.</FONT></P>
|
||||
<P STYLE="line-height: 150%"><BR><BR><FONT FACE="Arial, sans-serif"><U>Ce
|
||||
qu'I2P-Bote </U></FONT><FONT FACE="Arial, sans-serif"><I><U>peut
|
||||
masquer optionnellement </U></I></FONT><FONT FACE="Arial, sans-serif"><U>:
|
||||
</U></FONT>
|
||||
</P>
|
||||
<P STYLE="line-height: 150%"><BR><FONT FACE="Arial, sans-serif">- Si
|
||||
les routes de messagerie sont utilisées, le moment de l'envoi d'un
|
||||
message</FONT></P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif">- Si les
|
||||
routes de messagerie sont utilisées, le moment de relève d'un
|
||||
message [<FONT COLOR="#ff0000">pas encore implémenté</FONT>].</FONT></P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif">- Si
|
||||
l'expéditeur supprime les horodatages, seul l'expéditeur sait quand
|
||||
il a envoyé un message.</FONT></P>
|
||||
<P STYLE="line-height: 150%"><BR><BR><FONT FACE="Arial, sans-serif"><U>Ce
|
||||
qu'I2P-Bote </U></FONT><FONT FACE="Arial, sans-serif"><I><U>ne peut
|
||||
pas cacher </U></I></FONT><FONT FACE="Arial, sans-serif"><U>: </U></FONT>
|
||||
</P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif"><BR>I2P-Bote
|
||||
ne peut pas masquer la fréquence à laquelle une identité donnée
|
||||
relève les nouveaux messages, ni ne nombre de messages reçus par
|
||||
une identité donnée.</FONT></P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif"><BR>Pour
|
||||
son démarrage, I2P-Bote ne dépend pas non-plus d'un nœud central
|
||||
car il utilise Seedless.</FONT></P>
|
||||
<P STYLE="line-height: 150%"><BR><BR><BR>
|
||||
</P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif"><B>5
|
||||
Terminologie/Glossaire:</B></FONT></P>
|
||||
<P STYLE="line-height: 150%"><BR><BR>
|
||||
</P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif"><I><U>Identité
|
||||
du routeur/nœud I2P-Bote </U>:</I></FONT></P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif">C'est
|
||||
l'identité par laquelle le routeur I2P-Bote est connu. Elle est
|
||||
utilisée pour contacter ce routeur, pour stocker, relayer et relever
|
||||
les messages, mais aussi pour le cryptage par saut et le contacter
|
||||
via I2P, car c'est celle là même de la destination du tunnel I2P.
|
||||
Elle est affichée pour représenter le nœud I2P-Bote dans les
|
||||
statistiques.</FONT></P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif">Ainsi
|
||||
donc, l'identité du routeur (I2P-Bote) correspond à la destination
|
||||
I2P (l'adresse d'un nœud I2P-Bote sur le réseau I2P – il n'y a
|
||||
pas de nécessité de la connaître, sauf en cas de problèmes de
|
||||
connexion aux autres nœuds I2P-Bote).</FONT></P>
|
||||
<P STYLE="font-weight: normal; line-height: 150%"><BR><FONT FACE="Arial, sans-serif"><I><U>Destination
|
||||
de messagerie I2P-Bote :</U></I></FONT></P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif">La
|
||||
destination de messagerie I2P-Bote (clé) est un identifiant par
|
||||
lequel quelqu'un peut être atteint via I2P-Bote, comme son nom
|
||||
l'indique : une destination e-mail. C'est donc pour I2P-Bote ce
|
||||
qu'est une adresse e-mail pour un système de messagerie standard :
|
||||
la destination de messagerie est l'adresse effective d'envoi de
|
||||
messages, de stockage et de relève dans la DHT. <BR>Elle est aussi
|
||||
utilisée pour le cryptage de bout en bout des messages, pour les
|
||||
informations d'en-têtes et les pièces jointes. </FONT>
|
||||
</P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif">Une
|
||||
destination de messagerie I2P-Bote est une chaîne en base 64
|
||||
contenant une clé publique de cryptage et une clé de vérification
|
||||
de signature, par exemple : </FONT>
|
||||
</P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif">uQtdwFHqbWHGyxZN8wChjWbCcgWrKuoBRNoziEpE8XDt8koHdJiskYXeUyq7JmpG</FONT></P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif">In8WKXY5LNue~62IXeZ-ppUYDdqi5V~9BZrcbpvgb5tjuu3ZRtHq9Vn6T9hOO1fa</FONT></P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif">FYZbK-FqHRiKm~lewFjSmfbBf1e6Fb~FLwQqUBTMtKYrRdO1d3xVIm2XXK83k1Da</FONT></P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif">-nufGASLaHJfsEkwMMDngg8uqRQmoj0THJb6vRfXzRw4qR5a0nj6dodeBfl2NgL9</FONT></P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif">HfOLInwrD67haJqjFJ8r~vVyOxRDJYFE8~f9b7k3N0YeyUK4RJSoiPXtTBLQ2RFQ</FONT></P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif">gOaKg4CuKHE0KCigBRU-Fhhc4weUzyU-g~rbTc2SWPlfvZ6n0voSvhvkZI9V52X3</FONT></P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif">SptDXk3fAEcwnC7lZzza6RNHurSMDMyOTmppAVz6BD8PB4o4RuWq7MQcnF9znElp</FONT></P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif">HX3Q10QdV3omVZJDNPxo-Wf~CpEd88C9ga4pS~QGIHSWtMPLFazeGeSHCnPzIRYD</FONT></P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif"><BR>L'identité
|
||||
de routeur/nœud I2P-Bote et la destination de messagerie I2P-Bote se
|
||||
ressemblent mais elles sont complètement indépendantes l'une de
|
||||
l'autre.</FONT></P>
|
||||
<P STYLE="line-height: 150%"><BR><FONT FACE="Arial, sans-serif"><I><U>Adresse
|
||||
e-mail :</U></I></FONT></P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif">Les
|
||||
adresses e-mail dans I2P-Bote sont des raccourcis des destinations de
|
||||
messagerie.</FONT></P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif">Les
|
||||
correspondances entre elles sont stockées à deux endroits : le
|
||||
carnet d'adresses local et l'annuaire d'adresses décentralisé [<FONT COLOR="#ff0000">ce
|
||||
dernier n'est pas encore implémenté</FONT>].</FONT></P>
|
||||
<P STYLE="line-height: 150%"><BR><FONT FACE="Arial, sans-serif"><I><U>Identité
|
||||
de messagerie I2P-Bote :</U></I></FONT></P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif">L'identité
|
||||
de messagerie I2P-Bote est un porte clé de destination de messagerie
|
||||
I2P-Bote avec la clé privée correspondante et le nom que lui a
|
||||
donné l'utilisateur qui l'a créé. Ce nom sera envoyé avec la clé
|
||||
de destination si vous ne désactivez pas l'envoi de cette
|
||||
information sur l'expéditeur.</FONT></P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif">Elle ne
|
||||
sera visible que par le destinataire s'il n'a pas déjà un nom pour
|
||||
cette destination dans son propre carnet d'adresses local.</FONT></P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif">Donc en
|
||||
termes techniques, une identité de messagerie est constituée de
|
||||
quatre éléments :</FONT></P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif">* une
|
||||
destination de messagerie (c'est à dire deux clés publiques)</FONT></P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif">* les
|
||||
deux clés privées correspondantes</FONT></P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif">* un nom
|
||||
public qui peut être montré aux correspondants</FONT></P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif">* une
|
||||
description qui n'est accessible qu'à vous même, le créateur
|
||||
l'identité.</FONT></P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif">(Pour
|
||||
vous aider à vous souvenir de l'usage que vous assignez à cette
|
||||
identité).</FONT></P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif">Une
|
||||
identité n'est pas pas nécessaire pour envoyer des messages (dans
|
||||
ce cas, seul « Anonyme » est proposé comme expéditeur
|
||||
dans le champ de sélection).</FONT></P>
|
||||
<P STYLE="line-height: 150%"><BR><BR>
|
||||
</P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif"><I><U>Routes
|
||||
de messagerie </U></I>:</FONT></P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif">Les
|
||||
routes de messagerie sont un mode de transport à haute latence
|
||||
supplémentaire pour I2P-Bote. Pour son fonctionnement, une chaîne
|
||||
de nœuds I2P-Bote est construite, agissant en tant que routeurs
|
||||
relais pour les paquets et obéissant à des retards par saut [<FONT COLOR="#ff0000">les
|
||||
retards individuels par saut ne sont pas encore implémentés</FONT>] ;
|
||||
</FONT>
|
||||
</P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif"><B><BR>AVERTISSEMENT!</B></FONT></P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif">Si vous
|
||||
choisissez cette option – particulièrement avec de nombreux sauts
|
||||
et/ou de longs retards, ne soyez pas surpris si vos messages
|
||||
n'arrivent pas rapidement à destination. Ça prendra évidemment
|
||||
plus de temps – jusqu'à plusieurs jours !</FONT></P>
|
||||
<P STYLE="line-height: 150%"><BR><BR>
|
||||
</P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif"><I><B>6.
|
||||
Remerciements</B></I></FONT></P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif">Idée &
|
||||
conception technique : HungryHobo, Mixxy </FONT>
|
||||
</P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif">Implémentation
|
||||
: HungryHobo </FONT>
|
||||
</P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif">Maintenance
|
||||
du greffon : zzz, HungryHobo </FONT>
|
||||
</P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif">Interface
|
||||
utilisateur : HungryHobo </FONT>
|
||||
</P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif">Intégration
|
||||
de Seedless : sponge </FONT>
|
||||
</P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif">Traduction
|
||||
allemande : HungryHobo </FONT>
|
||||
</P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif">Traduction
|
||||
russe : suhr</FONT></P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif">Traduction
|
||||
française : albat, Redzara, Mixxy, magma </FONT>
|
||||
</P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif">Traduction
|
||||
espagnole : Mixxy</FONT></P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif">Traduction
|
||||
portugaise : Mixxy </FONT>
|
||||
</P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif">Traduction
|
||||
hollandaise : KwukDuck </FONT>
|
||||
</P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif">Traduction
|
||||
norvégienne : hej </FONT>
|
||||
</P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif">Traduction
|
||||
suédoise : hottuna</FONT></P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif">Traduction
|
||||
chinoise : walking </FONT>
|
||||
</P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif">Traduction
|
||||
arabe : hamada </FONT>
|
||||
</P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif">Testeurs
|
||||
versions Alpha : HungryHobo, Mixxy, Returning Novice, sponge, et de
|
||||
nombreux autres. </FONT>
|
||||
</P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif">Manuel :
|
||||
Mixxy</FONT></P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif">Testeurs
|
||||
versions Alpha : HungryHobo, Mixxy, Returning Novice, sponge, and
|
||||
many others</FONT></P>
|
||||
<P STYLE="line-height: 150%">Traduction française du manuel :
|
||||
magma (avril 2011) (grâce à l'aide inestimable de user pour la
|
||||
restitution correcte des concepts techniques et l'utilisation des
|
||||
outils techniques de l'équipe I2P).</P>
|
||||
<P STYLE="line-height: 150%"><BR><BR>
|
||||
</P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif"><B>7.
|
||||
Détails techniques</B></FONT></P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif">-- voir
|
||||
techdoc.txt --</FONT></P>
|
||||
<P STYLE="line-height: 150%"><BR><BR>
|
||||
</P>
|
||||
<P STYLE="line-height: 150%"><BR><BR>
|
||||
</P>
|
||||
<P STYLE="line-height: 150%"><FONT FACE="Arial, sans-serif"><I><B>ENJOY
|
||||
THE BOTE FEELING!!</B></I></FONT></P>
|
||||
</BODY>
|
||||
</HTML>
|
BIN
WebContent/WEB-INF/lib/bcprov-ecc-jdk16-146.jar
Normal file
2
WebContent/WEB-INF/lib/decrypt.bat
Executable file
@ -0,0 +1,2 @@
|
||||
REM This script only works if I2P is installed in the standard directory
|
||||
@java -cp "%PROGRAMFILES%\\i2p\\lib\\i2p.jar;i2pbote.jar;scrypt-1.3.3.jar" i2p.bote.fileencryption.Decrypt %*
|
2
WebContent/WEB-INF/lib/decrypt.sh
Executable file
@ -0,0 +1,2 @@
|
||||
#!/bin/sh
|
||||
java -cp $I2P/lib/i2p.jar:`dirname $0`/i2pbote.jar:`dirname $0`/scrypt-1.3.3.jar i2p.bote.fileencryption.Decrypt $@
|
2
WebContent/WEB-INF/lib/encrypt.bat
Executable file
@ -0,0 +1,2 @@
|
||||
REM This script only works if I2P is installed in the standard directory
|
||||
@java -cp "%PROGRAMFILES%\\i2p\\lib\\i2p.jar;i2pbote.jar;scrypt-1.3.3.jar" i2p.bote.fileencryption.Encrypt %*
|
2
WebContent/WEB-INF/lib/encrypt.sh
Executable file
@ -0,0 +1,2 @@
|
||||
#!/bin/sh
|
||||
java -cp $I2P/lib/i2p.jar:`dirname $0`/i2pbote.jar:`dirname $0`/scrypt-1.3.3.jar i2p.bote.fileencryption.Encrypt $@
|
2
WebContent/WEB-INF/lib/fileinfo.bat
Executable file
@ -0,0 +1,2 @@
|
||||
REM This scrypt only works if I2P is installed in the standard directory
|
||||
@java -cp "%PROGRAMFILES%\\i2p\\lib\\i2p.jar;i2pbote.jar" i2p.bote.fileencryption.FileInfo %*
|
2
WebContent/WEB-INF/lib/fileinfo.sh
Executable file
@ -0,0 +1,2 @@
|
||||
#!/bin/sh
|
||||
java -cp $I2P/lib/i2p.jar:`dirname $0`/i2pbote.jar i2p.bote.fileencryption.FileInfo $@
|
BIN
WebContent/WEB-INF/lib/flexi-gmss-1.7p1.jar
Normal file
BIN
WebContent/WEB-INF/lib/lzma-9.20.jar
Normal file
BIN
WebContent/WEB-INF/lib/ntruenc-1.2.jar
Normal file
BIN
WebContent/WEB-INF/lib/scrypt-1.3.3.jar
Normal file
@ -29,7 +29,7 @@
|
||||
|
||||
<c:set var="address" value="${ib:getNameAndDestination(address)}"/>
|
||||
|
||||
<div id="address">
|
||||
<div>
|
||||
<c:set var="emailDestination" value="${ib:extractEmailDestination(address)}"/>
|
||||
<c:set var="name" value="${ib:extractName(address)}"/>
|
||||
|
||||
@ -52,23 +52,23 @@
|
||||
<c:if test="${!empty name}">
|
||||
<c:set var="shortAdr" value="${shortAdr}>"/>
|
||||
</c:if>
|
||||
${shortAdr}<br/>
|
||||
${shortAdr}
|
||||
|
||||
<%-- Print the full email destination and the button only when expanded --%>
|
||||
<span>
|
||||
<%-- put wbr tags in the address so the lines don't get too long --%>
|
||||
<c:set var="wbrDest" value=""/>
|
||||
<c:forEach begin="0" end="${fn:length(emailDestination)-1}" step="5" var="i">
|
||||
<c:set var="wbrDest" value="${wbrDest}${fn:substring(emailDestination, i, i+5)}<wbr/>"/>
|
||||
</c:forEach>
|
||||
|
||||
<strong><ib:message key="Email Destination: "/></strong> ${wbrDest}
|
||||
<c:if test="${!empty emailDestination}">
|
||||
<c:set var="disabled" value="${ib:isKnown(emailDestination) ? 'disabled=" disabled" title="The Email Destination already exists in the address book."' : ''}"/>
|
||||
<br/>
|
||||
<button type="submit"${disabled}><ib:message key="Add to Address Book"/></button>
|
||||
</c:if>
|
||||
</span>
|
||||
<ib:expandable>
|
||||
<%-- put wbr tags in the address so the lines don't get too long --%>
|
||||
<c:set var="wbrDest" value=""/>
|
||||
<c:forEach begin="0" end="${fn:length(emailDestination)-1}" step="5" var="i">
|
||||
<c:set var="wbrDest" value="${wbrDest}${fn:substring(emailDestination, i, i+5)}<wbr/>"/>
|
||||
</c:forEach>
|
||||
|
||||
<strong><ib:message key="Email Destination: "/></strong> ${wbrDest}
|
||||
<c:if test="${!empty emailDestination}">
|
||||
<c:set var="disabled" value="${ib:isKnown(emailDestination) ? 'disabled=" disabled" title="The Email Destination already exists in the address book."' : ''}"/>
|
||||
<br/>
|
||||
<button type="submit"${disabled}><ib:message key="Add to Address Book"/></button>
|
||||
</c:if>
|
||||
</ib:expandable>
|
||||
</c:if>
|
||||
</form>
|
||||
</div>
|
@ -25,23 +25,41 @@
|
||||
--%>
|
||||
|
||||
<%@ attribute name="paramsToCopy" required="true" description="Comma-separated parameter names" %>
|
||||
<%@ attribute name="paramsToExclude" required="false" description="Comma-separated parameter names to exclude" %>
|
||||
|
||||
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
|
||||
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
|
||||
<%@ taglib prefix="ib" uri="I2pBoteTags" %>
|
||||
|
||||
<c:set var="paramArray" value="${fn:split(paramsToCopy, ',')}"/>
|
||||
<c:set var="excludedArray" value="${fn:split(paramsToExclude, ',')}"/>
|
||||
|
||||
<c:forEach var="parameter" items="${param}">
|
||||
<%-- Test if the parameter matches one of the excluded params --%>
|
||||
<c:set var="exactMatch" value="false"/>
|
||||
<c:set var="prefixMatch" value="false"/>
|
||||
<c:forEach var="paramToCopy" items="${fn:split(paramsToCopy, ',')}">
|
||||
<c:if test="${parameter.key eq paramToCopy}">
|
||||
<c:set var="isExcluded" value="false"/>
|
||||
<c:forEach var="paramToExclude" items="${excludedArray}">
|
||||
<c:if test="${parameter.key eq paramToExclude}">
|
||||
<c:set var="exactMatch" value="true"/>
|
||||
</c:if>
|
||||
<c:if test="${fn:endsWith(paramToCopy, '*') and fn:startsWith(parameter.key, fn:substringBefore(paramToCopy, '*'))}">
|
||||
<c:if test="${fn:endsWith(paramToExclude, '*') and fn:startsWith(parameter.key, fn:substringBefore(paramToExclude, '*'))}">
|
||||
<c:set var="prefixMatch" value="true"/>
|
||||
</c:if>
|
||||
</c:forEach>
|
||||
<c:if test="${exactMatch or prefixMatch}">
|
||||
<input type="hidden" name="${parameter.key}" value="${ib:escapeQuotes(parameter.value)}"/>
|
||||
|
||||
<%-- If not excluded, test for a match with paramArray --%>
|
||||
<c:if test="${not exactMatch and not prefixMatch}">
|
||||
<c:forEach var="paramToCopy" items="${paramArray}">
|
||||
<c:if test="${parameter.key eq paramToCopy}">
|
||||
<c:set var="exactMatch" value="true"/>
|
||||
</c:if>
|
||||
<c:if test="${fn:endsWith(paramToCopy, '*') and fn:startsWith(parameter.key, fn:substringBefore(paramToCopy, '*'))}">
|
||||
<c:set var="prefixMatch" value="true"/>
|
||||
</c:if>
|
||||
</c:forEach>
|
||||
<c:if test="${exactMatch or prefixMatch}">
|
||||
<input type="hidden" name="${parameter.key}" value="${ib:escapeQuotes(parameter.value)}"/>
|
||||
</c:if>
|
||||
</c:if>
|
||||
</c:forEach>
|
72
WebContent/WEB-INF/tags/expandable.tag
Normal file
@ -0,0 +1,72 @@
|
||||
<%--
|
||||
Copyright (C) 2009 HungryHobo@mail.i2p
|
||||
|
||||
The GPG fingerprint for HungryHobo@mail.i2p is:
|
||||
6DD3 EAA2 9990 29BC 4AD2 7486 1E2C 7B61 76DC DC12
|
||||
|
||||
This file is part of I2P-Bote.
|
||||
I2P-Bote is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
I2P-Bote is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with I2P-Bote. If not, see <http://www.gnu.org/licenses/>.
|
||||
--%>
|
||||
|
||||
<%--
|
||||
Shows a "More..." link that unhides the body content of the tag,
|
||||
i.e. everything between <ib:expandable> and </ib:expandable>.
|
||||
If JavaScript is disabled, the body content is always shown and
|
||||
there is no link.
|
||||
--%>
|
||||
|
||||
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
|
||||
<%@ taglib prefix="ib" uri="I2pBoteTags" %>
|
||||
|
||||
<ib:message key="More..." var="moreText"/>
|
||||
<ib:message key="Less..." var="lessText"/>
|
||||
|
||||
<c:set var="expandableTagCounter" value="${expandableTagCounter + 1}" scope="request"/>
|
||||
|
||||
<script>
|
||||
// Expands / collapses the help text
|
||||
function toggle(textId, linkId) {
|
||||
var text = document.getElementById(textId);
|
||||
var link = document.getElementById(linkId);
|
||||
if(text.style.display == "block") {
|
||||
text.style.display = "none";
|
||||
link.innerHTML = "${moreText}";
|
||||
}
|
||||
else {
|
||||
text.style.display = "block";
|
||||
link.innerHTML = "${lessText}";
|
||||
}
|
||||
link.blur();
|
||||
}
|
||||
|
||||
// fills in the link text
|
||||
function insertToggleLink() {
|
||||
var numTags = ${expandableTagCounter};
|
||||
for (var i=1; i<=numTags; i++) {
|
||||
var toggleLink = document.getElementById('toggle-link' + i);
|
||||
toggleLink.innerHTML = "${moreText}";
|
||||
};
|
||||
}
|
||||
|
||||
window.onload = insertToggleLink;
|
||||
</script>
|
||||
|
||||
<div id="hidden-text${expandableTagCounter}" class="hidden-text">
|
||||
<jsp:doBody/>
|
||||
</div>
|
||||
<a href="#" id="toggle-link${expandableTagCounter}" onclick="toggle('hidden-text${expandableTagCounter}', 'toggle-link${expandableTagCounter}')"></a>
|
||||
<noscript>
|
||||
<br/>
|
||||
<jsp:doBody/>
|
||||
</noscript>
|
@ -20,26 +20,30 @@
|
||||
--%>
|
||||
|
||||
<%@ attribute name="dirName" required="true" description="The directory used by the folder" %>
|
||||
<%@ attribute name="displayName" required="true" description="The display name for the folder" %>
|
||||
<%@ attribute name="displayName" required="true" description="The display name for the folder; must match the translation for dirName or the page title won't be translated." %>
|
||||
|
||||
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
|
||||
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
|
||||
<%@ taglib prefix="ib" uri="I2pBoteTags" %>
|
||||
|
||||
<c:set var="numEmails" value="${ib:getMailFolder(dirName).numElements}"/>
|
||||
<c:set var="numNew" value="${ib:getMailFolder(dirName).numNewEmails}"/>
|
||||
<jsp:useBean id="jspHelperBean" class="i2p.bote.web.JSPHelper"/>
|
||||
|
||||
<c:choose>
|
||||
<c:when test="${dirName eq 'Outbox'}">
|
||||
<a href="outbox.jsp" target="_parent" title="${numEmails} emails total, ${numNew} new">
|
||||
<img src="images/folder.png"/>${displayName}
|
||||
</a>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<a href="folder.jsp?path=${dirName}" target="_parent" title="${numEmails} emails total, ${numNew} new">
|
||||
<img src="images/folder.png"/>${displayName}
|
||||
</a>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
<c:set var="numEmails" value="${ib:getMailFolder(dirName).numElements}"/>
|
||||
<c:if test="${jspHelperBean.passwordRequired}">
|
||||
<ib:message key="{0} emails total" var="linkTitle">
|
||||
<ib:param value="${numEmails}"/>
|
||||
</ib:message>
|
||||
</c:if>
|
||||
<c:if test="${not jspHelperBean.passwordRequired}">
|
||||
<c:set var="numNew" value="${ib:getMailFolder(dirName).numNewEmails}"/>
|
||||
<ib:message key="{0} emails total, {1} new" var="linkTitle">
|
||||
<ib:param value="${numEmails}"/>
|
||||
<ib:param value="${numNew}"/>
|
||||
</ib:message>
|
||||
</c:if>
|
||||
|
||||
<a href="folder.jsp?path=${dirName}" target="_parent" title="${linkTitle}">
|
||||
<img src="themes/${jspHelperBean.configuration.theme}/images/folder.png"/>${displayName}
|
||||
</a>
|
||||
|
||||
<c:if test="${numNew>0}">(${numNew})</c:if>
|
@ -20,23 +20,29 @@
|
||||
--%>
|
||||
|
||||
<%--
|
||||
Prints the "sent" date and time of an email. Handles null dates.
|
||||
timeStyle can be "short", "medium", "long", or "full".
|
||||
Prints a date and/or time. If the date is null and printUnknown is true,
|
||||
a string is printed indicating the date is unknown.
|
||||
type can be "date", "time", or "both". The default is both.
|
||||
timeStyle can be "short", "medium", "long", or "full".
|
||||
--%>
|
||||
|
||||
<%@ attribute name="email" type="i2p.bote.email.Email" required="true" description="The directory used by the folder" %>
|
||||
<%@ attribute name="date" type="java.util.Date" required="true" description="The date and/or time to display" %>
|
||||
<%@ attribute name="type" required="false" description="Whether to print the date, the time, or both. See the time parameter of fmt:formatDate. The default is both." %>
|
||||
<%@ attribute name="timeStyle" required="false" description="See the timeStyle parameter of fmt:formatDate" %>
|
||||
<%@ attribute name="printUnknown" type="java.lang.Boolean" required="false" description="Whether to substitute 'unknown' for an empty date. If this is false, nothing is printed." %>
|
||||
|
||||
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
|
||||
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
|
||||
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
|
||||
<%@ taglib prefix="ib" uri="I2pBoteTags" %>
|
||||
|
||||
<c:set var="date" value="${email.sentDate}"/>
|
||||
<c:if test="${!empty date}">
|
||||
<fmt:formatDate value="${email.sentDate}" var="date" type="both" timeStyle="${timeStyle}"/>
|
||||
<c:if test="${empty type}">
|
||||
<c:set var="type" value="both"/>
|
||||
</c:if>
|
||||
<fmt:formatDate value="${date}" var="date" type="${type}" timeStyle="${timeStyle}"/>
|
||||
</c:if>
|
||||
<c:if test="${empty date}">
|
||||
<c:if test="${empty date and printUnknown eq true}">
|
||||
<ib:message key="Unknown" var="date"/>
|
||||
</c:if>
|
||||
${fn:escapeXml(date)}
|
@ -24,6 +24,11 @@
|
||||
<rtexprvalue>true</rtexprvalue>
|
||||
<required>true</required>
|
||||
</attribute>
|
||||
<attribute>
|
||||
<name>includeSentTime</name>
|
||||
<rtexprvalue>true</rtexprvalue>
|
||||
<required>true</required>
|
||||
</attribute>
|
||||
</tag>
|
||||
|
||||
<tag>
|
||||
@ -35,10 +40,6 @@
|
||||
<body-content>scriptless</body-content>
|
||||
<attribute>
|
||||
<name>type</name>
|
||||
<description>
|
||||
Can be any of the javax.mail.Message.RecipientType values
|
||||
(TO, CC, or BCC).
|
||||
</description>
|
||||
<rtexprvalue>true</rtexprvalue>
|
||||
<required>true</required>
|
||||
</attribute>
|
||||
@ -49,12 +50,50 @@
|
||||
</attribute>
|
||||
</tag>
|
||||
|
||||
<tag>
|
||||
<name>attachment</name>
|
||||
<info>
|
||||
Adds an email attachment. Must be inside an ib:sendEmail tag.
|
||||
</info>
|
||||
<tag-class>i2p.bote.web.AttachmentTag</tag-class>
|
||||
<body-content>scriptless</body-content>
|
||||
<attribute>
|
||||
<name>origFilename</name>
|
||||
<rtexprvalue>true</rtexprvalue>
|
||||
<required>true</required>
|
||||
</attribute>
|
||||
<attribute>
|
||||
<name>tempFilename</name>
|
||||
<rtexprvalue>true</rtexprvalue>
|
||||
<required>true</required>
|
||||
</attribute>
|
||||
</tag>
|
||||
|
||||
<tag>
|
||||
<name>checkForMail</name>
|
||||
<tag-class>i2p.bote.web.CheckMailTag</tag-class>
|
||||
<body-content>empty</body-content>
|
||||
</tag>
|
||||
|
||||
<tag>
|
||||
<name>showAttachments</name>
|
||||
<info>
|
||||
Displays links to all attachments in an email.
|
||||
</info>
|
||||
<tag-class>i2p.bote.web.ShowAttachmentsTag</tag-class>
|
||||
<body-content>empty</body-content>
|
||||
<attribute>
|
||||
<name>email</name>
|
||||
<rtexprvalue>true</rtexprvalue>
|
||||
<required>true</required>
|
||||
</attribute>
|
||||
<attribute>
|
||||
<name>folder</name>
|
||||
<rtexprvalue>true</rtexprvalue>
|
||||
<required>true</required>
|
||||
</attribute>
|
||||
</tag>
|
||||
|
||||
<tag>
|
||||
<name>formatPlainText</name>
|
||||
<tag-class>i2p.bote.web.FormatPlainTextTag</tag-class>
|
||||
@ -87,6 +126,27 @@
|
||||
</attribute>
|
||||
</tag>
|
||||
|
||||
<tag>
|
||||
<name>setEmailReplied</name>
|
||||
<tag-class>i2p.bote.web.SetEmailRepliedTag</tag-class>
|
||||
<body-content>empty</body-content>
|
||||
<attribute>
|
||||
<name>folder</name>
|
||||
<rtexprvalue>true</rtexprvalue>
|
||||
<required>true</required>
|
||||
</attribute>
|
||||
<attribute>
|
||||
<name>messageId</name>
|
||||
<rtexprvalue>true</rtexprvalue>
|
||||
<required>true</required>
|
||||
</attribute>
|
||||
<attribute>
|
||||
<name>replied</name>
|
||||
<rtexprvalue>true</rtexprvalue>
|
||||
<required>true</required>
|
||||
</attribute>
|
||||
</tag>
|
||||
|
||||
<tag>
|
||||
<name>quote</name>
|
||||
<tag-class>i2p.bote.web.QuoteTag</tag-class>
|
||||
@ -98,6 +158,33 @@
|
||||
</attribute>
|
||||
</tag>
|
||||
|
||||
<tag>
|
||||
<name>saveIdentities</name>
|
||||
<tag-class>i2p.bote.web.SaveIdentitiesTag</tag-class>
|
||||
<body-content>empty</body-content>
|
||||
</tag>
|
||||
|
||||
<tag>
|
||||
<name>publishDestination</name>
|
||||
<tag-class>i2p.bote.web.PublishDestinationTag</tag-class>
|
||||
<body-content>empty</body-content>
|
||||
<attribute>
|
||||
<name>destination</name>
|
||||
<rtexprvalue>true</rtexprvalue>
|
||||
<required>true</required>
|
||||
</attribute>
|
||||
<attribute>
|
||||
<name>pictureFilename</name>
|
||||
<rtexprvalue>true</rtexprvalue>
|
||||
<required>false</required>
|
||||
</attribute>
|
||||
<attribute>
|
||||
<name>text</name>
|
||||
<rtexprvalue>true</rtexprvalue>
|
||||
<required>false</required>
|
||||
</attribute>
|
||||
</tag>
|
||||
|
||||
<tag>
|
||||
<name>connect</name>
|
||||
<tag-class>i2p.bote.web.ConnectTag</tag-class>
|
||||
@ -111,11 +198,11 @@
|
||||
</tag>
|
||||
|
||||
<tag>
|
||||
<name>localizedLanguageName</name>
|
||||
<tag-class>i2p.bote.web.LocalizedLanguageNameTag</tag-class>
|
||||
<name>printException</name>
|
||||
<tag-class>i2p.bote.web.PrintExceptionTag</tag-class>
|
||||
<body-content>empty</body-content>
|
||||
<attribute>
|
||||
<name>locale</name>
|
||||
<name>exception</name>
|
||||
<rtexprvalue>true</rtexprvalue>
|
||||
<required>true</required>
|
||||
</attribute>
|
||||
@ -126,6 +213,7 @@
|
||||
<info>
|
||||
Same as fmt:message, except that message keys in
|
||||
the "en" locale translate to the message key itself.
|
||||
The noextract attribute is only used by the JspStrings util.
|
||||
</info>
|
||||
<tag-class>i2p.bote.web.MessageTag</tag-class>
|
||||
<body-content>JSP</body-content>
|
||||
@ -151,10 +239,11 @@
|
||||
</attribute>
|
||||
<attribute>
|
||||
<name>hide</name>
|
||||
<description>
|
||||
If this parameter is set to true, and the user has chosen to hide
|
||||
the UI language from email recipients, the message is not translated.
|
||||
</description>
|
||||
<rtexprvalue>true</rtexprvalue>
|
||||
<required>false</required>
|
||||
</attribute>
|
||||
<attribute>
|
||||
<name>noextract</name>
|
||||
<rtexprvalue>true</rtexprvalue>
|
||||
<required>false</required>
|
||||
</attribute>
|
||||
@ -183,27 +272,82 @@
|
||||
<body-content>empty</body-content>
|
||||
</tag>
|
||||
|
||||
<tag>
|
||||
<name>requirePassword</name>
|
||||
<info>
|
||||
Forwards the current page to the password entry page
|
||||
if the tag body throws a PasswordException.
|
||||
When the user enters the correct password, the page
|
||||
pointed to by the forwardTo parameter is loaded.
|
||||
If forwardTo is not given, the original page is used instead;
|
||||
all parameters in the query string are lost in this case.
|
||||
</info>
|
||||
<tag-class>i2p.bote.web.RequirePasswordTag</tag-class>
|
||||
<body-content>JSP</body-content>
|
||||
<attribute>
|
||||
<name>forwardUrl</name>
|
||||
<rtexprvalue>true</rtexprvalue>
|
||||
<required>false</required>
|
||||
</attribute>
|
||||
</tag>
|
||||
|
||||
<tag>
|
||||
<name>clearPasswordCache</name>
|
||||
<tag-class>i2p.bote.web.ClearPasswordCacheTag</tag-class>
|
||||
<body-content>empty</body-content>
|
||||
</tag>
|
||||
|
||||
<tag>
|
||||
<info>
|
||||
Changes the application password. If no password is
|
||||
currently set, the old password is an empty string.
|
||||
</info>
|
||||
<name>setPassword</name>
|
||||
<tag-class>i2p.bote.web.SetPasswordTag</tag-class>
|
||||
<body-content>empty</body-content>
|
||||
<attribute>
|
||||
<name>oldPassword</name>
|
||||
<rtexprvalue>true</rtexprvalue>
|
||||
<required>false</required>
|
||||
</attribute>
|
||||
<attribute>
|
||||
<name>newPassword</name>
|
||||
<rtexprvalue>true</rtexprvalue>
|
||||
<required>false</required>
|
||||
</attribute>
|
||||
<attribute>
|
||||
<name>confirmNewPassword</name>
|
||||
<rtexprvalue>true</rtexprvalue>
|
||||
<required>false</required>
|
||||
</attribute>
|
||||
</tag>
|
||||
|
||||
<tag>
|
||||
<info>
|
||||
If the password is being changed (i.e. all files are being
|
||||
reencrypted with a new password), this call blocks until
|
||||
the password change is finished. If the password isn't being
|
||||
changed, it returns immediately.
|
||||
This tag produces no output.
|
||||
</info>
|
||||
<name>waitForPasswordChange</name>
|
||||
<tag-class>i2p.bote.web.WaitForPasswordChangeTag</tag-class>
|
||||
<body-content>empty</body-content>
|
||||
</tag>
|
||||
|
||||
<function>
|
||||
<name>getNetworkStatus</name>
|
||||
<name>createOrModifyIdentity</name>
|
||||
<function-class>i2p.bote.web.JSPHelper</function-class>
|
||||
<function-signature>
|
||||
i2p.bote.network.NetworkStatus getNetworkStatus()
|
||||
boolean createOrModifyIdentity(boolean, int, java.lang.String, java.lang.String, java.lang.String, java.lang.String, boolean)
|
||||
</function-signature>
|
||||
</function>
|
||||
|
||||
<function>
|
||||
<name>getIdentities</name>
|
||||
<name>modifyIdentity</name>
|
||||
<function-class>i2p.bote.web.JSPHelper</function-class>
|
||||
<function-signature>
|
||||
i2p.bote.email.Identities getIdentities()
|
||||
</function-signature>
|
||||
</function>
|
||||
|
||||
<function>
|
||||
<name>saveIdentity</name>
|
||||
<function-class>i2p.bote.web.JSPHelper</function-class>
|
||||
<function-signature>
|
||||
boolean saveIdentity(boolean, int, java.lang.String, java.lang.String, java.lang.String, java.lang.String, boolean)
|
||||
boolean modifyIdentity(java.lang.String, java.lang.String, java.lang.String, java.lang.String, boolean)
|
||||
</function-signature>
|
||||
</function>
|
||||
|
||||
@ -226,6 +370,28 @@
|
||||
</function-signature>
|
||||
</function>
|
||||
|
||||
<function>
|
||||
<name>getContactFingerprint</name>
|
||||
<description>
|
||||
Returns the fingerprint of a Contact in a given locale.
|
||||
</description>
|
||||
<function-class>i2p.bote.web.JSPHelper</function-class>
|
||||
<function-signature>
|
||||
java.lang.String getFingerprint(i2p.bote.packet.dht.Contact, java.lang.String)
|
||||
</function-signature>
|
||||
</function>
|
||||
|
||||
<function>
|
||||
<name>getIdentityFingerprint</name>
|
||||
<description>
|
||||
Returns the fingerprint of an EmailIdentity in a given locale.
|
||||
</description>
|
||||
<function-class>i2p.bote.web.JSPHelper</function-class>
|
||||
<function-signature>
|
||||
java.lang.String getFingerprint(i2p.bote.email.EmailIdentity, java.lang.String)
|
||||
</function-signature>
|
||||
</function>
|
||||
|
||||
<function>
|
||||
<name>getCryptoImplementation</name>
|
||||
<description>
|
||||
@ -237,19 +403,11 @@
|
||||
</function-signature>
|
||||
</function>
|
||||
|
||||
<function>
|
||||
<name>getAddressBook</name>
|
||||
<function-class>i2p.bote.web.JSPHelper</function-class>
|
||||
<function-signature>
|
||||
i2p.bote.addressbook.AddressBook getAddressBook()
|
||||
</function-signature>
|
||||
</function>
|
||||
|
||||
<function>
|
||||
<name>saveContact</name>
|
||||
<function-class>i2p.bote.web.JSPHelper</function-class>
|
||||
<function-signature>
|
||||
boolean saveContact(java.lang.String, java.lang.String)
|
||||
boolean saveContact(java.lang.String, java.lang.String, java.lang.String, java.lang.String)
|
||||
</function-signature>
|
||||
</function>
|
||||
|
||||
@ -262,31 +420,13 @@
|
||||
</function>
|
||||
|
||||
<function>
|
||||
<name>getContactName</name>
|
||||
<name>getContact</name>
|
||||
<description>
|
||||
Looks up a name for an Email Destination in the address book.
|
||||
If the Email Destination does not exist in the address book,
|
||||
an empty string is returned.
|
||||
Looks up a Contact in the address book by its Email Destination.
|
||||
</description>
|
||||
<function-class>i2p.bote.web.JSPHelper</function-class>
|
||||
<function-signature>
|
||||
java.lang.String getContactName(java.lang.String)
|
||||
</function-signature>
|
||||
</function>
|
||||
|
||||
<function>
|
||||
<name>isCheckingForMail</name>
|
||||
<function-class>i2p.bote.web.JSPHelper</function-class>
|
||||
<function-signature>
|
||||
boolean isCheckingForMail()
|
||||
</function-signature>
|
||||
</function>
|
||||
|
||||
<function>
|
||||
<name>newMailReceived</name>
|
||||
<function-class>i2p.bote.web.JSPHelper</function-class>
|
||||
<function-signature>
|
||||
boolean newMailReceived()
|
||||
java.lang.String getContact(java.lang.String)
|
||||
</function-signature>
|
||||
</function>
|
||||
|
||||
@ -333,6 +473,14 @@
|
||||
</function-signature>
|
||||
</function>
|
||||
|
||||
<function>
|
||||
<name>getReplyAddress</name>
|
||||
<function-class>i2p.bote.web.JSPHelper</function-class>
|
||||
<function-signature>
|
||||
java.lang.String getReplyAddress(i2p.bote.email.Email, i2p.bote.email.Identities)
|
||||
</function-signature>
|
||||
</function>
|
||||
|
||||
<function>
|
||||
<name>getEmailStatus</name>
|
||||
<description>
|
||||
@ -366,6 +514,21 @@
|
||||
</function-signature>
|
||||
</function>
|
||||
|
||||
<function>
|
||||
<name>getNameAndShortDestination</name>
|
||||
<description>
|
||||
Returns a string containing the locally known name of the Email Destination
|
||||
in the String argument, and the first 4 characters of the Base64-encoded Email
|
||||
Destination.
|
||||
If the Email Destination is not locally known (if it doesn't exist in the
|
||||
address book or any of the identities), the address is returned unaltered.
|
||||
</description>
|
||||
<function-class>i2p.bote.web.JSPHelper</function-class>
|
||||
<function-signature>
|
||||
java.lang.String getNameAndShortDestination(java.lang.String)
|
||||
</function-signature>
|
||||
</function>
|
||||
|
||||
<function>
|
||||
<name>extractName</name>
|
||||
<function-class>i2p.bote.web.JSPHelper</function-class>
|
||||
@ -431,6 +594,77 @@
|
||||
</function-signature>
|
||||
</function>
|
||||
|
||||
<function>
|
||||
<name>tryPassword</name>
|
||||
<description>
|
||||
Tests whether a password is correct. If it is, it is
|
||||
stored in the password cache and true is returned.
|
||||
Otherwise, the password is not stored and false is
|
||||
returned.
|
||||
</description>
|
||||
<function-class>i2p.bote.web.JSPHelper</function-class>
|
||||
<function-signature>
|
||||
boolean tryPassword(java.lang.String)
|
||||
</function-signature>
|
||||
</function>
|
||||
|
||||
<function>
|
||||
<name>getFileSize</name>
|
||||
<description>
|
||||
Returns the size of a file in a human-readable format.
|
||||
</description>
|
||||
<function-class>i2p.bote.web.JSPHelper</function-class>
|
||||
<function-signature>
|
||||
java.lang.String getFileSize(java.lang.String)
|
||||
</function-signature>
|
||||
</function>
|
||||
|
||||
<function>
|
||||
<name>urlEncode</name>
|
||||
<description>
|
||||
URL-encodes a UTF-8 string.
|
||||
</description>
|
||||
<function-class>i2p.bote.web.JSPHelper</function-class>
|
||||
<function-signature>
|
||||
java.lang.String urlEncode(java.lang.String)
|
||||
</function-signature>
|
||||
</function>
|
||||
|
||||
<function>
|
||||
<name>urlDecode</name>
|
||||
<description>
|
||||
URL-decodes a string.
|
||||
</description>
|
||||
<function-class>i2p.bote.web.JSPHelper</function-class>
|
||||
<function-signature>
|
||||
java.lang.String urlDecode(java.lang.String)
|
||||
</function-signature>
|
||||
</function>
|
||||
|
||||
<function>
|
||||
<name>getLocalizedFilename</name>
|
||||
<function-class>i2p.bote.web.JSPHelper</function-class>
|
||||
<function-signature>
|
||||
java.lang.String getLocalizedFilename(java.lang.String, javax.servlet.ServletContext)
|
||||
</function-signature>
|
||||
</function>
|
||||
|
||||
<function>
|
||||
<name>getLocalizedThemeName</name>
|
||||
<function-class>i2p.bote.web.JSPHelper</function-class>
|
||||
<function-signature>
|
||||
java.lang.String getLocalizedThemeName(java.lang.String)
|
||||
</function-signature>
|
||||
</function>
|
||||
|
||||
<function>
|
||||
<name>lookupInDirectory</name>
|
||||
<function-class>i2p.bote.web.JSPHelper</function-class>
|
||||
<function-signature>
|
||||
i2p.bote.packet.dht.Contact lookupInDirectory(java.lang.String)
|
||||
</function-signature>
|
||||
</function>
|
||||
|
||||
<tag-file>
|
||||
<name>printWithLineBreaks</name>
|
||||
<path>/WEB-INF/tags/printWithLineBreaks.tag</path>
|
||||
@ -447,8 +681,8 @@
|
||||
</tag-file>
|
||||
|
||||
<tag-file>
|
||||
<name>emailDate</name>
|
||||
<path>/WEB-INF/tags/emailDate.tag</path>
|
||||
<name>printDate</name>
|
||||
<path>/WEB-INF/tags/printDate.tag</path>
|
||||
</tag-file>
|
||||
|
||||
<tag-file>
|
||||
@ -456,4 +690,9 @@
|
||||
<path>/WEB-INF/tags/copyParams.tag</path>
|
||||
</tag-file>
|
||||
|
||||
<tag-file>
|
||||
<name>expandable</name>
|
||||
<path>/WEB-INF/tags/expandable.tag</path>
|
||||
</tag-file>
|
||||
|
||||
</taglib>
|
@ -15,15 +15,63 @@
|
||||
|
||||
<filter>
|
||||
<filter-name>CharsetFilter</filter-name>
|
||||
<filter-class>i2p.bote.web.CharsetFilter</filter-class>
|
||||
<filter-class>i2p.bote.web.CharsetFilter</filter-class>
|
||||
<init-param>
|
||||
<param-name>requestEncoding</param-name>
|
||||
<param-value>UTF-8</param-value>
|
||||
</init-param>
|
||||
</filter>
|
||||
<filter>
|
||||
<description>
|
||||
Makes parameters in a multipart/form-data request accessible to JSP/Servlet code.
|
||||
</description>
|
||||
<filter-name>MultipartFilter</filter-name>
|
||||
<filter-class>i2p.bote.web.MultipartFilter</filter-class>
|
||||
</filter>
|
||||
<filter>
|
||||
<description>
|
||||
Redirects requests for themes not included in the .war, to ThemeServlet
|
||||
</description>
|
||||
<filter-name>ThemeFilter</filter-name>
|
||||
<filter-class>i2p.bote.web.ThemeFilter</filter-class>
|
||||
<init-param>
|
||||
<param-name>themeServletPath</param-name>
|
||||
<param-value>externalThemes</param-value>
|
||||
</init-param>
|
||||
</filter>
|
||||
|
||||
<filter-mapping>
|
||||
<filter-name>CharsetFilter</filter-name>
|
||||
<url-pattern>/*</url-pattern>
|
||||
</filter-mapping>
|
||||
</web-app>
|
||||
<filter-mapping>
|
||||
<filter-name>MultipartFilter</filter-name>
|
||||
<url-pattern>/newEmail.jsp</url-pattern>
|
||||
</filter-mapping>
|
||||
<filter-mapping>
|
||||
<filter-name>MultipartFilter</filter-name>
|
||||
<url-pattern>/publishDestination.jsp</url-pattern>
|
||||
</filter-mapping>
|
||||
<filter-mapping>
|
||||
<filter-name>ThemeFilter</filter-name>
|
||||
<url-pattern>/themes/*</url-pattern>
|
||||
</filter-mapping>
|
||||
|
||||
<servlet>
|
||||
<servlet-name>ShowAttachment</servlet-name>
|
||||
<servlet-class>i2p.bote.web.ShowAttachment</servlet-class>
|
||||
</servlet>
|
||||
<servlet>
|
||||
<servlet-name>ThemeServlet</servlet-name>
|
||||
<servlet-class>i2p.bote.web.ThemeServlet</servlet-class>
|
||||
</servlet>
|
||||
|
||||
<servlet-mapping>
|
||||
<servlet-name>ShowAttachment</servlet-name>
|
||||
<url-pattern>/showAttachment</url-pattern>
|
||||
</servlet-mapping>
|
||||
<servlet-mapping>
|
||||
<servlet-name>ThemeServlet</servlet-name>
|
||||
<url-pattern>/externalThemes/*</url-pattern>
|
||||
</servlet-mapping>
|
||||
</web-app>
|
@ -20,7 +20,6 @@
|
||||
--%>
|
||||
|
||||
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
|
||||
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
|
||||
<%@ taglib prefix="ib" uri="I2pBoteTags" %>
|
||||
@ -37,17 +36,103 @@
|
||||
</h2>
|
||||
<br/>
|
||||
|
||||
<table><tr>
|
||||
<td><strong><ib:message key="Author:"/></strong></td>
|
||||
</tr><tr>
|
||||
<td></td><td>HungryHobo@mail.i2p</td>
|
||||
</tr><tr>
|
||||
<td><strong><ib:message key="Contributors:"/></strong></td>
|
||||
</tr><tr>
|
||||
<td></td><td>Mixxy</td>
|
||||
</tr><tr>
|
||||
<td></td><td>zzz</td>
|
||||
</tr></table>
|
||||
<div class="contributor-category"><ib:message key="Main Developer:"/></div>
|
||||
<div class="contributor-name">
|
||||
<ib:message key="Click to send an email" var="linkTitle"/>
|
||||
<ib:message key="Feedback on I2P-Bote" var="subject"/>
|
||||
<a href="newEmail.jsp?recipient0=hobo37SEJsEMfQHwcpVlvEgnrERGFz34GC1yjVyuRvl1QHnTi0UAoOtrLP~qkFY0oL59BBqj5sCep0RA8I5G8n&recipientType0=to&subject=${subject}" title="${linkTitle}">HungryHobo</a>
|
||||
</div>
|
||||
<br/>
|
||||
|
||||
<div class="contributor-category"><ib:message key="Contributors:"/></div>
|
||||
<div>
|
||||
<div class="contributor-name">Mixxy</div>
|
||||
<div class="contributor-role"><ib:message key="Translation, QA, usability, technical feedback"/></div>
|
||||
</div>
|
||||
<div>
|
||||
<div class="contributor-name">zzz</div>
|
||||
<div class="contributor-role"><ib:message key="Pluginization, technical feedback"/></div>
|
||||
</div>
|
||||
<div>
|
||||
<div class="contributor-name">sponge</div>
|
||||
<div class="contributor-role"><ib:message key="Seedless"/></div>
|
||||
</div>
|
||||
<div>
|
||||
<div class="contributor-name">suhr</div>
|
||||
<div class="contributor-role"><ib:message key="Russian translation"/></div>
|
||||
</div>
|
||||
<div>
|
||||
<div class="contributor-name">hiddenz</div>
|
||||
<div class="contributor-role"><ib:message key="Russian translation"/></div>
|
||||
</div>
|
||||
<div>
|
||||
<div class="contributor-name">albat</div>
|
||||
<div class="contributor-role"><ib:message key="French translation"/></div>
|
||||
</div>
|
||||
<div>
|
||||
<div class="contributor-name">redzara</div>
|
||||
<div class="contributor-role"><ib:message key="French translation"/></div>
|
||||
</div>
|
||||
<div>
|
||||
<div class="contributor-name">Jrnr601</div>
|
||||
<div class="contributor-role"><ib:message key="Dutch translation"/></div>
|
||||
</div>
|
||||
<div>
|
||||
<div class="contributor-name">KwukDuck</div>
|
||||
<div class="contributor-role"><ib:message key="Dutch translation"/></div>
|
||||
</div>
|
||||
<div>
|
||||
<div class="contributor-name">nej</div>
|
||||
<div class="contributor-role"><ib:message key="Norwegian translation"/></div>
|
||||
</div>
|
||||
<div>
|
||||
<div class="contributor-name">hottuna</div>
|
||||
<div class="contributor-role"><ib:message key="Swedish translation"/></div>
|
||||
</div>
|
||||
<div>
|
||||
<div class="contributor-name">walking</div>
|
||||
<div class="contributor-role"><ib:message key="Chinese translation"/></div>
|
||||
</div>
|
||||
<div>
|
||||
<div class="contributor-name">hamada</div>
|
||||
<div class="contributor-role"><ib:message key="Arabic translation"/></div>
|
||||
</div>
|
||||
<div>
|
||||
<div class="contributor-name">Waseihou Watashi</div>
|
||||
<div class="contributor-role"><ib:message key="Czech translation"/></div>
|
||||
</div>
|
||||
<div>
|
||||
<div class="contributor-name">D.A. Loader</div>
|
||||
<div class="contributor-role"><ib:message key="German translation"/></div>
|
||||
</div>
|
||||
<div>
|
||||
<div class="contributor-name">Warton</div>
|
||||
<div class="contributor-role"><ib:message key="Polish translation"/></div>
|
||||
</div>
|
||||
<div>
|
||||
<div class="contributor-name">digitalmannen</div>
|
||||
<div class="contributor-role"><ib:message key="Swedish translation"/></div>
|
||||
</div>
|
||||
<div>
|
||||
<div class="contributor-name">mkkid</div>
|
||||
<div class="contributor-role"><ib:message key="Italian translation"/></div>
|
||||
</div>
|
||||
<div>
|
||||
<div class="contributor-name">gringoire</div>
|
||||
<div class="contributor-role"><ib:message key="Ukrainian translation"/></div>
|
||||
</div>
|
||||
<div>
|
||||
<div class="contributor-name">AdminLMH</div>
|
||||
<div class="contributor-role"><ib:message key="Hungarian translation"/></div>
|
||||
</div>
|
||||
<div>
|
||||
<div class="contributor-name">Voulnet</div>
|
||||
<div class="contributor-role"><ib:message key="Arabic translation"/></div>
|
||||
</div>
|
||||
<div>
|
||||
<div class="contributor-name">KillYourTV</div>
|
||||
<div class="contributor-role"><ib:message key="Code fixes, translation updates from tx"/></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<jsp:include page="footer.jsp"/>
|
||||
|
@ -34,8 +34,10 @@
|
||||
<ib:message key="Address Book" var="title" scope="request"/>
|
||||
<jsp:include page="header.jsp"/>
|
||||
|
||||
<ib:requirePassword>
|
||||
<div class="main">
|
||||
<c:set var="contacts" value="${ib:getAddressBook().all}"/>
|
||||
<jsp:useBean id="jspHelperBean" class="i2p.bote.web.JSPHelper"/>
|
||||
<c:set var="contacts" value="${jspHelperBean.addressBook.all}"/>
|
||||
|
||||
<h2>
|
||||
<c:if test="${!param.select}"><ib:message key="Private Address Book"/></c:if>
|
||||
@ -47,50 +49,49 @@
|
||||
</c:if>
|
||||
|
||||
<c:if test="${param.select}">
|
||||
<form action="${forwardUrl}" method="POST">
|
||||
<form action="${param.forwardUrl}" method="POST">
|
||||
<ib:copyParams paramsToCopy="${param.paramsToCopy}"/>
|
||||
</c:if>
|
||||
|
||||
<table class="table">
|
||||
<table>
|
||||
<c:if test="${!empty contacts}">
|
||||
<tr>
|
||||
<c:if test="${param.select}"><th style="width: 20px;"></th></c:if>
|
||||
<th><ib:message key="Name"/></th>
|
||||
<th><ib:message key="Email Destination"/></th>
|
||||
<c:if test="${not param.select}"><th style="width: 20px"></th></c:if>
|
||||
<c:if test="${param.select}"><th class="header-column-check"></th></c:if>
|
||||
<th class="header-column-name"><ib:message key="Name"/></th>
|
||||
<th class="header-column-addr-email-dest"><ib:message key="Email Destination"/></th>
|
||||
<c:if test="${not param.select}"><th class="header-column-trash"></th></c:if>
|
||||
</tr>
|
||||
</c:if>
|
||||
<c:forEach items="${contacts}" var="contact" varStatus="loopStatus">
|
||||
<c:set var="class" value=""/>
|
||||
<c:if test="${loopStatus.index%2 != 0}">
|
||||
<c:set var="class" value=" class=\"alttablecell\""/>
|
||||
<c:forEach items="${contacts}" var="contact" varStatus="status">
|
||||
<c:set var="backgroundClass" value="even-table-cell"/>
|
||||
<c:if test="${status.index%2 != 0}">
|
||||
<c:set var="backgroundClass" value="odd-table-cell"/>
|
||||
</c:if>
|
||||
|
||||
<tr>
|
||||
<tr class="${backgroundClass}">
|
||||
<c:if test="${param.select}">
|
||||
<td><div${class}>
|
||||
<td>
|
||||
<input type="checkbox" name="selectedContact" value="${ib:escapeQuotes(contact.name)} <${contact.destination}>"/>
|
||||
</div></td>
|
||||
</td>
|
||||
</c:if>
|
||||
|
||||
<td><div${class}>
|
||||
<td>
|
||||
<c:if test="${!param.select}">
|
||||
<jsp:useBean id="jspHelperBean" class="i2p.bote.web.JSPHelper"/>
|
||||
<%-- Insert a random number into the request string so others can't see contacts using the CSS history hack --%>
|
||||
<a href="editContact.jsp?rnd=${jspHelperBean.randomNumber}&new=false&destination=${contact.destination}">
|
||||
<a href="editContact.jsp?rnd=${jspHelperBean.randomNumber}&new=false&destination=${contact.destination}">
|
||||
</c:if>
|
||||
${contact.name}
|
||||
<c:if test="${!param.select}">
|
||||
</a>
|
||||
</c:if>
|
||||
</div></td>
|
||||
<td><div${class}>
|
||||
</td>
|
||||
<td class="ellipsis">
|
||||
${contact.destination}
|
||||
</div></td>
|
||||
</td>
|
||||
<c:if test="${!param.select}">
|
||||
<td><div${class}>
|
||||
<a href="deleteContact.jsp?destination=${contact.destination}"><img src="images/delete.png" alt="<ib:message key='Delete'/>" title='<ib:message key='Delete this contact'/>'/></a>
|
||||
</div></td>
|
||||
<td>
|
||||
<a href="deleteContact.jsp?destination=${contact.destination}"><img src="${themeDir}/images/delete.png" alt="<ib:message key='Delete'/>" title='<ib:message key='Delete this contact'/>'/></a>
|
||||
</td>
|
||||
</c:if>
|
||||
</tr>
|
||||
</c:forEach>
|
||||
@ -122,6 +123,17 @@
|
||||
</form>
|
||||
</c:if>
|
||||
|
||||
<c:if test="${not param.select}">
|
||||
<p/><br/>
|
||||
<b><ib:message key="Import from the public address directory"/></b><br/>
|
||||
<form action="importContact.jsp" method="POST">
|
||||
<ib:message key="Name:"/>
|
||||
<input type="text" name="name"/>
|
||||
<button type="submit"><ib:message key="Lookup"/></button>
|
||||
</form><br/>
|
||||
Note that only exact matches are found.
|
||||
</c:if>
|
||||
</div>
|
||||
</ib:requirePassword>
|
||||
|
||||
<jsp:include page="footer.jsp"/>
|
||||
<jsp:include page="footer.jsp"/>
|
@ -28,70 +28,90 @@
|
||||
|
||||
<jsp:include page="getStatus.jsp"/>
|
||||
|
||||
<c:if test="${param.checkMail == 1}">
|
||||
<ib:checkForMail/>
|
||||
<c:if test="${param.checkMail eq 1}">
|
||||
<ib:requirePassword forwardUrl="checkMail.jsp">
|
||||
<ib:checkForMail/>
|
||||
</ib:requirePassword>
|
||||
</c:if>
|
||||
|
||||
<c:if test="${ib:isCheckingForMail()}">
|
||||
<jsp:useBean id="jspHelperBean" class="i2p.bote.web.JSPHelper"/>
|
||||
<c:set var="themeDir" value="themes/${jspHelperBean.configuration.theme}" scope="request"/>
|
||||
<c:if test="${jspHelperBean.checkingForMail}">
|
||||
<c:set var="checkingForMail" value="true"/>
|
||||
</c:if>
|
||||
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<link rel="stylesheet" href="i2pbote.css" />
|
||||
<c:if test="${checkingForMail}">
|
||||
<link rel="stylesheet" href="themes/${jspHelperBean.configuration.theme}/i2pbote.css" />
|
||||
|
||||
<%-- Refresh until the Check Mail button becomes ungreyed --%>
|
||||
<c:if test="${checkingForMail or connStatus eq NOT_STARTED or connStatus eq DELAY}">
|
||||
<meta http-equiv="refresh" content="20;url=buttonFrame.jsp" />
|
||||
</c:if>
|
||||
</head>
|
||||
|
||||
<body style="background-color: transparent; margin: 0px;">
|
||||
<body class="iframe-body">
|
||||
|
||||
<c:set var="disable" value=""/>
|
||||
<c:if test="${connStatus == DELAY}">
|
||||
<c:set var="disable" value="disabled="disabled""/>
|
||||
<c:if test="${checkingForMail}">
|
||||
<div class="checkmail">
|
||||
<img src="${themeDir}/images/wait.gif"/><ib:message key="Checking for mail..."/>
|
||||
</div>
|
||||
</c:if>
|
||||
<c:if test="${!checkingForMail}">
|
||||
<div class="checkmail">
|
||||
<c:set var="frame" value=""/>
|
||||
<c:choose>
|
||||
<c:when test="${jspHelperBean.identities.none}">
|
||||
<c:set var="url" value="noIdentities.jsp"/>
|
||||
<c:set var="frame" value='target="_parent"'/>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<%--
|
||||
If the user needs to enter a password to check mails, take them
|
||||
to checkMail.jsp and use the entire browser window
|
||||
--%>
|
||||
<c:if test="${jspHelperBean.passwordRequired}">
|
||||
<c:set var="frame" value='target="_parent"'/>
|
||||
<c:set var="url" value="checkMail.jsp"/>
|
||||
</c:if>
|
||||
<c:if test="${not jspHelperBean.passwordRequired}">
|
||||
<c:set var="url" value="buttonFrame.jsp"/>
|
||||
</c:if>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
|
||||
<form action="${url}" ${frame} method="GET">
|
||||
<input type="hidden" name="checkMail" value="1"/>
|
||||
<c:set var="disable" value=""/>
|
||||
<c:if test="${connStatus == DELAY}">
|
||||
<c:set var="disable" value="disabled="disabled""/>
|
||||
</c:if>
|
||||
<button type="submit" value="Check Mail" ${disable}><ib:message key="Check Mail"/></button>
|
||||
</form>
|
||||
</div>
|
||||
<c:if test="${jspHelperBean.newMailReceived}">
|
||||
<script language="Javascript">
|
||||
// refresh folder list to update the new message count
|
||||
parent.frames[1].location.href = 'folders.jsp';
|
||||
// If inbox is being displayed, reload so the new email(s) show
|
||||
if (parent.document.getElementById('inboxFlag'))
|
||||
parent.location.href = 'folder.jsp?path=Inbox';
|
||||
</script>
|
||||
</c:if>
|
||||
</c:if>
|
||||
|
||||
<table><tr>
|
||||
<td>
|
||||
<c:if test="${checkingForMail}">
|
||||
<div class="checkmail">
|
||||
<img src="images/wait.gif"/><ib:message key="Checking for mail..."/>
|
||||
</div>
|
||||
</c:if>
|
||||
<c:if test="${!checkingForMail}">
|
||||
<div class="checkmail">
|
||||
<c:choose>
|
||||
<c:when test="${empty ib:getIdentities().all}">
|
||||
<c:set var="url" value="noIdentities.jsp"/>
|
||||
<c:set var="frame" value="target="_parent""/>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<c:set var="link" value="buttonFrame.jsp"/>
|
||||
<c:set var="frame" value=""/>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
|
||||
<form action="${url}" ${frame} method="GET">
|
||||
<input type="hidden" name="checkMail" value="1"/>
|
||||
<button type="submit" value="Check Mail/>" ${disable}><ib:message key="Check Mail"/></button>
|
||||
</form>
|
||||
</div>
|
||||
<c:if test="${ib:newMailReceived()}">
|
||||
<script language="Javascript">
|
||||
// If inbox is being displayed, reload so the new email(s) show
|
||||
if (parent.document.getElementById('inboxFlag'))
|
||||
parent.location.href = 'folder.jsp?path=Inbox';
|
||||
</script>
|
||||
</c:if>
|
||||
</c:if>
|
||||
</td>
|
||||
<td>
|
||||
<form action="newEmail.jsp" target="_top" method="GET">
|
||||
<button type="submit" value="New" ${disable}><ib:message key="New"/></button>
|
||||
</form>
|
||||
</td>
|
||||
</tr></table>
|
||||
<div class="compose">
|
||||
<form action="newEmail.jsp" target="_top" method="GET">
|
||||
<button type="submit" value="New"><ib:message key="Compose"/></button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<div class="lastcheck">
|
||||
<ib:message key="Last checked:"/>
|
||||
<c:set var="lastCheck" value="${jspHelperBean.lastMailCheckTime}" scope="request"/>
|
||||
<ib:printDate date="${lastCheck}" type="time" timeStyle="short" printUnknown="true"/>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
</html>
|
||||
|
31
WebContent/checkMail.jsp
Normal file
@ -0,0 +1,31 @@
|
||||
<%--
|
||||
Copyright (C) 2009 HungryHobo@mail.i2p
|
||||
|
||||
The GPG fingerprint for HungryHobo@mail.i2p is:
|
||||
6DD3 EAA2 9990 29BC 4AD2 7486 1E2C 7B61 76DC DC12
|
||||
|
||||
This file is part of I2P-Bote.
|
||||
I2P-Bote is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
I2P-Bote is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with I2P-Bote. If not, see <http://www.gnu.org/licenses/>.
|
||||
--%>
|
||||
|
||||
<%@ page language="java" contentType="text/html; charset=UTF-8"
|
||||
pageEncoding="UTF-8"%>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
|
||||
<%@ taglib prefix="ib" uri="I2pBoteTags" %>
|
||||
|
||||
<ib:requirePassword>
|
||||
<ib:checkForMail/>
|
||||
<jsp:forward page="/index.jsp"></jsp:forward>
|
||||
</ib:requirePassword>
|
33
WebContent/clearPasswordCache.jsp
Normal file
@ -0,0 +1,33 @@
|
||||
<%--
|
||||
Copyright (C) 2009 HungryHobo@mail.i2p
|
||||
|
||||
The GPG fingerprint for HungryHobo@mail.i2p is:
|
||||
6DD3 EAA2 9990 29BC 4AD2 7486 1E2C 7B61 76DC DC12
|
||||
|
||||
This file is part of I2P-Bote.
|
||||
I2P-Bote is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
I2P-Bote is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with I2P-Bote. If not, see <http://www.gnu.org/licenses/>.
|
||||
--%>
|
||||
|
||||
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
|
||||
<%@ taglib prefix="ib" uri="I2pBoteTags" %>
|
||||
|
||||
<ib:clearPasswordCache/>
|
||||
|
||||
<ib:message key="Password Cleared" var="title" scope="request"/>
|
||||
<ib:message key="The password has been cleared from the cache." var="infoMessage" scope="request"/>
|
||||
<jsp:include page="header.jsp"/>
|
||||
|
||||
<jsp:include page="footer.jsp"/>
|
38
WebContent/connectError.jsp
Normal file
@ -0,0 +1,38 @@
|
||||
<%--
|
||||
Copyright (C) 2009 HungryHobo@mail.i2p
|
||||
|
||||
The GPG fingerprint for HungryHobo@mail.i2p is:
|
||||
6DD3 EAA2 9990 29BC 4AD2 7486 1E2C 7B61 76DC DC12
|
||||
|
||||
This file is part of I2P-Bote.
|
||||
I2P-Bote is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
I2P-Bote is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with I2P-Bote. If not, see <http://www.gnu.org/licenses/>.
|
||||
--%>
|
||||
|
||||
<%-- This page shows an exception trace if an exception occurred during startup --%>
|
||||
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
|
||||
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
|
||||
<%@ taglib prefix="ib" uri="I2pBoteTags" %>
|
||||
|
||||
<ib:message key="Error Details" var="title" scope="request"/>
|
||||
<jsp:include page="header.jsp"/>
|
||||
|
||||
<div class="main">
|
||||
<h2><ib:message key="Error"/></h2>
|
||||
<jsp:useBean id="jspHelperBean" class="i2p.bote.web.JSPHelper"/>
|
||||
<ib:printException exception="${jspHelperBean.connectError}"/>
|
||||
</div>
|
||||
|
||||
<jsp:include page="footer.jsp"/>
|
60
WebContent/debug.jsp
Normal file
@ -0,0 +1,60 @@
|
||||
<%--
|
||||
Copyright (C) 2009 HungryHobo@mail.i2p
|
||||
|
||||
The GPG fingerprint for HungryHobo@mail.i2p is:
|
||||
6DD3 EAA2 9990 29BC 4AD2 7486 1E2C 7B61 76DC DC12
|
||||
|
||||
This file is part of I2P-Bote.
|
||||
I2P-Bote is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
I2P-Bote is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with I2P-Bote. If not, see <http://www.gnu.org/licenses/>.
|
||||
--%>
|
||||
|
||||
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
|
||||
|
||||
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
|
||||
<%@ taglib prefix="ib" uri="I2pBoteTags" %>
|
||||
|
||||
<ib:message key="Debug" var="title" scope="request"/>
|
||||
<jsp:include page="header.jsp"/>
|
||||
|
||||
<div class="main">
|
||||
<h2><ib:message key="Debug Page"/></h2>
|
||||
|
||||
<c:if test="${empty param.action}">
|
||||
<form action="debug.jsp">
|
||||
<input type="hidden" name="action" value="checkFiles"/>
|
||||
<ib:message key="Test encrypted files" var="submitButtonText"/>
|
||||
<input type="submit" value="${submitButtonText}"/>
|
||||
</form>
|
||||
</c:if>
|
||||
|
||||
<c:if test="${param.action eq 'checkFiles'}">
|
||||
<jsp:useBean id="jspHelperBean" class="i2p.bote.web.JSPHelper"/>
|
||||
<ib:requirePassword>
|
||||
<c:set var="undecryptableFiles" value="${jspHelperBean.undecryptableFiles}"/>
|
||||
<c:if test="${empty undecryptableFiles}">
|
||||
<b><ib:message key="No file encryption problems found."/></b>
|
||||
</c:if>
|
||||
<c:if test="${not empty undecryptableFiles}">
|
||||
<b><ib:message key="Undecryptable files:"/></b><br/>
|
||||
<ul>
|
||||
<c:forEach items="${undecryptableFiles}" var="file">
|
||||
<li>${file}</li>
|
||||
</c:forEach>
|
||||
</ul>
|
||||
</c:if>
|
||||
</ib:requirePassword>
|
||||
</c:if>
|
||||
</div>
|
||||
|
||||
<jsp:include page="footer.jsp"/>
|
@ -26,6 +26,7 @@
|
||||
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
|
||||
<%@ taglib prefix="ib" uri="I2pBoteTags" %>
|
||||
|
||||
<ib:requirePassword>
|
||||
<c:set var="errorMessage" value="${ib:deleteContact(param.destination)}"/>
|
||||
|
||||
<c:if test="${empty errorMessage}">
|
||||
@ -40,4 +41,5 @@
|
||||
<ib:message key="Error"/>: ${errorMessage}
|
||||
</div>
|
||||
<jsp:include page="footer.jsp"/>
|
||||
</c:if>
|
||||
</c:if>
|
||||
</ib:requirePassword>
|
@ -26,11 +26,13 @@
|
||||
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
|
||||
<%@ taglib prefix="ib" uri="I2pBoteTags" %>
|
||||
|
||||
<ib:requirePassword>
|
||||
<c:set var="errorMessage" value="${ib:deleteIdentity(param.key)}"/>
|
||||
|
||||
<c:if test="${empty errorMessage}">
|
||||
<ib:message key="The email identity has been deleted." var="deleteMsg"/>
|
||||
<jsp:forward page="identities.jsp">
|
||||
<jsp:param name="message" value="The email identity has been deleted."/>
|
||||
<jsp:param name="infoMessage" value="${deleteMsg}"/>
|
||||
</jsp:forward>
|
||||
</c:if>
|
||||
<c:if test="${!empty errorMessage}">
|
||||
@ -39,4 +41,5 @@
|
||||
<ib:message key="Error:"/> ${errorMessage}
|
||||
</div>
|
||||
<jsp:include page="footer.jsp"/>
|
||||
</c:if>
|
||||
</c:if>
|
||||
</ib:requirePassword>
|
@ -24,6 +24,7 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
|
||||
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
|
||||
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
|
||||
<%@ taglib prefix="ib" uri="I2pBoteTags" %>
|
||||
|
||||
<%--
|
||||
@ -40,6 +41,7 @@
|
||||
book, and the "name" parameter is ignored.
|
||||
--%>
|
||||
|
||||
<ib:requirePassword>
|
||||
<c:if test="${param.action eq 'cancel'}">
|
||||
<c:set var="backUrl" value="${param.backUrl}"/>
|
||||
<c:if test="${empty backUrl}">
|
||||
@ -59,7 +61,7 @@
|
||||
<ib:message key="Please fill in the Name field." var="errorMessage"/>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<c:set var="errorMessage" value="${ib:saveContact(param.destination, param.name)}"/>
|
||||
<c:set var="errorMessage" value="${ib:saveContact(param.destination, param.name, param.picture, param.text)}"/>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
|
||||
@ -93,7 +95,8 @@
|
||||
<ib:message key="Edit Contact" var="title"/>
|
||||
<c:set var="title" value="${title}" scope="request"/>
|
||||
<ib:message key="Save" var="submitButtonText"/>
|
||||
<c:set var="name" value="${ib:getContactName(param.destination)}"/>
|
||||
<c:set var="contact" value="${ib:getContact(param.destination)}"/>
|
||||
<c:set var="name" value="${contact.name}"/>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
<jsp:include page="header.jsp"/>
|
||||
@ -102,32 +105,43 @@
|
||||
<form name="form" action="editContact.jsp" method="post">
|
||||
<ib:copyParams paramsToCopy="${param.paramsToCopy}"/>
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<td>
|
||||
<div style="font-weight: bold;"><ib:message key="Email Destination:"/></div>
|
||||
<c:if test="${empty param.destination}">
|
||||
<div style="font-size: 0.8em;"><ib:message key="(required field)"/></div>
|
||||
</c:if>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" size="80" name="destination" value="${ib:escapeQuotes(param.destination)}"/>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<div style="font-weight: bold;"><ib:message key="Name:"/></div>
|
||||
<c:if test="${empty param.destination}">
|
||||
<div style="font-size: 0.8em;"><ib:message key="(required field)"/></div>
|
||||
</c:if>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" size="40" name="name" value="${ib:escapeQuotes(name)}"/>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<div class="contact-form-label">
|
||||
<div><ib:message key="Email Destination:"/></div>
|
||||
<c:if test="${empty param.destination}">
|
||||
<div class="addtl-text"><ib:message key="(required field)"/></div>
|
||||
</c:if>
|
||||
</div>
|
||||
<div class="contact-form-value">
|
||||
<input type="text" size="60" name="destination" value="${ib:escapeQuotes(param.destination)}"/>
|
||||
</div>
|
||||
|
||||
<div class="contact-form-label">
|
||||
<div class="field-label"><ib:message key="Name:"/></div>
|
||||
<c:if test="${empty param.destination}">
|
||||
<div class="addtl-text"><ib:message key="(required field)"/></div>
|
||||
</c:if>
|
||||
</div>
|
||||
<div class="contact-form-value">
|
||||
<input type="text" size="40" name="name" value="${ib:escapeQuotes(name)}"/>
|
||||
</div>
|
||||
|
||||
<div class="contact-form-label">
|
||||
<div class="field-label"><ib:message key="Picture:"/></div>
|
||||
</div>
|
||||
<div class="contact-form-picture">
|
||||
<img src="data:${contact.pictureType};base64,${contact.pictureBase64}"/>
|
||||
<input type="hidden" name="picture" value="${contact.pictureBase64}"/>
|
||||
</div>
|
||||
|
||||
<div class="contact-form-label">
|
||||
<div class="field-label"><ib:message key="Text:"/></div>
|
||||
</div>
|
||||
<div class="contact-form-text">${fn:escapeXml(contact.text)}</div>
|
||||
<input type="hidden" name="text" value="${contact.text}"/>
|
||||
|
||||
<p/>
|
||||
<button name="action" value="save">${submitButtonText}</button>
|
||||
<button name="action" value="cancel"/><ib:message key="Cancel"/></button>
|
||||
<button name="action" value="cancel"><ib:message key="Cancel"/></button>
|
||||
</form>
|
||||
|
||||
<script type="text/javascript" language="JavaScript">
|
||||
@ -137,5 +151,6 @@
|
||||
document.forms['form'].elements['name'].focus();
|
||||
</script>
|
||||
</div>
|
||||
</ib:requirePassword>
|
||||
|
||||
<jsp:include page="footer.jsp"/>
|
||||
<jsp:include page="footer.jsp"/>
|
@ -27,6 +27,12 @@
|
||||
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
|
||||
<%@ taglib prefix="ib" uri="I2pBoteTags" %>
|
||||
|
||||
<ib:message key="More..." var="moreText"/>
|
||||
<ib:message key="Less..." var="lessText"/>
|
||||
|
||||
<ib:requirePassword>
|
||||
<jsp:useBean id="jspHelperBean" class="i2p.bote.web.JSPHelper"/>
|
||||
|
||||
<c:choose>
|
||||
<c:when test="${param.new}">
|
||||
<ib:message key="New Email Identity" var="title" scope="request"/>
|
||||
@ -51,100 +57,158 @@
|
||||
</div>
|
||||
|
||||
<div class="main">
|
||||
<form name="form" action="saveIdentity.jsp">
|
||||
<table>
|
||||
<tr>
|
||||
<td>
|
||||
<div style="font-weight: bold;"><ib:message key="Public Name:"/></div>
|
||||
<div style="font-size: 0.8em;"><ib:message key="(required field, shown to recipients)"/></div>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" size="40" name="publicName" value="${publicName}"/>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<div style="font-weight: bold;"><ib:message key="Description:"/></div>
|
||||
<div style="font-size: 0.8em;"><ib:message key="(optional, kept private)"/></div>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" size="40" name="description" value="${description}"/>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<div style="font-weight: bold;"><ib:message key="Email Address:"/></div>
|
||||
<div style="font-size: 0.8em;"><ib:message key="(optional)"/></div>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" size="40" name="emailAddress" value="${param.emailAddress}"/>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<div style="font-weight: bold;"><ib:message key="Encryption:"/></div>
|
||||
<c:if test="${param.new}">
|
||||
<div style="font-size: 0.8em;"><ib:message key="(If unsure, leave the default)"/></div>
|
||||
</c:if>
|
||||
</td>
|
||||
<c:if test="${param.new}">
|
||||
<td>
|
||||
<c:set var="selectedCryptoImplId" value="${param.cryptoImpl}"/>
|
||||
<c:if test="${empty param.cryptoImpl}">
|
||||
<c:set var="selectedCryptoImplId" value="2"/>
|
||||
</c:if>
|
||||
<select name="cryptoImpl">
|
||||
<jsp:useBean id="jspHelperBean" class="i2p.bote.web.JSPHelper"/>
|
||||
<c:forEach items="${jspHelperBean.cryptoImplementations}" var="cryptoImpl">
|
||||
<c:set var="selected" value=""/>
|
||||
<c:if test="${selectedCryptoImplId eq cryptoImpl.id}">
|
||||
<c:set var="selected" value=" selected"/>
|
||||
</c:if>
|
||||
<option value="${cryptoImpl.id}"${selected}>
|
||||
${cryptoImpl.name}
|
||||
</option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</td>
|
||||
</c:if>
|
||||
<c:if test="${not param.new}">
|
||||
<td>
|
||||
<c:set var="cryptoImpl" value="${ib:getCryptoImplementation(identity.cryptoImpl.id)}"/>
|
||||
${cryptoImpl.name}
|
||||
</td>
|
||||
</c:if>
|
||||
</tr>
|
||||
<c:if test="${!param.new}">
|
||||
<tr>
|
||||
<td style="font-weight: bold; vertical-align: top;">
|
||||
<ib:message key="Email Destination:"/>
|
||||
</td>
|
||||
<td>
|
||||
<textarea cols="64" rows="9" readonly="yes" wrap="soft" class="destinationtextarea">${param.key}</textarea>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="font-weight: bold; vertical-align: top;">
|
||||
<ib:message key="Default Identity:"/>
|
||||
</td>
|
||||
<td>
|
||||
<c:if test="${param.isDefault}">
|
||||
<c:set var="checked" value="checked"/>
|
||||
</c:if>
|
||||
<input type="checkbox" name="isDefault" ${checked}/>
|
||||
</td>
|
||||
</tr>
|
||||
<h2>${title}</h2>
|
||||
<c:if test="${param.new}">
|
||||
<ib:message>An Email Identity lets you receive email from other I2P-Bote users.</ib:message>
|
||||
<ib:expandable>
|
||||
<jsp:include page="identitiesHelp.jsp"/>
|
||||
</ib:expandable>
|
||||
</c:if>
|
||||
<form name="form" method="post" action="submitIdentity.jsp">
|
||||
<div class="identity-form-label">
|
||||
<div class="field-label"><ib:message key="Public Name:"/></div>
|
||||
<div class="addtl-text"><ib:message key="(required field, shown to recipients)"/></div>
|
||||
</div>
|
||||
<div class="identity-form-value">
|
||||
<input type="text" size="40" name="publicName" value="${publicName}"/>
|
||||
</div>
|
||||
|
||||
<div class="identity-form-label">
|
||||
<div class="field-label"><ib:message key="Description:"/></div>
|
||||
<div class="addtl-text"><ib:message key="(optional, kept private)"/></div>
|
||||
</div>
|
||||
<div class="identity-form-value">
|
||||
<input type="text" size="40" name="description" value="${description}"/>
|
||||
</div>
|
||||
|
||||
<div class="identity-form-label">
|
||||
<div class="field-label"><ib:message key="Picture:"/></div>
|
||||
<div class="addtl-text"><ib:message key="(published to the address directory)"/></div>
|
||||
</div>
|
||||
<div class="identity-form-picture">
|
||||
<c:if test="${not empty identity.picture}">
|
||||
<img src="data:${identity.pictureType};base64,${identity.pictureBase64}"/>
|
||||
</c:if>
|
||||
</table>
|
||||
<input type="hidden" name="new" value="${param.new}"/>
|
||||
<input type="hidden" name="key" value="${param.key}"/>
|
||||
<button name="action" value="${commitAction}">${commitAction}</button>
|
||||
<button name="action" value="cancel"/><ib:message key="Cancel"/></button>
|
||||
<c:if test="${empty identity.picture}">
|
||||
<br/> <br/>
|
||||
</c:if>
|
||||
</div>
|
||||
|
||||
<div class="identity-form-label">
|
||||
<div class="field-label"><ib:message key="Text:"/></div>
|
||||
<div class="addtl-text"><ib:message key="(published to the address directory)"/></div>
|
||||
</div>
|
||||
<div class="identity-form-text"><c:if test="${not empty identity.text}">${fn:escapeXml(identity.text)}</c:if><c:if test="${empty identity.text}"> </c:if></div>
|
||||
|
||||
<div class="identity-form-label">
|
||||
<div class="field-label"><ib:message key="Encryption:"/></div>
|
||||
<c:if test="${param.new}">
|
||||
<div class="addtl-text"><ib:message key="(If unsure, leave the default)"/></div>
|
||||
</c:if>
|
||||
</div>
|
||||
<div class="identity-form-value">
|
||||
<c:if test="${param.new}">
|
||||
<c:set var="selectedCryptoImplId" value="${param.cryptoImpl}"/>
|
||||
<c:if test="${empty param.cryptoImpl}">
|
||||
<c:set var="selectedCryptoImplId" value="2"/>
|
||||
</c:if>
|
||||
<select name="cryptoImpl">
|
||||
<c:forEach items="${jspHelperBean.cryptoImplementations}" var="cryptoImpl">
|
||||
<c:set var="selected" value=""/>
|
||||
<c:if test="${selectedCryptoImplId eq cryptoImpl.id}">
|
||||
<c:set var="selected" value=" selected"/>
|
||||
</c:if>
|
||||
<option value="${cryptoImpl.id}"${selected}>
|
||||
${cryptoImpl.name}
|
||||
</option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</c:if>
|
||||
<c:if test="${not param.new}">
|
||||
<c:set var="cryptoImpl" value="${ib:getCryptoImplementation(identity.cryptoImpl.id)}"/>
|
||||
${cryptoImpl.name}
|
||||
</c:if>
|
||||
</div>
|
||||
|
||||
<c:if test="${not empty param.key}">
|
||||
<div class="identity-form-label">
|
||||
<ib:message key="Email Destination:"/>
|
||||
</div>
|
||||
<div class="identity-form-value">
|
||||
<div class="destination">${param.key}</div>
|
||||
</div>
|
||||
</c:if>
|
||||
|
||||
<c:if test="${not empty param.key}">
|
||||
<div class="identity-form-label">
|
||||
<ib:message key="Fingerprint:"/>
|
||||
</div>
|
||||
<c:set var="uiLocaleCode" value="${jspHelperBean.language}"/>
|
||||
<c:set var="fingerprint" value="${ib:getIdentityFingerprint(identity, uiLocaleCode)}"/>
|
||||
<div class="identity-form-value">
|
||||
<c:if test="${not empty fingerprint}">
|
||||
${fingerprint}
|
||||
<ib:expandable>
|
||||
<c:forEach items="${jspHelperBean.wordListLocales}" var="localeCode">
|
||||
<c:if test="${localeCode ne uiLocaleCode}">
|
||||
<b>${localeCode}</b>: ${ib:getIdentityFingerprint(identity, localeCode)}<br/>
|
||||
</c:if>
|
||||
</c:forEach>
|
||||
</ib:expandable>
|
||||
</c:if>
|
||||
</div>
|
||||
<c:if test="${empty fingerprint}">
|
||||
|
||||
</c:if>
|
||||
</c:if>
|
||||
|
||||
<div class="identity-form-label">
|
||||
<ib:message key="Default Identity:"/>
|
||||
</div>
|
||||
<div class="identity-form-checkbox">
|
||||
<c:if test="${jspHelperBean.identities.size le 1}">
|
||||
<c:set var="disabled" value="disabled='disabled'"/>
|
||||
</c:if>
|
||||
<c:if test="${param.isDefault or not empty disabled}">
|
||||
<c:set var="checked" value="checked='checked'"/>
|
||||
</c:if>
|
||||
<input type="checkbox" name="isDefault" ${disabled} ${checked}/>
|
||||
</div>
|
||||
|
||||
<c:if test="${not empty param.key}">
|
||||
<div class="identity-form-label">
|
||||
<div class="field-label"><ib:message key="Private keys:"/></div>
|
||||
<div class="warning addtl-text"><ib:message key="(Never reveal to anyone!)"/></div>
|
||||
</div>
|
||||
<div class="identity-form-value">
|
||||
<a href="showFullIdentity.jsp?key=${key}"><ib:message key="Show"/></a>
|
||||
</div>
|
||||
</c:if>
|
||||
|
||||
<p><br/></p>
|
||||
<div class="identity-buttons">
|
||||
<input type="hidden" name="new" value="${param.new}"/>
|
||||
<input type="hidden" name="key" value="${param.key}"/>
|
||||
<button name="action" value="${commitAction}">${commitAction}</button>
|
||||
<button name="action" value="cancel"><ib:message key="Cancel"/></button>
|
||||
</div>
|
||||
<c:if test="${not param.new}">
|
||||
<div class="identity-delete">
|
||||
<jsp:include page="getStatus.jsp"/>
|
||||
<c:if test="${connStatus ne CONNECTED}">
|
||||
<ib:message var="publishTooltip" key="Cannot publish until connected."/>
|
||||
<c:set var="publishDisabled" value=" disabled='disabled' title='${publishTooltip}'"/>
|
||||
</c:if>
|
||||
<button name="action" value="publish"${publishDisabled}><ib:message key="Publish"/></button>
|
||||
<button name="action" value="delete" title="<ib:message key='Delete this identity'/>"><ib:message key="Delete"/></button>
|
||||
</div>
|
||||
</c:if>
|
||||
</form>
|
||||
|
||||
<script type="text/javascript" language="JavaScript">
|
||||
document.forms['form'].elements['publicName'].focus();
|
||||
</script>
|
||||
</div>
|
||||
</ib:requirePassword>
|
||||
|
||||
<jsp:include page="footer.jsp"/>
|
@ -32,9 +32,21 @@
|
||||
pageContext.setAttribute("TO", i2p.bote.email.EmailAttribute.TO, PageContext.PAGE_SCOPE);
|
||||
pageContext.setAttribute("SUBJECT", i2p.bote.email.EmailAttribute.SUBJECT, PageContext.PAGE_SCOPE);
|
||||
pageContext.setAttribute("DATE", i2p.bote.email.EmailAttribute.DATE, PageContext.PAGE_SCOPE);
|
||||
pageContext.setAttribute("DELIVERED", i2p.bote.email.EmailAttribute.DELIVERED, PageContext.PAGE_SCOPE);
|
||||
%>
|
||||
|
||||
<c:set var="title" value="${param.path}" scope="request"/>
|
||||
<%-- The outbox is implemented in a separate JSP --%>
|
||||
<c:if test="${param.path eq 'Outbox'}">
|
||||
<jsp:forward page="outbox.jsp"/>
|
||||
</c:if>
|
||||
|
||||
<c:set var="refreshUrl" value="folder.jsp?path=${param.path}&sortcolumn=${param.sortcolumn}&descending=${param.descending}" scope="request"/>
|
||||
<ib:requirePassword forwardUrl="${refreshUrl}">
|
||||
<%-- Autorefresh inbox and sent folders --%>
|
||||
<c:if test="${param.path eq 'Inbox' or param.path eq 'Sent'}">
|
||||
<c:set var="refreshInterval" value="60" scope="request"/>
|
||||
</c:if>
|
||||
<ib:message key="${param.path}" var="title" scope="request" noextract="true"/> <%-- Translation strings are extracted from folders.jsp --%>
|
||||
<jsp:include page="header.jsp"/>
|
||||
|
||||
<c:set var="folderName" value="${param.path}"/>
|
||||
@ -45,6 +57,11 @@
|
||||
<div id="inboxFlag"></div>
|
||||
</c:if>
|
||||
|
||||
<c:set var="isSentFolder" value="false"/>
|
||||
<c:if test="${folderName == 'Sent'}">
|
||||
<c:set var="isSentFolder" value="true"/>
|
||||
</c:if>
|
||||
|
||||
<c:set var="sortcolumn" value="${DATE}"/>
|
||||
<c:if test="${!empty param.sortcolumn}">
|
||||
<c:set var="sortcolumn" value="${param.sortcolumn}"/>
|
||||
@ -71,104 +88,147 @@
|
||||
|
||||
<c:if test="${!descending}">
|
||||
<c:set var="sortIndicator" value="▴"/>
|
||||
<c:set var="reverseSortOrder" value="&descending=true"/>
|
||||
<c:set var="reverseSortOrder" value="&descending=true"/>
|
||||
</c:if>
|
||||
<c:if test="${descending}">
|
||||
<c:set var="sortIndicator" value="▾"/>
|
||||
<c:set var="reverseSortOrder" value="&descending=false"/>
|
||||
<c:set var="reverseSortOrder" value="&descending=false"/>
|
||||
</c:if>
|
||||
|
||||
<div class="main">
|
||||
<div class="folder">
|
||||
<table class="table">
|
||||
<div class="main foldermain">
|
||||
<table>
|
||||
<c:set var="folder" value="${ib:getMailFolder(folderName)}"/>
|
||||
<tr>
|
||||
<th style="width: 100px;">
|
||||
<c:set var="sortLink" value="folder.jsp?path=${param.path}&sortcolumn=${FROM}"/>
|
||||
<th class="header-column-replied"/>
|
||||
<th class="header-column-from">
|
||||
<c:set var="sortLink" value="folder.jsp?path=${param.path}&sortcolumn=${FROM}"/>
|
||||
<c:if test="${sortcolumn eq FROM}">
|
||||
<c:set var="sortLink" value="${sortLink}${reverseSortOrder}"/>
|
||||
<c:set var="fromColumnIndicator" value=" ${sortIndicator}"/>
|
||||
</c:if>
|
||||
<a href="${sortLink}"><ib:message key="From"/>${fromColumnIndicator}</a>
|
||||
</th>
|
||||
<th style="width: 30px; text-align: center;"><ib:message key="Unkn."/></th>
|
||||
<th style="width: 20px; text-align: center;"><ib:message key="Sig"/></th>
|
||||
<th style="width: 100px;">
|
||||
<c:set var="sortLink" value="folder.jsp?path=${param.path}&sortcolumn=${TO}"/>
|
||||
<%-- Don't show the "known" column in the sent folder --%>
|
||||
<c:if test="${not isSentFolder}">
|
||||
<th class="header-column-known"><ib:message key="Know"/></th>
|
||||
</c:if>
|
||||
<th class="header-column-to">
|
||||
<c:set var="sortLink" value="folder.jsp?path=${param.path}&sortcolumn=${TO}"/>
|
||||
<c:if test="${sortcolumn eq TO}">
|
||||
<c:set var="sortLink" value="${sortLink}${reverseSortOrder}"/>
|
||||
<c:set var="toColumnIndicator" value=" ${sortIndicator}"/>
|
||||
</c:if>
|
||||
<a href="${sortLink}"><ib:message key="To"/>${toColumnIndicator}</a>
|
||||
</th>
|
||||
<th style="width: 150px;">
|
||||
<c:set var="sortLink" value="folder.jsp?path=${param.path}&sortcolumn=${SUBJECT}"/>
|
||||
<th class="header-column-subject">
|
||||
<c:set var="sortLink" value="folder.jsp?path=${param.path}&sortcolumn=${SUBJECT}"/>
|
||||
<c:if test="${sortcolumn eq SUBJECT}">
|
||||
<c:set var="sortLink" value="${sortLink}${reverseSortOrder}"/>
|
||||
<c:set var="subjectColumnIndicator" value=" ${sortIndicator}"/>
|
||||
</c:if>
|
||||
<a href="${sortLink}"><ib:message key="Subject"/>${subjectColumnIndicator}</a>
|
||||
</th>
|
||||
<th style="width: 100px;">
|
||||
<c:set var="sortLink" value="folder.jsp?path=${param.path}&sortcolumn=${DATE}"/>
|
||||
<th class="header-column-date">
|
||||
<c:set var="sortLink" value="folder.jsp?path=${param.path}&sortcolumn=${DATE}"/>
|
||||
<c:if test="${sortcolumn eq DATE}">
|
||||
<c:set var="sortLink" value="${sortLink}${reverseSortOrder}"/>
|
||||
<c:set var="dateColumnIndicator" value=" ${sortIndicator}"/>
|
||||
</c:if>
|
||||
<a href="${sortLink}"><ib:message key="Sent"/>${dateColumnIndicator}</a>
|
||||
<a href="${sortLink}"><ib:message key="Sent Time"/>${dateColumnIndicator}</a>
|
||||
</th>
|
||||
<th style="width: 20px;"></th>
|
||||
<%-- Show the "delivered" column only in the sent folder --%>
|
||||
<c:if test="${isSentFolder}">
|
||||
<th class="header-column-delivery">
|
||||
<c:set var="sortLink" value="folder.jsp?path=${param.path}&sortcolumn=${DELIVERED}"/>
|
||||
<c:if test="${sortcolumn eq DELIVERED}">
|
||||
<c:set var="sortLink" value="${sortLink}${reverseSortOrder}"/>
|
||||
<c:set var="deliveryColumnIndicator" value=" ${sortIndicator}"/>
|
||||
</c:if>
|
||||
<a href="${sortLink}"><ib:message key="Delivered"/>${deliveryColumnIndicator}</a>
|
||||
</th>
|
||||
</c:if>
|
||||
<th class="header-column-trash"></th>
|
||||
</tr>
|
||||
|
||||
<c:forEach items="${ib:getEmails(folder, sortcolumn, descending)}" var="email" varStatus="status">
|
||||
<c:set var="sender" value="${ib:getNameAndDestination(email.sender)}"/>
|
||||
<c:set var="sender" value="${ib:getNameAndShortDestination(email.oneFromAddress)}"/>
|
||||
<c:if test="${empty sender}">
|
||||
<ib:message key="Anonymous" var="sender"/>
|
||||
</c:if>
|
||||
|
||||
<c:if test="${email.signatureValid}">
|
||||
<c:set var="signature" value="<div style='color: green;'>✔</div>"/>
|
||||
</c:if>
|
||||
<c:if test="${!email.signatureValid}">
|
||||
<c:set var="signature" value="<div style='color: red;'>✘</div>"/>
|
||||
<c:set var="known" value=""/>
|
||||
<c:if test="${ib:isKnown(email.oneFromAddress)}">
|
||||
<c:set var="known" value="<div class='sender-known'>✔</div>"/>
|
||||
</c:if>
|
||||
|
||||
<c:set var="recipient" value="${ib:getNameAndDestination(ib:getOneLocalRecipient(email))}"/>
|
||||
<c:if test="${isSentFolder}">
|
||||
<c:set var="delivered" value="<div class='deliveryComplete'>✔</div>"/>
|
||||
<c:set var="deliveryPercentage" value="${email.deliveryPercentage}"/>
|
||||
<c:if test="${not email.delivered}">
|
||||
<c:set var="delivered" value="<div class='deliveryIncomplete' title='${deliveryPercentage}%'><meter max='100' value='${deliveryPercentage}'>${deliveryPercentage}</meter></div>"/>
|
||||
</c:if>
|
||||
</c:if>
|
||||
|
||||
<c:set var="recipient" value="${ib:getNameAndShortDestination(ib:getOneLocalRecipient(email))}"/>
|
||||
|
||||
<c:set var="subject" value="${email.subject}"/>
|
||||
<c:if test="${empty subject}">
|
||||
<ib:message key="(No subject)" var="subject"/>
|
||||
</c:if>
|
||||
|
||||
<c:set var="mailUrl" value="showEmail.jsp?folder=${folderName}&messageID=${email.messageID}"/>
|
||||
<c:set var="mailUrl" value="showEmail.jsp?folder=${folderName}&messageID=${email.messageID}"/>
|
||||
|
||||
<c:choose>
|
||||
<c:when test="${email.new}"><c:set var="fontWeight" value="bold"/></c:when>
|
||||
<c:otherwise><c:set var="fontWeight" value="normal"/></c:otherwise>
|
||||
<c:when test="${email.new}"><c:set var="textClass" value="folder-item-new"/></c:when>
|
||||
<c:otherwise><c:set var="textClass" value="folder-item-old"/></c:otherwise>
|
||||
</c:choose>
|
||||
|
||||
<c:set var="class" value=""/>
|
||||
<c:set var="backgroundClass" value="even-table-cell"/>
|
||||
<c:if test="${status.index%2 != 0}">
|
||||
<c:set var="class" value=" class=\"alttablecell\""/>
|
||||
<c:set var="backgroundClass" value="odd-table-cell"/>
|
||||
</c:if>
|
||||
|
||||
<tr>
|
||||
<td><div${class}><a href="${mailUrl}" style="font-weight: ${fontWeight}">${fn:escapeXml(sender)}</a></div></td>
|
||||
<td><div${class} style="text-align: center;">${!ib:isKnown(email.sender) ? '✗' : ' '}</div></td>
|
||||
<td><div${class} style="text-align: center;"><c:out value="${signature}" escapeXml="false"/></div></td>
|
||||
<td><div${class}><a href="${mailUrl}" style="font-weight: ${fontWeight}">${fn:escapeXml(recipient)}</a></div></td>
|
||||
<td><div${class}><a href="${mailUrl}" style="font-weight: ${fontWeight}">${fn:escapeXml(subject)}</a></div></td>
|
||||
<td><div${class}><a href="${mailUrl}" style="font-weight: ${fontWeight}"><ib:emailDate email="${email}" timeStyle="short"/></a></div></td>
|
||||
<tr class="${textClass} ${backgroundClass}">
|
||||
<td class="header-column-replied">
|
||||
<c:if test="${not email.signatureValid and not email.anonymous}">
|
||||
<ib:message key="Signature is invalid or missing" var="sigMessage"/>
|
||||
<div class="sig-invalid"><img src="${themeDir}/images/warning.png" title="${sigMessage}"/></div>
|
||||
</c:if>
|
||||
<c:if test="${email.signatureValid}">
|
||||
<c:if test="${email.replied}">⤶</c:if>
|
||||
</c:if>
|
||||
</td>
|
||||
<td class="ellipsis"><a href="${mailUrl}">
|
||||
<c:if test="${email.anonymous}">
|
||||
<div class="anon-sender">
|
||||
</c:if>
|
||||
${fn:escapeXml(sender)}
|
||||
<c:if test="${empty sender}">
|
||||
</div>
|
||||
</c:if>
|
||||
</a></td>
|
||||
<%-- Don't show the "known" column in the sent folder --%>
|
||||
<c:if test="${not isSentFolder}">
|
||||
<td><c:out value="${known}" escapeXml="false"/></td>
|
||||
</c:if>
|
||||
<td class="ellipsis"><a href="${mailUrl}">${fn:escapeXml(recipient)}</a></td>
|
||||
<td class="ellipsis"><a href="${mailUrl}">${fn:escapeXml(subject)}</a></td>
|
||||
<td>
|
||||
<div${class}>
|
||||
<a href="deleteEmail.jsp?folder=${folderName}&messageID=${email.messageID}">
|
||||
<img src="images/delete.png" alt="<ib:message key='Delete'/>" title="<ib:message key='Delete this email'/>"/></a>
|
||||
</div>
|
||||
<a href="${mailUrl}"><ib:printDate date="${email.sentDate}" type="date" timeStyle="short" printUnknown="true"/></a>
|
||||
<a href="${mailUrl}"><ib:printDate date="${email.sentDate}" type="time" timeStyle="short"/></a>
|
||||
</td>
|
||||
<%-- Show the "delivered" column only in the sent folder --%>
|
||||
<c:if test="${isSentFolder}">
|
||||
<td>${delivered}</td>
|
||||
</c:if>
|
||||
<td>
|
||||
<a href="deleteEmail.jsp?folder=${folderName}&messageID=${email.messageID}">
|
||||
<img src="${themeDir}/images/delete.png" alt="<ib:message key='Delete'/>" title="<ib:message key='Delete this email'/>"/></a>
|
||||
</td>
|
||||
</tr>
|
||||
</c:forEach>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</ib:requirePassword>
|
||||
|
||||
<jsp:include page="footer.jsp"/>
|
@ -26,10 +26,13 @@
|
||||
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
|
||||
<%@ taglib prefix="ib" uri="I2pBoteTags" %>
|
||||
|
||||
<jsp:useBean id="jspHelperBean" class="i2p.bote.web.JSPHelper"/>
|
||||
<c:set var="themeDir" value="themes/${jspHelperBean.configuration.theme}" scope="request"/>
|
||||
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<link rel="stylesheet" href="i2pbote.css" />
|
||||
<link rel="stylesheet" href="${themeDir}/i2pbote.css" />
|
||||
<c:set var="refreshInterval" value="120"/>
|
||||
<c:if test="${ib:getMailFolder('Outbox').numElements gt 0}">
|
||||
<c:set var="refreshInterval" value="20"/>
|
||||
@ -37,21 +40,14 @@
|
||||
<meta http-equiv="refresh" content="${refreshInterval}" />
|
||||
</head>
|
||||
|
||||
<body style="background-color: transparent; margin: 0px;">
|
||||
<body class="iframe-body">
|
||||
|
||||
<div class="folderbox">
|
||||
<h2><ib:message key="Folders"/></h2>
|
||||
<ib:message key="Inbox" var="displayName"/><ib:folderLink dirName="Inbox" displayName="${displayName}"/><br/>
|
||||
<ib:message key="Outbox" var="displayName"/><ib:folderLink dirName="Outbox" displayName="${displayName}"/><br/>
|
||||
<ib:message key="Sent Emails" var="displayName"/><ib:folderLink dirName="Sent" displayName="${displayName}"/><br/>
|
||||
<img src="images/folder.png"/><ib:message key="Drafts"/><br/>
|
||||
<ib:message key="Sent" var="displayName"/><ib:folderLink dirName="Sent" displayName="${displayName}"/><br/>
|
||||
<ib:message key="Trash" var="displayName"/><ib:folderLink dirName="Trash" displayName="${displayName}"/><br/>
|
||||
<hr/>
|
||||
<img src="images/folder.png"/>User_created_Folder_1<br/>
|
||||
<img src="images/folder.png"/>User_created_Folder_2<br/>
|
||||
<img src="images/folder.png"/>User_created_Folder_3<br/>
|
||||
<hr/>
|
||||
<ib:message key="Manage Folders"/>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
|
@ -33,4 +33,5 @@
|
||||
pageContext.setAttribute("CONNECTED", i2p.bote.network.NetworkStatus.CONNECTED, PageContext.REQUEST_SCOPE);
|
||||
pageContext.setAttribute("ERROR", i2p.bote.network.NetworkStatus.ERROR, PageContext.REQUEST_SCOPE);
|
||||
%>
|
||||
<c:set var="connStatus" value="${ib:getNetworkStatus()}" scope="request"/>
|
||||
<jsp:useBean id="jspHelperBean" class="i2p.bote.web.JSPHelper"/>
|
||||
<c:set var="connStatus" value="${jspHelperBean.networkStatus}" scope="request"/>
|
||||
|
@ -28,17 +28,35 @@
|
||||
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
|
||||
<%@ taglib prefix="ib" uri="I2pBoteTags" %>
|
||||
|
||||
<%--
|
||||
JSP variables that can be passed into this JSP:
|
||||
|
||||
title - The page title to set
|
||||
refreshInterval - If this parameter is set, do an HTTP refresh every refreshInterval seconds
|
||||
refreshUrl - If refreshInterval is set, load this URL when refreshing
|
||||
infoMessage - Display an informational message
|
||||
errorMessage - Display an error message
|
||||
|
||||
infoMessage and errorMessage can also be passed in as an HTTP parameter.
|
||||
--%>
|
||||
|
||||
<fmt:requestEncoding value="UTF-8"/>
|
||||
|
||||
<jsp:useBean id="jspHelperBean" class="i2p.bote.web.JSPHelper"/>
|
||||
<c:set var="configuration" value="${jspHelperBean.configuration}"/>
|
||||
<fmt:setLocale value="${configuration.language}" scope="request"/>
|
||||
<c:set var="themeDir" value="themes/${jspHelperBean.configuration.theme}" scope="request"/>
|
||||
<fmt:setLocale value="${jspHelperBean.language}" scope="request"/>
|
||||
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<link rel="stylesheet" href="i2pbote.css" />
|
||||
<link rel="icon" type="image/png" href="images/favicon.png" />
|
||||
|
||||
<%-- Refresh --%>
|
||||
<c:if test="${not empty refreshInterval}">
|
||||
<meta http-equiv="refresh" content="${refreshInterval};url=${refreshUrl}" />
|
||||
</c:if>
|
||||
|
||||
<link rel="stylesheet" href="themes/${jspHelperBean.configuration.theme}/i2pbote.css" />
|
||||
<link rel="icon" type="image/png" href="${themeDir}/images/favicon.png" />
|
||||
<c:if test="${!empty title}">
|
||||
<title>${title} <ib:message key="- I2P-Bote"/></title>
|
||||
</c:if>
|
||||
@ -46,18 +64,30 @@
|
||||
|
||||
<body>
|
||||
|
||||
<div class="titlebar" style="cursor:pointer" onclick="document.location='.'">
|
||||
<div class="titlebar" onclick="document.location='.'">
|
||||
<c:if test="${jspHelperBean.passwordInCache}">
|
||||
<div class="password">
|
||||
<ib:message key="Password is cached. Click to clear the password cache." var="linkTitle"/>
|
||||
<a href="clearPasswordCache.jsp" title="${linkTitle}"><img src="${themeDir}/images/clear_password.png"/></a>
|
||||
</div>
|
||||
</c:if>
|
||||
<div class="title"><ib:message key="I2P-Bote"/></div>
|
||||
<br/>
|
||||
<div class="subtitle"><ib:message key="Secure Distributed Email"/></div>
|
||||
</div>
|
||||
|
||||
<c:if test="${jspHelperBean.updateAvailable}">
|
||||
<div class="updateMessage">
|
||||
<a href="http://localhost:7657/configclients.jsp#plugin" target="_parent"><ib:message key="A new version is available. Click here for the configuration page."/></a>
|
||||
</div>
|
||||
</c:if>
|
||||
|
||||
<div class="menubox">
|
||||
<iframe src="buttonFrame.jsp" width="100%" height="40px" scrolling="no" frameborder="0" allowtransparency="true"></iframe>
|
||||
<iframe src="buttonFrame.jsp" class="button-frame"></iframe>
|
||||
</div>
|
||||
|
||||
<div class="menubox">
|
||||
<iframe src="folders.jsp" width="100%" height="250px" scrolling="no" frameborder="0" allowtransparency="true"></iframe>
|
||||
<iframe src="folders.jsp" class="folders-frame"></iframe>
|
||||
</div>
|
||||
|
||||
<div class="menubox">
|
||||
@ -74,19 +104,30 @@
|
||||
|
||||
<div class="menubox">
|
||||
<h2><a href="network.jsp"><ib:message key="Network Status"/></a></h2>
|
||||
<iframe src="statusFrame.jsp" width="100%" height="40px" scrolling="no" frameborder="0" allowtransparency="true"></iframe>
|
||||
<iframe src="statusFrame.jsp" class="status-frame"></iframe>
|
||||
</div>
|
||||
|
||||
<div class="menubox">
|
||||
<h2><ib:message key="Help"/></h2>
|
||||
<ib:message key="User Guide"/><br/>
|
||||
<a href="${ib:getLocalizedFilename('User\'s Guide.html', pageContext.servletContext)}"><ib:message key="User Guide"/></a><br/>
|
||||
<a href="${ib:getLocalizedFilename('FAQ.html', pageContext.servletContext)}"><ib:message key="FAQ"/></a><br/>
|
||||
<a href="about.jsp"><ib:message key="About"/></a><br/>
|
||||
</div>
|
||||
|
||||
<div class="infoMessage">
|
||||
${fn:escapeXml(param.infoMessage)}
|
||||
<c:if test="${not empty infoMessage}">
|
||||
${fn:escapeXml(infoMessage)}
|
||||
</c:if>
|
||||
<c:if test="${empty infoMessage}">
|
||||
${fn:escapeXml(param.infoMessage)}
|
||||
</c:if>
|
||||
</div>
|
||||
|
||||
<div class="errorMessage">
|
||||
${fn:escapeXml(param.errorMessage)}
|
||||
<c:if test="${not empty errorMessage}">
|
||||
${fn:escapeXml(errorMessage)}
|
||||
</c:if>
|
||||
<c:if test="${empty errorMessage}">
|
||||
${fn:escapeXml(param.errorMessage)}
|
||||
</c:if>
|
||||
</div>
|
@ -1,365 +0,0 @@
|
||||
/* Based on the router console css */
|
||||
|
||||
body {
|
||||
margin: 15px 0 0 10px;
|
||||
padding: 0em;
|
||||
text-align: center;
|
||||
background: #eef;
|
||||
color: #000;
|
||||
font: 9pt/130% "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif;
|
||||
}
|
||||
|
||||
.titlebar {
|
||||
width: 800px;
|
||||
margin: 0px 20px 20px 240px;
|
||||
background-color: #fff;
|
||||
color: #310;
|
||||
padding: 0 15px 15px 25px;
|
||||
-moz-border-radius: 4px;
|
||||
-khtml-border-radius: 4px;
|
||||
border-radius: 4px;
|
||||
border: 1px solid #001;
|
||||
text-align: center;
|
||||
-moz-box-shadow: inset 0px 0px 1px 0px #002;
|
||||
white-space: normal;
|
||||
background: #ddf url('images/lightbluetile.png');
|
||||
opacity: 1.0;
|
||||
}
|
||||
|
||||
.title {
|
||||
font: normal bold 20pt/120% 'Lucida Sans Unicode', 'Bitstream Vera Sans', Verdana, Tahoma, Helvetica, sans-serif;
|
||||
font-weight: bold;
|
||||
letter-spacing: 0.15em;
|
||||
text-shadow: 0px 0px 1px rgba(0, 0, 148, 0.9);
|
||||
}
|
||||
|
||||
.subtitle {
|
||||
font-size: 8pt;
|
||||
color: #cf0606;
|
||||
letter-spacing: 5pt;
|
||||
text-shadow: 0px 0px 1px rgba(148, 0, 0, 0.9);
|
||||
}
|
||||
|
||||
.checkmail {
|
||||
font: bold 8pt "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif;
|
||||
color: #555;
|
||||
}
|
||||
|
||||
.menubox {
|
||||
float: left;
|
||||
width: 175px;
|
||||
margin: 0px 0px 10px 10px;
|
||||
padding: 10px;
|
||||
text-align: left;
|
||||
border: 1px solid #000033;
|
||||
background: #ddf url('images/lightbluetile.png');
|
||||
color: #000;
|
||||
font-size: 8pt;
|
||||
clear: left;
|
||||
-moz-border-radius: 4px;
|
||||
-khtml-border-radius: 4px;
|
||||
border-radius: 4px;
|
||||
-moz-box-shadow: inset 0px 0px 1px 0px #002;
|
||||
}
|
||||
|
||||
.menubox a:link, .menubox a:visited {
|
||||
text-shadow: 0px 0px 1px rgba(0, 0, 32, 0.5);
|
||||
}
|
||||
|
||||
.menubox a:hover {
|
||||
text-shadow: 0px 0px 0.5px rgba(255, 255, 255, 0.7);
|
||||
color: #f60;
|
||||
}
|
||||
|
||||
.menubox h2 {
|
||||
font-size: 12pt;
|
||||
color: #001;
|
||||
letter-spacing: 0.05em;
|
||||
text-shadow: 0px 0px 1px rgba(0, 0, 64, 0.5);
|
||||
wordwrap: none;
|
||||
}
|
||||
|
||||
.statusbox {
|
||||
font-size: 8pt;
|
||||
font-weight: bold;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.folderbox {
|
||||
font-size: 8pt;
|
||||
font-weight: bold;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.main {
|
||||
width: 800px;
|
||||
margin: 0px 20px 20px 240px;
|
||||
padding: 0 15px 15px 25px;
|
||||
background: #eef;
|
||||
font: 9pt/130% "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif;
|
||||
text-align: left;
|
||||
color: #001;
|
||||
border: 1px solid #000033;
|
||||
background: #ddf url('images/lightbluetile.png');
|
||||
-moz-border-radius: 4px;
|
||||
-khtml-border-radius: 4px;
|
||||
border-radius: 4px;
|
||||
-moz-box-shadow: inset 0px 0px 1px 0px #002;
|
||||
}
|
||||
|
||||
.emailtext {
|
||||
width: 800px;
|
||||
margin: 0px 20px 20px 240px;
|
||||
padding: 0 15px 15px 25px;
|
||||
background: #eef;
|
||||
font: 9pt/130% "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif;
|
||||
text-align: left;
|
||||
color: #001;
|
||||
border: 1px solid #000033;
|
||||
background: #cce2ff;
|
||||
-moz-border-radius: 4px;
|
||||
-khtml-border-radius: 4px;
|
||||
border-radius: 4px;
|
||||
-moz-box-shadow: inset 0px 0px 1px 0px #002;
|
||||
}
|
||||
|
||||
.infoMessage {
|
||||
margin: 0px 20px 5px 240px;
|
||||
text-align: left;
|
||||
color: green;
|
||||
}
|
||||
|
||||
.errorMessage {
|
||||
margin: 0px 20px 5px 240px;
|
||||
text-align: left;
|
||||
color: red;
|
||||
}
|
||||
|
||||
img {
|
||||
border: none;
|
||||
}
|
||||
|
||||
a:active {
|
||||
color: #900;
|
||||
}
|
||||
|
||||
a:link {
|
||||
color: #007;
|
||||
text-decoration: none;
|
||||
font-weight: bold;
|
||||
word-wrap: break-word;
|
||||
}
|
||||
|
||||
a:visited {
|
||||
color: #606;
|
||||
text-decoration: none;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
a:hover {
|
||||
color: #f60;
|
||||
text-decoration: underline;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
a:active {
|
||||
color: #f93;
|
||||
text-decoration: underline;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
button, button:visited {
|
||||
font: bold 8pt "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif;
|
||||
border: 1px outset #999;
|
||||
padding: 1px 3px;
|
||||
background: #ddf !important;
|
||||
text-decoration: none;
|
||||
border-radius: 4px;
|
||||
-moz-border-radius: 4px;
|
||||
-khtml-border-radius: 4px;
|
||||
margin: 0 1px;
|
||||
text-align: center;
|
||||
min-width: 80px;
|
||||
-moz-box-shadow: inset 0px 2px 8px 0px #fff;
|
||||
color: #006;
|
||||
}
|
||||
|
||||
button:hover {
|
||||
border: 1px solid #f60;
|
||||
background: #f60 !important;
|
||||
color: #fff;
|
||||
-moz-box-shadow: inset 0px 0px 0px 1px #fff;
|
||||
}
|
||||
|
||||
button:active {
|
||||
border: 1px solid #f60;
|
||||
background: #001 !important;
|
||||
color: #f60;
|
||||
-moz-box-shadow: inset 0px 0px 0px 1px #f60;
|
||||
}
|
||||
|
||||
button[disabled] {
|
||||
border: 1px outset #999;
|
||||
background: #ddf !important;
|
||||
color: #666;
|
||||
-moz-box-shadow: inset 0px 0px 0px 1px #999;
|
||||
}
|
||||
|
||||
.underline {
|
||||
border-bottom: 1px solid #000022;
|
||||
padding: 5px 0px 5px 0px;
|
||||
margin: 0px 0px 10px 0px;
|
||||
}
|
||||
|
||||
input {
|
||||
background: #eef;
|
||||
color: #001;
|
||||
margin: 5px 10px 5px 10px;
|
||||
padding: 4px 2px;
|
||||
font: bold 8pt "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif;
|
||||
border: 1px solid #001;
|
||||
text-decoration: none;
|
||||
min-width: 110px;
|
||||
}
|
||||
|
||||
input, input:visited {
|
||||
border: 1px outset #999;
|
||||
background: #ddf;
|
||||
color: #001;
|
||||
margin: 5px;
|
||||
font: bold 8pt "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif;
|
||||
padding: 1px 2px;
|
||||
text-decoration: none;
|
||||
min-width: 110px;
|
||||
border-radius: 4px;
|
||||
-moz-border-radius: 4px;
|
||||
-khtml-border-radius: 4px;
|
||||
-moz-box-shadow: inset 0px 2px 8px 0px #fff;
|
||||
color: #006;
|
||||
opacity: 0.9;
|
||||
}
|
||||
|
||||
input:hover {
|
||||
background: #f60;
|
||||
color: #fff;
|
||||
border: 1px solid #f60;
|
||||
opacity: 1.0;
|
||||
-moz-box-shadow: inset 0px 0px 0px 1px #fff;
|
||||
}
|
||||
|
||||
input:active {
|
||||
background: #002;
|
||||
color: #f60;
|
||||
border: 1px solid #f60;
|
||||
opacity: 1.0;
|
||||
-moz-box-shadow: inset 0px 0px 0px 1px #f60;
|
||||
}
|
||||
|
||||
input[type=text] {
|
||||
background: #eef;
|
||||
color: #001;
|
||||
margin: 5px;
|
||||
padding: 5px;
|
||||
font: bold 8pt "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif;
|
||||
border: 1px solid #001;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.widetextfield {
|
||||
width: 100%;
|
||||
background: #eef;
|
||||
color: #001;
|
||||
margin: 5px;
|
||||
padding: 5px;
|
||||
font: bold 8pt "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif;
|
||||
border: 1px solid #001;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
input checkbox {
|
||||
border: 0 !important;
|
||||
}
|
||||
|
||||
textarea {
|
||||
width: 100%;
|
||||
padding: 5px;
|
||||
margin: 5px;
|
||||
background: #eef;
|
||||
color: #003;
|
||||
border-radius: 4px;
|
||||
-moz-border-radius: 4px;
|
||||
-khtml-border-radius: 4px;
|
||||
font: 9pt/130% "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif;
|
||||
min-height: 100px;
|
||||
border: 1px solid #001;
|
||||
}
|
||||
|
||||
.destinationtextarea {
|
||||
width: 100%;
|
||||
background: #eef;
|
||||
background-color: transparent;
|
||||
color: #003;
|
||||
border: none;
|
||||
font: 8pt "Lucida Console", "DejaVu Sans Mono", Courier, mono;
|
||||
min-height: 100px;
|
||||
}
|
||||
|
||||
submit {
|
||||
background: #f00;
|
||||
color: #eef;
|
||||
margin: 10px 2px 10px 0;
|
||||
padding: 2px;
|
||||
font-family: "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif;
|
||||
font-weight: bold;
|
||||
border: 1px solid #001;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
select {
|
||||
background: #eef;
|
||||
color: #003;
|
||||
padding: 2px;
|
||||
margin: 5px;
|
||||
border: 1px solid #001;
|
||||
font: 9pt "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif;
|
||||
border-radius: 4px;
|
||||
-moz-border-radius: 4px;
|
||||
-khtml-border-radius: 4px;
|
||||
text-align: left !important;
|
||||
}
|
||||
|
||||
.table {
|
||||
table-layout: fixed;
|
||||
width: 800px;
|
||||
}
|
||||
|
||||
.table td, th {
|
||||
padding-left: 10px;
|
||||
background: url('images/lightbluetile.png');
|
||||
white-space: nowrap;
|
||||
overflow-x: hidden;
|
||||
}
|
||||
|
||||
.table td:first-child, th:first-child {
|
||||
padding-left: 0px;
|
||||
background: url('images/lightbluetile.png');
|
||||
white-space: nowrap;
|
||||
overflow-x: hidden;
|
||||
}
|
||||
|
||||
.alttablecell
|
||||
{
|
||||
background: url('images/lightbluetile-alt.png');
|
||||
white-space: nowrap;
|
||||
overflow-x: hidden;
|
||||
}
|
||||
|
||||
#address form span {
|
||||
display: none;
|
||||
}
|
||||
#address form:hover span {
|
||||
display: block;
|
||||
padding: 3px;
|
||||
}
|
||||
|
||||
wbr:after { content: "\00200B" } /* For Opera */
|
@ -26,71 +26,51 @@
|
||||
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
|
||||
<%@ taglib prefix="ib" uri="I2pBoteTags" %>
|
||||
|
||||
<c:set var="title" value="Identities" scope="request"/>
|
||||
<ib:message key="Identities" var="title" scope="request"/>
|
||||
<jsp:include page="header.jsp"/>
|
||||
|
||||
<jsp:useBean id="jspHelperBean" class="i2p.bote.web.JSPHelper"/>
|
||||
<div class="main">
|
||||
<h2>
|
||||
<ib:message key="Email Identities"/>
|
||||
</h2>
|
||||
|
||||
<c:set var="identities" value="${ib:getIdentities().all}"/>
|
||||
<ib:requirePassword>
|
||||
<c:set var="identities" value="${jspHelperBean.identities.all}"/>
|
||||
</ib:requirePassword>
|
||||
<c:if test="${empty identities}">
|
||||
<ib:message key="No email identities are defined."/>
|
||||
</c:if>
|
||||
|
||||
<table class="table">
|
||||
<table>
|
||||
<c:if test="${!empty identities}">
|
||||
<tr>
|
||||
<th style="width: 20px;"><ib:message key="Def."/></th>
|
||||
<th><ib:message key="Public Name"/></th>
|
||||
<th><ib:message key="Description"/></th>
|
||||
<th><ib:message key="Email Address"/></th>
|
||||
<th><ib:message key="Email Destination"/></th>
|
||||
<th style="width: 20px"></th>
|
||||
<th class="header-column-default"><ib:message key="Def."/></th>
|
||||
<th class="header-column-public-name"><ib:message key="Public Name"/></th>
|
||||
<th class="header-column-description"><ib:message key="Description"/></th>
|
||||
<th class="header-column-id-email-dest"><ib:message key="Email Destination"/></th>
|
||||
</tr>
|
||||
</c:if>
|
||||
<c:forEach items="${identities}" var="identity" varStatus="loopStatus">
|
||||
<c:set var="class" value=""/>
|
||||
<c:if test="${loopStatus.index%2 != 0}">
|
||||
<c:set var="class" value=" class=\"alttablecell\""/>
|
||||
<c:forEach items="${identities}" var="identity" varStatus="status">
|
||||
<c:set var="backgroundClass" value="even-table-cell"/>
|
||||
<c:if test="${status.index%2 != 0}">
|
||||
<c:set var="backgroundClass" value="odd-table-cell"/>
|
||||
</c:if>
|
||||
|
||||
<tr>
|
||||
<td style="width: 20px; text-align: right;">
|
||||
<div${class}>
|
||||
<tr class="${backgroundClass}">
|
||||
<td class="data-column-default">
|
||||
<c:if test="${identity.default}">
|
||||
<img src="images/asterisk.png"/>
|
||||
<img src="${themeDir}/images/default.png"/>
|
||||
</c:if>
|
||||
</div>
|
||||
</td>
|
||||
<td style="width: 100px;">
|
||||
<div${class}>
|
||||
<jsp:useBean id="jspHelperBean" class="i2p.bote.web.JSPHelper"/>
|
||||
<%-- Insert a random number into the request string so others can't see contacts or identities using the CSS history hack --%>
|
||||
<a href="editIdentity.jsp?rnd=${jspHelperBean.randomNumber}&new=false&key=${identity.key}&cryptoImpl=${identity.cryptoImpl}&publicName=${ib:escapeQuotes(identity.publicName)}&description=${ib:escapeQuotes(identity.description)}&emailAddress=${ib:escapeQuotes(identity.emailAddress)}&isDefault=${identity.default}">
|
||||
${identity.publicName}
|
||||
</a>
|
||||
</div>
|
||||
</td>
|
||||
<td style="width: 150px;">
|
||||
<div${class}>
|
||||
${identity.description}
|
||||
</div>
|
||||
</td>
|
||||
<td style="width: 150px;">
|
||||
<div${class}>
|
||||
${identity.emailAddress}
|
||||
</div>
|
||||
</td>
|
||||
<td style="width: 100px;">
|
||||
<div${class}>
|
||||
${identity.key}
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<a href="deleteIdentity.jsp?key=${identity.key}"><img src="images/delete.png" alt="<ib:message key='Delete'/>" title="<ib:message key='Delete this identity'/>"/></a>
|
||||
<%-- Insert a random number into the request string so others can't see contacts or identities using the CSS history hack --%>
|
||||
<a href="editIdentity.jsp?rnd=${jspHelperBean.randomNumber}&new=false&key=${identity.key}&cryptoImpl=${identity.cryptoImpl}&publicName=${ib:escapeQuotes(identity.publicName)}&description=${ib:escapeQuotes(identity.description)}&emailAddress=${ib:escapeQuotes(identity.emailAddress)}&isDefault=${identity.default}">
|
||||
${identity.publicName}
|
||||
</a>
|
||||
</td>
|
||||
<td>${identity.description}</td>
|
||||
<td class="ellipsis">${identity.key}</td>
|
||||
</tr>
|
||||
</c:forEach>
|
||||
</table>
|
||||
@ -101,4 +81,4 @@
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<jsp:include page="footer.jsp"/>
|
||||
<jsp:include page="footer.jsp"/>
|
||||
|
60
WebContent/identitiesHelp.jsp
Normal file
@ -0,0 +1,60 @@
|
||||
<%@ page language="java" contentType="text/html; charset=UTF-8"
|
||||
pageEncoding="UTF-8"%>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
|
||||
<%@ taglib prefix="ib" uri="I2pBoteTags" %>
|
||||
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<p>
|
||||
<ib:message>
|
||||
In order to receive email from other people, you need to create an email identity
|
||||
first.
|
||||
</ib:message>
|
||||
</p>
|
||||
<ib:message>
|
||||
Every email identity is associated with an email destination. Anybody can send email
|
||||
to the email destination, but only the identity holder can read it.
|
||||
</ib:message>
|
||||
<br/>
|
||||
<ib:message>
|
||||
In a sense, email identities are the equivalent to traditional email accounts -
|
||||
except that there is no provider that can read all your email because I2P-Bote
|
||||
stores all emails encrypted on the network.
|
||||
</ib:message>
|
||||
<p>
|
||||
<ib:message>
|
||||
I2P-Bote automatically decrypts emails sent to you, using the email identity you
|
||||
created. Email identities are stored in a file named identities; never give
|
||||
this file to anyone or they will be able to read all your emails.
|
||||
</ib:message>
|
||||
<br/>
|
||||
<ib:message>
|
||||
Do give out the email destination so others can contact you.
|
||||
</ib:message>
|
||||
</p>
|
||||
<p>
|
||||
<ib:message>
|
||||
It is easy to create multiple identities for different purposes, or different
|
||||
contacts.
|
||||
</ib:message>
|
||||
</p>
|
||||
<ib:message>
|
||||
When you create a new email identity, you can choose the type of encryption that
|
||||
will be used by the email identity. While all encryption algorithms offered by
|
||||
I2P-Bote provide a high level of privacy, the length of an email destination
|
||||
depends on the encryption used. The choice of encryption also determines what
|
||||
signing algorithm is used.
|
||||
</ib:message>
|
||||
<br/>
|
||||
<ib:message>
|
||||
It is generally recommended to choose 256-bit elliptic curve encryption because
|
||||
it produces the shortest email destinations (86 characters) while still being
|
||||
highly secure.
|
||||
</ib:message>
|
||||
</body>
|
||||
</html>
|
Before Width: | Height: | Size: 298 B |
Before Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 852 B |
Before Width: | Height: | Size: 780 B |
Before Width: | Height: | Size: 564 B |
Before Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 794 B |
Before Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 227 B |
Before Width: | Height: | Size: 803 B |
Before Width: | Height: | Size: 1.3 KiB |
104
WebContent/importContact.jsp
Normal file
@ -0,0 +1,104 @@
|
||||
<%--
|
||||
Copyright (C) 2009 HungryHobo@mail.i2p
|
||||
|
||||
The GPG fingerprint for HungryHobo@mail.i2p is:
|
||||
6DD3 EAA2 9990 29BC 4AD2 7486 1E2C 7B61 76DC DC12
|
||||
|
||||
This file is part of I2P-Bote.
|
||||
I2P-Bote is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
I2P-Bote is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with I2P-Bote. If not, see <http://www.gnu.org/licenses/>.
|
||||
--%>
|
||||
|
||||
<%@ page language="java" contentType="text/html; charset=UTF-8"
|
||||
pageEncoding="UTF-8"%>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
|
||||
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
|
||||
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
|
||||
<%@ taglib prefix="ib" uri="I2pBoteTags" %>
|
||||
|
||||
<jsp:useBean id="jspHelperBean" class="i2p.bote.web.JSPHelper"/>
|
||||
|
||||
<ib:message key="Address Directory Lookup" var="title" scope="request"/>
|
||||
<jsp:include page="header.jsp"/>
|
||||
|
||||
<div class="main">
|
||||
<c:if test="${param.confirm eq true}">
|
||||
<ib:requirePassword>
|
||||
<c:set var="errorMessage" value="${ib:saveContact(param.destination, param.name, param.picture, param.text)}"/>
|
||||
<c:if test="${empty errorMessage}">
|
||||
<ib:message key="The name has been imported to the address book." var="infoMessage" scope="request"/>
|
||||
</c:if>
|
||||
<jsp:forward page="addressBook.jsp"/>
|
||||
</ib:requirePassword>
|
||||
</c:if>
|
||||
|
||||
<c:if test="${param.confirm ne true}">
|
||||
<c:set var="result" value="${ib:lookupInDirectory(param.name)}"/>
|
||||
|
||||
<c:if test="${empty result}">
|
||||
<ib:message key="The name "{0}" was not found in the directory." var="errorMessage" scope="request">
|
||||
<ib:param value="${param.name}"/>
|
||||
</ib:message>
|
||||
<jsp:forward page="addressBook.jsp"/>
|
||||
</c:if>
|
||||
|
||||
<c:if test="${not empty result}">
|
||||
<h2><ib:message key="Import Contact"/></h2>
|
||||
<p>
|
||||
<ib:message>
|
||||
A matching record was found in the address directory. Note that the address directory is
|
||||
not secure against manipulation, so do not click "import" unless you trust
|
||||
that it is the right email destination.
|
||||
</ib:message>
|
||||
</p>
|
||||
|
||||
<%-- fingerprint --%>
|
||||
<c:set var="uiLocaleCode" value="${jspHelperBean.language}"/>
|
||||
<b><ib:message key="Fingerprint:"/></b> ${ib:getContactFingerprint(result, uiLocaleCode)}
|
||||
<ib:expandable>
|
||||
<c:forEach items="${jspHelperBean.wordListLocales}" var="localeCode">
|
||||
<c:if test="${localeCode ne uiLocaleCode}">
|
||||
<b>${localeCode}</b>: ${ib:getContactFingerprint(result, localeCode)}<br/>
|
||||
</c:if>
|
||||
</c:forEach>
|
||||
</ib:expandable>
|
||||
|
||||
<%-- image, name, text --%>
|
||||
<p/>
|
||||
<div class="contact-detail-container">
|
||||
<div class="contact-detail-left">
|
||||
<img src="data:${result.pictureType};base64,${result.pictureBase64}"/><br/>
|
||||
${fn:escapeXml(param.name)}
|
||||
</div>
|
||||
<div class="contact-detail-text">${fn:escapeXml(result.text)}</div>
|
||||
</div>
|
||||
<div class="contact-detail-dest">
|
||||
<b><ib:message key="Email Destination: "/></b>
|
||||
${result.destination}
|
||||
</div>
|
||||
|
||||
<form action="importContact.jsp" method="post">
|
||||
<input type="hidden" name="confirm" value="true"/>
|
||||
<input type="hidden" name="name" value="${param.name}"/>
|
||||
<input type="hidden" name="destination" value="${result.destination}"/>
|
||||
<input type="hidden" name="picture" value="${result.pictureBase64}"/>
|
||||
<input type="hidden" name="text" value="${fn:escapeXml(result.text)}"/>
|
||||
<ib:message key="Import" var="import" scope="request"/>
|
||||
<input type="submit" value="${import}"/>
|
||||
</form>
|
||||
</c:if>
|
||||
</c:if>
|
||||
</div>
|
||||
|
||||
<jsp:include page="footer.jsp"/>
|
@ -34,11 +34,14 @@
|
||||
<div class="main">
|
||||
<c:choose>
|
||||
<c:when test="${connStatus==NOT_STARTED || connStatus==DELAY}">
|
||||
<strong><ib:message key="Network information is not available because I2P-Bote hasn't started connecting to the network yet."/></strong>
|
||||
<span class="subheading">
|
||||
<ib:message key="Network information is not available because I2P-Bote hasn't started connecting to the network yet."/>
|
||||
</span>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<jsp:useBean id="jspHelperBean" class="i2p.bote.web.JSPHelper"/>
|
||||
<strong><ib:message key="Local destination:"/> </strong>${jspHelperBean.localDestination}<p/><br/>
|
||||
<span class="subheading"><ib:message key="Local destination:"/></span>
|
||||
${jspHelperBean.localDestination}<p/><br/>
|
||||
<ib:peerInfo/>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
|
@ -29,12 +29,14 @@
|
||||
|
||||
<%--
|
||||
Valid actions:
|
||||
<default> - show the "new email" form
|
||||
send - send an email using the request data
|
||||
addToAddrBook - add a recipient to the address book and return here
|
||||
lookup - add one or more address book entries as recipients and return here
|
||||
addRecipientField - add a recipient field
|
||||
removeRecipient<i> - remove the recipient field with index i
|
||||
<default> - show the "new email" form
|
||||
send - send an email using the request data
|
||||
addToAddrBook - add a recipient to the address book and return here
|
||||
lookup - add one or more address book entries as recipients and return here
|
||||
addRecipientField - add a recipient field
|
||||
removeRecipient<i> - remove the recipient field with index i
|
||||
attach - add the file given in the parameter "file" as an attachment
|
||||
removeAttachment<i> - remove the attachment with index i
|
||||
|
||||
Other parameters:
|
||||
new - true for new contact, false for existing contact
|
||||
@ -51,109 +53,202 @@
|
||||
<jsp:param name="destination" value="${ib:escapeQuotes(param[destparam])}"/>
|
||||
<jsp:param name="forwardUrl" value="newEmail.jsp"/>
|
||||
<jsp:param name="backUrl" value="newEmail.jsp"/>
|
||||
<jsp:param name="paramsToCopy" value="recipient*,to*,cc*,bcc*,replyto*,subject,message,forwardUrl,backUrl,paramsToCopy"/>
|
||||
<jsp:param name="paramsToCopy" value="sender,recipient*,to*,cc*,bcc*,replyto*,subject,message,attachmentNameOrig*,attachmentNameTemp*,forwardUrl,backUrl,paramsToCopy"/>
|
||||
</jsp:forward>
|
||||
</c:when>
|
||||
<c:when test="${param.action eq 'lookup'}">
|
||||
<jsp:forward page="addressBook.jsp">
|
||||
<jsp:param name="select" value="true"/>
|
||||
<jsp:param name="forwardUrl" value="newEmail.jsp"/>
|
||||
<jsp:param name="paramsToCopy" value="recipient*,to*,cc*,bcc*,replyto*,subject,message,forwardUrl"/>
|
||||
<jsp:param name="paramsToCopy" value="sender,recipient*,to*,cc*,bcc*,replyto*,subject,message,attachmentNameOrig*,attachmentNameTemp*,forwardUrl"/>
|
||||
</jsp:forward>
|
||||
</c:when>
|
||||
</c:choose>
|
||||
|
||||
<%--
|
||||
The newAttachment request attribute contains a UploadedFile object, see MultipartFilter.java.
|
||||
When action='attach', originalAttachmentFilename contains the name of the file selected by the user.
|
||||
--%>
|
||||
<c:set var="originalAttachmentFilename" value="${requestScope['newAttachment'].originalFilename}"/>
|
||||
|
||||
<ib:message key="New Email" var="title"scope="request"/>
|
||||
<c:if test="${param.action eq 'attach' and empty originalAttachmentFilename}">
|
||||
<ib:message key="Please select a file to attach and try again." var="noAttachmentMsg"/>
|
||||
<c:set var="errorMessage" value="${noAttachmentMsg}" scope="request"/>
|
||||
</c:if>
|
||||
<jsp:include page="header.jsp"/>
|
||||
|
||||
<ib:requirePassword>
|
||||
<div class="main">
|
||||
<form action="newEmail.jsp" method="post">
|
||||
<table>
|
||||
<tr>
|
||||
<td>
|
||||
<ib:message key="From:"/>
|
||||
</td>
|
||||
<td>
|
||||
<select name="sender">
|
||||
<option value="anonymous"><ib:message key="Anonymous"/></option>
|
||||
<c:forEach items="${ib:getIdentities().all}" var="identity">
|
||||
<c:set var="selected" value=""/>
|
||||
<c:if test="${fn:contains(param.sender, identity.key)}">
|
||||
<c:set var="selected" value=" selected"/>
|
||||
</c:if>
|
||||
<c:if test="${empty param.sender && identity.default}">
|
||||
<c:set var="selected" value=" selected"/>
|
||||
</c:if>
|
||||
<option value="${identity.publicName} <${identity.key}>"${selected}>
|
||||
${identity.publicName}
|
||||
<c:if test="${!empty identity.description}"> - ${identity.description}</c:if>
|
||||
</option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<%-- Add an address line for each recipient --%>
|
||||
<c:set var="recipients" value="${ib:mergeRecipientFields(pageContext.request)}"/>
|
||||
<c:forEach var="recipient" items="${recipients}" varStatus="status">
|
||||
<c:set var="recipientField" value="recipient${status.index}"/>
|
||||
<tr><td>
|
||||
<c:set var="recipientTypeField" value="recipientType${status.index}"/>
|
||||
<c:set var="recipientType" value="${param[recipientTypeField]}"/>
|
||||
<select name="recipientType${status.index}">
|
||||
<c:set var="toSelected" value="${recipientType eq 'to' ? ' selected' : ''}"/>
|
||||
<c:set var="ccSelected" value="${recipientType eq 'cc' ? ' selected' : ''}"/>
|
||||
<c:set var="bccSelected" value="${recipientType eq 'bcc' ? ' selected' : ''}"/>
|
||||
<c:set var="replytoSelected" value="${recipientType eq 'replyto' ? ' selected' : ''}"/>
|
||||
<option value="to"${toSelected}><ib:message key="To:"/></option>
|
||||
<option value="cc"${ccSelected}><ib:message key="CC:"/></option>
|
||||
<option value="bcc"${bccSelected}><ib:message key="BCC:"/></option>
|
||||
<option value="replyto"${replytoSelected}><ib:message key="Reply To:"/></option>
|
||||
</select>
|
||||
</td><td>
|
||||
<input type="text" size="80" name="${recipientField}" value="${ib:escapeQuotes(recipient.address)}"/>
|
||||
<c:choose>
|
||||
<c:when test="${status.last}">
|
||||
<input type="hidden" name="destparamname" value="${recipientField}"/>
|
||||
<button type="submit" name="action" value="addToAddrBook">➔<img src="images/addressbook.gif"/></button>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<button type="submit" name="action" value="removeRecipient${status.index}">-</button>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</td></tr>
|
||||
</c:forEach>
|
||||
<form id="emailform" action="newEmail.jsp" method="post" enctype="multipart/form-data" accept-charset="UTF-8">
|
||||
<div class="email-form-button-send">
|
||||
<button type="submit" name="action" value="send">➔ <ib:message key="Send"/></button>
|
||||
</div>
|
||||
|
||||
<tr>
|
||||
<td/>
|
||||
<td style="text-align: right;">
|
||||
<button type="submit" name="action" value="addRecipientField">+</button>
|
||||
<button type="submit" name="action" value="lookup"><ib:message key="Addr. Book..."/></button>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top"><br/><ib:message key="Subject:"/></td>
|
||||
<td><input class="widetextfield" type="text" size="80" name="subject" value="${ib:escapeQuotes(param.subject)}"/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top"><br/><ib:message key="Message:"/></td>
|
||||
<td>
|
||||
<textarea rows="30" cols="80" name="message"><c:if test="${!empty param.quoteMsgId}">
|
||||
<div class="email-form-label">
|
||||
<ib:message key="From:"/>
|
||||
</div>
|
||||
<div class="email-form-value">
|
||||
<select name="sender">
|
||||
<option value="anonymous"><ib:message key="Anonymous"/></option>
|
||||
<jsp:useBean id="jspHelperBean" class="i2p.bote.web.JSPHelper"/>
|
||||
<c:forEach items="${jspHelperBean.identities.all}" var="identity">
|
||||
<c:set var="selected" value=""/>
|
||||
<c:if test="${fn:contains(param.sender, identity.key)}">
|
||||
<c:set var="selected" value=" selected"/>
|
||||
</c:if>
|
||||
<c:if test="${empty param.sender && identity.default}">
|
||||
<c:set var="selected" value=" selected"/>
|
||||
</c:if>
|
||||
<option value="${identity.publicName} <${identity.key}>"${selected}>
|
||||
${identity.publicName} <${fn:substring(identity.key, 0, 10)}...>
|
||||
<c:if test="${!empty identity.description}"> - ${identity.description}</c:if>
|
||||
</option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<%-- Add an address line for each recipient --%>
|
||||
<c:set var="recipients" value="${ib:mergeRecipientFields(pageContext.request)}"/>
|
||||
<c:forEach var="recipient" items="${recipients}" varStatus="status">
|
||||
<c:set var="recipientField" value="recipient${status.index}"/>
|
||||
<div class="email-form-recipient-label">
|
||||
<c:set var="recipientTypeField" value="recipientType${status.index}"/>
|
||||
<c:set var="recipientType" value="${param[recipientTypeField]}"/>
|
||||
<select name="recipientType${status.index}">
|
||||
<c:set var="toSelected" value="${recipientType eq 'to' ? ' selected' : ''}"/>
|
||||
<c:set var="ccSelected" value="${recipientType eq 'cc' ? ' selected' : ''}"/>
|
||||
<c:set var="bccSelected" value="${recipientType eq 'bcc' ? ' selected' : ''}"/>
|
||||
<c:set var="replytoSelected" value="${recipientType eq 'replyto' ? ' selected' : ''}"/>
|
||||
<option value="to"${toSelected}><ib:message key="To:"/></option>
|
||||
<option value="cc"${ccSelected}><ib:message key="CC:"/></option>
|
||||
<option value="bcc"${bccSelected}><ib:message key="BCC:"/></option>
|
||||
<option value="replyto"${replytoSelected}><ib:message key="Reply To:"/></option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="email-form-recipient-value">
|
||||
<input type="text" size="48" class="email-form-recipient-field" name="${recipientField}" value="${ib:escapeQuotes(recipient.address)}"/>
|
||||
<c:choose>
|
||||
<c:when test="${status.last}">
|
||||
<input type="hidden" name="destparamname" value="${recipientField}"/>
|
||||
<button type="submit" name="action" value="addToAddrBook">➔<img src="${themeDir}/images/addressbook.gif"/></button>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<button type="submit" name="action" value="removeRecipient${status.index}">-</button>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</div>
|
||||
</c:forEach>
|
||||
|
||||
<div class="email-form-button-row">
|
||||
<button type="submit" name="action" value="addRecipientField">+</button>
|
||||
<button type="submit" name="action" value="lookup"><ib:message key="Addr. Book..."/></button>
|
||||
</div>
|
||||
|
||||
<div class="email-form-label">
|
||||
<ib:message key="Subject:"/>
|
||||
</div>
|
||||
<div class="email-form-value">
|
||||
<input type="text" size="48" class="email-form-subject-field" name="subject" value="${ib:escapeQuotes(param.subject)}"/>
|
||||
</div>
|
||||
|
||||
<%-- Attachments --%>
|
||||
<div class="email-form-attach-label">
|
||||
<ib:message key="Attachments:"/>
|
||||
</div>
|
||||
<div class="email-form-value">
|
||||
<c:set var="maxAttachmentIndex" value="-1"/>
|
||||
<c:forEach items="${param}" var="parameter">
|
||||
<c:if test="${fn:startsWith(parameter.key, 'attachmentNameOrig')}">
|
||||
<c:set var="attachmentIndex" value="${fn:substringAfter(parameter.key, 'attachmentNameOrig')}"/>
|
||||
<c:set var="removeAction" value="removeAttachment${attachmentIndex}"/>
|
||||
<c:set var="removed" value="${param.action eq removeAction}"/>
|
||||
<c:if test="${!removed}">
|
||||
<c:if test="${attachmentIndex gt maxAttachmentIndex}">
|
||||
<c:set var="maxAttachmentIndex" value="${attachmentIndex}"/>
|
||||
</c:if>
|
||||
<div class="email-form-attach-files">
|
||||
<c:set var="tempFileParamName" value="attachmentNameTemp${attachmentIndex}"/>
|
||||
<c:set var="tempAttachmentFilename" value="${param[tempFileParamName]}"/>
|
||||
<c:set var="filename" value="${parameter.value}"/>
|
||||
<c:set var="filesize" value="(${ib:getFileSize(tempAttachmentFilename)})"/>
|
||||
<div class="email-form-attach-item" title="${filename} ${filesize}">
|
||||
${filename}
|
||||
<span class="email-form-attach-size">${filesize}</span>
|
||||
<input type="hidden" name="attachmentNameOrig${attachmentIndex}" value="${parameter.value}"/>
|
||||
<input type="hidden" name="attachmentNameTemp${attachmentIndex}" value="${tempAttachmentFilename}"/>
|
||||
</div>
|
||||
<div class="email-form-attach-remove">
|
||||
<ib:message key="Remove this attachment" var="linkTitle"/>
|
||||
<button type="submit" name="action" value="removeAttachment${attachmentIndex}" title="${linkTitle}">-</button>
|
||||
</div>
|
||||
</div>
|
||||
</c:if>
|
||||
</c:if>
|
||||
</c:forEach>
|
||||
|
||||
<c:if test="${param.action eq 'attach' and not empty originalAttachmentFilename}">
|
||||
<c:set var="tempAttachmentFilename" value="${requestScope['newAttachment'].tempFilename}"/>
|
||||
<c:set var="maxAttachmentIndex" value="${maxAttachmentIndex + 1}"/>
|
||||
<div class="email-form-attach-files">
|
||||
<c:set var="filename" value="${originalAttachmentFilename}"/>
|
||||
<c:set var="filesize" value="(${ib:getFileSize(tempAttachmentFilename)})"/>
|
||||
<div class="email-form-attach-item" title="${filename} ${filesize}">
|
||||
${filename}
|
||||
<span class="email-form-attach-size">${filesize}</span>
|
||||
<input type="hidden" name="attachmentNameOrig${maxAttachmentIndex}" value="${requestScope['newAttachment'].originalFilename}"/>
|
||||
<input type="hidden" name="attachmentNameTemp${maxAttachmentIndex}" value="${tempAttachmentFilename}"/>
|
||||
</div>
|
||||
<div class="email-form-attach-remove">
|
||||
<c:remove var="newAttachment" scope="request"/>
|
||||
<button type="submit" name="action" value="removeAttachment${maxAttachmentIndex}">-</button>
|
||||
</div>
|
||||
</div>
|
||||
</c:if>
|
||||
|
||||
<div>
|
||||
<input type="file" name="newAttachment" onchange="attachFile();"/>
|
||||
<ib:message key="Add another attachment" var="linkTitle"/>
|
||||
<button id="attachbutton" type="submit" name="action" value="attach" title="${linkTitle}"><ib:message key="Attach"/></button>
|
||||
</div>
|
||||
<div class="email-form-attach-small"><ib:message key="It is recommended to keep attachments below 500 kBytes."/></div>
|
||||
</div>
|
||||
|
||||
<div class="email-form-label">
|
||||
<ib:message key="Message:"/>
|
||||
</div>
|
||||
<div class="email-form-value">
|
||||
<textarea rows="30" cols="70" name="message"><c:if test="${!empty param.quoteMsgId}">
|
||||
<%-- The following lines are not indented because the indentation would show up as blank chars on the textarea --%>
|
||||
<c:set var="origEmail" value="${ib:getEmail(param.quoteMsgFolder, param.quoteMsgId)}"/>
|
||||
<ib:message key="{0} wrote:" hide="true">
|
||||
<ib:param value="${ib:getShortSenderName(origEmail.sender, 50)}"></ib:param>
|
||||
<ib:param value="${ib:getShortSenderName(origEmail.sender, 50)}"></ib:param>
|
||||
</ib:message><ib:quote text="${fn:escapeXml(origEmail.text)}"/></c:if><c:if test="${empty param.quoteMsgId}">${fn:escapeXml(param.message)}</c:if></textarea>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan=3 align="center">
|
||||
<button type="submit" name="action" value="send"><ib:message key="Send"/></button>
|
||||
<button type="submit" name="action" disabled="disabled"><ib:message key="Save"/></button>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<c:if test="${!empty param.quoteMsgId}">
|
||||
<%-- Parameters needed by sendEmail if the user clicks delete after sending a reply --%>
|
||||
<input type="hidden" name="quoteMsgFolder" value="${param.quoteMsgFolder}"/>
|
||||
<input type="hidden" name="quoteMsgId" value="${param.quoteMsgId}"/>
|
||||
</c:if>
|
||||
</form>
|
||||
</div>
|
||||
</ib:requirePassword>
|
||||
|
||||
<script>
|
||||
// simulates a click on the "attach" button
|
||||
function attachFile() {
|
||||
var hiddenField = document.createElement("input");
|
||||
hiddenField.setAttribute("type", "hidden");
|
||||
hiddenField.setAttribute("name", "action");
|
||||
hiddenField.setAttribute("value", "attach");
|
||||
document.forms["emailform"].appendChild(hiddenField);
|
||||
document.forms["emailform"].submit();
|
||||
}
|
||||
|
||||
function hideAttachButton() {
|
||||
document.getElementById("attachbutton").style.visibility="hidden";
|
||||
}
|
||||
window.onload = hideAttachButton;
|
||||
</script>
|
||||
|
||||
<jsp:include page="footer.jsp"/>
|
||||
|
@ -32,50 +32,7 @@
|
||||
<div class="main">
|
||||
<h2><ib:message key="No Email Identity Defined"/></h2>
|
||||
<p>
|
||||
<ib:message>
|
||||
In order to receive email from other people, you need to create an email identity
|
||||
first.
|
||||
</ib:message>
|
||||
</p><p>
|
||||
<ib:message>
|
||||
Every email identity is associated with an email destination. Anybody can send email
|
||||
to the email destination, but only the identity holder can read it.
|
||||
</ib:message>
|
||||
<br/>
|
||||
<ib:message>
|
||||
In a sense, email identities are the equivalent to traditional email accounts -
|
||||
except that there is no provider that can read all your email because I2P-Bote
|
||||
stores all emails encrypted on the network.
|
||||
</ib:message>
|
||||
</p><p>
|
||||
<ib:message>
|
||||
I2P-Bote automatically decrypts emails sent to you, using the email identity you
|
||||
created. Email identities are stored in a file named identities.txt; never give
|
||||
this file to anyone or they will be able to read all your emails.
|
||||
</ib:message>
|
||||
<br/>
|
||||
<ib:message>
|
||||
Do give out the email destination so others can contact you.
|
||||
</ib:message>
|
||||
</p><p>
|
||||
<ib:message>
|
||||
It is easy to create multiple identities for different purposes, or different
|
||||
contacts.
|
||||
</ib:message>
|
||||
</p><p>
|
||||
<ib:message>
|
||||
When you create a new email identity, you can choose the type of encryption that
|
||||
will be used by the email identity. While all encryption algorithms offered by
|
||||
I2P-Bote provide a high level of privacy, the length of an email destination
|
||||
depends on the encryption used. The higher the number of bits, the longer the
|
||||
email destination.
|
||||
</ib:message>
|
||||
<br/>
|
||||
<ib:message>
|
||||
Note that the same is not true for encryption strength. 256-bit elliptic curve
|
||||
encryption is equivalent in strength to 3072-bit ElGamal. 521-bit elliptic curve
|
||||
is equivalent to 15360-bit ElGamal.
|
||||
</ib:message>
|
||||
<jsp:include page="identitiesHelp.jsp"/>
|
||||
<form action="editIdentity.jsp?new=true" method="POST">
|
||||
<button type="submit" value="New"><ib:message key="Create a New Email Identity"/></button>
|
||||
</form>
|
||||
|
@ -31,13 +31,20 @@
|
||||
pageContext.setAttribute("FROM", i2p.bote.email.EmailAttribute.FROM, PageContext.PAGE_SCOPE);
|
||||
pageContext.setAttribute("TO", i2p.bote.email.EmailAttribute.TO, PageContext.PAGE_SCOPE);
|
||||
pageContext.setAttribute("SUBJECT", i2p.bote.email.EmailAttribute.SUBJECT, PageContext.PAGE_SCOPE);
|
||||
pageContext.setAttribute("CREATE_TIME", i2p.bote.email.EmailAttribute.CREATE_TIME, PageContext.PAGE_SCOPE);
|
||||
pageContext.setAttribute("STATUS", i2p.bote.email.EmailAttribute.STATUS, PageContext.PAGE_SCOPE);
|
||||
%>
|
||||
|
||||
<c:set var="title" value="Outbox" scope="request"/>
|
||||
<c:set var="refreshUrl" value="outbox.jsp?sortcolumn=${param.sortcolumn}&descending=${param.descending}" scope="request"/>
|
||||
<ib:requirePassword forwardUrl="${refreshUrl}">
|
||||
<%-- Refresh page if there are mails in the outbox --%>
|
||||
<c:if test="${ib:getMailFolder('Outbox').numElements gt 0}">
|
||||
<c:set var="refreshInterval" value="20" scope="request"/>
|
||||
</c:if>
|
||||
<ib:message key="Outbox" var="title" scope="request"/>
|
||||
<jsp:include page="header.jsp"/>
|
||||
|
||||
<c:set var="sortcolumn" value="${STATUS}"/>
|
||||
<c:set var="sortcolumn" value="${CREATE_TIME}"/>
|
||||
<c:if test="${!empty param.sortcolumn}">
|
||||
<c:set var="sortcolumn" value="${param.sortcolumn}"/>
|
||||
</c:if>
|
||||
@ -57,19 +64,18 @@
|
||||
|
||||
<c:if test="${!descending}">
|
||||
<c:set var="sortIndicator" value="▴"/>
|
||||
<c:set var="reverseSortOrder" value="&descending=true"/>
|
||||
<c:set var="reverseSortOrder" value="&descending=true"/>
|
||||
</c:if>
|
||||
<c:if test="${descending}">
|
||||
<c:set var="sortIndicator" value="▾"/>
|
||||
<c:set var="reverseSortOrder" value="&descending=false"/>
|
||||
<c:set var="reverseSortOrder" value="&descending=false"/>
|
||||
</c:if>
|
||||
|
||||
<div class="main">
|
||||
<div class="folder">
|
||||
<table class="table">
|
||||
<div class="main foldermain">
|
||||
<table>
|
||||
<c:set var="folder" value="${ib:getMailFolder('Outbox')}"/>
|
||||
<tr>
|
||||
<th style="width: 100px;">
|
||||
<th class="header-column-from">
|
||||
<c:set var="sortLink" value="outbox.jsp?sortcolumn=${FROM}"/>
|
||||
<c:if test="${sortcolumn eq FROM}">
|
||||
<c:set var="sortLink" value="${sortLink}${reverseSortOrder}"/>
|
||||
@ -77,15 +83,15 @@
|
||||
</c:if>
|
||||
<a href="${sortLink}"><ib:message key="From"/>${fromColumnIndicator}</a>
|
||||
</th>
|
||||
<th style="width: 100px;">
|
||||
<c:set var="sortLink" value="outbox.jsp?path=${param.path}&sortcolumn=${TO}"/>
|
||||
<th class="header-column-to">
|
||||
<c:set var="sortLink" value="outbox.jsp?sortcolumn=${TO}"/>
|
||||
<c:if test="${sortcolumn eq TO}">
|
||||
<c:set var="sortLink" value="${sortLink}${reverseSortOrder}"/>
|
||||
<c:set var="toColumnIndicator" value=" ${sortIndicator}"/>
|
||||
</c:if>
|
||||
<a href="${sortLink}"><ib:message key="To"/>${toColumnIndicator}</a>
|
||||
</th>
|
||||
<th style="width: 150px;">
|
||||
<th class="header-column-subject">
|
||||
<c:set var="sortLink" value="outbox.jsp?sortcolumn=${SUBJECT}"/>
|
||||
<c:if test="${sortcolumn eq SUBJECT}">
|
||||
<c:set var="sortLink" value="${sortLink}${reverseSortOrder}"/>
|
||||
@ -93,7 +99,15 @@
|
||||
</c:if>
|
||||
<a href="${sortLink}"><ib:message key="Subject"/>${subjectColumnIndicator}</a>
|
||||
</th>
|
||||
<th style="width: 100px;">
|
||||
<th class="header-column-date">
|
||||
<c:set var="sortLink" value="outbox.jsp?sortcolumn=${CREATE_TIME}"/>
|
||||
<c:if test="${sortcolumn eq CREATE_TIME}">
|
||||
<c:set var="sortLink" value="${sortLink}${reverseSortOrder}"/>
|
||||
<c:set var="createTimeColumnIndicator" value=" ${sortIndicator}"/>
|
||||
</c:if>
|
||||
<a href="${sortLink}"><ib:message key="Create Time"/>${createTimeColumnIndicator}</a>
|
||||
</th>
|
||||
<th class="header-column-status">
|
||||
<c:set var="sortLink" value="outbox.jsp?sortcolumn=${STATUS}"/>
|
||||
<c:if test="${sortcolumn eq STATUS}">
|
||||
<c:set var="sortLink" value="${sortLink}${reverseSortOrder}"/>
|
||||
@ -101,47 +115,53 @@
|
||||
</c:if>
|
||||
<a href="${sortLink}"><ib:message key="Status"/>${statusColumnIndicator}</a>
|
||||
</th>
|
||||
<th style="width: 20px;"></th>
|
||||
<th class="header-column-trash"></th>
|
||||
</tr>
|
||||
|
||||
<c:forEach items="${ib:getEmails(folder, sortcolumn, descending)}" var="email" varStatus="status">
|
||||
<c:set var="sender" value="${ib:getNameAndDestination(email.sender)}"/>
|
||||
<c:set var="sender" value="${ib:getNameAndShortDestination(email.oneFromAddress)}"/>
|
||||
<c:if test="${empty sender}">
|
||||
<ib:message key="Anonymous" var="sender"/>
|
||||
</c:if>
|
||||
|
||||
<c:set var="recipient" value="${ib:getNameAndDestination(email.oneRecipient)}"/>
|
||||
<c:set var="recipient" value="${ib:getNameAndShortDestination(email.oneRecipient)}"/>
|
||||
|
||||
<c:set var="createTime" value="${email.createTime}"/>
|
||||
|
||||
<c:set var="subject" value="${email.subject}"/>
|
||||
<c:if test="${empty subject}">
|
||||
<ib:message key="(No subject)" var="subject"/>
|
||||
</c:if>
|
||||
|
||||
<c:set var="mailUrl" value="showEmail.jsp?folder=Outbox&messageID=${email.messageID}"/>
|
||||
<c:set var="mailUrl" value="showEmail.jsp?folder=Outbox&messageID=${email.messageID}"/>
|
||||
|
||||
<c:choose>
|
||||
<c:when test="${email.new}"><c:set var="fontWeight" value="bold"/></c:when>
|
||||
<c:otherwise><c:set var="fontWeight" value="normal"/></c:otherwise>
|
||||
<c:when test="${email.new}"><c:set var="textClass" value="folder-item-new"/></c:when>
|
||||
<c:otherwise><c:set var="textClass" value="folder-item-old"/></c:otherwise>
|
||||
</c:choose>
|
||||
|
||||
<c:set var="class" value=""/>
|
||||
<c:set var="backgroundClass" value="even-table-cell"/>
|
||||
<c:if test="${status.index%2 != 0}">
|
||||
<c:set var="class" value=" class=\"alttablecell\""/>
|
||||
<c:set var="backgroundClass" value="odd-table-cell"/>
|
||||
</c:if>
|
||||
|
||||
<tr>
|
||||
<td><div${class}><a href="${mailUrl}" style="font-weight: ${fontWeight}">${fn:escapeXml(sender)}</a></div></td>
|
||||
<td><div${class}><a href="${mailUrl}" style="font-weight: ${fontWeight}">${fn:escapeXml(recipient)}</a></div></td>
|
||||
<td><div${class}><a href="${mailUrl}" style="font-weight: ${fontWeight}">${fn:escapeXml(subject)}</a></div></td>
|
||||
<td><div${class}><a href="${mailUrl}" style="font-weight: ${fontWeight}">${ib:getEmailStatus(email)}</a></div></td>
|
||||
<td><div${class}>
|
||||
<a href="deleteEmail.jsp?folder=Outbox&messageID=${email.messageID}">
|
||||
<img src="images/delete.png" alt="<ib:message key='Delete'/>" title="<ib:message key='Delete this email'/>"/></a></div>
|
||||
<tr class="${textClass} ${backgroundClass}">
|
||||
<td class="ellipsis"><a href="${mailUrl}">${fn:escapeXml(sender)}</a></td>
|
||||
<td class="ellipsis"><a href="${mailUrl}">${fn:escapeXml(recipient)}</a></td>
|
||||
<td class="ellipsis"><a href="${mailUrl}">${fn:escapeXml(subject)}</a></td>
|
||||
<td>
|
||||
<a href="${mailUrl}"><ib:printDate date="${email.sentDate}" type="date" timeStyle="short" printUnknown="true"/></a>
|
||||
<a href="${mailUrl}"><ib:printDate date="${email.sentDate}" type="time" timeStyle="short"/></a>
|
||||
</td>
|
||||
<td><div${class}><a href="${mailUrl}">${ib:getEmailStatus(email)}</a></div></td>
|
||||
<td>
|
||||
<a href="deleteEmail.jsp?folder=Outbox&messageID=${email.messageID}">
|
||||
<img src="${themeDir}/images/delete.png" alt="<ib:message key='Delete'/>" title="<ib:message key='Delete this email'/>"/></a>
|
||||
</td>
|
||||
</tr>
|
||||
</c:forEach>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</ib:requirePassword>
|
||||
|
||||
<jsp:include page="footer.jsp"/>
|
57
WebContent/password.jsp
Normal file
@ -0,0 +1,57 @@
|
||||
<%--
|
||||
Copyright (C) 2009 HungryHobo@mail.i2p
|
||||
|
||||
The GPG fingerprint for HungryHobo@mail.i2p is:
|
||||
6DD3 EAA2 9990 29BC 4AD2 7486 1E2C 7B61 76DC DC12
|
||||
|
||||
This file is part of I2P-Bote.
|
||||
I2P-Bote is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
I2P-Bote is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with I2P-Bote. If not, see <http://www.gnu.org/licenses/>.
|
||||
--%>
|
||||
|
||||
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
|
||||
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
|
||||
<%@ taglib prefix="ib" uri="I2pBoteTags" %>
|
||||
|
||||
<ib:message key="Password Required" var="title" scope="request"/>
|
||||
<jsp:include page="header.jsp"/>
|
||||
|
||||
<c:if test="${param.passwordJspAction eq 'check'}">
|
||||
<c:choose>
|
||||
<c:when test="${ib:tryPassword(param.password)}">
|
||||
<jsp:forward page="${param.passwordJspForwardUrl}"/>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<div class="errorMessage"><ib:message key="Wrong password. Try again."/></div>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</c:if>
|
||||
|
||||
<div class="main">
|
||||
<h2><ib:message key="Password required"/></h2>
|
||||
|
||||
<form name="form" action="password.jsp?passwordJspAction=check" method="POST">
|
||||
<ib:copyParams paramsToCopy="*" paramsToExclude="password"/>
|
||||
<ib:message key="Password:"/> <input type="password" name="password"/>
|
||||
<ib:message key="OK" var="ok"/>
|
||||
<input type="submit" value="${ok}"/>
|
||||
</form>
|
||||
|
||||
<script type="text/javascript" language="JavaScript">
|
||||
document.forms['form'].elements['password'].focus();
|
||||
</script>
|
||||
</div>
|
||||
|
||||
<jsp:include page="footer.jsp"/>
|
95
WebContent/publishDestination.jsp
Normal file
@ -0,0 +1,95 @@
|
||||
<%--
|
||||
Copyright (C) 2009 HungryHobo@mail.i2p
|
||||
|
||||
The GPG fingerprint for HungryHobo@mail.i2p is:
|
||||
6DD3 EAA2 9990 29BC 4AD2 7486 1E2C 7B61 76DC DC12
|
||||
|
||||
This file is part of I2P-Bote.
|
||||
I2P-Bote is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
I2P-Bote is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with I2P-Bote. If not, see <http://www.gnu.org/licenses/>.
|
||||
--%>
|
||||
|
||||
<%@ page language="java" contentType="text/html; charset=UTF-8"
|
||||
pageEncoding="UTF-8"%>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
|
||||
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
|
||||
<%@ taglib prefix="ib" uri="I2pBoteTags" %>
|
||||
|
||||
<%--
|
||||
Valid actions:
|
||||
start - Check if the name is taken
|
||||
step2 - Add a picture and text
|
||||
store - Store in DHT
|
||||
|
||||
Other parameters:
|
||||
key - The email destination
|
||||
description - New value for the private description field (publish does save first)
|
||||
publicName - New value for the public name field
|
||||
text - Text to include in the DHT record
|
||||
--%>
|
||||
|
||||
<ib:message key="Add Email Destination to Directory" var="title" scope="request"/>
|
||||
<jsp:include page="header.jsp"/>
|
||||
|
||||
<div class="main">
|
||||
<c:if test="${param.action eq 'start'}">
|
||||
<%-- If the user changed the Public Name to try a new name that isn't taken, update it so they don't have to click save first --%>
|
||||
<ib:requirePassword>
|
||||
${ib:modifyIdentity(param.key, param.publicName, param.description, param.emailAddress, false)}
|
||||
</ib:requirePassword>
|
||||
<c:set var="result" value="${ib:lookupInDirectory(param.publicName)}"/>
|
||||
<c:if test="${not empty result}">
|
||||
<ib:message key="The name exists already. Please choose a different Public Name." var="errorMessage" scope="request"/>
|
||||
<jsp:forward page="editIdentity.jsp?rnd=${jspHelperBean.randomNumber}&new=false&key=${identity.destination}"/>
|
||||
</c:if>
|
||||
<c:if test="${empty result}">
|
||||
<jsp:forward page="publishDestination.jsp">
|
||||
<jsp:param name="action" value="step2"/>
|
||||
<jsp:param name="text" value="${param.text}"/>
|
||||
<jsp:param name="key" value="${param.key}"/>
|
||||
</jsp:forward>
|
||||
</c:if>
|
||||
</c:if>
|
||||
<c:if test="${param.action eq 'step2'}">
|
||||
<h2><ib:message key="Publish to the Address Directory"/></h2>
|
||||
<form action="publishDestination.jsp?action=store" method="post" enctype="multipart/form-data" accept-charset="UTF-8">
|
||||
<input type="hidden" name="name" value="${param.publicName}"/>
|
||||
<input type="hidden" name="destination" value="${param.key}"/>
|
||||
<div class="publish-form-label">
|
||||
<ib:message key="Picture to upload:"/>
|
||||
<div class="addtl-text"><ib:message key="(optional, 7.5 kBytes max)"/></div>
|
||||
</div>
|
||||
<div class="publish-form-value">
|
||||
<input type="file" name="picture"/>
|
||||
</div>
|
||||
<div class="publish-form-label">
|
||||
<ib:message key="Text to include:"/>
|
||||
<div class="addtl-text"><ib:message key="(optional, 2000 chars max)"/></div>
|
||||
</div>
|
||||
<div class="publish-form-value">
|
||||
<textarea rows="15" cols="50" name="text"></textarea>
|
||||
</div>
|
||||
<button type="submit"><ib:message key="Publish"/></button>
|
||||
</form>
|
||||
</c:if>
|
||||
<c:if test="${param.action eq 'store'}">
|
||||
<c:set var="picFilename" value="${requestScope['picture'].tempFilename}"/>
|
||||
<ib:publishDestination destination="${param.destination}" pictureFilename="${picFilename}" text="${param.text}"/>
|
||||
<ib:message var="infoMessage" scope="request" key="The identity has been added to the address directory."/>
|
||||
<jsp:useBean id="jspHelperBean" class="i2p.bote.web.JSPHelper"/>
|
||||
<jsp:forward page="editIdentity.jsp?rnd=${jspHelperBean.randomNumber}&new=false&key=${param.destination}"/>
|
||||
</c:if>
|
||||
</div>
|
||||
|
||||
<jsp:include page="footer.jsp"/>
|
@ -26,27 +26,16 @@
|
||||
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
|
||||
<%@ taglib prefix="ib" uri="I2pBoteTags" %>
|
||||
|
||||
<c:if test="${param.action == 'cancel'}">
|
||||
<jsp:forward page="identities.jsp"/>
|
||||
</c:if>
|
||||
<c:catch var="e">
|
||||
<ib:requirePassword>
|
||||
<ib:saveIdentities/>
|
||||
<jsp:forward page="identities.jsp"/>
|
||||
</ib:requirePassword>
|
||||
</c:catch>
|
||||
|
||||
<c:choose>
|
||||
<c:when test="${empty param.publicName}">
|
||||
<ib:message key="Please fill in the Public Name field." var="errorMessage"/>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<c:set var="errorMessage" value="${ib:saveIdentity(param.new, param.cryptoImpl, param.key, param.publicName, param.description, param.emailAddress, param.isDefault=='on')}"/>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
|
||||
<c:if test="${empty errorMessage}">
|
||||
<ib:message key="The email identity has been saved." var="infoMessage"/>
|
||||
<jsp:forward page="identities.jsp">
|
||||
<jsp:param name="infoMessage" value="${infoMessage}"/>
|
||||
</jsp:forward>
|
||||
</c:if>
|
||||
<c:if test="${!empty errorMessage}">
|
||||
<jsp:forward page="editIdentity.jsp">
|
||||
<jsp:param name="errorMessage" value="${errorMessage}"/>
|
||||
</jsp:forward>
|
||||
<c:if test="${not empty e}">
|
||||
<jsp:include page="header.jsp"/>
|
||||
<div class="main">
|
||||
<ib:message key="Error:"/> ${e}
|
||||
</div>
|
||||
</c:if>
|
@ -32,7 +32,11 @@
|
||||
|
||||
<div class="main">
|
||||
|
||||
<ib:sendEmail sender="${param.sender}" subject="${param.subject}" message="${param.message}">
|
||||
<ib:requirePassword>
|
||||
<jsp:useBean id="jspHelperBean" class="i2p.bote.web.JSPHelper"/>
|
||||
<c:set var="configuration" value="${jspHelperBean.configuration}"/>
|
||||
<div class="subheading">
|
||||
<ib:sendEmail sender="${param.sender}" subject="${param.subject}" message="${param.message}" includeSentTime="${configuration.includeSentTime}">
|
||||
<c:forEach var="parameter" items="${ib:getSortedRecipientParams(param)}">
|
||||
<c:set var="recipientIndex" value="${fn:substringAfter(parameter.key, 'recipient')}"/>
|
||||
<c:set var="recipientTypeAttrName" value="recipientType${recipientIndex}"/>
|
||||
@ -40,8 +44,32 @@
|
||||
<ib:recipient type="${param[recipientTypeAttrName]}" address="${parameter.value}"/>
|
||||
</c:if>
|
||||
</c:forEach>
|
||||
|
||||
<c:forEach var="parameter" items="${param}">
|
||||
<c:if test="${fn:startsWith(parameter.key, 'attachmentNameOrig')}">
|
||||
<c:set var="attachmentIndex" value="${fn:substringAfter(parameter.key, 'attachmentNameOrig')}"/>
|
||||
<c:set var="tempFileParamName" value="attachmentNameTemp${attachmentIndex}"/>
|
||||
<ib:attachment origFilename="${parameter.value}" tempFilename="${param[tempFileParamName]}"/>
|
||||
</c:if>
|
||||
</c:forEach>
|
||||
</ib:sendEmail>
|
||||
</div>
|
||||
|
||||
<c:if test="${not empty param.quoteMsgId}">
|
||||
<ib:setEmailReplied messageId="${param.quoteMsgId}" folder="${ib:getMailFolder(param.quoteMsgFolder)}" replied="true"/>
|
||||
|
||||
<br/><p/>
|
||||
<form action="deleteEmail.jsp" method="post">
|
||||
Delete original email?
|
||||
<input type="hidden" name="folder" value="${param.quoteMsgFolder}"/>
|
||||
<input type="hidden" name="messageID" value="${param.quoteMsgId}"/>
|
||||
<button type="submit" name="action" value="Delete">Delete</button>
|
||||
</form>
|
||||
</c:if>
|
||||
</ib:requirePassword>
|
||||
|
||||
<p/>
|
||||
<a href="."><ib:message key="Go to inbox"/></a>
|
||||
</div>
|
||||
|
||||
<jsp:include page="footer.jsp"/>
|
91
WebContent/setPassword.jsp
Normal file
@ -0,0 +1,91 @@
|
||||
<%--
|
||||
Copyright (C) 2009 HungryHobo@mail.i2p
|
||||
|
||||
The GPG fingerprint for HungryHobo@mail.i2p is:
|
||||
6DD3 EAA2 9990 29BC 4AD2 7486 1E2C 7B61 76DC DC12
|
||||
|
||||
This file is part of I2P-Bote.
|
||||
I2P-Bote is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
I2P-Bote is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with I2P-Bote. If not, see <http://www.gnu.org/licenses/>.
|
||||
--%>
|
||||
|
||||
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
|
||||
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
|
||||
<%@ taglib prefix="ib" uri="I2pBoteTags" %>
|
||||
|
||||
<ib:message key="Set Password" var="title" scope="request"/>
|
||||
<c:if test="${param.action eq 'wait'}">
|
||||
<c:catch var="exception">
|
||||
<ib:waitForPasswordChange/>
|
||||
</c:catch>
|
||||
<c:if test="${empty exception}">
|
||||
<ib:message key="The password has been changed." var="infoMessage" scope="request"/>
|
||||
<jsp:forward page="index.jsp"/>
|
||||
</c:if>
|
||||
<c:if test="${not empty exception}">
|
||||
<c:set var="errorMessage" value="${exception.cause.localizedMessage}" scope="request"/>
|
||||
</c:if>
|
||||
</c:if>
|
||||
<c:if test="${param.action eq 'set'}">
|
||||
<c:set var="refreshUrl" value="setPassword.jsp?action=wait" scope="request"/>
|
||||
<c:set var="refreshInterval" value="0" scope="request"/>
|
||||
<ib:setPassword oldPassword="${param.old}" newPassword="${param.new}" confirmNewPassword="${param.confirm}"/>
|
||||
</c:if>
|
||||
|
||||
<jsp:include page="header.jsp"/>
|
||||
|
||||
<div class="main">
|
||||
<c:if test="${param.action eq 'set'}">
|
||||
<h2><ib:message key="Please wait"/></h2>
|
||||
<p>
|
||||
<img src="${themeDir}/images/wait.gif"/> <ib:message key="Please wait while the password is being changed..."/>
|
||||
</p>
|
||||
</c:if>
|
||||
<c:if test="${param.action ne 'set'}">
|
||||
<h2><ib:message key="Set a new Password"/></h2>
|
||||
|
||||
<p>
|
||||
<ib:message key="If you have not set a password, leave the old password blank."/>
|
||||
</p><p>
|
||||
<ib:message>
|
||||
Please note that if a password is set, emails cannot be checked automatically
|
||||
but only when the Check Mail button is clicked.
|
||||
</ib:message>
|
||||
</p><br/>
|
||||
|
||||
<form name="form" action="setPassword.jsp" method="POST">
|
||||
<input type="hidden" name="action" value="set"/>
|
||||
|
||||
<div class="password-label"><ib:message key="Old password:"/></div>
|
||||
<div class="password-field"><input type="password" name="old"/></div>
|
||||
|
||||
<div class="password-label"><ib:message key="New password:"/></div>
|
||||
<div class="password-field"><input type="password" name="new"/></div>
|
||||
|
||||
<div class="password-label"><ib:message key="Confirm:"/></div>
|
||||
<div class="password-field"><input type="password" name="confirm"/></div>
|
||||
|
||||
<p/>
|
||||
<ib:message key="OK" var="ok"/>
|
||||
<input type="submit" value="${ok}"/>
|
||||
</form>
|
||||
|
||||
<script type="text/javascript" language="JavaScript">
|
||||
document.forms['form'].elements['old'].focus();
|
||||
</script>
|
||||
</c:if>
|
||||
</div>
|
||||
|
||||
<jsp:include page="footer.jsp"/>
|
@ -30,7 +30,7 @@
|
||||
<c:if test="${param.action eq 'save'}">
|
||||
<jsp:setProperty name="configuration" property="autoMailCheckEnabled" value="${param.autoMailCheckEnabled eq 'on' ? 'true' : 'false'}"/>
|
||||
<jsp:setProperty name="configuration" property="mailCheckInterval" value="${param.mailCheckInterval}"/>
|
||||
<jsp:setProperty name="configuration" property="language" value="${param.language}"/>
|
||||
<jsp:setProperty name="configuration" property="deliveryCheckEnabled" value="${param.deliveryCheckEnabled eq 'on' ? 'true' : 'false'}"/>
|
||||
<jsp:setProperty name="configuration" property="hideLocale" value="${param.hideLocale eq 'on' ? 'true' : 'false'}"/>
|
||||
<jsp:setProperty name="configuration" property="includeSentTime" value="${param.includeSentTime eq 'on' ? 'true' : 'false'}"/>
|
||||
<jsp:setProperty name="configuration" property="numStoreHops" value="${param.numStoreHops}"/>
|
||||
@ -38,7 +38,16 @@
|
||||
<jsp:setProperty name="configuration" property="relayMaxDelay" value="${param.maxDelay}"/>
|
||||
<jsp:setProperty name="configuration" property="gatewayEnabled" value="${param.gatewayEnabled eq 'on' ? 'true' : 'false'}"/>
|
||||
<jsp:setProperty name="configuration" property="gatewayDestination" value="${param.gatewayDestination}"/>
|
||||
<jsp:setProperty name="configuration" property="imapPort" value="${param.imapPort}"/>
|
||||
<%--
|
||||
Use the special property imapEnabled in JSPHelper which starts/stops the IMAP service.
|
||||
Do this after setting imapPort so it starts up on the new port if it changed.
|
||||
--%>
|
||||
<jsp:setProperty name="jspHelperBean" property="imapEnabled" value="${param.imapEnabled eq 'on' ? 'true' : 'false'}"/>
|
||||
<jsp:setProperty name="configuration" property="themeUrl" value="${param.theme}"/>
|
||||
<ib:saveConfiguration/>
|
||||
<ib:message key="Settings have been saved." var="infoMessage" scope="request"/>
|
||||
<c:set var="infoMessage" value="${infoMessage}"/>
|
||||
</c:if>
|
||||
|
||||
<ib:message key="Settings" var="title" scope="request"/>
|
||||
@ -53,13 +62,17 @@
|
||||
<form action="settings.jsp" method="post">
|
||||
<input type="hidden" name="action" value="save"/>
|
||||
|
||||
<%-- Auto mail checking --%>
|
||||
<%-- Auto mail checking and delivery checking --%>
|
||||
<c:set var="checked" value="${configuration.autoMailCheckEnabled ? ' checked' : ''}"/>
|
||||
<input type="checkbox"${checked} name="autoMailCheckEnabled"/>
|
||||
<ib:message key="Check for mail every {0} minutes">
|
||||
<ib:param><input type="text" name="mailCheckInterval" size="3" value="${configuration.mailCheckInterval}"/></ib:param>
|
||||
</ib:message>
|
||||
<br/>
|
||||
<c:set var="checked" value="${configuration.deliveryCheckEnabled ? ' checked' : ''}"/>
|
||||
<input type="checkbox"${checked} name="deliveryCheckEnabled"/>
|
||||
<ib:message key="Check delivery status of sent emails"/>
|
||||
<br/>
|
||||
|
||||
<%-- Relays --%>
|
||||
<ib:message key="Use relays when sending mail:"/>
|
||||
@ -95,22 +108,16 @@
|
||||
<input type="text" name="gatewayDestination" size="50" value="${configuration.gatewayDestination}"/>
|
||||
<br/>
|
||||
|
||||
<%-- IMAP --%>
|
||||
<c:set var="checked" value="${configuration.imapEnabled ? ' checked' : ''}"/>
|
||||
<input type="checkbox"${checked} name="imapEnabled"/>
|
||||
<c:set var="imapPortField" value="<input type='text' name='imapPort' size='5' value='${configuration.imapPort}'/>"/>
|
||||
<ib:message key="Enable IMAP on port {0}">
|
||||
<ib:param value="${imapPortField}"/>
|
||||
</ib:message>
|
||||
<br/>
|
||||
|
||||
<%-- Locale --%>
|
||||
<ib:message key="Language:"/>
|
||||
<select name="language">
|
||||
<c:set var="selected" value=""/>
|
||||
<c:if test="${empty configuration.language}">
|
||||
<c:set var="selected" value=" selected"/>
|
||||
</c:if>
|
||||
<option value=""${selected}><ib:message key="Default"/></option>
|
||||
<c:forEach var="locale" items="${configuration.allLocales}">
|
||||
<c:set var="selected" value=""/>
|
||||
<c:if test="${locale.language eq configuration.language}">
|
||||
<c:set var="selected" value=" selected"/>
|
||||
</c:if>
|
||||
<option value="${locale.language}"${selected}><ib:localizedLanguageName locale="${locale}"/></option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
<c:set var="checked" value="${configuration.hideLocale ? ' checked' : ''}"/>
|
||||
<input type="checkbox"${checked} name="hideLocale"/>
|
||||
<ib:message key="Use English for text added to outgoing email ('Re:', 'wrote:', etc.)"/>
|
||||
@ -120,10 +127,28 @@
|
||||
<c:set var="checked" value="${configuration.includeSentTime ? ' checked' : ''}"/>
|
||||
<input type="checkbox"${checked} name="includeSentTime"/>
|
||||
<ib:message key="Include send time in outgoing emails"/>
|
||||
<br/>
|
||||
|
||||
<%-- UI theme --%>
|
||||
<ib:message key="Theme:"/>
|
||||
<select name="theme">
|
||||
<c:set var="currentTheme" value="${configuration.theme}"/>
|
||||
<c:forEach items="${configuration.themes}" var="theme">
|
||||
<c:set var="selected" value=""/>
|
||||
<c:if test="${theme.id eq currentTheme}">
|
||||
<c:set var="selected" value=" selected"/>
|
||||
</c:if>
|
||||
<option value="${theme.id}"${selected}>${theme.displayName}</option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
<br/>
|
||||
|
||||
<p/>
|
||||
<button type="submit"><ib:message key="Save"/></button>
|
||||
</form>
|
||||
|
||||
<p><br/></p>
|
||||
<p><a href="setPassword.jsp"><ib:message key="Change Password"/></a></p>
|
||||
</div>
|
||||
|
||||
<jsp:include page="footer.jsp"/>
|
@ -27,6 +27,7 @@
|
||||
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
|
||||
<%@ taglib prefix="ib" uri="I2pBoteTags" %>
|
||||
|
||||
<ib:requirePassword>
|
||||
<c:set var="email" value="${ib:getEmail(param.folder, param.messageID)}"/>
|
||||
|
||||
<c:if test="${fn:toLowerCase(param.folder) ne 'outbox'}">
|
||||
@ -37,92 +38,98 @@
|
||||
<jsp:include page="header.jsp"/>
|
||||
|
||||
<div class="emailtext">
|
||||
<table>
|
||||
<tr>
|
||||
<td valign="top"><strong><ib:message key="From:"/></strong></td>
|
||||
<td>
|
||||
<c:if test="${email.anonymous}">
|
||||
<ib:message key="Anonymous"/>
|
||||
</c:if>
|
||||
<c:if test="${!email.anonymous}">
|
||||
<ib:address address="${email.sender}"/>
|
||||
</c:if>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top"><strong><ib:message key="Signature:"/></strong></td>
|
||||
<td>
|
||||
<c:if test="${email.signatureValid}"><ib:message key="Valid"/></c:if>
|
||||
<c:if test="${!email.signatureValid}"><div style="color: red;"><ib:message key="Invalid or missing"/></div></c:if>
|
||||
</td>
|
||||
</tr>
|
||||
<c:forEach var="replyToAddress" varStatus="status" items="${email.replyToAddresses}">
|
||||
<tr>
|
||||
<td valign="top"><strong><ib:message key="Reply To:"/></strong></td>
|
||||
<td><ib:address address="${replyToAddress}"/></td>
|
||||
</tr>
|
||||
</c:forEach>
|
||||
<c:forEach var="toAddress" varStatus="status" items="${email.toAddresses}">
|
||||
<tr>
|
||||
<td valign="top"><strong><ib:message key="To:"/></strong></td>
|
||||
<td><ib:address address="${toAddress}"/></td>
|
||||
</tr>
|
||||
</c:forEach>
|
||||
<c:forEach var="ccAddress" varStatus="status" items="${email.CCAddresses}">
|
||||
<tr>
|
||||
<td valign="top"><strong><ib:message key="CC:"/></strong></td>
|
||||
<td><ib:address address="${ccAddress}"/></td>
|
||||
</tr>
|
||||
</c:forEach>
|
||||
<c:forEach var="bccAddress" varStatus="status" items="${email.BCCAddresses}">
|
||||
<tr>
|
||||
<td valign="top"><strong><ib:message key="BCC:"/></strong></td>
|
||||
<td><ib:address address="${bccAddress}"/></td>
|
||||
</tr>
|
||||
</c:forEach>
|
||||
<tr>
|
||||
<td valign="top"><strong><ib:message key="Sent:"/></strong></td>
|
||||
<td><ib:emailDate email="${email}" timeStyle="full"/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top"><strong><ib:message key="Subject:"/></strong></td>
|
||||
<td>${fn:escapeXml(email.subject)}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top"><strong><ib:message key="Message:"/></strong></td>
|
||||
<td><ib:formatPlainText text="${fn:escapeXml(email.text)}"/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<table><tr>
|
||||
<td>
|
||||
<form action="newEmail.jsp" method="post">
|
||||
<c:set var="replyDisabled" value="${email.anonymous ? 'disabled="disabled"' : ''}"/>
|
||||
<button type="submit"${replyDisabled}><ib:message key="Reply"/></button>
|
||||
<input type="hidden" name="sender" value="${ib:escapeQuotes(ib:getOneLocalRecipient(email))}"/>
|
||||
<input type="hidden" name="recipient0" value="${ib:escapeQuotes(email.sender)}"/>
|
||||
|
||||
<ib:message key="Re:" var="responsePrefix" hide="true"/>
|
||||
<c:set var="responsePrefix" value="${responsePrefix} "/>
|
||||
<c:if test="${fn:startsWith(email.subject, responsePrefix)}">
|
||||
<c:set var="responsePrefix" value=""/>
|
||||
</c:if>
|
||||
<input type="hidden" name="subject" value="${responsePrefix}${ib:escapeQuotes(email.subject)}"/>
|
||||
|
||||
<input type="hidden" name="quoteMsgFolder" value="${param.folder}"/>
|
||||
<input type="hidden" name="quoteMsgId" value="${param.messageID}"/>
|
||||
</form>
|
||||
</td><td>
|
||||
<form action="deleteEmail.jsp" method="post">
|
||||
<button type="submit"><ib:message key="Delete"/></button>
|
||||
<input type="hidden" name="folder" value="${param.folder}"/>
|
||||
<input type="hidden" name="messageID" value="${email.messageID}"/>
|
||||
</form>
|
||||
</td>
|
||||
</tr></table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<div class="email-form-label"><ib:message key="From:"/></div>
|
||||
<div class="show-email-value">
|
||||
<c:if test="${email.anonymous}">
|
||||
<ib:message key="Anonymous"/>
|
||||
</c:if>
|
||||
<c:if test="${!email.anonymous}">
|
||||
<ib:address address="${email.oneFromAddress}"/>
|
||||
</c:if>
|
||||
</div>
|
||||
|
||||
<div class="email-form-label"><ib:message key="Signature:"/></div>
|
||||
<div class="show-email-value">
|
||||
<c:if test="${email.signatureValid}"><ib:message key="Valid"/></c:if>
|
||||
<c:if test="${!email.signatureValid}">
|
||||
<c:if test="${email.anonymous}">
|
||||
<ib:message key="N/A (sender is anonymous)"/>
|
||||
</c:if>
|
||||
<c:if test="${!email.anonymous}">
|
||||
<div class="show-email-invalid-sig"><ib:message key="Invalid or missing"/></div>
|
||||
</c:if>
|
||||
</c:if>
|
||||
</div>
|
||||
|
||||
<c:forEach var="replyToAddress" varStatus="status" items="${email.replyToAddresses}">
|
||||
<div class="email-form-label"><ib:message key="Reply To:"/></div>
|
||||
<div class="show-email-value"><ib:address address="${replyToAddress}"/></div>
|
||||
</c:forEach>
|
||||
|
||||
<c:forEach var="toAddress" varStatus="status" items="${email.toAddresses}">
|
||||
<div class="email-form-label"><ib:message key="To:"/></div>
|
||||
<div class="show-email-value"><ib:address address="${toAddress}"/></div>
|
||||
</c:forEach>
|
||||
|
||||
<c:forEach var="ccAddress" varStatus="status" items="${email.CCAddresses}">
|
||||
<div class="email-form-label"><ib:message key="CC:"/></div>
|
||||
<div class="show-email-value"><ib:address address="${ccAddress}"/></div>
|
||||
</c:forEach>
|
||||
|
||||
<c:forEach var="bccAddress" varStatus="status" items="${email.BCCAddresses}">
|
||||
<div class="email-form-label"><ib:message key="BCC:"/></div>
|
||||
<div class="show-email-value"><ib:address address="${bccAddress}"/></div>
|
||||
</c:forEach>
|
||||
|
||||
<div class="email-form-label"><ib:message key="Sent:"/></div>
|
||||
<div class="show-email-value"><ib:printDate date="${email.sentDate}" timeStyle="full"/></div>
|
||||
|
||||
<div class="email-form-label"><ib:message key="Received:"/></div>
|
||||
<div class="show-email-value"><ib:printDate date="${email.receivedDate}" timeStyle="full"/></div>
|
||||
|
||||
<div class="email-form-label"><ib:message key="Subject:"/></div>
|
||||
<div class="show-email-value">${fn:escapeXml(email.subject)}</div>
|
||||
|
||||
<div class="email-form-label"><ib:message key="Message:"/></div>
|
||||
<div class="show-email-value"><ib:formatPlainText text="${fn:escapeXml(email.text)}"/></div>
|
||||
|
||||
<div class="email-form-label"><ib:message key="Attachments:"/></div>
|
||||
<div class="show-email-value"><ib:showAttachments email="${email}" folder="${param.folder}"/></div>
|
||||
|
||||
<c:if test="${param.folder eq 'Outbox'}">
|
||||
<div class="email-form-label"><ib:message key="Status:"/></div>
|
||||
<div class="show-email-value">${ib:getEmailStatus(email)}</div>
|
||||
</c:if>
|
||||
|
||||
<br/>
|
||||
<div class="show-email-reply">
|
||||
<form action="newEmail.jsp" method="post">
|
||||
<c:set var="replyDisabled" value="${email.anonymous ? 'disabled="disabled"' : ''}"/>
|
||||
<button type="submit"${replyDisabled}><ib:message key="Reply"/></button>
|
||||
<input type="hidden" name="sender" value="${ib:escapeQuotes(ib:getOneLocalRecipient(email))}"/>
|
||||
<jsp:useBean id="jspHelperBean" class="i2p.bote.web.JSPHelper"/>
|
||||
<input type="hidden" name="recipient0" value="${ib:escapeQuotes(ib:getReplyAddress(email, jspHelperBean.identities))}"/>
|
||||
<input type="hidden" name="recipientType0" value="to"/>
|
||||
|
||||
<ib:message key="Re:" var="responsePrefix" hide="true"/>
|
||||
<c:set var="responsePrefix" value="${responsePrefix} "/>
|
||||
<c:if test="${fn:startsWith(email.subject, responsePrefix)}">
|
||||
<c:set var="responsePrefix" value=""/>
|
||||
</c:if>
|
||||
<input type="hidden" name="subject" value="${responsePrefix}${ib:escapeQuotes(email.subject)}"/>
|
||||
|
||||
<input type="hidden" name="quoteMsgFolder" value="${param.folder}"/>
|
||||
<input type="hidden" name="quoteMsgId" value="${param.messageID}"/>
|
||||
</form>
|
||||
</div>
|
||||
<div class="show-email-delete">
|
||||
<form action="deleteEmail.jsp" method="post">
|
||||
<button type="submit"><ib:message key="Delete"/></button>
|
||||
<input type="hidden" name="folder" value="${param.folder}"/>
|
||||
<input type="hidden" name="messageID" value="${email.messageID}"/>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</ib:requirePassword>
|
||||
|
||||
<jsp:include page="footer.jsp"/>
|
55
WebContent/showFullIdentity.jsp
Normal file
@ -0,0 +1,55 @@
|
||||
<%--
|
||||
Copyright (C) 2009 HungryHobo@mail.i2p
|
||||
|
||||
The GPG fingerprint for HungryHobo@mail.i2p is:
|
||||
6DD3 EAA2 9990 29BC 4AD2 7486 1E2C 7B61 76DC DC12
|
||||
|
||||
This file is part of I2P-Bote.
|
||||
I2P-Bote is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
I2P-Bote is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with I2P-Bote. If not, see <http://www.gnu.org/licenses/>.
|
||||
--%>
|
||||
|
||||
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
|
||||
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
|
||||
<%@ taglib prefix="ib" uri="I2pBoteTags" %>
|
||||
|
||||
<ib:message key="Full Identity" var="title" scope="request"/>
|
||||
<jsp:include page="header.jsp"/>
|
||||
|
||||
<ib:requirePassword>
|
||||
<div class="main">
|
||||
<c:set var="key" value="${param.key}"/>
|
||||
<c:set var="identity" value="${ib:getIdentity(key)}"/>
|
||||
<c:set var="publicName" value="${ib:escapeQuotes(identity.publicName)}"/>
|
||||
|
||||
<div class="full-identity">
|
||||
<p>
|
||||
<ib:message key="Full Email Identity for {0}:">
|
||||
<ib:param value="${publicName}"/>
|
||||
</ib:message>
|
||||
</p>
|
||||
<textarea cols="64" rows="9" readonly="readonly">${identity.fullKey}</textarea>
|
||||
</div>
|
||||
<p/>
|
||||
<div class="warning"><b><ib:message key="Do not show the above information to anyone! It contains your private keys."/></b></div>
|
||||
<p/>
|
||||
<form action="editIdentity.jsp">
|
||||
<input type="hidden" name="key" value="${key}"/>
|
||||
<button type="submit"><ib:message key="Return"/></button>
|
||||
</form>
|
||||
</div>
|
||||
</ib:requirePassword>
|
||||
|
||||
<jsp:include page="footer.jsp"/>
|
@ -26,33 +26,49 @@
|
||||
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
|
||||
<%@ taglib prefix="ib" uri="I2pBoteTags" %>
|
||||
|
||||
<jsp:useBean id="jspHelperBean" class="i2p.bote.web.JSPHelper"/>
|
||||
<c:set var="themeDir" value="themes/${jspHelperBean.configuration.theme}" scope="request"/>
|
||||
<jsp:include page="getStatus.jsp"/>
|
||||
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<link rel="stylesheet" href="i2pbote.css" />
|
||||
<meta http-equiv="refresh" content="20" />
|
||||
<link rel="stylesheet" href="themes/${jspHelperBean.configuration.theme}/i2pbote.css" />
|
||||
<c:if test="${connStatus ne CONNECTED and connStatus ne ERROR}">
|
||||
<meta http-equiv="refresh" content="20" />
|
||||
</c:if>
|
||||
</head>
|
||||
|
||||
<body style="background-color: transparent; margin: 0px;">
|
||||
<body class="iframe-body">
|
||||
|
||||
<div class="statusbox">
|
||||
<c:choose>
|
||||
<c:when test="${connStatus == NOT_STARTED}"><img src="images/redsquare.png"/> <ib:message key="Not Started"/></c:when>
|
||||
<c:when test="${connStatus == DELAY}"><img src="images/yellowsquare.png"/> <ib:message key="Waiting 3 Minutes..."/><br/>
|
||||
<div style="text-align: center">
|
||||
<%-- When the connect button is clicked, refresh the entire page so the buttons in buttonFrame.jsp are enabled --%>
|
||||
<form action="connect.jsp" target="_top" method="GET">
|
||||
<button type="submit"><ib:message key="Connect Now"/></button>
|
||||
</form>
|
||||
</div>
|
||||
<c:when test="${connStatus == NOT_STARTED}"><img src="${themeDir}/images/connect_error.png"/> <ib:message key="Not Started"/></c:when>
|
||||
<c:when test="${connStatus == DELAY}"><img src="${themeDir}/images/connecting.png"/> <ib:message key="Waiting 3 Minutes..."/><br/></c:when>
|
||||
<c:when test="${connStatus == CONNECTING}"><img src="${themeDir}/images/connecting.png"/> <ib:message key="Connecting..."/></c:when>
|
||||
<c:when test="${connStatus == CONNECTED}"><img src="${themeDir}/images/connected.png"/> <ib:message key="Connected"/></c:when>
|
||||
<c:when test="${connStatus == ERROR}"><img src="${themeDir}/images/connect_error.png"/>
|
||||
<a href="connectError.jsp" target="_parent"><ib:message key="Error"/></a>
|
||||
</c:when>
|
||||
<c:when test="${connStatus == CONNECTING}"><img src="images/yellowsquare.png"/> <ib:message key="Connecting..."/></c:when>
|
||||
<c:when test="${connStatus == CONNECTED}"><img src="images/greensquare.png"/> <ib:message key="Connected"/></c:when>
|
||||
<c:when test="${connStatus == ERROR}"><img src="images/redsquare.png"/> <ib:message key="Error"/></c:when>
|
||||
<c:otherwise> <ib:message key="Unknown Status"/></c:otherwise>
|
||||
</c:choose>
|
||||
|
||||
<c:if test="${connStatus == DELAY or connStatus == ERROR}">
|
||||
<%-- Show the connect button --%>
|
||||
<div class="status-frame-connect">
|
||||
<%-- When the connect button is clicked, refresh the entire page so the buttons in buttonFrame.jsp are enabled --%>
|
||||
<form action="connect.jsp" target="_top" method="GET">
|
||||
<button type="submit">
|
||||
<c:if test="${connStatus eq ERROR}">
|
||||
<ib:message key="Retry Connecting"/>
|
||||
</c:if>
|
||||
<c:if test="${connStatus ne ERROR}">
|
||||
<ib:message key="Connect Now"/>
|
||||
</c:if>
|
||||
</button>
|
||||
</form>
|
||||
</div>
|
||||
</c:if>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
|
112
WebContent/submitIdentity.jsp
Normal file
@ -0,0 +1,112 @@
|
||||
<%--
|
||||
Copyright (C) 2009 HungryHobo@mail.i2p
|
||||
|
||||
The GPG fingerprint for HungryHobo@mail.i2p is:
|
||||
6DD3 EAA2 9990 29BC 4AD2 7486 1E2C 7B61 76DC DC12
|
||||
|
||||
This file is part of I2P-Bote.
|
||||
I2P-Bote is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
I2P-Bote is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with I2P-Bote. If not, see <http://www.gnu.org/licenses/>.
|
||||
--%>
|
||||
|
||||
<%@ page language="java" contentType="text/html; charset=UTF-8"
|
||||
pageEncoding="UTF-8"%>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
|
||||
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
|
||||
<%@ taglib prefix="ib" uri="I2pBoteTags" %>
|
||||
|
||||
<%--
|
||||
This JSP creates a new email identity if new=true, or saves
|
||||
an existing one if new=false. If the chosen cryptoImpl is slow
|
||||
at generating keys, a "wait" page is displayed.
|
||||
--%>
|
||||
|
||||
<c:if test="${param.action == 'cancel'}">
|
||||
<jsp:forward page="identities.jsp"/>
|
||||
</c:if>
|
||||
<c:if test="${param.action == 'publish'}">
|
||||
<jsp:forward page="publishDestination.jsp">
|
||||
<jsp:param name="action" value="start"/>
|
||||
</jsp:forward>
|
||||
</c:if>
|
||||
<c:if test="${param.action == 'delete'}">
|
||||
<jsp:forward page="deleteIdentity.jsp"/>
|
||||
</c:if>
|
||||
|
||||
<c:if test="${empty keygenCounter}">
|
||||
<c:set var="keygenCounter" value="0"/>
|
||||
</c:if>
|
||||
<c:choose>
|
||||
<c:when test="${empty param.publicName}">
|
||||
<ib:message key="Please fill in the Public Name field." var="errorMessage" scope="request"/>
|
||||
<jsp:forward page="editIdentity.jsp?new=true"/>
|
||||
</c:when>
|
||||
<%-- If cryptoImpl=4 and a new identity is to be generated, show the wait page --%>
|
||||
<c:when test="${param.new eq 'true' and param.cryptoImpl eq 4 and param.action ne 'wait' and empty param.counter}">
|
||||
<jsp:forward page="submitIdentity.jsp">
|
||||
<jsp:param name="action" value="wait"/>
|
||||
</jsp:forward>
|
||||
</c:when>
|
||||
<%--
|
||||
From the wait page, do an HTTP refresh to start the actual identity generation.
|
||||
The counter is only used if there is a wait page. It prevents another identity
|
||||
from being generated if the user reloads the page in the browser.
|
||||
--%>
|
||||
<c:when test="${param.action eq 'wait'}">
|
||||
<c:set var="counterParam" value="${keygenCounter+1}"/>
|
||||
<%-- The double URL encoding prevents GET from breaking special chars --%>
|
||||
<c:set var="refreshUrl" value="submitIdentity.jsp?counter=${counterParam}&new=${param.new}&cryptoImpl=${param.cryptoImpl}&publicName=${ib:urlEncode(ib:urlEncode(param.publicName))}&description=${param.description}&emailAddress=${param.emailAddress}&isDefault=${param.isDefault}" scope="request"/>
|
||||
<c:set var="refreshInterval" value="0" scope="request"/>
|
||||
<jsp:include page="header.jsp"/>
|
||||
<div class="main">
|
||||
<h2><ib:message key="Please wait..."/></h2>
|
||||
<img src="${themeDir}/images/wait.gif"/>
|
||||
<ib:message key="The Email Identity is being generated. This can take several minutes."/>
|
||||
</div>
|
||||
</c:when>
|
||||
<%-- This is where the actual identity generation takes place --%>
|
||||
<c:when test="${param.counter gt keygenCounter or param.new ne 'true' or param.cryptoImpl ne 4}">
|
||||
<c:set var="publicName" value="${param.publicName}"/>
|
||||
<c:if test="${not empty param.counter}">
|
||||
<c:set var="publicName" value="${ib:urlDecode(publicName)}"/>
|
||||
</c:if>
|
||||
|
||||
<%-- after password entry, go to the wait page if a new "slow" identity is being generated --%>
|
||||
<c:if test="${param.new eq 'true' and param.cryptoImpl eq 4}">
|
||||
<c:set var="actionParam" value="action=wait&"/>
|
||||
</c:if>
|
||||
<c:set var="forwardUrl" value="submitIdentity.jsp?${actionParam}counter=${param.counter}&new=${param.new}&cryptoImpl=${param.cryptoImpl}&publicName=${param.publicName}&description=${param.description}&emailAddress=${param.emailAddress}&isDefault=${param.isDefault}"/>
|
||||
<ib:requirePassword forwardUrl="${forwardUrl}">
|
||||
<c:set var="errorMessage" value="${ib:createOrModifyIdentity(param.new, param.cryptoImpl, param.key, publicName, param.description, param.emailAddress, param.isDefault=='on')}"/>
|
||||
<c:if test="${not empty param.counter}">
|
||||
<c:set var="keygenCounter" value="${param.counter}" scope="session"/>
|
||||
</c:if>
|
||||
<c:if test="${empty errorMessage}">
|
||||
<ib:message key="The email identity has been saved." var="infoMessage"/>
|
||||
<jsp:forward page="saveIdentities.jsp">
|
||||
<jsp:param name="infoMessage" value="${infoMessage}"/>
|
||||
</jsp:forward>
|
||||
</c:if>
|
||||
<c:if test="${!empty errorMessage}">
|
||||
<jsp:forward page="editIdentity.jsp">
|
||||
<jsp:param name="errorMessage" value="${errorMessage}"/>
|
||||
</jsp:forward>
|
||||
</c:if>
|
||||
</ib:requirePassword>
|
||||
</c:when>
|
||||
<%-- If the user reloads after an identity has been generated and the wait mechanism was used, just show the identities page --%>
|
||||
<c:when test="${empty param.counter or param.counter le keygenCounter}">
|
||||
<jsp:forward page="identities.jsp"/>
|
||||
</c:when>
|
||||
</c:choose>
|
809
WebContent/themes/lblue/i2pbote.css
Normal file
@ -0,0 +1,809 @@
|
||||
/* Based on the router console css */
|
||||
|
||||
body {
|
||||
margin: 15px 0 0 10px;
|
||||
padding: 0em;
|
||||
text-align: center;
|
||||
background: #eef;
|
||||
color: #000;
|
||||
font: 9pt/130% "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif;
|
||||
}
|
||||
|
||||
iframe {
|
||||
border: none;
|
||||
}
|
||||
|
||||
.iframe-body {
|
||||
background-color: transparent;
|
||||
border: none;
|
||||
margin: 0px;
|
||||
}
|
||||
|
||||
.button-frame {
|
||||
width: 100%;
|
||||
height: 55px;
|
||||
}
|
||||
|
||||
.folders-frame {
|
||||
width: 100%;
|
||||
height: 160px;
|
||||
}
|
||||
|
||||
.status-frame {
|
||||
width: 100%;
|
||||
height: 40px;
|
||||
}
|
||||
|
||||
.status-frame-connect {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.titlebar {
|
||||
margin: 0px 20px 20px 240px;
|
||||
background-color: #fff;
|
||||
color: #310;
|
||||
padding: 0 15px 15px 25px;
|
||||
-moz-border-radius: 4px;
|
||||
-khtml-border-radius: 4px;
|
||||
border-radius: 4px;
|
||||
border: 1px solid #001;
|
||||
text-align: center;
|
||||
-moz-box-shadow: inset 0px 0px 1px 0px #002;
|
||||
white-space: normal;
|
||||
background: #ddf url('images/background.png');
|
||||
opacity: 1.0;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.title {
|
||||
font: normal bold 20pt/120% 'Lucida Sans Unicode', 'Bitstream Vera Sans', Verdana, Tahoma, Helvetica, sans-serif;
|
||||
font-weight: bold;
|
||||
letter-spacing: 0.15em;
|
||||
text-shadow: 0px 0px 1px rgba(0, 0, 148, 0.9);
|
||||
}
|
||||
|
||||
.subtitle {
|
||||
font-size: 8pt;
|
||||
color: #cf0606;
|
||||
letter-spacing: 5pt;
|
||||
text-shadow: 0px 0px 1px rgba(148, 0, 0, 0.9);
|
||||
}
|
||||
|
||||
.checkmail {
|
||||
font: bold 8pt "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif;
|
||||
float: left;
|
||||
width: 50%;
|
||||
}
|
||||
|
||||
.compose {
|
||||
font: bold 8pt "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif;
|
||||
float: right;
|
||||
width: 50%;
|
||||
}
|
||||
|
||||
.lastcheck {
|
||||
font: bold 8pt "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif;
|
||||
float: left;
|
||||
}
|
||||
|
||||
.password {
|
||||
float: right;
|
||||
margin: 5px;
|
||||
}
|
||||
|
||||
.updateMessage {
|
||||
margin: 0px 0px 5px 15px;
|
||||
text-align: left;
|
||||
width: 190px;
|
||||
float: left;
|
||||
}
|
||||
|
||||
.updateMessage a:link, a:visited {
|
||||
color: #0b4;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.menubox {
|
||||
float: left;
|
||||
width: 180px;
|
||||
margin: 0px 0px 10px 10px;
|
||||
padding: 10px;
|
||||
text-align: left;
|
||||
border: 1px solid #000033;
|
||||
background: #ddf url('images/background.png');
|
||||
color: #000;
|
||||
font-size: 8pt;
|
||||
clear: left;
|
||||
-moz-border-radius: 4px;
|
||||
-khtml-border-radius: 4px;
|
||||
border-radius: 4px;
|
||||
-moz-box-shadow: inset 0px 0px 1px 0px #002;
|
||||
}
|
||||
|
||||
.menubox a:link, .menubox a:visited {
|
||||
text-shadow: 0px 0px 1px rgba(0, 0, 32, 0.5);
|
||||
}
|
||||
|
||||
.menubox a:hover {
|
||||
text-shadow: 0px 0px 0.5px rgba(255, 255, 255, 0.7);
|
||||
color: #f60;
|
||||
}
|
||||
|
||||
.menubox h2 {
|
||||
font-size: 12pt;
|
||||
color: #001;
|
||||
letter-spacing: 0.05em;
|
||||
text-shadow: 0px 0px 1px rgba(0, 0, 64, 0.5);
|
||||
word-wrap: none;
|
||||
}
|
||||
|
||||
.statusbox {
|
||||
font-size: 8pt;
|
||||
font-weight: bold;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.folderbox {
|
||||
font-size: 8pt;
|
||||
font-weight: bold;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.main {
|
||||
position: relative;
|
||||
margin: 0px 20px 20px 240px;
|
||||
padding: 0 15px 15px 25px;
|
||||
background: #ddf url('images/background.png');
|
||||
color: #001;
|
||||
font: 9pt/130% "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif;
|
||||
text-align: left;
|
||||
border: 1px solid #000033;
|
||||
-moz-border-radius: 4px;
|
||||
-khtml-border-radius: 4px;
|
||||
border-radius: 4px;
|
||||
-moz-box-shadow: inset 0px 0px 1px 0px #002;
|
||||
}
|
||||
|
||||
.foldermain {
|
||||
padding: 0 15px 15px 15px;
|
||||
}
|
||||
|
||||
.emailtext {
|
||||
margin: 0px 20px 20px 240px;
|
||||
padding: 0 15px 15px 25px;
|
||||
background: #cce2ff;
|
||||
color: #001;
|
||||
font: 9pt/130% "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif;
|
||||
text-align: left;
|
||||
border: 1px solid #000033;
|
||||
-moz-border-radius: 4px;
|
||||
-khtml-border-radius: 4px;
|
||||
border-radius: 4px;
|
||||
-moz-box-shadow: inset 0px 0px 1px 0px #002;
|
||||
}
|
||||
|
||||
.infoMessage {
|
||||
margin: 0px 20px 5px 240px;
|
||||
text-align: left;
|
||||
color: green;
|
||||
}
|
||||
|
||||
.errorMessage {
|
||||
margin: 0px 20px 5px 240px;
|
||||
text-align: left;
|
||||
color: red;
|
||||
}
|
||||
|
||||
.stackTrace {
|
||||
white-space: pre;
|
||||
}
|
||||
|
||||
.subheading {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.warning {
|
||||
color: red;
|
||||
}
|
||||
|
||||
img {
|
||||
border: none;
|
||||
}
|
||||
|
||||
a:active {
|
||||
color: #900;
|
||||
}
|
||||
|
||||
a:link {
|
||||
color: #007;
|
||||
text-decoration: none;
|
||||
font-weight: bold;
|
||||
word-wrap: break-word;
|
||||
}
|
||||
|
||||
a:visited {
|
||||
color: #606;
|
||||
text-decoration: none;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
a:hover {
|
||||
color: #f60;
|
||||
text-decoration: underline;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
a:active {
|
||||
color: #f93;
|
||||
text-decoration: underline;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
button, button:visited {
|
||||
font: bold 8pt "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif;
|
||||
border: 1px outset #999;
|
||||
padding: 1px 3px;
|
||||
background: #ddf !important;
|
||||
text-decoration: none;
|
||||
border-radius: 4px;
|
||||
-moz-border-radius: 4px;
|
||||
-khtml-border-radius: 4px;
|
||||
margin: 0 1px;
|
||||
text-align: center;
|
||||
min-width: 80px;
|
||||
-moz-box-shadow: inset 0px 2px 8px 0px #fff;
|
||||
color: #006;
|
||||
}
|
||||
|
||||
button:hover {
|
||||
border: 1px solid #f60;
|
||||
background: #f60 !important;
|
||||
color: #fff;
|
||||
-moz-box-shadow: inset 0px 0px 0px 1px #fff;
|
||||
}
|
||||
|
||||
button:active {
|
||||
border: 1px solid #f60;
|
||||
background: #001 !important;
|
||||
color: #f60;
|
||||
-moz-box-shadow: inset 0px 0px 0px 1px #f60;
|
||||
}
|
||||
|
||||
button[disabled] {
|
||||
border: 1px outset #999;
|
||||
background: #ddf !important;
|
||||
color: #666;
|
||||
-moz-box-shadow: inset 0px 0px 0px 1px #999;
|
||||
}
|
||||
|
||||
.underline {
|
||||
border-bottom: 1px solid #000022;
|
||||
padding: 5px 0px 5px 0px;
|
||||
margin: 0px 0px 10px 0px;
|
||||
}
|
||||
|
||||
input {
|
||||
background: #eef;
|
||||
color: #001;
|
||||
margin: 5px 10px 5px 10px;
|
||||
padding: 4px 2px;
|
||||
font: bold 8pt "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif;
|
||||
border: 1px solid #001;
|
||||
text-decoration: none;
|
||||
min-width: 110px;
|
||||
}
|
||||
|
||||
input, input:visited {
|
||||
border: 1px outset #999;
|
||||
background: #ddf;
|
||||
color: #001;
|
||||
margin: 5px;
|
||||
font: bold 8pt "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif;
|
||||
padding: 1px 2px;
|
||||
text-decoration: none;
|
||||
min-width: 110px;
|
||||
border-radius: 4px;
|
||||
-moz-border-radius: 4px;
|
||||
-khtml-border-radius: 4px;
|
||||
-moz-box-shadow: inset 0px 2px 8px 0px #fff;
|
||||
color: #006;
|
||||
opacity: 0.9;
|
||||
}
|
||||
|
||||
input:hover {
|
||||
background: #f60;
|
||||
color: #fff;
|
||||
border: 1px solid #f60;
|
||||
opacity: 1.0;
|
||||
-moz-box-shadow: inset 0px 0px 0px 1px #fff;
|
||||
}
|
||||
|
||||
input:active {
|
||||
background: #002;
|
||||
color: #f60;
|
||||
border: 1px solid #f60;
|
||||
opacity: 1.0;
|
||||
-moz-box-shadow: inset 0px 0px 0px 1px #f60;
|
||||
}
|
||||
|
||||
input[type=text] {
|
||||
background: #eef;
|
||||
color: #001;
|
||||
margin: 5px;
|
||||
padding: 5px;
|
||||
font: bold 8pt "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif;
|
||||
border: 1px solid #001;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
input[type=checkbox] {
|
||||
min-width: 10px; /* for Chrome */
|
||||
border: 0 !important;
|
||||
}
|
||||
|
||||
textarea {
|
||||
width: 100%;
|
||||
padding: 5px;
|
||||
margin: 5px;
|
||||
background: #eef;
|
||||
color: #003;
|
||||
border-radius: 4px;
|
||||
-moz-border-radius: 4px;
|
||||
-khtml-border-radius: 4px;
|
||||
font: 9pt/130% "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif;
|
||||
min-height: 100px;
|
||||
border: 1px solid #001;
|
||||
}
|
||||
|
||||
submit {
|
||||
background: #f00;
|
||||
color: #eef;
|
||||
margin: 10px 2px 10px 0;
|
||||
padding: 2px;
|
||||
font-family: "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif;
|
||||
font-weight: bold;
|
||||
border: 1px solid #001;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
select {
|
||||
background: #eef;
|
||||
color: #003;
|
||||
padding: 2px;
|
||||
margin: 5px;
|
||||
border: 1px solid #001;
|
||||
font: 9pt "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif;
|
||||
border-radius: 4px;
|
||||
-moz-border-radius: 4px;
|
||||
-khtml-border-radius: 4px;
|
||||
text-align: left !important;
|
||||
}
|
||||
|
||||
table {
|
||||
table-layout: fixed;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
table td, th {
|
||||
padding-left: 10px;
|
||||
padding-top: 3px;
|
||||
background: url('images/background.png');
|
||||
white-space: nowrap;
|
||||
overflow-x: hidden;
|
||||
}
|
||||
|
||||
.even-table-cell td {
|
||||
background: url('images/background.png');
|
||||
}
|
||||
|
||||
.odd-table-cell td {
|
||||
background: url('images/background-alt.png');
|
||||
}
|
||||
|
||||
.deleteIdentityBtn {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.addtl-text {
|
||||
font-weight: normal;
|
||||
font-size: 0.8em;
|
||||
}
|
||||
|
||||
.field-label {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.field-label-multiline {
|
||||
font-weight: bold;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
.destination {
|
||||
color: #003;
|
||||
font: 8pt "Lucida Console", "DejaVu Sans Mono", Courier, mono;
|
||||
word-wrap: break-word;
|
||||
}
|
||||
|
||||
.hidden-text {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.identity-form-label {
|
||||
position: absolute;
|
||||
margin-top: 10px;
|
||||
margin-left: 5px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.identity-form-value {
|
||||
top: 0px;
|
||||
margin-left: 220px;
|
||||
margin-right: 5px;
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
.identity-form-checkbox {
|
||||
top: 0px;
|
||||
margin-left: 220px;
|
||||
margin-right: 5px;
|
||||
margin-top: 7px;
|
||||
}
|
||||
|
||||
.identity-form-picture img {
|
||||
top: 0px;
|
||||
margin-left: 220px;
|
||||
margin-right: 5px;
|
||||
margin-top: 10px;
|
||||
width: 100px;
|
||||
}
|
||||
|
||||
.identity-form-text {
|
||||
top: 0px;
|
||||
margin-left: 220px;
|
||||
margin-right: 5px;
|
||||
margin-top: 10px;
|
||||
white-space: pre;
|
||||
font-family: monospace;
|
||||
white-space: -pre-wrap;
|
||||
white-space: pre-wrap;
|
||||
word-wrap: break-word;
|
||||
}
|
||||
|
||||
.identity-buttons {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.identity-delete {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.identity-buttons, .identity-delete {
|
||||
display: inline-block;
|
||||
width: 250px;
|
||||
}
|
||||
|
||||
.full-identity {
|
||||
margin-right: 10px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.publish-form-label {
|
||||
position: absolute;
|
||||
margin-top: 10px;
|
||||
margin-left: 5px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.publish-form-value {
|
||||
top: 0px;
|
||||
margin-left: 180px;
|
||||
margin-right: 5px;
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
.publish-form-value textarea {
|
||||
width: 600px;
|
||||
}
|
||||
|
||||
.contact-detail-container {
|
||||
margin: 0px auto;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.contact-detail-left {
|
||||
width: 100px;
|
||||
float: left;
|
||||
font-weight: bold;
|
||||
padding-left: 10px;
|
||||
padding-right: 15px;
|
||||
padding-bottom: 10px;
|
||||
}
|
||||
|
||||
.contact-detail-left img {
|
||||
width: 100%;
|
||||
padding-bottom: 5px;
|
||||
}
|
||||
|
||||
.contact-detail-text
|
||||
{
|
||||
width: 100%;
|
||||
padding-left: 10px;
|
||||
padding-bottom: 10px;
|
||||
white-space: pre;
|
||||
font-family: monospace;
|
||||
white-space: -pre-wrap;
|
||||
white-space: pre-wrap;
|
||||
word-wrap: break-word;
|
||||
}
|
||||
|
||||
.contact-detail-dest
|
||||
{
|
||||
width: 100%;
|
||||
padding-left: 10px;
|
||||
padding-bottom: 10px;
|
||||
word-wrap: break-word;
|
||||
}
|
||||
|
||||
.contact-form-label {
|
||||
position: absolute;
|
||||
margin-top: 10px;
|
||||
margin-left: 5px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.contact-form-value {
|
||||
top: 0px;
|
||||
margin-left: 120px;
|
||||
margin-right: 5px;
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
.contact-form-picture img {
|
||||
top: 0px;
|
||||
margin-left: 120px;
|
||||
margin-right: 5px;
|
||||
margin-top: 10px;
|
||||
width: 100px;
|
||||
}
|
||||
|
||||
.contact-form-text {
|
||||
top: 0px;
|
||||
margin-left: 120px;
|
||||
margin-right: 5px;
|
||||
margin-top: 10px;
|
||||
white-space: pre;
|
||||
font-family: monospace;
|
||||
white-space: -pre-wrap;
|
||||
white-space: pre-wrap;
|
||||
word-wrap: break-word;
|
||||
}
|
||||
|
||||
.header-column-replied {
|
||||
width: 8px;
|
||||
}
|
||||
|
||||
.header-column-from {
|
||||
width: 18%;
|
||||
}
|
||||
|
||||
.header-column-known {
|
||||
width: 4%;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.header-column-delivery {
|
||||
width: 8%;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.header-column-to {
|
||||
width: 18%;
|
||||
}
|
||||
|
||||
.header-column-subject {
|
||||
width: 30%;
|
||||
}
|
||||
|
||||
.header-column-date {
|
||||
width: 23%;
|
||||
}
|
||||
|
||||
.header-column-status {
|
||||
width: 100px;
|
||||
}
|
||||
|
||||
.header-column-trash {
|
||||
width: 30px;
|
||||
}
|
||||
|
||||
.header-column-default {
|
||||
width: 8%;
|
||||
}
|
||||
|
||||
.data-column-default {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.header-column-public-name {
|
||||
width: 30%;
|
||||
}
|
||||
|
||||
.header-column-description {
|
||||
width: 35%;
|
||||
}
|
||||
|
||||
.header-column-id-email-dest {
|
||||
width: 27%;
|
||||
}
|
||||
|
||||
.header-column-check {
|
||||
width: 3%;
|
||||
}
|
||||
|
||||
.header-column-name {
|
||||
width: 30%;
|
||||
}
|
||||
|
||||
.header-column-addr-email-dest {
|
||||
width: 72%;
|
||||
}
|
||||
|
||||
.sig-invalid {
|
||||
color: red;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.anon-sender {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
.sender-known {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.deliveryComplete {
|
||||
color: green;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.deliveryIncomplete {
|
||||
color: black;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.folder-item-new a {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.folder-item-old a {
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
.email-form-button-send {
|
||||
position: absolute;
|
||||
right: 20px;
|
||||
top: 10px;
|
||||
}
|
||||
|
||||
.email-form-button-row {
|
||||
top: 0px;
|
||||
margin-left: 120px;
|
||||
text-align: right;
|
||||
width: 585px;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.email-form-label {
|
||||
position: absolute;
|
||||
padding-top: 10px;
|
||||
padding-left: 5px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.email-form-recipient-label {
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
.email-form-recipient-value {
|
||||
top: 0px;
|
||||
margin-left: 120px;
|
||||
max-width: 600px;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.email-form-recipient-field {
|
||||
width: 475px;
|
||||
}
|
||||
|
||||
.email-form-value {
|
||||
top: 0px;
|
||||
margin-left: 120px;
|
||||
margin-right: 5px;
|
||||
}
|
||||
|
||||
.email-form-subject-field {
|
||||
margin-right: 5px;
|
||||
width: 567px;
|
||||
}
|
||||
|
||||
.email-form-attach-label {
|
||||
position: absolute;
|
||||
padding-left: 5px;
|
||||
}
|
||||
|
||||
.email-form-attach-files {
|
||||
padding-left: 5px;
|
||||
padding-bottom: 3px;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.email-form-attach-item {
|
||||
position: absolute;
|
||||
width: 300px;
|
||||
overflow-x: hidden;
|
||||
}
|
||||
|
||||
.email-form-attach-size {
|
||||
color: #777;
|
||||
}
|
||||
|
||||
.email-form-attach-remove {
|
||||
margin-left: 305px;
|
||||
}
|
||||
|
||||
.email-form-attach-small {
|
||||
font-size: 0.8em;
|
||||
padding-left: 5px;
|
||||
}
|
||||
|
||||
.show-email-value {
|
||||
margin-left: 120px;
|
||||
margin-right: 5px;
|
||||
padding-top: 10px;
|
||||
min-height: 1em;
|
||||
}
|
||||
|
||||
.show-email-invalid-sig {
|
||||
color: red;
|
||||
}
|
||||
|
||||
.show-email-reply {
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
.show-email-delete {
|
||||
margin-left: 120px;
|
||||
}
|
||||
|
||||
.password-label {
|
||||
position: absolute;
|
||||
padding-top: 5px;
|
||||
}
|
||||
|
||||
.password-field {
|
||||
margin-left: 115px;
|
||||
}
|
||||
|
||||
.contributor-category {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.contributor-name {
|
||||
margin-left: 100px;
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
.contributor-role {
|
||||
color: #555;
|
||||
margin-left: 250px;
|
||||
margin-top: 3px;
|
||||
}
|
||||
|
||||
wbr:after { content: "\00200B" } /* For Opera */
|
||||
|
||||
.ellipsis {
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
-o-text-overflow: ellipsis;
|
||||
}
|
Before Width: | Height: | Size: 209 B After Width: | Height: | Size: 209 B |
Before Width: | Height: | Size: 956 B After Width: | Height: | Size: 956 B |
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.4 KiB |
BIN
WebContent/themes/lblue/images/clear_password.png
Normal file
After Width: | Height: | Size: 633 B |
Before Width: | Height: | Size: 412 B After Width: | Height: | Size: 412 B |
Before Width: | Height: | Size: 393 B After Width: | Height: | Size: 393 B |
Before Width: | Height: | Size: 396 B After Width: | Height: | Size: 396 B |
Before Width: | Height: | Size: 544 B After Width: | Height: | Size: 544 B |
Before Width: | Height: | Size: 475 B After Width: | Height: | Size: 475 B |
Before Width: | Height: | Size: 478 B After Width: | Height: | Size: 478 B |
Before Width: | Height: | Size: 600 B After Width: | Height: | Size: 600 B |
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 2.1 KiB |
BIN
WebContent/themes/lblue/images/warning.png
Normal file
After Width: | Height: | Size: 435 B |
793
WebContent/themes/vanilla/i2pbote.css
Normal file
@ -0,0 +1,793 @@
|
||||
/* Based on the I2PSnark theme "Vanilla" by dr|z3d */
|
||||
|
||||
body {
|
||||
margin: 15px 0 0 10px;
|
||||
padding: 0em;
|
||||
text-align: center;
|
||||
background: #eef url('images/graytile.png');
|
||||
color: #000;
|
||||
font: 9pt/130% "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif;
|
||||
}
|
||||
|
||||
iframe {
|
||||
border: none;
|
||||
}
|
||||
|
||||
.iframe-body {
|
||||
background: #ffd;
|
||||
background-color: transparent;
|
||||
border: none;
|
||||
margin: 0px;
|
||||
}
|
||||
|
||||
.button-frame {
|
||||
width: 100%;
|
||||
height: 55px;
|
||||
}
|
||||
|
||||
.folders-frame {
|
||||
width: 100%;
|
||||
height: 160px;
|
||||
}
|
||||
|
||||
.status-frame {
|
||||
width: 100%;
|
||||
height: 40px;
|
||||
}
|
||||
|
||||
.status-frame-connect {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.titlebar {
|
||||
margin: 0px 20px 20px 240px;
|
||||
background-color: #fff;
|
||||
color: #310;
|
||||
padding: 0 15px 15px 25px;
|
||||
-moz-border-radius: 4px;
|
||||
-khtml-border-radius: 4px;
|
||||
border-radius: 4px;
|
||||
border: 1px solid #001;
|
||||
text-align: center;
|
||||
-moz-box-shadow: inset 0px 0px 1px 0px #002;
|
||||
white-space: normal;
|
||||
background: #ddf url('images/background.png');
|
||||
opacity: 1.0;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.title {
|
||||
font: normal bold 20pt/120% 'Lucida Sans Unicode', 'Bitstream Vera Sans', Verdana, Tahoma, Helvetica, sans-serif;
|
||||
font-weight: bold;
|
||||
letter-spacing: 0.15em;
|
||||
text-shadow: 0px 0px 1px rgba(0, 0, 148, 0.9);
|
||||
}
|
||||
|
||||
.subtitle {
|
||||
font-size: 8pt;
|
||||
color: #cf0606;
|
||||
letter-spacing: 5pt;
|
||||
text-shadow: 0px 0px 1px rgba(148, 0, 0, 0.9);
|
||||
}
|
||||
|
||||
.checkmail {
|
||||
font: bold 8pt "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif;
|
||||
float: left;
|
||||
width: 50%;
|
||||
}
|
||||
|
||||
.compose {
|
||||
font: bold 8pt "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif;
|
||||
float: right;
|
||||
width: 50%;
|
||||
}
|
||||
|
||||
.lastcheck {
|
||||
margin: 7px 0px 0px 0px;
|
||||
font: bold 8pt "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif;
|
||||
float: left;
|
||||
}
|
||||
|
||||
.password {
|
||||
float: right;
|
||||
margin: 5px;
|
||||
}
|
||||
|
||||
.updateMessage {
|
||||
margin: 0px 0px 5px 15px;
|
||||
text-align: left;
|
||||
width: 190px;
|
||||
float: left;
|
||||
}
|
||||
|
||||
.updateMessage a:link, a:visited {
|
||||
color: #0b4;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.menubox {
|
||||
float: left;
|
||||
width: 180px;
|
||||
margin: 0px 0px 10px 10px;
|
||||
padding: 10px;
|
||||
text-align: left;
|
||||
border: 1px solid #000033;
|
||||
background: #ddf url('images/background.png');
|
||||
color: #000;
|
||||
font-size: 8pt;
|
||||
clear: left;
|
||||
-moz-border-radius: 4px;
|
||||
-khtml-border-radius: 4px;
|
||||
border-radius: 4px;
|
||||
-moz-box-shadow: inset 0px 0px 1px 0px #002;
|
||||
}
|
||||
|
||||
.menubox a:link, .menubox a:visited {
|
||||
text-shadow: 0px 0px 1px rgba(0, 0, 32, 0.5);
|
||||
}
|
||||
|
||||
.menubox a:hover {
|
||||
text-shadow: 0px 0px 0.5px rgba(255, 255, 255, 0.7);
|
||||
color: #f60;
|
||||
}
|
||||
|
||||
.menubox h2 {
|
||||
font-size: 12pt;
|
||||
color: #001;
|
||||
letter-spacing: 0.05em;
|
||||
text-shadow: 0px 0px 1px rgba(0, 0, 64, 0.5);
|
||||
wordwrap: none;
|
||||
}
|
||||
|
||||
.statusbox {
|
||||
font-size: 8pt;
|
||||
font-weight: bold;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.folderbox {
|
||||
font-size: 8pt;
|
||||
font-weight: bold;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.main, .emailtext {
|
||||
margin: 0px 20px 20px 240px;
|
||||
padding: 0 15px 15px 25px;
|
||||
background: #eef url('images/background.png');
|
||||
color: #001;
|
||||
font: 9pt/130% "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif;
|
||||
text-align: left;
|
||||
border: 1px solid #000033;
|
||||
-moz-border-radius: 4px;
|
||||
-khtml-border-radius: 4px;
|
||||
border-radius: 4px;
|
||||
-moz-box-shadow: inset 0px 0px 1px 0px #002;
|
||||
}
|
||||
|
||||
.foldermain {
|
||||
padding: 0 15px 15px 15px;
|
||||
}
|
||||
|
||||
.infoMessage {
|
||||
margin: 0px 20px 5px 240px;
|
||||
text-align: left;
|
||||
color: #14f;
|
||||
}
|
||||
|
||||
.errorMessage {
|
||||
margin: 0px 20px 5px 240px;
|
||||
text-align: left;
|
||||
color: red;
|
||||
}
|
||||
|
||||
.stackTrace {
|
||||
white-space: pre;
|
||||
}
|
||||
|
||||
.subheading {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.warning {
|
||||
color: red;
|
||||
}
|
||||
|
||||
img {
|
||||
border: none;
|
||||
}
|
||||
|
||||
a:active {
|
||||
color: #900;
|
||||
}
|
||||
|
||||
a:link {
|
||||
color: #d30;
|
||||
text-decoration: none;
|
||||
font-weight: bold;
|
||||
word-wrap: break-word;
|
||||
}
|
||||
|
||||
a:visited {
|
||||
color: #a60;
|
||||
text-decoration: none;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
a:hover {
|
||||
color: #f60;
|
||||
text-decoration: underline;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
a:active {
|
||||
color: #fb0;
|
||||
text-decoration: underline;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
button, button:visited {
|
||||
font: bold 8pt "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif;
|
||||
border: 1px outset #bbb;
|
||||
padding: 1px 3px;
|
||||
background: #fef url("images/bling.png");
|
||||
color: #f30;
|
||||
text-decoration: none;
|
||||
border-radius: 4px;
|
||||
-moz-border-radius: 4px;
|
||||
-khtml-border-radius: 4px;
|
||||
margin: 0 1px;
|
||||
text-align: center;
|
||||
min-width: 80px;
|
||||
-moz-box-shadow: inset 0px 2px 8px 0px #fff;
|
||||
}
|
||||
|
||||
button:not([disabled]):hover {
|
||||
border: 1px solid #f60;
|
||||
background: #f60 !important;
|
||||
color: #fff;
|
||||
-moz-box-shadow: inset 0px 0px 0px 1px #fff;
|
||||
}
|
||||
|
||||
button:not([disabled]):active {
|
||||
border: 1px solid #f60;
|
||||
background: #001 !important;
|
||||
color: #f60;
|
||||
-moz-box-shadow: inset 0px 0px 0px 1px #f60;
|
||||
}
|
||||
|
||||
button[disabled], button[disabled]:active, button[disabled]:hover {
|
||||
border: 1px outset #999;
|
||||
background: #f3efc7;
|
||||
color: GrayText;
|
||||
-moz-box-shadow: inset 0px 0px 0px 1px #999;
|
||||
}
|
||||
|
||||
.underline {
|
||||
border-bottom: 1px solid #000022;
|
||||
padding: 5px 0px 5px 0px;
|
||||
margin: 0px 0px 10px 0px;
|
||||
}
|
||||
|
||||
input {
|
||||
background: #fff;
|
||||
color: #500;
|
||||
margin: 5px 10px 5px 10px;
|
||||
padding: 4px 2px;
|
||||
font: bold 8pt "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif;
|
||||
border: 1px solid #001;
|
||||
text-decoration: none;
|
||||
min-width: 110px;
|
||||
}
|
||||
|
||||
input, input:visited {
|
||||
border: 1px outset #999;
|
||||
background: #fff;
|
||||
color: #500;
|
||||
margin: 5px;
|
||||
font: bold 8pt "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif;
|
||||
padding: 1px 2px;
|
||||
text-decoration: none;
|
||||
min-width: 110px;
|
||||
border-radius: 4px;
|
||||
-moz-border-radius: 4px;
|
||||
-khtml-border-radius: 4px;
|
||||
-moz-box-shadow: inset 0px 2px 8px 0px #fff;
|
||||
color: #006;
|
||||
opacity: 0.9;
|
||||
}
|
||||
|
||||
input:hover {
|
||||
background: #f60;
|
||||
color: #fff;
|
||||
border: 1px solid #f60;
|
||||
opacity: 1.0;
|
||||
-moz-box-shadow: inset 0px 0px 0px 1px #fff;
|
||||
}
|
||||
|
||||
input:active {
|
||||
background: #002;
|
||||
color: #f60;
|
||||
border: 1px solid #f60;
|
||||
opacity: 1.0;
|
||||
-moz-box-shadow: inset 0px 0px 0px 1px #f60;
|
||||
}
|
||||
|
||||
input[type=text] {
|
||||
background: #fff;
|
||||
color: #001;
|
||||
margin: 5px;
|
||||
padding: 5px;
|
||||
font: bold 8pt "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif;
|
||||
border: 1px solid #001;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
input[type=checkbox] {
|
||||
min-width: 10px; /* for Chrome */
|
||||
border: 0 !important;
|
||||
}
|
||||
|
||||
textarea {
|
||||
width: 100%;
|
||||
padding: 5px;
|
||||
margin: 5px;
|
||||
background: #fff;
|
||||
color: #500;
|
||||
border-radius: 4px;
|
||||
-moz-border-radius: 4px;
|
||||
-khtml-border-radius: 4px;
|
||||
font: 9pt/130% "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif;
|
||||
min-height: 100px;
|
||||
border: 1px solid #001;
|
||||
}
|
||||
|
||||
submit {
|
||||
background: #fff;
|
||||
color: #500;
|
||||
margin: 10px 2px 10px 0;
|
||||
padding: 2px;
|
||||
font-family: "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif;
|
||||
font-weight: bold;
|
||||
border: 1px solid #001;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
select {
|
||||
background: #fff;
|
||||
color: #500;
|
||||
padding: 2px;
|
||||
margin: 5px;
|
||||
border: 1px solid #001;
|
||||
font: 9pt "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif;
|
||||
border-radius: 4px;
|
||||
-moz-border-radius: 4px;
|
||||
-khtml-border-radius: 4px;
|
||||
text-align: left !important;
|
||||
}
|
||||
|
||||
table {
|
||||
table-layout: fixed;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
table td, th {
|
||||
padding-left: 10px;
|
||||
padding-top: 3px;
|
||||
background: url('images/background.png');
|
||||
white-space: nowrap;
|
||||
overflow-x: hidden;
|
||||
}
|
||||
|
||||
.even-table-cell td {
|
||||
background: url('images/background.png');
|
||||
}
|
||||
|
||||
.odd-table-cell td {
|
||||
background: url('images/background-alt.png');
|
||||
}
|
||||
|
||||
.deleteIdentityBtn {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.addtl-text {
|
||||
font-weight: normal;
|
||||
font-size: 0.8em;
|
||||
}
|
||||
|
||||
.field-label {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.field-label-multiline {
|
||||
font-weight: bold;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
.destination {
|
||||
color: #003;
|
||||
font: 8pt "Lucida Console", "DejaVu Sans Mono", Courier, mono;
|
||||
word-wrap: break-word;
|
||||
}
|
||||
|
||||
.hidden-text {
|
||||
display: none;
|
||||
outline: none;
|
||||
}
|
||||
|
||||
.identity-form-label {
|
||||
position: absolute;
|
||||
margin-top: 10px;
|
||||
margin-left: 5px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.identity-form-value {
|
||||
top: 0px;
|
||||
margin-left: 220px;
|
||||
margin-right: 5px;
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
.identity-form-checkbox {
|
||||
top: 0px;
|
||||
margin-left: 220px;
|
||||
margin-right: 5px;
|
||||
margin-top: 7px;
|
||||
}
|
||||
|
||||
.identity-form-picture img {
|
||||
top: 0px;
|
||||
margin-left: 220px;
|
||||
margin-right: 5px;
|
||||
margin-top: 10px;
|
||||
width: 100px;
|
||||
}
|
||||
|
||||
.identity-form-text {
|
||||
top: 0px;
|
||||
margin-left: 220px;
|
||||
margin-right: 5px;
|
||||
margin-top: 10px;
|
||||
white-space: pre;
|
||||
font-family: monospace;
|
||||
white-space: -pre-wrap;
|
||||
white-space: pre-wrap;
|
||||
word-wrap: break-word;
|
||||
}
|
||||
|
||||
.identity-buttons {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.identity-delete {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.identity-buttons, .identity-delete {
|
||||
display: inline-block;
|
||||
width: 250px;
|
||||
}
|
||||
|
||||
.full-identity {
|
||||
margin-right: 10px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.publish-form-label {
|
||||
position: absolute;
|
||||
margin-top: 10px;
|
||||
margin-left: 5px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.publish-form-value {
|
||||
top: 0px;
|
||||
margin-left: 180px;
|
||||
margin-right: 5px;
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
.publish-form-value textarea {
|
||||
width: 600px;
|
||||
}
|
||||
|
||||
.contact-detail-container {
|
||||
margin: 0px auto;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.contact-detail-left {
|
||||
width: 100px;
|
||||
float: left;
|
||||
font-weight: bold;
|
||||
padding-left: 10px;
|
||||
padding-right: 15px;
|
||||
padding-bottom: 10px;
|
||||
}
|
||||
|
||||
.contact-detail-left img {
|
||||
width: 100%;
|
||||
padding-bottom: 5px;
|
||||
}
|
||||
|
||||
.contact-detail-text
|
||||
{
|
||||
width: 100%;
|
||||
padding-left: 10px;
|
||||
padding-bottom: 10px;
|
||||
white-space: pre;
|
||||
font-family: monospace;
|
||||
white-space: -pre-wrap;
|
||||
white-space: pre-wrap;
|
||||
word-wrap: break-word;
|
||||
}
|
||||
|
||||
.contact-detail-dest
|
||||
{
|
||||
width: 100%;
|
||||
padding-left: 10px;
|
||||
padding-bottom: 10px;
|
||||
word-wrap: break-word;
|
||||
}
|
||||
|
||||
.contact-form-label {
|
||||
position: absolute;
|
||||
margin-top: 10px;
|
||||
margin-left: 5px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.contact-form-value {
|
||||
top: 0px;
|
||||
margin-left: 120px;
|
||||
margin-right: 5px;
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
.contact-form-picture img {
|
||||
top: 0px;
|
||||
margin-left: 120px;
|
||||
margin-right: 5px;
|
||||
margin-top: 10px;
|
||||
width: 100px;
|
||||
}
|
||||
|
||||
.contact-form-text {
|
||||
top: 0px;
|
||||
margin-left: 120px;
|
||||
margin-right: 5px;
|
||||
margin-top: 10px;
|
||||
white-space: pre;
|
||||
font-family: monospace;
|
||||
white-space: -pre-wrap;
|
||||
white-space: pre-wrap;
|
||||
word-wrap: break-word;
|
||||
}
|
||||
|
||||
.header-column-replied {
|
||||
color: grey;
|
||||
width: 8px;
|
||||
}
|
||||
|
||||
.header-column-from {
|
||||
width: 18%;
|
||||
}
|
||||
|
||||
.header-column-known {
|
||||
width: 4%;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.header-column-delivery {
|
||||
width: 8%;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.header-column-to {
|
||||
width: 18%;
|
||||
}
|
||||
|
||||
.header-column-subject {
|
||||
width: 30%;
|
||||
}
|
||||
|
||||
.header-column-date {
|
||||
width: 23%;
|
||||
}
|
||||
|
||||
.header-column-status {
|
||||
width: 100px;
|
||||
}
|
||||
|
||||
.header-column-trash {
|
||||
width: 30px;
|
||||
}
|
||||
|
||||
.header-column-default {
|
||||
width: 8%;
|
||||
}
|
||||
|
||||
.data-column-default {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.header-column-public-name {
|
||||
width: 30%;
|
||||
}
|
||||
|
||||
.header-column-description {
|
||||
width: 35%;
|
||||
}
|
||||
|
||||
.header-column-id-email-dest {
|
||||
width: 27%;
|
||||
}
|
||||
|
||||
.header-column-check {
|
||||
width: 3%;
|
||||
}
|
||||
|
||||
.header-column-name {
|
||||
width: 30%;
|
||||
}
|
||||
|
||||
.header-column-addr-email-dest {
|
||||
width: 72%;
|
||||
}
|
||||
|
||||
.sig-invalid {
|
||||
color: orange;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.anon-sender {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
.sender-known {
|
||||
color: grey;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.deliveryComplete {
|
||||
color: green;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.deliveryIncomplete {
|
||||
color: black;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.folder-item-new a {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.folder-item-old a {
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
.email-form-button-row {
|
||||
top: 0px;
|
||||
margin-left: 120px;
|
||||
text-align: right;
|
||||
width: 585px;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.email-form-label {
|
||||
position: absolute;
|
||||
padding-top: 10px;
|
||||
padding-left: 5px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.email-form-recipient-label {
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
.email-form-recipient-value {
|
||||
top: 0px;
|
||||
margin-left: 120px;
|
||||
max-width: 600px;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.email-form-recipient-field {
|
||||
width: 475px;
|
||||
}
|
||||
|
||||
.email-form-value {
|
||||
top: 0px;
|
||||
margin-left: 120px;
|
||||
margin-right: 5px;
|
||||
}
|
||||
|
||||
.email-form-subject-field {
|
||||
margin-right: 5px;
|
||||
width: 567px;
|
||||
}
|
||||
|
||||
.email-form-attach-label {
|
||||
position: absolute;
|
||||
padding-left: 5px;
|
||||
}
|
||||
|
||||
.email-form-attach-files {
|
||||
padding-left: 5px;
|
||||
padding-bottom: 3px;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.email-form-attach-item {
|
||||
position: absolute;
|
||||
width: 300px;
|
||||
overflow-x: hidden;
|
||||
}
|
||||
|
||||
.email-form-attach-size {
|
||||
color: #777;
|
||||
}
|
||||
|
||||
.email-form-attach-remove {
|
||||
margin-left: 305px;
|
||||
}
|
||||
|
||||
.email-form-attach-small {
|
||||
font-size: 0.8em;
|
||||
padding-left: 5px;
|
||||
}
|
||||
|
||||
.show-email-value {
|
||||
margin-left: 120px;
|
||||
margin-right: 5px;
|
||||
padding-top: 10px;
|
||||
min-height: 1em;
|
||||
}
|
||||
|
||||
.show-email-invalid-sig {
|
||||
color: red;
|
||||
}
|
||||
|
||||
.show-email-reply {
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
.show-email-delete {
|
||||
margin-left: 120px;
|
||||
}
|
||||
|
||||
.password-label {
|
||||
position: absolute;
|
||||
padding-top: 5px;
|
||||
}
|
||||
|
||||
.password-field {
|
||||
margin-left: 115px;
|
||||
}
|
||||
|
||||
.contributor-category {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.contributor-name {
|
||||
margin-left: 100px;
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
.contributor-role {
|
||||
color: #555;
|
||||
margin-left: 250px;
|
||||
margin-top: 3px;
|
||||
}
|
||||
|
||||
wbr:after { content: "\00200B" } /* For Opera */
|
||||
|
||||
.ellipsis {
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
-o-text-overflow: ellipsis;
|
||||
}
|
BIN
WebContent/themes/vanilla/images/addressbook.gif
Normal file
After Width: | Height: | Size: 209 B |
BIN
WebContent/themes/vanilla/images/background-alt.png
Normal file
After Width: | Height: | Size: 112 B |
BIN
WebContent/themes/vanilla/images/background.png
Normal file
After Width: | Height: | Size: 111 B |
BIN
WebContent/themes/vanilla/images/bling.png
Normal file
After Width: | Height: | Size: 132 B |
BIN
WebContent/themes/vanilla/images/clear_password.png
Normal file
After Width: | Height: | Size: 541 B |
BIN
WebContent/themes/vanilla/images/connect_error.png
Normal file
After Width: | Height: | Size: 827 B |
BIN
WebContent/themes/vanilla/images/connected.png
Normal file
After Width: | Height: | Size: 894 B |
BIN
WebContent/themes/vanilla/images/connecting.png
Normal file
After Width: | Height: | Size: 877 B |
BIN
WebContent/themes/vanilla/images/default.png
Normal file
After Width: | Height: | Size: 860 B |
BIN
WebContent/themes/vanilla/images/delete.png
Normal file
After Width: | Height: | Size: 732 B |
BIN
WebContent/themes/vanilla/images/favicon.png
Normal file
After Width: | Height: | Size: 478 B |
BIN
WebContent/themes/vanilla/images/folder.png
Normal file
After Width: | Height: | Size: 537 B |