merge of '598d00efae4c9b675b64fd626bc2eab2b921e0c5'
and 'd38686d88680521e54d7bcb8be24e21d252eb946'
@ -236,3 +236,7 @@ distributions. See the source package for the additional license information.
|
||||
|
||||
SAM Python Library:
|
||||
Public domain.
|
||||
|
||||
I2PSnark:
|
||||
"Man with hat over face" graphic licensed under a Creative Commons 2.0 license.
|
||||
Original photo by Florian Kuhlmann. http://www.flickr.com/photos/floriankuhlmann/3117758155
|
||||
|
@ -2,15 +2,32 @@
|
||||
# Start/stop i2p service.
|
||||
|
||||
i2p_start() {
|
||||
/bin/su - -c "( export PATH=\"$PATH:/usr/lib/java/bin:/usr/lib/java/jre/bin\"; directory start )"
|
||||
# Check if router is up first!
|
||||
/bin/su - -c "( export PATH=\"$PATH:/usr/lib/java/bin:/usr/lib/java/jre/bin\"; directory status )" > /dev/null
|
||||
if [ ! $? -eq 0 ] ; then {
|
||||
# I2p is already running, so tell the user.
|
||||
echo "I2P is already running..."
|
||||
i2p_status
|
||||
}
|
||||
else
|
||||
{
|
||||
# Just in-case there are leftover junk in /tmp...
|
||||
rm -Rf `grep /tmp/hsperfdata_root/* -le i2p` /tmp/i2p-*.tmp /tmp/router.ping
|
||||
# Now that all junk is cleaned up, start.
|
||||
/bin/su - -c "( export PATH=\"$PATH:/usr/lib/java/bin:/usr/lib/java/jre/bin\"; directory start )"
|
||||
}
|
||||
fi
|
||||
}
|
||||
|
||||
i2p_stop() {
|
||||
/bin/su - -c "( export PATH=\"$PATH:/usr/lib/java/bin:/usr/lib/java/jre/bin\"; directory stop )"
|
||||
rm -Rf `grep /tmp/hsperfdata_root/* -le i2p` /tmp/i2p-*.tmp /tmp/router.ping
|
||||
}
|
||||
|
||||
i2p_restart() {
|
||||
/bin/su - -c "( export PATH=\"$PATH:/usr/lib/java/bin:/usr/lib/java/jre/bin\"; directory restart)"
|
||||
# We want a FULL cycle here, not the wrappers idea of this!
|
||||
i2p_stop
|
||||
i2p_start
|
||||
}
|
||||
|
||||
i2p_status() {
|
||||
|
@ -85,23 +85,26 @@ cp -a ../i2p $PKG/$INSTALL_DIR/
|
||||
mkdir -p $PKG/install
|
||||
|
||||
#############################################################################
|
||||
# Preconfigureation to make package smaller
|
||||
# Preconfigureation to make package smaller, and...
|
||||
# we keep as much as reasonable in the installation directory.
|
||||
# This makes the install map fairly well to the standard installation.
|
||||
# It also makes it easier to find the log and pid files!
|
||||
#############################################################################
|
||||
cd $PKG/$INSTALL_DIR/i2p
|
||||
|
||||
# wrapper.config $INSTALL_PATH and $SYSTEM_java_io_tmpdir
|
||||
sed "s|\$INSTALL_PATH|$INSTALL_DIR/i2p|g" wrapper.config > a
|
||||
sed "s|\$SYSTEM_java_io_tmpdir|/var/tmp|g" a > wrapper.config
|
||||
sed "s|\$INSTALL_PATH|/$INSTALL_DIR/i2p|g" wrapper.config > a
|
||||
sed "s|\$SYSTEM_java_io_tmpdir|/$INSTALL_DIR/i2p|g" a > wrapper.config
|
||||
# eepget %INSTALL_PATH
|
||||
sed "s|\$INSTALL_PATH|$INSTALL_DIR/i2p|g" eepget > a
|
||||
sed "s|\$INSTALL_PATH|/$INSTALL_DIR/i2p|g" eepget > a
|
||||
rm eepget
|
||||
mv a eepget
|
||||
# runplain.sh %INSTALL_PATH and %SYSTEM_java_io_tmpdir
|
||||
sed "s|%INSTALL_PATH|$INSTALL_DIR/i2p|g" runplain.sh > a
|
||||
sed "s|%SYSTEM_java_io_tmpdir|/var/tmp|g" a > runplain.sh
|
||||
sed "s|%INSTALL_PATH|/$INSTALL_DIR/i2p|g" runplain.sh > a
|
||||
sed "s|%SYSTEM_java_io_tmpdir|/$INSTALL_DIR/i2p|g" a > runplain.sh
|
||||
# i2prouter %INSTALL_PATH and %SYSTEM_java_io_tmpdir
|
||||
sed "s|%INSTALL_PATH|$INSTALL_DIR/i2p|g" i2prouter > a
|
||||
sed "s|%SYSTEM_java_io_tmpdir|/var/tmp|g" a > i2prouter
|
||||
sed "s|%INSTALL_PATH|/$INSTALL_DIR/i2p|g" i2prouter > a
|
||||
sed "s|%SYSTEM_java_io_tmpdir|/$INSTALL_DIR/i2p|g" a > i2prouter
|
||||
|
||||
chmod 744 ./i2prouter
|
||||
chmod 744 ./osid
|
||||
|
@ -133,7 +133,6 @@ public class I2PSnarkServlet extends Default {
|
||||
// bypass the horrid Resource.getListHTML()
|
||||
String pathInfo = req.getPathInfo();
|
||||
String pathInContext = URI.addPaths(path, pathInfo);
|
||||
req.setCharacterEncoding("UTF-8");
|
||||
resp.setCharacterEncoding("UTF-8");
|
||||
resp.setContentType("text/html; charset=UTF-8");
|
||||
Resource resource = getResource(pathInContext);
|
||||
@ -141,7 +140,7 @@ public class I2PSnarkServlet extends Default {
|
||||
resp.sendError(HttpResponse.__404_Not_Found);
|
||||
} else {
|
||||
String base = URI.addPaths(req.getRequestURI(), "/");
|
||||
String listing = getListHTML(resource, base, true, method.equals("POST") ? req.getParameterMap() : null);
|
||||
String listing = getListHTML(resource, base, true);
|
||||
if (listing != null)
|
||||
resp.getWriter().write(listing);
|
||||
else // shouldn't happen
|
||||
@ -503,7 +502,7 @@ public class I2PSnarkServlet extends Default {
|
||||
File torrentFile = new File(baseFile.getParent(), baseFile.getName() + ".torrent");
|
||||
if (torrentFile.exists())
|
||||
throw new IOException("Cannot overwrite an existing .torrent file: " + torrentFile.getPath());
|
||||
_manager.saveTorrentStatus(info, s.getBitField(), null); // so addTorrent won't recheck
|
||||
_manager.saveTorrentStatus(info, s.getBitField()); // so addTorrent won't recheck
|
||||
// DirMonitor could grab this first, maybe hold _snarks lock?
|
||||
FileOutputStream out = new FileOutputStream(torrentFile);
|
||||
out.write(info.getTorrentData());
|
||||
@ -530,8 +529,6 @@ public class I2PSnarkServlet extends Default {
|
||||
_manager.stopTorrent(snark.torrent, false);
|
||||
}
|
||||
if (_manager.util().connected()) {
|
||||
// Give the stopped announces time to get out
|
||||
try { Thread.sleep(2000); } catch (InterruptedException ie) {}
|
||||
_manager.util().disconnect();
|
||||
_manager.addMessage(_("I2P tunnel closed."));
|
||||
}
|
||||
@ -1216,9 +1213,7 @@ public class I2PSnarkServlet extends Default {
|
||||
/** @since 0.7.14 */
|
||||
private static String urlify(String s) {
|
||||
StringBuilder buf = new StringBuilder(256);
|
||||
// browsers seem to work without doing this but let's be strict
|
||||
String link = s.replace("&", "&");
|
||||
buf.append("<a href=\"").append(link).append("\">").append(link).append("</a>");
|
||||
buf.append("<a href=\"").append(s).append("\">").append(s).append("</a>");
|
||||
return buf.toString();
|
||||
}
|
||||
|
||||
@ -1257,11 +1252,10 @@ public class I2PSnarkServlet extends Default {
|
||||
* @param r The Resource
|
||||
* @param base The base URL
|
||||
* @param parent True if the parent directory should be included
|
||||
* @param postParams map of POST parameters or null if not a POST
|
||||
* @return String of HTML
|
||||
* @since 0.7.14
|
||||
*/
|
||||
private String getListHTML(Resource r, String base, boolean parent, Map postParams)
|
||||
private String getListHTML(Resource r, String base, boolean parent)
|
||||
throws IOException
|
||||
{
|
||||
if (!r.isDirectory())
|
||||
@ -1286,10 +1280,6 @@ public class I2PSnarkServlet extends Default {
|
||||
else
|
||||
torrentName = title;
|
||||
Snark snark = _manager.getTorrentByBaseName(torrentName);
|
||||
|
||||
if (snark != null && postParams != null)
|
||||
savePriorities(snark, postParams);
|
||||
|
||||
if (title.endsWith("/"))
|
||||
title = title.substring(0, title.length() - 1);
|
||||
title = _("Torrent") + ": " + title;
|
||||
@ -1307,19 +1297,12 @@ public class I2PSnarkServlet extends Default {
|
||||
.append(_("Up to higher level directory")).append("</A>\n");
|
||||
}
|
||||
|
||||
buf.append("</div><div class=\"page\"><div class=\"mainsection\">");
|
||||
boolean showPriority = snark != null && !snark.storage.complete();
|
||||
if (showPriority)
|
||||
buf.append("<form action=\"").append(base).append("\" method=\"POST\">\n");
|
||||
buf.append("<TABLE BORDER=0 class=\"snarkTorrents\" cellpadding=\"5px 10px\">" +
|
||||
buf.append("</div><div class=\"page\"><div class=\"mainsection\">" +
|
||||
"<TABLE BORDER=0 class=\"snarkTorrents\" cellpadding=\"5px 10px\">" +
|
||||
"<thead><tr><th>").append(_("File")).append("</th><th>").append(_("Size"))
|
||||
.append("</th><th>").append(_("Status")).append("</th>");
|
||||
if (showPriority)
|
||||
buf.append("<th>").append(_("Priority")).append("</th>");
|
||||
buf.append("</tr></thead>\n");
|
||||
.append("</th><th>").append(_("Status")).append("</th></tr></thead>");
|
||||
//DateFormat dfmt=DateFormat.getDateTimeInstance(DateFormat.MEDIUM,
|
||||
// DateFormat.MEDIUM);
|
||||
boolean showSaveButton = false;
|
||||
for (int i=0 ; i< ls.length ; i++)
|
||||
{
|
||||
String encoded=URI.encodePath(ls[i]);
|
||||
@ -1357,8 +1340,7 @@ public class I2PSnarkServlet extends Default {
|
||||
complete = true;
|
||||
status = toImg("tick") + _("Complete");
|
||||
} else {
|
||||
status =
|
||||
(snark.storage.getPriority(f.getCanonicalPath()) < 0 ? toImg("cancel") : toImg("clock")) +
|
||||
status = toImg("clock") +
|
||||
(100 * (length - remaining) / length) + "% " + _("complete") +
|
||||
" (" + DataHelper.formatSize2(remaining) + _("bytes remaining") + ")";
|
||||
}
|
||||
@ -1402,40 +1384,9 @@ public class I2PSnarkServlet extends Default {
|
||||
buf.append("</TD><TD class=\"").append(rowClass).append(" snarkFileStatus\">");
|
||||
//buf.append(dfmt.format(new Date(item.lastModified())));
|
||||
buf.append(status);
|
||||
buf.append("</TD>");
|
||||
if (showPriority) {
|
||||
buf.append("<td>");
|
||||
File f = item.getFile();
|
||||
if ((!complete) && (!item.isDirectory()) && f != null) {
|
||||
int pri = snark.storage.getPriority(f.getCanonicalPath());
|
||||
buf.append("<input type=\"radio\" value=\"5\" name=\"pri.").append(f.getCanonicalPath()).append("\" ");
|
||||
if (pri > 0)
|
||||
buf.append("checked=\"true\"");
|
||||
buf.append('>').append(_("High"));
|
||||
|
||||
buf.append("<input type=\"radio\" value=\"0\" name=\"pri.").append(f.getCanonicalPath()).append("\" ");
|
||||
if (pri == 0)
|
||||
buf.append("checked=\"true\"");
|
||||
buf.append('>').append(_("Normal"));
|
||||
|
||||
buf.append("<input type=\"radio\" value=\"-9\" name=\"pri.").append(f.getCanonicalPath()).append("\" ");
|
||||
if (pri < 0)
|
||||
buf.append("checked=\"true\"");
|
||||
buf.append('>').append(_("Do not download"));
|
||||
showSaveButton = true;
|
||||
}
|
||||
buf.append("</td>");
|
||||
}
|
||||
buf.append("</TR>\n");
|
||||
}
|
||||
if (showSaveButton) {
|
||||
buf.append("<thead><tr><th colspan=\"3\"> </th><th align=\"center\"><input type=\"submit\" value=\"");
|
||||
buf.append(_("Save priorities"));
|
||||
buf.append("\" name=\"foo\" ></th></tr></thead>\n");
|
||||
buf.append("</TD></TR>\n");
|
||||
}
|
||||
buf.append("</TABLE>\n");
|
||||
if (showPriority)
|
||||
buf.append("</form>");
|
||||
buf.append("</div></div></BODY></HTML>\n");
|
||||
|
||||
return buf.toString();
|
||||
@ -1501,26 +1452,6 @@ public class I2PSnarkServlet extends Default {
|
||||
return "<img alt=\"\" height=\"16\" width=\"16\" src=\"/i2psnark/_icons/" + icon + ".png\"> ";
|
||||
}
|
||||
|
||||
/** @since 0.8.1 */
|
||||
private void savePriorities(Snark snark, Map postParams) {
|
||||
Set<Map.Entry> entries = postParams.entrySet();
|
||||
for (Map.Entry entry : entries) {
|
||||
String key = (String)entry.getKey();
|
||||
if (key.startsWith("pri.")) {
|
||||
try {
|
||||
String file = key.substring(4);
|
||||
String val = ((String[])entry.getValue())[0]; // jetty arrays
|
||||
int pri = Integer.parseInt(val);
|
||||
snark.storage.setPriority(file, pri);
|
||||
//System.err.println("Priority now " + pri + " for " + file);
|
||||
} catch (Throwable t) { t.printStackTrace(); }
|
||||
}
|
||||
}
|
||||
if (snark.coordinator != null)
|
||||
snark.coordinator.updatePiecePriorities();
|
||||
_manager.saveTorrentStatus(snark.storage.getMetaInfo(), snark.storage.getBitField(), snark.storage.getFilePriorities());
|
||||
}
|
||||
|
||||
|
||||
/** inner class, don't bother reindenting */
|
||||
private static class FetchAndAdd implements Runnable {
|
||||
|
@ -8,8 +8,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: I2P i2psnark\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2010-07-01 04:52+0000\n"
|
||||
"PO-Revision-Date: 2010-07-01 12:53+0800\n"
|
||||
"POT-Creation-Date: 2010-10-04 02:45+0000\n"
|
||||
"PO-Revision-Date: 2010-10-04 12:00+0800\n"
|
||||
"Last-Translator: walking <walking@mail.i2p>\n"
|
||||
"Language-Team: foo <foo@bar>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
@ -224,7 +224,6 @@ msgid "Torrents"
|
||||
msgstr "种子"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:187
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:193
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:837
|
||||
msgid "I2PSnark"
|
||||
msgstr ""
|
||||
@ -233,63 +232,65 @@ msgstr ""
|
||||
msgid "Refresh page"
|
||||
msgstr "刷新页面"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:193
|
||||
msgid "<img border=\"0\" src=\"/themes/console/snark/images/arrow_refresh.png\"> I2PSnark"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:195
|
||||
msgid "Forum"
|
||||
msgstr "论坛"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:240
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1289
|
||||
msgid "Status"
|
||||
msgstr "状态"
|
||||
msgid "<img border=\"0\" src=\"/themes/console/snark/images/status.png\" title=\"Torrent Status\">Status"
|
||||
msgstr "<img border=\"0\" src=\"/themes/console/snark/images/status.png\" title=\"种子状态\">状态"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:246
|
||||
msgid "Hide Peers"
|
||||
msgstr "隐藏用户"
|
||||
msgid "<img border=\"0\" src=\"/themes/console/snark/images/showpeers.png\" title=\"Toggle Peer Visibility\" alt=\"Hide Peers\">"
|
||||
msgstr "<img border=\"0\" src=\"/themes/console/snark/images/showpeers.png\" title=\"隐藏节点\" alt=\"隐藏节点\">"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:249
|
||||
msgid "Show Peers"
|
||||
msgstr "显示用户"
|
||||
msgid "<img border=\"0\" src=\"/themes/console/snark/images/hidepeers.png\" title=\"Toggle Peer Visibility\" alt=\"Show Peers\">"
|
||||
msgstr "<img border=\"0\" src=\"/themes/console/snark/images/hidepeers.png\" title=\"显示节点\" alt=\"显示节点\">"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:254
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1271
|
||||
msgid "Torrent"
|
||||
msgstr "种子"
|
||||
msgid "<img border=\"0\" src=\"/themes/console/snark/images/torrent.png\" title=\"Loaded Torrents\">Torrent"
|
||||
msgstr "<img border=\"0\" src=\"/themes/console/snark/images/torrent.png\" title=\"载入的种子\">种子"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:256
|
||||
msgid "ETA"
|
||||
msgstr "预计剩余时间"
|
||||
msgid "<img border=\"0\" src=\"/themes/console/snark/images/eta.png\" title=\"Estimated Download Time\">ETA"
|
||||
msgstr "<img border=\"0\" src=\"/themes/console/snark/images/eta.png\" title=\"预计剩余时间\">预计剩余时间"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:258
|
||||
msgid "Downloaded"
|
||||
msgstr "已下载"
|
||||
msgid "<img border=\"0\" src=\"/themes/console/images/inbound.png\" title=\"Data Downloaded\">RX"
|
||||
msgstr "<img border=\"0\" src=\"/themes/console/images/inbound.png\" title=\"下载数据量\">下载"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:260
|
||||
msgid "Uploaded"
|
||||
msgstr "已上传"
|
||||
msgid "<img border=\"0\" src=\"/themes/console/images/outbound.png\" title=\"Data Uploaded\">TX"
|
||||
msgstr "<img border=\"0\" src=\"/themes/console/images/outbound.png\" title=\"上传数据量\">上传"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:262
|
||||
msgid "Down Rate"
|
||||
msgstr "下载速度"
|
||||
msgid "<img border=\"0\" src=\"/themes/console/images/inbound.png\" title=\"Download Speed\">Rate"
|
||||
msgstr "<img border=\"0\" src=\"/themes/console/images/inbound.png\" title=\"下载速度\">下载速度"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:264
|
||||
msgid "Up Rate"
|
||||
msgstr "上传速度"
|
||||
msgid "<img border=\"0\" src=\"/themes/console/images/outbound.png\" title=\"Upload Speed\">Rate"
|
||||
msgstr "<img border=\"0\" src=\"/themes/console/images/outbound.png\" title=\"上传速度\">上传速度"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:271
|
||||
msgid "Stop all torrents and the I2P tunnel"
|
||||
msgstr "停止全部种子及I2P隧道"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:273
|
||||
msgid "Stop All"
|
||||
msgstr "停止全部"
|
||||
msgid "<img src=\"/themes/console/snark/images/stop_all.png\" title=\"Stop All Torrents\" alt=\"Stop All\">"
|
||||
msgstr "<img src=\"/themes/console/snark/images/stop_all.png\" title=\"全部停止\" alt=\"全部停止\">"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:278
|
||||
msgid "Start all torrents and the I2P tunnel"
|
||||
msgstr "启动全部种子及I2P隧道"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:280
|
||||
msgid "Start All"
|
||||
msgstr "启动全部"
|
||||
msgid "<img src=\"/themes/console/snark/images/start_all.png\" title=\"Start All Torrents\" alt=\"Start All\">"
|
||||
msgstr "<img src=\"/themes/console/snark/images/start_all.png\" title=\"全部开始\" alt=\"全部开始\">"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:297
|
||||
msgid "No torrents loaded."
|
||||
@ -317,13 +318,13 @@ msgid "Torrent file {0} does not exist"
|
||||
msgstr "种子文件{0}不存在"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:346
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1476
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1481
|
||||
#, java-format
|
||||
msgid "Torrent already running: {0}"
|
||||
msgstr "种子已启动:{0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:348
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1478
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1483
|
||||
#, java-format
|
||||
msgid "Torrent already in the queue: {0}"
|
||||
msgstr "种子排队中:{0}"
|
||||
@ -450,7 +451,7 @@ msgid "Seeding"
|
||||
msgstr "正做种"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:682
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1327
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1317
|
||||
msgid "Complete"
|
||||
msgstr "完成"
|
||||
|
||||
@ -486,24 +487,24 @@ msgid "Tracker"
|
||||
msgstr "Tracker服务器"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:751
|
||||
msgid "Details"
|
||||
msgstr "详情"
|
||||
msgid "<img border=\"0\" src=\"/themes/console/snark/images/details.png\">"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:785
|
||||
msgid "Stop the torrent"
|
||||
msgstr "停止种子"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:787
|
||||
msgid "Stop"
|
||||
msgstr "停止"
|
||||
msgid "<img src=\"/themes/console/snark/images/stop.png\" title=\"Stop Torrent\" alt=\"Stop\">"
|
||||
msgstr "<img src=\"/themes/console/snark/images/stop.png\" title=\"停止下载\" alt=\"停止\">"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:793
|
||||
msgid "Start the torrent"
|
||||
msgstr "启动种子"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:795
|
||||
msgid "Start"
|
||||
msgstr "启动"
|
||||
msgid "<img src=\"/themes/console/snark/images/start.png\" title=\"Start Torrent\" alt=\"Start\">"
|
||||
msgstr "<img src=\"/themes/console/snark/images/start.png\" title=\"开始下载\" alt=\"开始\">"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:800
|
||||
msgid "Remove the torrent from the active list, deleting the .torrent file"
|
||||
@ -518,8 +519,8 @@ msgid "Are you sure you want to delete the file \\''{0}.torrent\\'' (downloaded
|
||||
msgstr "您确定要删除文件“{0}.torrent”(下载的数据文件不会被删除)?"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:807
|
||||
msgid "Remove"
|
||||
msgstr "移除"
|
||||
msgid "<img src=\"/themes/console/snark/images/remove.png\" title=\"Remove Torrent\" alt=\"Remove\">"
|
||||
msgstr "<img src=\"/themes/console/snark/images/remove.png\" title=\"删除种子\" alt=\"删除种子\">"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:811
|
||||
msgid "Delete the .torrent file and the associated data file(s)"
|
||||
@ -534,8 +535,8 @@ msgid "Are you sure you want to delete the torrent \\''{0}\\'' and all downloade
|
||||
msgstr "您确定要删除种子“{0}”(下载的数据文件会一并被删除)?"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:818
|
||||
msgid "Delete"
|
||||
msgstr "删除"
|
||||
msgid "<img src=\"/themes/console/snark/images/delete.png\" title=\"Delete Torrent + Data\" alt=\"Delete\">"
|
||||
msgstr "<img src=\"/themes/console/snark/images/delete.png\" title=\"删除种子 + 数据\" alt=\"删除种子 + 数据\">"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:861
|
||||
msgid "Seed"
|
||||
@ -558,8 +559,8 @@ msgid "Choking (We are not allowing the peer to request pieces)"
|
||||
msgstr "拒绝请求"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:927
|
||||
msgid "Add Torrent"
|
||||
msgstr "添加种子"
|
||||
msgid "<img border=\"0\" src=\"/themes/console/snark/images/add.png\">Add Torrent"
|
||||
msgstr "<img border=\"0\" src=\"/themes/console/snark/images/add.png\">添加种子"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:929
|
||||
msgid "From URL"
|
||||
@ -571,16 +572,16 @@ msgstr "添加种子"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:937
|
||||
#, java-format
|
||||
msgid "Alternately, you can copy .torrent files to the directory {0}."
|
||||
msgstr "或者您可以将.torrent文件复制到以下目录{0}."
|
||||
msgid "You can also copy .torrent files to: <code>{0}"
|
||||
msgstr "或者您可以将.torrent文件复制到<code>{0}."
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:939
|
||||
msgid "Removing a .torrent file will cause the torrent to stop."
|
||||
msgstr "删除种子文件将导致中止该下载任务。"
|
||||
msgid "Removing a .torrent will cause it to stop."
|
||||
msgstr "删除种子文件将导致该下载任务中止。"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:958
|
||||
msgid "Create Torrent"
|
||||
msgstr "创建种子"
|
||||
msgid "<img border=\"0\" src=\"/themes/console/snark/images/create.png\">Create Torrent"
|
||||
msgstr "<img border=\"0\" src=\"/themes/console/snark/images/create.png\">创建种子"
|
||||
|
||||
#. out.write("From file: <input type=\"file\" name=\"newFile\" size=\"50\" value=\"" + newFile + "\" /><br>\n");
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:961
|
||||
@ -596,8 +597,8 @@ msgid "Select a tracker"
|
||||
msgstr "选择一个Tracker"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:982
|
||||
msgid "or"
|
||||
msgstr "或"
|
||||
msgid "or "
|
||||
msgstr "或 "
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:985
|
||||
msgid "Specify custom tracker announce URL"
|
||||
@ -609,8 +610,8 @@ msgstr "创建种子"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1006
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1133
|
||||
msgid "Configuration"
|
||||
msgstr "设置"
|
||||
msgid "<img border=\"0\" src=\"/themes/console/snark/images/config.png\">Configuration"
|
||||
msgstr "<img border=\"0\" src=\"/themes/console/snark/images/config.png\">设置"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1009
|
||||
msgid "Data directory"
|
||||
@ -709,53 +710,103 @@ msgid "1 tunnel"
|
||||
msgid_plural "{0} tunnels"
|
||||
msgstr[0] "{0}隧道"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1283
|
||||
msgid "Up to higher level directory"
|
||||
msgstr "上一层文件夹"
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1271
|
||||
msgid "Torrent"
|
||||
msgstr "种子"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1288
|
||||
msgid "File"
|
||||
msgstr "文件"
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1278
|
||||
msgid "<img border=\"0\" src=\"/themes/console/snark/images/file.png\" title=\"File\" alt=\"File\"> "
|
||||
msgstr "<img border=\"0\" src=\"/themes/console/snark/images/file.png\" title=\"文件\" alt=\"文件\"> "
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1288
|
||||
msgid "Size"
|
||||
msgstr "大小"
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1278
|
||||
msgid "<img border=\"0\" src=\"/themes/console/snark/images/size.png\" title=\"FileSize\" alt=\"FileSize\">Size"
|
||||
msgstr "<img border=\"0\" src=\"/themes/console/snark/images/size.png\" title=\"文件大小\" alt=\"文件大小\">大小"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1311
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1279
|
||||
msgid "<img border=\"0\" src=\"/themes/console/snark/images/status.png\" title=\"Download Status\">Status"
|
||||
msgstr "<img border=\"0\" src=\"/themes/console/snark/images/status.png\" title=\"下载状态\">状态"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1301
|
||||
msgid "Directory"
|
||||
msgstr "文件夹"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1316
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1306
|
||||
msgid "Torrent not found?"
|
||||
msgstr "种子未找到"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1324
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1314
|
||||
msgid "File not found in torrent?"
|
||||
msgstr "种子中没有发现文件?"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1330
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1320
|
||||
msgid "complete"
|
||||
msgstr "完成"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1331
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1321
|
||||
msgid "bytes remaining"
|
||||
msgstr "剩余字节数"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1456
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1373
|
||||
msgid "Up to higher level directory"
|
||||
msgstr "上一层文件夹"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1461
|
||||
#, java-format
|
||||
msgid "Torrent fetched from {0}"
|
||||
msgstr "从{0}获取种子成功"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1484
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1489
|
||||
#, java-format
|
||||
msgid "Torrent at {0} was not valid"
|
||||
msgstr "{0}的种子中有错误"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1489
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1494
|
||||
#, java-format
|
||||
msgid "Torrent was not retrieved from {0}"
|
||||
msgstr "从{0}获得种子失败"
|
||||
|
||||
#~ msgid "Status"
|
||||
#~ msgstr "状态"
|
||||
#~ msgid "Hide Peers"
|
||||
#~ msgstr "隐藏用户"
|
||||
#~ msgid "Show Peers"
|
||||
#~ msgstr "显示用户"
|
||||
#~ msgid "ETA"
|
||||
#~ msgstr "预计剩余时间"
|
||||
#~ msgid "Downloaded"
|
||||
#~ msgstr "已下载"
|
||||
#~ msgid "Uploaded"
|
||||
#~ msgstr "已上传"
|
||||
#~ msgid "Down Rate"
|
||||
#~ msgstr "下载速度"
|
||||
#~ msgid "Up Rate"
|
||||
#~ msgstr "上传速度"
|
||||
#~ msgid "Stop All"
|
||||
#~ msgstr "停止全部"
|
||||
#~ msgid "Start All"
|
||||
#~ msgstr "启动全部"
|
||||
#~ msgid "Details"
|
||||
#~ msgstr "详情"
|
||||
#~ msgid "Stop"
|
||||
#~ msgstr "停止"
|
||||
#~ msgid "Start"
|
||||
#~ msgstr "启动"
|
||||
#~ msgid "Remove"
|
||||
#~ msgstr "移除"
|
||||
#~ msgid "Delete"
|
||||
#~ msgstr "删除"
|
||||
#~ msgid "Add Torrent"
|
||||
#~ msgstr "添加种子"
|
||||
#~ msgid "Create Torrent"
|
||||
#~ msgstr "创建种子"
|
||||
#~ msgid "or"
|
||||
#~ msgstr "或"
|
||||
#~ msgid "Configuration"
|
||||
#~ msgstr "设置"
|
||||
#~ msgid "File"
|
||||
#~ msgstr "文件"
|
||||
#~ msgid "Size"
|
||||
#~ msgstr "大小"
|
||||
#~ msgid "Cannot change the I2CP settings while torrents are active"
|
||||
#~ msgstr "正在下载/上传,无法更改I2CP设置"
|
||||
#~ msgid "{0} torrents"
|
||||
|
@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: I2P i2ptunnel\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2010-07-01 04:52+0000\n"
|
||||
"POT-Creation-Date: 2010-10-04 02:45+0000\n"
|
||||
"PO-Revision-Date: 2010-05-29 10:57+0800\n"
|
||||
"Last-Translator: walking <walking@mail.i2p>\n"
|
||||
"Language-Team: foo <foo@bar>\n"
|
||||
@ -17,7 +17,7 @@ msgstr ""
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Poedit-Language: Chinese\n"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:493
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:492
|
||||
#, java-format
|
||||
msgid ""
|
||||
"To visit the destination in your host database, click <a href=\"{0}\">here</"
|
||||
@ -35,55 +35,55 @@ msgstr ""
|
||||
"请点击下面的链接通过【跳转(Jump)】服务提供的【地址助手】链接跳转至域名对应的"
|
||||
"主机:"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:369
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:372
|
||||
msgid "New Tunnel"
|
||||
msgstr "新建隧道"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:389
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:392
|
||||
msgid "Standard client"
|
||||
msgstr "标准客户端"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:390
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:393
|
||||
msgid "HTTP client"
|
||||
msgstr "HTTP 客户端"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:391
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:394
|
||||
msgid "IRC client"
|
||||
msgstr "IRC 客户端"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:392
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:395
|
||||
msgid "Standard server"
|
||||
msgstr "标准服务器"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:393
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:396
|
||||
msgid "HTTP server"
|
||||
msgstr "HTTP 服务器"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:394
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:397
|
||||
msgid "SOCKS 4/4a/5 proxy"
|
||||
msgstr "SOCKS4/4A/5 代理"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:395
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:398
|
||||
msgid "SOCKS IRC proxy"
|
||||
msgstr "SOCKS IRC 代理"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:396
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:399
|
||||
msgid "CONNECT/SSL/HTTPS proxy"
|
||||
msgstr "CONNECT/SSL/HTTPS 代理"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:397
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:400
|
||||
msgid "IRC server"
|
||||
msgstr "IRC 服务器"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:398
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:401
|
||||
msgid "Streamr client"
|
||||
msgstr "Streamr 客户端"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:399
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:402
|
||||
msgid "Streamr server"
|
||||
msgstr "Streamr 服务器"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:400
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:403
|
||||
msgid "HTTP bidir"
|
||||
msgstr "双向http"
|
||||
|
||||
|
@ -42,7 +42,6 @@ public class Config {
|
||||
/**
|
||||
*
|
||||
* @param name
|
||||
* @return
|
||||
*/
|
||||
public static String getProperty( String name )
|
||||
{
|
||||
@ -98,7 +97,6 @@ public class Config {
|
||||
*
|
||||
* @param name
|
||||
* @param defaultValue
|
||||
* @return
|
||||
*/
|
||||
public static String getProperty( String name, String defaultValue )
|
||||
{
|
||||
@ -109,7 +107,6 @@ public class Config {
|
||||
*
|
||||
* @param name
|
||||
* @param defaultValue
|
||||
* @return
|
||||
*/
|
||||
public static int getProperty( String name, int defaultValue )
|
||||
{
|
||||
|
@ -270,7 +270,7 @@ public class Folder {
|
||||
/**
|
||||
* Returns the element on the current page on the given position.
|
||||
*
|
||||
* @param Position of the element on the current page.
|
||||
* @param x Position of the element on the current page.
|
||||
* @return Element on the current page on the given position.
|
||||
*/
|
||||
public Object getElementAtPosXonCurrentPage( int x )
|
||||
@ -331,7 +331,7 @@ public class Folder {
|
||||
* Gets index of an element in the array regardless of sorting direction.
|
||||
*
|
||||
* @param element
|
||||
* @return
|
||||
* @return index
|
||||
*/
|
||||
private int getIndexOf( Object element )
|
||||
{
|
||||
@ -348,7 +348,7 @@ public class Folder {
|
||||
* Sorting direction is taken into account.
|
||||
*
|
||||
* @param element
|
||||
* @return
|
||||
* @return The next element
|
||||
*/
|
||||
public Object getNextElement( Object element )
|
||||
{
|
||||
@ -369,7 +369,7 @@ public class Folder {
|
||||
* Sorting direction is taken into account.
|
||||
*
|
||||
* @param element
|
||||
* @return
|
||||
* @return The previous element
|
||||
*/
|
||||
public Object getPreviousElement( Object element )
|
||||
{
|
||||
@ -388,7 +388,7 @@ public class Folder {
|
||||
* Retrieves element at index i. Depends on sorting direction.
|
||||
*
|
||||
* @param i
|
||||
* @return
|
||||
* @return Element at index i
|
||||
*/
|
||||
private Object getElement( int i )
|
||||
{
|
||||
@ -404,8 +404,6 @@ public class Folder {
|
||||
|
||||
/**
|
||||
* Returns true, if folder shows points to the last page.
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public boolean isLastPage()
|
||||
{
|
||||
@ -414,8 +412,6 @@ public class Folder {
|
||||
|
||||
/**
|
||||
* Returns true, if folder shows points to the first page.
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public boolean isFirstPage()
|
||||
{
|
||||
@ -427,7 +423,6 @@ public class Folder {
|
||||
* The sorting direction influences which element is taken for comparison.
|
||||
*
|
||||
* @param element
|
||||
* @return
|
||||
*/
|
||||
public boolean isLastElement( Object element )
|
||||
{
|
||||
@ -441,7 +436,6 @@ public class Folder {
|
||||
* The sorting direction influences which element is taken for comparison.
|
||||
*
|
||||
* @param element
|
||||
* @return
|
||||
*/
|
||||
public boolean isFirstElement( Object element )
|
||||
{
|
||||
|
@ -56,16 +56,12 @@ public class Attachment {
|
||||
public void setBuffer(ReadBuffer buffer) {
|
||||
this.buffer = buffer;
|
||||
}
|
||||
/**
|
||||
* @return
|
||||
*/
|
||||
|
||||
public String getTransferEncoding() {
|
||||
// TODO Auto-generated method stub
|
||||
return transferEncoding;
|
||||
}
|
||||
/**
|
||||
* @return
|
||||
*/
|
||||
|
||||
public String getContentType() {
|
||||
// TODO Auto-generated method stub
|
||||
return contentType;
|
||||
@ -82,9 +78,7 @@ public class Attachment {
|
||||
public void setTransferEncoding(String transferEncoding) {
|
||||
this.transferEncoding = transferEncoding;
|
||||
}
|
||||
/**
|
||||
* @param string
|
||||
*/
|
||||
|
||||
public void setData(String data ) {
|
||||
this.data = data;
|
||||
}
|
||||
|
@ -78,8 +78,8 @@ public class Mail {
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @param address
|
||||
* @return
|
||||
* @param address E-mail address to be validated
|
||||
* @return Is the e-mail address valid?
|
||||
*/
|
||||
public static boolean validateAddress( String address )
|
||||
{
|
||||
@ -105,7 +105,6 @@ public class Mail {
|
||||
}
|
||||
/**
|
||||
* @param address
|
||||
* @return
|
||||
*/
|
||||
public static String getAddress(String address )
|
||||
{
|
||||
|
@ -47,9 +47,9 @@ public class MailCache {
|
||||
/**
|
||||
* Fetch any needed data from pop3 server.
|
||||
*
|
||||
* @param id message id to get
|
||||
* @param uidl message id to get
|
||||
* @param headerOnly fetch only header lines?
|
||||
* @return
|
||||
* @return An e-mail
|
||||
*/
|
||||
public Mail getMail( String uidl, boolean headerOnly ) {
|
||||
|
||||
|
@ -67,29 +67,25 @@ public class RequestWrapper {
|
||||
|
||||
/**
|
||||
* @param b
|
||||
* @return
|
||||
*/
|
||||
public HttpSession getSession(boolean b) {
|
||||
return httpRequest.getSession( b );
|
||||
}
|
||||
|
||||
/**
|
||||
* @param key
|
||||
* @return
|
||||
* @param name Specific parameter key
|
||||
* @return parameter value
|
||||
*/
|
||||
public String getParameter(String name ) {
|
||||
return getParameter( name, null );
|
||||
}
|
||||
|
||||
/**
|
||||
* @return
|
||||
*/
|
||||
public HttpSession getSession() {
|
||||
return httpRequest.getSession();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return
|
||||
* @return List of request parameter names
|
||||
*/
|
||||
public Enumeration getParameterNames() {
|
||||
if( multiPartRequest != null ) {
|
||||
@ -106,24 +102,19 @@ public class RequestWrapper {
|
||||
}
|
||||
|
||||
/**
|
||||
* @return
|
||||
* @return The total length of the content.
|
||||
*/
|
||||
public int getContentLength() {
|
||||
return httpRequest.getContentLength();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return
|
||||
* @return The content type of the request.
|
||||
*/
|
||||
public String getContentType() {
|
||||
return httpRequest.getContentType();
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param partName
|
||||
* @return
|
||||
*/
|
||||
public String getContentType( String partName )
|
||||
{
|
||||
String result = null;
|
||||
@ -143,19 +134,11 @@ public class RequestWrapper {
|
||||
}
|
||||
return result;
|
||||
}
|
||||
/**
|
||||
* @param string
|
||||
* @return
|
||||
*/
|
||||
|
||||
public Object getAttribute(String string) {
|
||||
return httpRequest.getAttribute( string );
|
||||
}
|
||||
|
||||
/**
|
||||
* @param new_subject
|
||||
* @param string
|
||||
* @return
|
||||
*/
|
||||
public String getParameter( String name, String defaultValue )
|
||||
{
|
||||
String result = defaultValue;
|
||||
@ -184,10 +167,7 @@ public class RequestWrapper {
|
||||
}
|
||||
return result;
|
||||
}
|
||||
/**
|
||||
* @param new_filename
|
||||
* @return
|
||||
*/
|
||||
|
||||
public String getFilename(String partName )
|
||||
{
|
||||
String result = null;
|
||||
@ -198,10 +178,7 @@ public class RequestWrapper {
|
||||
}
|
||||
return result;
|
||||
}
|
||||
/**
|
||||
* @param new_filename
|
||||
* @return
|
||||
*/
|
||||
|
||||
public InputStream getInputStream(String partName )
|
||||
{
|
||||
InputStream result = null;
|
||||
|
@ -42,7 +42,7 @@ public class Base64 implements Encoding {
|
||||
return "base64";
|
||||
}
|
||||
/**
|
||||
* @return
|
||||
* @return Base64-encoded String.
|
||||
* @throws EncodingException
|
||||
*/
|
||||
public String encode( byte in[] ) throws EncodingException
|
||||
@ -53,8 +53,8 @@ public class Base64 implements Encoding {
|
||||
throw new EncodingException( e.getMessage() );
|
||||
}
|
||||
}
|
||||
/* (non-Javadoc)
|
||||
* @see i2p.susi23.util.Encoding#encode(java.lang.String)
|
||||
/**
|
||||
* @see Base64#encode(byte[])
|
||||
*/
|
||||
public String encode(String str) throws EncodingException {
|
||||
try {
|
||||
@ -66,7 +66,7 @@ public class Base64 implements Encoding {
|
||||
/**
|
||||
*
|
||||
* @param in
|
||||
* @return
|
||||
* @see Base64#encode(String)
|
||||
*/
|
||||
private String encode( InputStream in ) throws IOException, EncodingException
|
||||
{
|
||||
@ -116,7 +116,7 @@ public class Base64 implements Encoding {
|
||||
|
||||
/**
|
||||
* @param b
|
||||
* @return
|
||||
* @return Encoded single byte.
|
||||
*/
|
||||
private static int encodeByte(int b) {
|
||||
/*
|
||||
@ -173,21 +173,21 @@ public class Base64 implements Encoding {
|
||||
|
||||
/**
|
||||
* @param text
|
||||
* @return
|
||||
* @return Buffer containing a decoded String.
|
||||
*/
|
||||
public ReadBuffer decode(String text) throws DecodingException {
|
||||
return text != null ? decode( text.getBytes() ) : null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see i2p.susi23.util.Encoding#decode(byte[])
|
||||
/**
|
||||
* @see Base64#decode(String)
|
||||
*/
|
||||
public ReadBuffer decode(byte[] in) throws DecodingException {
|
||||
return decode( in, 0, in.length );
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see i2p.susi23.util.Encoding#decode(byte[], int, int)
|
||||
/**
|
||||
* @see Base64#decode(String)
|
||||
*/
|
||||
public ReadBuffer decode(byte[] in, int offset, int length) throws DecodingException {
|
||||
byte out[] = new byte[length * 3 / 4 + 1 ];
|
||||
@ -228,10 +228,10 @@ public class Base64 implements Encoding {
|
||||
return readBuffer;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see i2p.susi23.util.Encoding#decode(i2p.susi23.util.ReadBuffer)
|
||||
/*
|
||||
* @see Base64#decode(String)
|
||||
*/
|
||||
public ReadBuffer decode(ReadBuffer in) throws DecodingException {
|
||||
return decode( in.content, in.offset, in.length );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -35,21 +35,21 @@ public interface Encoding {
|
||||
/**
|
||||
*
|
||||
* @param in
|
||||
* @return
|
||||
* @return Encoded string.
|
||||
* @throws EncodingException
|
||||
*/
|
||||
public String encode( byte in[] ) throws EncodingException;
|
||||
/**
|
||||
*
|
||||
* @param str
|
||||
* @return
|
||||
* @see Encoding#encode(byte[])
|
||||
* @throws EncodingException
|
||||
*/
|
||||
public String encode( String str ) throws EncodingException;
|
||||
/**
|
||||
*
|
||||
* @param in
|
||||
* @return
|
||||
* @see Encoding#decode(byte[], int, int)
|
||||
* @throws DecodingException
|
||||
*/
|
||||
public ReadBuffer decode( byte in[] ) throws DecodingException;
|
||||
@ -58,21 +58,21 @@ public interface Encoding {
|
||||
* @param in
|
||||
* @param offset
|
||||
* @param length
|
||||
* @return
|
||||
* @return Output buffer containing decoded String.
|
||||
* @throws DecodingException
|
||||
*/
|
||||
public ReadBuffer decode( byte in[], int offset, int length ) throws DecodingException;
|
||||
/**
|
||||
*
|
||||
* @param str
|
||||
* @return
|
||||
* @see Encoding#decode(byte[], int, int)
|
||||
* @throws DecodingException
|
||||
*/
|
||||
public ReadBuffer decode( String str ) throws DecodingException;
|
||||
/**
|
||||
*
|
||||
* @param in
|
||||
* @return
|
||||
* @see Encoding#decode(byte[], int, int)
|
||||
* @throws DecodingException
|
||||
*/
|
||||
public ReadBuffer decode( ReadBuffer in ) throws DecodingException;
|
||||
|
@ -62,7 +62,7 @@ public class EncodingFactory {
|
||||
*
|
||||
* @param name name of encoding (e.g. quoted-printable)
|
||||
*
|
||||
* @return
|
||||
* @return Encoder instance
|
||||
*/
|
||||
public static Encoding getEncoding( String name )
|
||||
{
|
||||
@ -71,7 +71,7 @@ public class EncodingFactory {
|
||||
/**
|
||||
* Returns list of available encodings;
|
||||
*
|
||||
* @return
|
||||
* @return List of encodings
|
||||
*/
|
||||
public static Set availableEncodings()
|
||||
{
|
||||
|
@ -85,7 +85,7 @@ public class POP3MailBox {
|
||||
/**
|
||||
*
|
||||
* @param uidl
|
||||
* @return
|
||||
* @return Byte buffer containing header data.
|
||||
*/
|
||||
public ReadBuffer getHeader( String uidl ) {
|
||||
synchronized( synchronizer ) {
|
||||
@ -97,7 +97,7 @@ public class POP3MailBox {
|
||||
* retrieves header from pop3 server (with TOP command and RETR as fallback)
|
||||
*
|
||||
* @param id message id
|
||||
* @return byte buffer containing data
|
||||
* @return Byte buffer containing header data.
|
||||
*/
|
||||
private ReadBuffer getHeader( int id ) {
|
||||
synchronized( synchronizer ) {
|
||||
@ -138,7 +138,7 @@ public class POP3MailBox {
|
||||
/**
|
||||
*
|
||||
* @param uidl
|
||||
* @return
|
||||
* @return Byte buffer containing body data.
|
||||
*/
|
||||
public ReadBuffer getBody( String uidl ) {
|
||||
synchronized( synchronizer ) {
|
||||
@ -150,7 +150,7 @@ public class POP3MailBox {
|
||||
* retrieve message body from pop3 server (via RETR command)
|
||||
*
|
||||
* @param id message id
|
||||
* @return byte buffer containing data
|
||||
* @return Byte buffer containing body data.
|
||||
*/
|
||||
private ReadBuffer getBody(int id) {
|
||||
synchronized( synchronizer ) {
|
||||
@ -179,7 +179,7 @@ public class POP3MailBox {
|
||||
/**
|
||||
*
|
||||
* @param uidl
|
||||
* @return
|
||||
* @return Success of delete operation: true if successful.
|
||||
*/
|
||||
public boolean delete( String uidl )
|
||||
{
|
||||
@ -193,7 +193,7 @@ public class POP3MailBox {
|
||||
* delete message on pop3 server
|
||||
*
|
||||
* @param id message id
|
||||
* @return true if successful
|
||||
* @return Success of delete operation: true if successful.
|
||||
*/
|
||||
private boolean delete(int id)
|
||||
{
|
||||
@ -215,7 +215,7 @@ public class POP3MailBox {
|
||||
/**
|
||||
*
|
||||
* @param uidl
|
||||
* @return
|
||||
* @return Message size in bytes.
|
||||
*/
|
||||
public int getSize( String uidl ) {
|
||||
synchronized( synchronizer ) {
|
||||
@ -227,7 +227,7 @@ public class POP3MailBox {
|
||||
* get size of a message (via LIST command)
|
||||
*
|
||||
* @param id message id
|
||||
* @return message size in bytes
|
||||
* @return Message size in bytes.
|
||||
*/
|
||||
private int getSize(int id) {
|
||||
synchronized( synchronizer ) {
|
||||
@ -627,7 +627,7 @@ public class POP3MailBox {
|
||||
}
|
||||
|
||||
/**
|
||||
* @return
|
||||
* @return The amount of e-mails available.
|
||||
*/
|
||||
public int getNumMails() {
|
||||
synchronized( synchronizer ) {
|
||||
@ -641,7 +641,7 @@ public class POP3MailBox {
|
||||
}
|
||||
|
||||
/**
|
||||
* @return
|
||||
* @return The most recent error message.
|
||||
*/
|
||||
public String lastError() {
|
||||
Debug.debug(Debug.DEBUG, "lastError()");
|
||||
@ -673,7 +673,7 @@ public class POP3MailBox {
|
||||
* returns number of message with given UIDL
|
||||
*
|
||||
* @param uidl
|
||||
* @return
|
||||
* @return Message number.
|
||||
*/
|
||||
private int getIDfromUIDL( String uidl )
|
||||
{
|
||||
@ -687,7 +687,7 @@ public class POP3MailBox {
|
||||
/**
|
||||
*
|
||||
* @param id
|
||||
* @return
|
||||
* @return UIDL.
|
||||
*/
|
||||
public String getUIDLfromID( int id )
|
||||
{
|
||||
@ -695,7 +695,7 @@ public class POP3MailBox {
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @return
|
||||
* @return A list of the available UIDLs.
|
||||
*/
|
||||
public Object[] getUIDLs()
|
||||
{
|
||||
|
@ -420,9 +420,11 @@
|
||||
<copy file="installer/lib/launch4j/lib/XStream.LICENSE.txt" tofile="pkg-temp/licenses/LICENSE-XStream.txt" />
|
||||
</target>
|
||||
<target name="prepthemeupdates">
|
||||
<!-- Add extricated I2PSnark css here, for now -->
|
||||
<copy file="installer/resources/themes/console/snark.css" todir="pkg-temp/docs/themes/console/" />
|
||||
<!-- these files now in docs/, not in the .war -->
|
||||
<!-- Migrated all Snark content to its own dir. Need to ensure snark dir excluded from console theme choices!! -->
|
||||
<!-- Snark's visible Assets -->
|
||||
<copy todir="pkg-temp/docs/themes/snark/ubergine/" >
|
||||
<fileset dir="installer/resources/themes/snark/ubergine/" />
|
||||
</copy>
|
||||
<!-- No need to copy these individually, we're copying the whole dir below..
|
||||
<copy file="installer/resources/themes/console/images/favicon.ico" todir="pkg-temp/docs/themes/console/images/" />
|
||||
<copy file="installer/resources/themes/console/images/i2plogo.png" todir="pkg-temp/docs/themes/console/images/" />
|
||||
|
@ -102,6 +102,25 @@ iD8DBQFHphOV+h38a3n8zjMRAll+AJ9KA6WiDJcTN4qfrslSemUMr+FBrwCeM8pF
|
||||
D8usM7Dxp5yrDrCYZ5AIijc=
|
||||
=SrXI
|
||||
-----END PGP SIGNATURE-----
|
||||
*/
|
||||
/*
|
||||
-----BEGIN PGP SIGNED MESSAGE-----
|
||||
Hash: SHA1
|
||||
|
||||
*/
|
||||
/* HungryHobo's key */
|
||||
private static final String DEFAULT_TRUSTED_KEY4 =
|
||||
"l3G6um9nB9EDLkT9cUusz5fX-GxXSWE5zaj2~V8lUL~XsGuFf8gKqzJLK" +
|
||||
"NkAw0CgDIDsLRHHuUaF7ZHo5Z7HG~9JJU9Il4G2jyNYtg5S8AzG0UxkEt" +
|
||||
"-JeBEqIxv5GDn6OFKr~wTI0UafJbegEWokl-8m-GPWf0vW-yPMjL7y5MI=";
|
||||
/*
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
Version: GnuPG v1.4.10 (GNU/Linux)
|
||||
|
||||
iEYEARECAAYFAkysnNIACgkQHix7YXbc3BJVfwCeNGUHaWSqZUbWN9L8VyQLpwxI
|
||||
JXQAnA28vDmMMMH/WPbC5ixmJeGGNUiR
|
||||
=3oMC
|
||||
-----END PGP SIGNATURE-----
|
||||
*/
|
||||
|
||||
private static final int VERSION_BYTES = 16;
|
||||
@ -148,6 +167,7 @@ D8usM7Dxp5yrDrCYZ5AIijc=
|
||||
addKey(DEFAULT_TRUSTED_KEY, "jrandom@mail.i2p");
|
||||
addKey(DEFAULT_TRUSTED_KEY2, "zzz@mail.i2p");
|
||||
//addKey(DEFAULT_TRUSTED_KEY3, "complication@mail.i2p");
|
||||
addKey(DEFAULT_TRUSTED_KEY4, "HungryHobo@mail.i2p");
|
||||
}
|
||||
if (_log.shouldLog(Log.DEBUG))
|
||||
_log.debug("TrustedUpdate created, trusting " + _trustedKeys.size() + " keys.");
|
||||
|
11
core/java/src/net/i2p/crypto/package.html
Normal file
@ -0,0 +1,11 @@
|
||||
<html>
|
||||
<body>
|
||||
<p>
|
||||
These classes provide a number of low-level cryptographic routines.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
These cryptographic routines include symmetric and asymmetric encryption and decryption, hashing, secure random number generation...
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
7
core/java/src/net/i2p/package.html
Normal file
@ -0,0 +1,7 @@
|
||||
<html>
|
||||
<body>
|
||||
<p>
|
||||
Core I2P package, contains information about the I2P version and an entry point to access important elements.
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
7
core/java/src/net/i2p/time/package.html
Normal file
@ -0,0 +1,7 @@
|
||||
<html>
|
||||
<body>
|
||||
<p>
|
||||
Provides classes for time synchronisation using NTP.
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
4
debian/control
vendored
@ -9,8 +9,8 @@ Package: i2p
|
||||
Architecture: all
|
||||
Section: net
|
||||
Priority: optional
|
||||
Depends: java-runtime
|
||||
Description: load-balanced unspoofable packet switching network
|
||||
Depends: sun-java6-jre | default-jre | java-runtime
|
||||
Description: Load-balanced unspoofable packet switching network
|
||||
I2P is an anonymizing network, offering a simple layer that identity-sensitive
|
||||
applications can use to securely communicate. All data is wrapped with several
|
||||
layers of encryption, and the network is both distributed and dynamic, with no
|
||||
|
12
debian/rules
vendored
@ -1,5 +1,8 @@
|
||||
#!/usr/bin/make -f
|
||||
|
||||
VERSION=`grep String\ VERSION core/java/src/net/i2p/CoreVersion.java | cut -d\" -f2`
|
||||
SOURCEURL=http://mirror.i2p2.de/i2psource_${VERSION}.tar.bz2
|
||||
|
||||
build:
|
||||
ant preppkg-linux-only
|
||||
mkdir -p debian/tmp/usr/lib
|
||||
@ -12,14 +15,12 @@ build:
|
||||
mkdir -p debian/tmp/usr/bin
|
||||
sed 's|%INSTALL_PATH|/usr/lib/i2p|g' debian/tmp/usr/lib/i2p/eepget > debian/tmp/usr/lib/i2p/a
|
||||
mv debian/tmp/usr/lib/i2p/a debian/tmp/usr/lib/i2p/eepget
|
||||
cp debian/tmp/usr/lib/i2p/eepget debian/tmp/usr/bin/eepget
|
||||
chmod +x debian/tmp/usr/bin/eepget
|
||||
ln -s /usr/lib/i2p/eepget debian/tmp/usr/bin/eepget
|
||||
sed 's|%INSTALL_PATH|/usr/lib/i2p|g' debian/tmp/usr/lib/i2p/runplain.sh > debian/tmp/usr/lib/i2p/a
|
||||
sed 's|%SYSTEM_java_io_tmpdir|/tmp|g' debian/tmp/usr/lib/i2p/a > debian/tmp/usr/lib/i2p/runplain.sh
|
||||
sed 's|%INSTALL_PATH|/usr/lib/i2p|g' debian/tmp/usr/lib/i2p/i2prouter > debian/tmp/usr/lib/i2p/a
|
||||
sed 's|%SYSTEM_java_io_tmpdir|/tmp|g' debian/tmp/usr/lib/i2p/a > debian/tmp/usr/lib/i2p/i2prouter
|
||||
cp debian/tmp/usr/lib/i2p/i2prouter debian/tmp/usr/bin/i2prouter
|
||||
chmod +x debian/tmp/usr/bin/i2prouter
|
||||
ln -s /usr/lib/i2p/i2prouter debian/tmp/usr/bin/i2prouter
|
||||
rm debian/tmp/usr/lib/i2p/a
|
||||
touch debian/build
|
||||
|
||||
@ -34,3 +35,6 @@ clean:
|
||||
rm -rf debian/tmp/
|
||||
ant distclean
|
||||
@exit 0
|
||||
|
||||
get-orig-source:
|
||||
wget ${SOURCEURL}
|
||||
|
5
debian/scripts/init
vendored
@ -17,6 +17,11 @@ I2P () {
|
||||
su i2psvc -c "/usr/lib/i2p/i2prouter $1"
|
||||
}
|
||||
|
||||
if [ `id -un` != "root" ]; then
|
||||
echo "This script ($0) must be run as root"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
case "$1" in
|
||||
start)
|
||||
log_daemon_msg "Starting I2P" "i2p"
|
||||
|
8
debian/scripts/postinst
vendored
@ -11,4 +11,10 @@ chown $I2PUSER:$I2PUSER $SVCHOME
|
||||
update-rc.d i2p defaults
|
||||
|
||||
cd $I2P
|
||||
exec su $I2PUSER ./postinstall.sh
|
||||
su $I2PUSER ./postinstall.sh
|
||||
|
||||
chmod 755 /usr/lib/i2p/eepget
|
||||
chmod 755 /usr/lib/i2p/i2prouter
|
||||
chmod 755 /usr/lib/i2p/i2psvc
|
||||
|
||||
invoke-rc.d i2p start
|
||||
|
8
debian/scripts/postrm
vendored
@ -1,4 +1,12 @@
|
||||
#!/bin/sh
|
||||
|
||||
# $1 is either "remove" or "purge". Since there are no config
|
||||
# files left after a remove, exit here if called with "purge".
|
||||
# This avoids calling userdel again which would cause an error.
|
||||
if [ "$1" = "purge" ]; then
|
||||
exit 0;
|
||||
fi
|
||||
|
||||
I2PUSER=i2psvc
|
||||
exec userdel $I2PUSER
|
||||
|
||||
|
12
history.txt
@ -38,6 +38,12 @@
|
||||
* Router: Set permissions on wrapper.log when not called by RouterLaunch
|
||||
* Systray: New doc and main()
|
||||
|
||||
2010-10-22 sponge
|
||||
* Sanity and some fixs for slackware package
|
||||
|
||||
2010-10-22 sponge
|
||||
* Fix rc.i2p for slackware package
|
||||
|
||||
2010-10-19 zzz
|
||||
* Escape & in logs and i2psnark (much more to do)
|
||||
* JobImpl: Deprecate two debugging methods
|
||||
@ -149,6 +155,12 @@
|
||||
- Logging cleanup
|
||||
- Comment out a main()
|
||||
|
||||
2010-10-10 sponge
|
||||
* Fulfill Request for name resolving in BOB
|
||||
|
||||
2010-09-15 dr|z3d
|
||||
* I2PSnark: Overhaul UI, implement new theme.
|
||||
|
||||
* 2010-07-12 0.8 released
|
||||
|
||||
2010-07-08 zzz
|
||||
|
@ -1,338 +0,0 @@
|
||||
/* Not yet complete. Subject to flux and change. dr|z3d - 07.25.09 */
|
||||
|
||||
body {
|
||||
background: #eef;
|
||||
color: #001;
|
||||
font: 8pt "Lucida Sans Unicode","Bitstream Vera Sans",Verdana,Tahoma,Helvetica,sans-serif;
|
||||
}
|
||||
|
||||
.snarkTitle {
|
||||
font-size: 12pt;
|
||||
font-weight: bold;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.snarkRefresh:link,.snarkRefresh:visited {
|
||||
text-decoration: none !important;
|
||||
text-transform: uppercase !important;
|
||||
padding: 0 16px;
|
||||
letter-spacing: 0.05em;
|
||||
font-weight: bold;
|
||||
font-size: 11pt;
|
||||
color: #005;
|
||||
}
|
||||
|
||||
.snarkRefresh:hover {
|
||||
text-decoration: none !important;
|
||||
text-transform: uppercase !important;
|
||||
padding: 0 16px;
|
||||
letter-spacing: 0.05em;
|
||||
font-weight: bold;
|
||||
font-size: 11pt;
|
||||
color: #f60;
|
||||
border-bottom: 3px solid #f60;
|
||||
border-top: 3px solid #f60;
|
||||
}
|
||||
|
||||
.snarkRefresh:active {
|
||||
text-decoration: none !important;
|
||||
text-transform: uppercase !important;
|
||||
padding: 0 16px;
|
||||
letter-spacing: 0.05em;
|
||||
font-weight: bold;
|
||||
font-size: 11pt;
|
||||
color: #f30;
|
||||
border-bottom: 3px solid #f30;
|
||||
border-top: 3px solid #f30;
|
||||
}
|
||||
|
||||
.snarkMessages {
|
||||
font: bold 9pt "Lucida Console","DejaVu Sans Mono",Courier,mono !important;
|
||||
text-align: left;
|
||||
margin: 0 0px 10px 0px;
|
||||
padding: 0;
|
||||
border-spacing: 0px;
|
||||
-moz-border-radius: 4px 0 0 0;
|
||||
-khtml-border-radius: 4px;
|
||||
border-radius: 4px;
|
||||
border: 2px solid #930;
|
||||
overflow: auto;
|
||||
color: #531;
|
||||
height: 79px;
|
||||
width: auto;
|
||||
background: #f0dea0;
|
||||
}
|
||||
|
||||
pre {
|
||||
width: 100%;
|
||||
font: 8pt "Lucida Console","DejaVu Sans Mono",Courier,mono !important;
|
||||
padding: 0;
|
||||
text-align: left !important;
|
||||
height: 8px;
|
||||
}
|
||||
|
||||
table {
|
||||
margin: 0px 0px 10px 0px;
|
||||
border: 0px;
|
||||
padding: 0px;
|
||||
border-spacing: 0px;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
|
||||
th {
|
||||
padding: 4px;
|
||||
font-size: 9pt;
|
||||
border-top: 1px outset #001;
|
||||
border-bottom: 1px inset #001;
|
||||
background: #fda;
|
||||
whitespace: nowrap;
|
||||
}
|
||||
|
||||
.SnarkTorrents {
|
||||
margin: 0;
|
||||
border: 1px solid #001;
|
||||
background: #f9f;
|
||||
}
|
||||
|
||||
td {
|
||||
padding: 4px;
|
||||
}
|
||||
|
||||
.snarkTorrentEven {
|
||||
background: #fea;
|
||||
font-size: 8pt;
|
||||
}
|
||||
|
||||
.snarkTorrentOdd {
|
||||
background: #f0dea0;
|
||||
font-size: 8pt;
|
||||
}
|
||||
|
||||
.snarkFileName {
|
||||
min-width: 25em;
|
||||
padding: 4px 10px;
|
||||
}
|
||||
|
||||
.snarkFileSize {
|
||||
padding: 4px 10px;
|
||||
}
|
||||
|
||||
.snarkFileStatus {
|
||||
padding: 4px 10px;
|
||||
}
|
||||
|
||||
.thumb {
|
||||
max-height: 64px;
|
||||
max-width: 96px;
|
||||
}
|
||||
|
||||
.snarkNewTorrent {
|
||||
font-size: 9pt;
|
||||
}
|
||||
|
||||
.snarkAddInfo {
|
||||
font-size: 9pt;
|
||||
line-height: 130% !important;
|
||||
}
|
||||
|
||||
.snarkConfigTitle {
|
||||
font-size: 11pt;
|
||||
font-weight: bold;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
.snarkConfig {
|
||||
font-size: 10pt;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.page {
|
||||
background: #fff;
|
||||
color: #310;
|
||||
min-width: 800px !important;
|
||||
margin: 5px 0 0 0;
|
||||
padding: 10px 10px 0px 10px;
|
||||
-moz-border-radius: 4px;
|
||||
-khtml-border-radius: 4px;
|
||||
border-radius: 4px;
|
||||
border: 1px solid #001;
|
||||
font-size: 9pt !important;
|
||||
line-height: 160% !important;
|
||||
-moz-box-shadow: inset 0px 0px 1px 0px #002;
|
||||
text-align: center;
|
||||
opacity: 1.0;
|
||||
}
|
||||
|
||||
form {
|
||||
line-height: 250%;
|
||||
}
|
||||
|
||||
p {
|
||||
line-height: 150%;
|
||||
}
|
||||
|
||||
hr {
|
||||
color: #003;
|
||||
background: #003;
|
||||
height: 1px;
|
||||
border: 0px solid #003;
|
||||
width: 100%;
|
||||
margin: 10px 0 7px 0;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
a:link {
|
||||
color: #930;
|
||||
text-decoration: none;
|
||||
font-weight: bold;
|
||||
word-wrap: break-word;
|
||||
}
|
||||
|
||||
a:visited {
|
||||
color: #606;
|
||||
text-decoration: none;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
a:hover {
|
||||
color: #900;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
input {
|
||||
font-size: 9pt;
|
||||
font-weight: bold;
|
||||
text-align: left;
|
||||
padding: 2px 4px;
|
||||
-moz-border-radius: 4px;
|
||||
border-radius: 4px;
|
||||
border: 1px;
|
||||
background: #ffe;
|
||||
}
|
||||
|
||||
input.r {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
select {
|
||||
background: #ffe;
|
||||
color: #310;
|
||||
font: 9pt "Lucida Sans Unicode","Bitstream Vera Sans",Verdana,Tahoma,Helvetica,sans-serif;
|
||||
font-weight: bold;
|
||||
padding: 2px 2px 2px 3px;
|
||||
-moz-border-radius: 4px;
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
textarea {
|
||||
background: #ffe;
|
||||
color: #310;
|
||||
font-weight: bold;
|
||||
padding: 1px 4px 0px;
|
||||
-moz-border-radius: 4px;
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
img {
|
||||
border: none;
|
||||
margin: 3px 8px 5px 4px;
|
||||
vertical-align: middle;
|
||||
opacity: 1.0;
|
||||
line-height: 100%;
|
||||
}
|
||||
|
||||
img: hover {
|
||||
border: none;
|
||||
margin: 5px 5px 0px 5px;
|
||||
opacity: 0.5;
|
||||
line-height: 100%;
|
||||
}
|
||||
|
||||
div.section,div.mainsection {
|
||||
margin: 0 0 10px 0;
|
||||
padding: 10px;
|
||||
border: 1px solid #001;
|
||||
color: #001;
|
||||
-moz-border-radius: 4px;
|
||||
-khtml-border-radius: 4px;
|
||||
border-radius: 4px;
|
||||
-moz-box-shadow: inset 0px 0px 1px 0px #002;
|
||||
word-wrap: break-word;
|
||||
text-align: center;
|
||||
background: #ffe url('../console/light/images/tabletile.png');
|
||||
opacity: 1.0;
|
||||
}
|
||||
|
||||
div.newtorrentsection {
|
||||
margin: 0 0 10px 0;
|
||||
padding: 0 10px 10px 10px;
|
||||
border: 1px solid #001;
|
||||
text-align: center;
|
||||
color: #001;
|
||||
-moz-border-radius: 4px;
|
||||
-khtml-border-radius: 4px;
|
||||
border-radius: 4px;
|
||||
-moz-box-shadow: inset 0px 0px 1px 0px #002;
|
||||
word-wrap: break-word;
|
||||
background: #bb4 url('../console/images/yellowtile.png');
|
||||
opacity: 1.0;
|
||||
}
|
||||
|
||||
div.addtorrentsection {
|
||||
margin: 0 0 10px 0;
|
||||
padding: 0 10px 10px 10px;
|
||||
border: 1px solid #001;
|
||||
text-align: center;
|
||||
color: #001;
|
||||
-moz-border-radius: 4px;
|
||||
-khtml-border-radius: 4px;
|
||||
border-radius: 4px;
|
||||
-moz-box-shadow: inset 0px 0px 1px 0px #002;
|
||||
word-wrap: break-word;
|
||||
background: #7f7 url('../console/images/greentile.png');
|
||||
opacity: 1.0;
|
||||
}
|
||||
|
||||
div.configsection {
|
||||
margin: 0;
|
||||
padding: 0 10px 10px 10px;
|
||||
border: 1px solid #001;
|
||||
color: #ffb;
|
||||
-moz-border-radius: 4px;
|
||||
-khtml-border-radius: 4px;
|
||||
border-radius: 4px;
|
||||
-moz-box-shadow: inset 0px 0px 0px 1px #900;
|
||||
word-wrap: break-word;
|
||||
text-align: center;
|
||||
background: #700 url('../console/light/images/darkbluetile.png');
|
||||
font-weight: bold;/* red tile needs bold text! */
|
||||
}
|
||||
|
||||
div.configsection table{
|
||||
color: #ffb;
|
||||
}
|
||||
|
||||
div.configsection a {
|
||||
color: #f90;
|
||||
}
|
||||
|
||||
div.configsection a: hover {
|
||||
color: #f60;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.snarknavbar {
|
||||
margin: 0 0 10px 0 !important;
|
||||
padding: 10px;
|
||||
border: 1px solid #001;
|
||||
-moz-border-radius: 4px;
|
||||
-khtml-border-radius: 4px;
|
||||
border-radius: 4px;
|
||||
-moz-box-shadow: inset 0px 0px 1px 0px #002;
|
||||
background: #ddf url('../console/light/images/tabletile.png');
|
||||
text-transform: uppercase !important;
|
||||
letter-spacing: 0.05em;
|
||||
font-weight: bold;
|
||||
font-size: 11pt;
|
||||
color: #001;
|
||||
}
|
BIN
installer/resources/themes/snark/ubergine/favicon.ico
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
installer/resources/themes/snark/ubergine/images/add.png
Normal file
After Width: | Height: | Size: 733 B |
After Width: | Height: | Size: 777 B |
BIN
installer/resources/themes/snark/ubergine/images/complete.png
Normal file
After Width: | Height: | Size: 878 B |
BIN
installer/resources/themes/snark/ubergine/images/config.png
Normal file
After Width: | Height: | Size: 584 B |
After Width: | Height: | Size: 3.8 KiB |
BIN
installer/resources/themes/snark/ubergine/images/create.png
Normal file
After Width: | Height: | Size: 570 B |
BIN
installer/resources/themes/snark/ubergine/images/delete.png
Normal file
After Width: | Height: | Size: 716 B |
BIN
installer/resources/themes/snark/ubergine/images/details.png
Normal file
After Width: | Height: | Size: 778 B |
BIN
installer/resources/themes/snark/ubergine/images/downloading.png
Normal file
After Width: | Height: | Size: 878 B |
BIN
installer/resources/themes/snark/ubergine/images/eta.png
Normal file
After Width: | Height: | Size: 561 B |
BIN
installer/resources/themes/snark/ubergine/images/file.png
Normal file
After Width: | Height: | Size: 216 B |
BIN
installer/resources/themes/snark/ubergine/images/graytile.png
Normal file
After Width: | Height: | Size: 571 B |
BIN
installer/resources/themes/snark/ubergine/images/hat.png
Normal file
After Width: | Height: | Size: 15 KiB |
BIN
installer/resources/themes/snark/ubergine/images/hidepeers.png
Normal file
After Width: | Height: | Size: 921 B |
BIN
installer/resources/themes/snark/ubergine/images/nopeers.png
Normal file
After Width: | Height: | Size: 843 B |
BIN
installer/resources/themes/snark/ubergine/images/remove.png
Normal file
After Width: | Height: | Size: 486 B |
BIN
installer/resources/themes/snark/ubergine/images/seeding.png
Normal file
After Width: | Height: | Size: 888 B |
BIN
installer/resources/themes/snark/ubergine/images/showpeers.png
Normal file
After Width: | Height: | Size: 920 B |
BIN
installer/resources/themes/snark/ubergine/images/size.png
Normal file
After Width: | Height: | Size: 454 B |
BIN
installer/resources/themes/snark/ubergine/images/snark_add.png
Normal file
After Width: | Height: | Size: 3.5 KiB |
After Width: | Height: | Size: 1.1 KiB |
BIN
installer/resources/themes/snark/ubergine/images/snark_thead.png
Normal file
After Width: | Height: | Size: 121 B |
BIN
installer/resources/themes/snark/ubergine/images/snarknav.png
Normal file
After Width: | Height: | Size: 167 B |
After Width: | Height: | Size: 659 B |
BIN
installer/resources/themes/snark/ubergine/images/snarknav_on.png
Normal file
After Width: | Height: | Size: 355 B |
BIN
installer/resources/themes/snark/ubergine/images/snarktopnav.png
Normal file
After Width: | Height: | Size: 163 B |
BIN
installer/resources/themes/snark/ubergine/images/stalled.png
Normal file
After Width: | Height: | Size: 910 B |
BIN
installer/resources/themes/snark/ubergine/images/start.png
Normal file
After Width: | Height: | Size: 499 B |
BIN
installer/resources/themes/snark/ubergine/images/start_all.png
Normal file
After Width: | Height: | Size: 1.0 KiB |
BIN
installer/resources/themes/snark/ubergine/images/status.png
Normal file
After Width: | Height: | Size: 823 B |
BIN
installer/resources/themes/snark/ubergine/images/stop.png
Normal file
After Width: | Height: | Size: 424 B |
BIN
installer/resources/themes/snark/ubergine/images/stop_all.png
Normal file
After Width: | Height: | Size: 1008 B |
BIN
installer/resources/themes/snark/ubergine/images/stopped.png
Normal file
After Width: | Height: | Size: 875 B |
BIN
installer/resources/themes/snark/ubergine/images/tile2.png
Normal file
After Width: | Height: | Size: 156 B |
BIN
installer/resources/themes/snark/ubergine/images/torrent.png
Normal file
After Width: | Height: | Size: 543 B |
After Width: | Height: | Size: 788 B |
BIN
installer/resources/themes/snark/ubergine/images/up.png
Normal file
After Width: | Height: | Size: 341 B |
634
installer/resources/themes/snark/ubergine/snark.css
Normal file
@ -0,0 +1,634 @@
|
||||
/* I2PSnark theme "Ubergine" by dr|z3d */
|
||||
/* Guantanamo Commemorative Edition. */
|
||||
|
||||
body {
|
||||
background: #101 url('/themes/snark/ubergine/images/graytile.png');
|
||||
color: #001;
|
||||
font: 8pt "Lucida Sans Unicode","Bitstream Vera Sans",Verdana,Tahoma,Helvetica,sans-serif;
|
||||
}
|
||||
|
||||
.snarkTitle {
|
||||
font-size: 12pt;
|
||||
font-weight: bold;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.snarkRefresh:link,.snarkRefresh:visited {
|
||||
text-decoration: none !important;
|
||||
text-transform: uppercase !important;
|
||||
padding: 4px 16px 5px !important;
|
||||
margin: -5px -7px -5px 0 !important;
|
||||
letter-spacing: 0.05em;
|
||||
font-weight: bold;
|
||||
font-size: 11pt;
|
||||
color: #f70;
|
||||
text-shadow: 1px 1px #420;
|
||||
background: url('/themes/snark/ubergine/images/snarknav_lowlight.png') no-repeat scroll center bottom;
|
||||
background: #310 url('/themes/snark/ubergine/images/snarknav_on.png') repeat-x scroll center center;
|
||||
-moz-border-radius: 0px;
|
||||
-khtml-border-radius: 3px;
|
||||
border-radius: 0px;
|
||||
-moz-box-shadow: inset 0 0 1px 0 #f90;
|
||||
-khtml-box-shadow: inset 0 0 1px 0 #f90;
|
||||
box-shadow: 0 0 1px 0 #f90;
|
||||
|
||||
}
|
||||
|
||||
.snarkRefresh:hover {
|
||||
text-decoration: none !important;
|
||||
text-transform: uppercase !important;
|
||||
padding: 1px 16px;
|
||||
letter-spacing: 0.05em;
|
||||
font-weight: bold;
|
||||
font-size: 11pt;
|
||||
color: #f50;
|
||||
background: #310 url('/themes/snark/ubergine/images/snarknav_on.png') repeat-x scroll center center;
|
||||
background: url('/themes/snark/ubergine/images/snarknav_lowlight.png') repeat-x scroll center center;
|
||||
-moz-border-radius: 0;
|
||||
-khtml-border-radius: 0;
|
||||
border-radius: 0;
|
||||
-moz-box-shadow: inset 0 0 1px 0 #f90;
|
||||
-khtml-box-shadow: inset 0 0 1px 0 #f90;
|
||||
box-shadow: 0 0 1px #f90;
|
||||
}
|
||||
|
||||
.snarkRefresh:active {
|
||||
text-decoration: none !important;
|
||||
text-transform: uppercase !important;
|
||||
padding: 0 16px;
|
||||
letter-spacing: 0.05em;
|
||||
font-weight: bold;
|
||||
font-size: 11pt;
|
||||
color: #fb0;
|
||||
background: #310 url('/themes/snark/ubergine/images/snarknav_on.png') repeat-x scroll center center;
|
||||
}
|
||||
|
||||
.snarkRefresh:last-child {
|
||||
-moz-border-radius: 0 3px 3px 0px;
|
||||
-khtml-border-radius: 0 3px 0 0;
|
||||
border-radius: 0;
|
||||
-moz-box-shadow: inset 0 0 1px 0 #f90;
|
||||
-khtml-box-shadow: inset 0 0 1px 0 #f90;
|
||||
box-shadow: 0 0 1px 0 #f90;
|
||||
}
|
||||
|
||||
.snarkRefresh:first-child {
|
||||
-moz-border-radius: 3px 0 0 3px;
|
||||
-khtml-border-radius: 3px;
|
||||
border-radius: 0;
|
||||
-moz-box-shadow: inset 0 0 1px 0 #f90;
|
||||
-khtml-box-shadow: inset 0 0 1px 0 #f90;
|
||||
box-shadow: 0 0 1px 0 #f90;
|
||||
}
|
||||
|
||||
.snarkMessages {
|
||||
font: bold 9pt "Lucida Console","DejaVu Sans Mono",Courier,mono !important;
|
||||
text-align: left;
|
||||
margin: 0 0 10px 0;
|
||||
padding: 3px 0;
|
||||
border-spacing: 0px;
|
||||
-moz-border-radius: 4px 0 0 0;
|
||||
-khtml-border-radius: 4px 0 0 0;
|
||||
border-radius: 4px 0 0 0;
|
||||
border: 1px solid #000;
|
||||
overflow: auto;
|
||||
color: #26f;
|
||||
height: 70px;
|
||||
width: auto;
|
||||
background: #101 url('/themes/snark/ubergine/images/hat.png') no-repeat scroll right center;
|
||||
}
|
||||
|
||||
.snarkMessages a:link {
|
||||
color: #37f !important;
|
||||
}
|
||||
|
||||
.snarkMessages a:hover {
|
||||
color: #59f !important;
|
||||
}
|
||||
|
||||
.logshim {
|
||||
margin-top: -10px !important;
|
||||
}
|
||||
|
||||
pre {
|
||||
width: 100%;
|
||||
font: 8pt "Lucida Console","DejaVu Sans Mono",Courier,mono !important;
|
||||
padding: 0;
|
||||
text-align: left !important;
|
||||
height: 8px;
|
||||
color: #13f;
|
||||
font-weight: bold !important;
|
||||
}
|
||||
|
||||
table {
|
||||
margin: 0px 0px 10px 0px;
|
||||
border: 0px;
|
||||
padding: 0px;
|
||||
border-spacing: 0px;
|
||||
border-collapse: collapse;
|
||||
color: #323;
|
||||
width: 100%;
|
||||
opacity: 1 !important;
|
||||
}
|
||||
|
||||
tr {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
thead, tfoot {
|
||||
background: url("/themes/snark/ubergine/images/snark_thead.png") repeat-x scroll 0 0 #101;
|
||||
text-shadow:0 2px 5px #333333;
|
||||
}
|
||||
|
||||
thead a, tfoot a {
|
||||
text-shadow:1px 1px #550000;
|
||||
}
|
||||
|
||||
thead {
|
||||
border-bottom: 1px solid #101;
|
||||
}
|
||||
|
||||
th {
|
||||
padding: 4px 2px 4px 4px;
|
||||
font-size: 9pt;
|
||||
border-top: 1px outset #001;
|
||||
border-bottom: 1px inset #101;
|
||||
color: #ddd;
|
||||
whitespace: nowrap;
|
||||
font-variant: small-caps !important;
|
||||
letter-spacing: 0.05em;
|
||||
}
|
||||
|
||||
th:first-child {
|
||||
text-align: left !important;
|
||||
padding-left: 2px;
|
||||
max-width: 120px;
|
||||
}
|
||||
|
||||
tfoot td:first-child {
|
||||
text-align: left !important;
|
||||
padding-left: 0px;
|
||||
}
|
||||
|
||||
th:first-child img {
|
||||
margin: 1px 1px 3px 1px !important;
|
||||
}
|
||||
|
||||
th:nth-child(2) img {
|
||||
margin: 1px 7px 3px 2px !important;
|
||||
}
|
||||
|
||||
tfoot th {
|
||||
padding-bottom: 4px !important;
|
||||
}
|
||||
|
||||
.SnarkTorrents {
|
||||
margin: 0;
|
||||
border: 1px solid #101;
|
||||
background: #212;
|
||||
}
|
||||
|
||||
td {
|
||||
padding: 1px;
|
||||
color: #ddd !important;
|
||||
font-size: 9.5pt;
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.mainsection td {
|
||||
color: #111;
|
||||
}
|
||||
|
||||
td:first-child {
|
||||
text-align: right;
|
||||
padding-left: 10px;
|
||||
}
|
||||
|
||||
.snarkTorrentName {
|
||||
text-shadow:1px 1px #550000;
|
||||
padding: 2px 0 0;
|
||||
}
|
||||
|
||||
.snarkTorrentAction {
|
||||
text-shadow:1px 1px #550000;
|
||||
padding: 1px 1px 1px 1px !important;
|
||||
margin: 0 !important;
|
||||
text-align: center;
|
||||
width: 68px;
|
||||
}
|
||||
|
||||
.snarkTorrentAction img {
|
||||
margin: 0 2px !important;
|
||||
opacity: 0.6;
|
||||
}
|
||||
|
||||
.snarkTorrentAction img:hover {
|
||||
-moz-box-shadow: 0 0 1px 1px #f90;
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.snarkTorrentEven {
|
||||
background: #545;
|
||||
font-size: 8pt;
|
||||
background: #202;
|
||||
}
|
||||
|
||||
/*
|
||||
.snarkTorrentEven tr:first-child {
|
||||
border: 1px dotted #fff !important;
|
||||
}
|
||||
|
||||
*/
|
||||
|
||||
.snarkTorrentNoneLoaded {
|
||||
background: #323;
|
||||
font-size: 8.5pt;
|
||||
font-weight: bold;
|
||||
text-align: center !important;
|
||||
color: #bbb !important;
|
||||
}
|
||||
|
||||
.snarkTorrentStatus {
|
||||
padding: 1px 0 2px;
|
||||
}
|
||||
|
||||
.snarkTorrentStatus:first-child {
|
||||
text-align: left !important;
|
||||
font-style: italic;
|
||||
padding-left: 0px;
|
||||
min-width: 92px;
|
||||
font-weight: bold;
|
||||
font-size: 7pt !important;
|
||||
color: #dd9 !important;
|
||||
}
|
||||
|
||||
.snarkTorrentStatus:first-child img {
|
||||
margin-right: 0px !important;
|
||||
}
|
||||
|
||||
.snarkTorrentRate, .snarkTorrentDownloaded, .snarkTorrentUploaded {
|
||||
font-size: 8pt;
|
||||
font-weight: bold;
|
||||
padding: 0 3px;
|
||||
}
|
||||
|
||||
.snarkTorrentDownloaded {
|
||||
color: #76a !important;
|
||||
}
|
||||
|
||||
.snarkTorrentUploaded {
|
||||
color: #b9b !important;
|
||||
}
|
||||
|
||||
.snarkTorrentRate {
|
||||
color: #d9d !important;
|
||||
}
|
||||
|
||||
|
||||
.snarkTorrentOdd {
|
||||
background: #656;
|
||||
background: #351933;
|
||||
font-size: 8pt;
|
||||
border: 0px inset #101 !important;
|
||||
border-left: 0 !important;
|
||||
border-right: 0 !important;
|
||||
}
|
||||
.snarkTorrentOdd td, .snarkTorrentEven td {
|
||||
border-top: 1px dotted #313 !important;
|
||||
}
|
||||
|
||||
.snarkFileName {
|
||||
/* min-width: 25em;*/
|
||||
padding: 4px 0px !important;
|
||||
text-align: left !important;
|
||||
}
|
||||
|
||||
.snarkFileSize {
|
||||
padding: 4px 2px;
|
||||
}
|
||||
|
||||
.snarkFileStatus {
|
||||
padding: 4px 10px;
|
||||
text-align: center;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
.snarkTorrentETA {
|
||||
font-weight: bold;
|
||||
font-style: italic;
|
||||
color: #dd7 !important;
|
||||
}
|
||||
|
||||
.thumb {
|
||||
max-height: 64px;
|
||||
max-width: 96px;
|
||||
}
|
||||
|
||||
.snarkNewTorrent {
|
||||
font-size: 9pt;
|
||||
}
|
||||
|
||||
.snarkAddInfo {
|
||||
font-size: 9pt;
|
||||
line-height: 130% !important;
|
||||
}
|
||||
|
||||
.snarkConfigTitle {
|
||||
font-size: 11pt;
|
||||
font-weight: bold;
|
||||
padding: 0 25px 3px 25px;
|
||||
margin: 5px 0 10px 0 !important;
|
||||
letter-spacing: 0.25em;
|
||||
border: 1px solid #111;
|
||||
-moz-border-radius: 0 0 5px 5px;
|
||||
-khtml-border-radius: 0 0 5px 5px;
|
||||
border-radius: 0 0 5px 5px;
|
||||
border-top: 0;
|
||||
text-shadow: 0px 3px 5px #323;
|
||||
background: #101 url('/themes/snark/ubergine/images/snarknav.png') repeat-x scroll center center !important;
|
||||
font-variant: small-caps !important;
|
||||
}
|
||||
|
||||
.snarkConfig {
|
||||
font-size: 10pt;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.page {
|
||||
background: #323 url('/themes/snark/ubergine/images/tile2.png');
|
||||
color: #310;
|
||||
min-width: 880px !important;
|
||||
margin: 5px 0 0 0;
|
||||
padding: 10px 10px 0px 10px;
|
||||
-moz-border-radius: 4px;
|
||||
-khtml-border-radius: 4px;
|
||||
border-radius: 4px;
|
||||
border: 1px solid #101;
|
||||
font-size: 9pt !important;
|
||||
line-height: 160% !important;
|
||||
-moz-box-shadow: inset 0px 0px 1px 0px #212;
|
||||
-khtml-box-shadow: inset 0px 0px 1px 0px #002;
|
||||
box-shadow: inset 0px 0px 1px 0px #002;
|
||||
text-align: center;
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
form {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
p {
|
||||
line-height: 150%;
|
||||
}
|
||||
|
||||
hr {
|
||||
color: #444;
|
||||
background: #444;
|
||||
height: 1px;
|
||||
border: 0px solid #444;
|
||||
width: 0%;
|
||||
margin: 5px 0 7px 0;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
a:link {
|
||||
color: #f70;
|
||||
text-decoration: none;
|
||||
font-weight: bold;
|
||||
word-wrap: break-word;
|
||||
}
|
||||
|
||||
a:visited {
|
||||
color: #f50;
|
||||
text-decoration: none;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
a:hover {
|
||||
color: #f90;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
input {
|
||||
font-size: 9pt;
|
||||
font-weight: bold;
|
||||
text-align: left;
|
||||
padding: 2px 4px;
|
||||
-moz-border-radius: 4px;
|
||||
-khtml-border-radius: 4px;
|
||||
border-radius: 4px;
|
||||
border: 1px inset #000;
|
||||
background: #212 url('/themes/snark/ubergine/images/graytile.png');
|
||||
color: #f60;
|
||||
}
|
||||
|
||||
input.r {
|
||||
text-align: right;
|
||||
background: url('/themes/snark/ubergine/images/graytile.png');
|
||||
}
|
||||
|
||||
input[type=submit] {
|
||||
text-shadow: 0px 0px #410;
|
||||
color: #000;
|
||||
background: #989;
|
||||
border: 1px inset #bbb;
|
||||
}
|
||||
|
||||
input[type=submit]:hover {
|
||||
border: 1px outset #bbb;
|
||||
text-shadow: 0 0;
|
||||
background: #f60;
|
||||
color: #fff;
|
||||
text-shadow: 0px 1px 5px #f00;
|
||||
}
|
||||
|
||||
input[type=submit]:active {
|
||||
background: #000 !important;
|
||||
color: #f60 !important;
|
||||
text-shadow: 0 !important;
|
||||
}
|
||||
|
||||
input[type=text]:active, input[type=text]:hover, input.r:hover {
|
||||
background: #f60;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
select {
|
||||
background: #333;
|
||||
background: url('/themes/snark/ubergine/images/graytile.png') !important;
|
||||
color: #f60;
|
||||
font: 9pt "Lucida Sans Unicode","Bitstream Vera Sans",Verdana,Tahoma,Helvetica,sans-serif;
|
||||
font-weight: bold;
|
||||
padding: 2px 2px 2px 3px;
|
||||
-moz-border-radius: 4px 0 0 4px;
|
||||
-khtml-border-radius: 4px 0 0 4px;
|
||||
border-radius: 4px 0 0 4px;
|
||||
border: 1px solid #000;
|
||||
}
|
||||
|
||||
select:hover, textarea:hover {
|
||||
background: #f60 !important;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
textarea {
|
||||
background: #111 url('/themes/snark/ubergine/images/graytile.png');
|
||||
color: #f60;
|
||||
font-weight: bold;
|
||||
padding: 1px 4px 0px;
|
||||
-moz-border-radius: 4px;
|
||||
-khtml-border-radius: 4px;
|
||||
border-radius: 4px;
|
||||
border: 1px inset #000;
|
||||
}
|
||||
|
||||
img {
|
||||
border: none;
|
||||
margin: 0 3px 1px 3px;
|
||||
vertical-align: middle;
|
||||
opacity: 1.0;
|
||||
line-height: 100%;
|
||||
}
|
||||
|
||||
img: hover {
|
||||
border: none;
|
||||
opacity: 0.5;
|
||||
line-height: 100%;
|
||||
}
|
||||
|
||||
div.section,div.mainsection {
|
||||
margin: 0 0 10px 0;
|
||||
padding: 10px;
|
||||
border: 1px solid #001;
|
||||
color: #001;
|
||||
-moz-border-radius: 4px;
|
||||
-khtml-border-radius: 4px;
|
||||
border-radius: 4px;
|
||||
-moz-box-shadow: inset 0px 0px 1px 0px #212;
|
||||
word-wrap: break-word;
|
||||
text-align: center;
|
||||
background: #545;
|
||||
opacity: 1 !important;
|
||||
}
|
||||
|
||||
div.newtorrentsection {
|
||||
margin: 0 0 10px 0;
|
||||
padding: 0 10px 0px 10px;
|
||||
border: 1px solid #001;
|
||||
text-align: center;
|
||||
color: #ddd;
|
||||
-moz-border-radius: 4px;
|
||||
-khtml-border-radius: 4px;
|
||||
border-radius: 4px;
|
||||
-moz-box-shadow: inset 0px 0px 1px 0px #101;
|
||||
-khtml-box-shadow: inset 0px 0px 1px 0px #101;
|
||||
box-shadow: inset 0px 0px 1px 0px #101;
|
||||
word-wrap: break-word;
|
||||
background: #545 url('/themes/snark/ubergine/images/snark_create.png') no-repeat scroll right center;
|
||||
opacity: 1.0;
|
||||
}
|
||||
|
||||
div.addtorrentsection {
|
||||
margin: 0 0 10px 0;
|
||||
padding: 0 10px 0px 10px;
|
||||
border: 1px solid #001;
|
||||
text-align: center;
|
||||
color: #ddd;
|
||||
-moz-border-radius: 4px;
|
||||
-khtml-border-radius: 4px;
|
||||
border-radius: 4px;
|
||||
-moz-box-shadow: inset 0px 0px 1px 0px #101;
|
||||
-khtml-box-shadow: inset 0px 0px 1px 0px #101;
|
||||
box-shadow: inset 0px 0px 1px 0px #101;
|
||||
word-wrap: break-word;
|
||||
background: #545 url('/themes/snark/ubergine/images/snark_add.png') no-repeat scroll right center;
|
||||
opacity: 1.0;
|
||||
}
|
||||
|
||||
div.configsection {
|
||||
margin: 0 0 10px 0;
|
||||
padding: 0 10px 15px 10px;
|
||||
border: 1px solid #000;
|
||||
color: #ddd;
|
||||
-moz-border-radius: 4px;
|
||||
-khtml-border-radius: 4px;
|
||||
border-radius: 4px;
|
||||
-moz-box-shadow: inset 0px 0px 1px 0px #101;
|
||||
-khtml-box-shadow: inset 0px 0px 1px 0px #101;
|
||||
box-shadow: inset 0px 0px 1px 0px #101;
|
||||
word-wrap: break-word;
|
||||
text-align: center;
|
||||
background: #545;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
div.configsectionpanel {
|
||||
margin: 0 0 10px 0;
|
||||
padding: 0 10px;
|
||||
border: 1px solid #000;
|
||||
color: #ddd;
|
||||
-moz-border-radius: 4px;
|
||||
-khtml-border-radius: 4px;
|
||||
border-radius: 4px;
|
||||
-moz-box-shadow: inset 0px 0px 1px 0px #101;
|
||||
-khtml-box-shadow: inset 0px 0px 1px 0px #101;
|
||||
box-shadow: inset 0px 0px 1px 0px #101;
|
||||
word-wrap: break-word;
|
||||
text-align: center;
|
||||
background: #545 url('/themes/snark/ubergine/images/configuration.png') no-repeat scroll right center;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.newtorrentsection form, .configsection form, .addtorrentsection form {
|
||||
color: #ddd !important;
|
||||
}
|
||||
|
||||
div.configsection table{
|
||||
color: #ffb;
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
div.configsection a {
|
||||
color: #f60;
|
||||
text-shadow: 1px 1px #500;
|
||||
}
|
||||
|
||||
div.configsection a:hover {
|
||||
color: #f90;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
code {
|
||||
font-size: 9pt;
|
||||
color: #b8b;
|
||||
padding: 0 2px;
|
||||
font-weight: bold;
|
||||
font-family: "Lucida Console", "DejaVu Sans Mono", Courier, mono;
|
||||
}
|
||||
.snarknavbar {
|
||||
margin: -10px 0 5px 0 !important;
|
||||
padding: 11px 10px 12px;
|
||||
border: 1px solid #101;
|
||||
-moz-border-radius: 0 0 8px 8px;
|
||||
-khtml-border-radius: 0 0 4px 4px;
|
||||
border-radius: 0 0 4px 4px;
|
||||
-moz-box-shadow: inset 0px 0px 1px 0px #002;
|
||||
-khtml-box-shadow: inset 0px 0px 1px 0px #002;
|
||||
box-shadow: inset 0px 0px 1px 0px #002;
|
||||
background: #101 url('/themes/snark/ubergine/images/snarktopnav.png') repeat-x scroll center center;
|
||||
text-transform: uppercase !important;
|
||||
letter-spacing: 0.065em !important;
|
||||
font-weight: bold;
|
||||
font-size: 11.5pt;
|
||||
color: #001;
|
||||
min-width: 700px;
|
||||
width: 700px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.snarknavbar img {
|
||||
border: 0;
|
||||
margin: 0 -6px 0 -2px;
|
||||
padding: 1px 0 0px !important;
|
||||
vertical-align: top;
|
||||
}
|
10
router/java/src/net/i2p/router/package.html
Normal file
@ -0,0 +1,10 @@
|
||||
<html>
|
||||
<body>
|
||||
<p>
|
||||
The I2P router application handles the I2P network communication.
|
||||
</p>
|
||||
<p>
|
||||
It encompasses sending and receiving messages, building up tunnels, encrypting and decrypting (on multiple levels) where applicable, and so on.
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
10
router/java/src/net/i2p/router/peermanager/package.html
Normal file
@ -0,0 +1,10 @@
|
||||
<html>
|
||||
<body>
|
||||
<p>
|
||||
The peer manager logs information about the history and quality of network peers.
|
||||
</p>
|
||||
<p>
|
||||
Peer capacity, speed and other parameters are calculated to determine in what cases we should use each peer.
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
10
router/java/src/net/i2p/router/startup/package.html
Normal file
@ -0,0 +1,10 @@
|
||||
<html>
|
||||
<body>
|
||||
<p>
|
||||
The I2P startup package loads the configuration when I2P is started.
|
||||
</p>
|
||||
<p>
|
||||
The startup consists of a number of different jobs, like loading data from files for the network database, creating new router information (keypairs), and so on.
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,7 @@
|
||||
<html>
|
||||
<body>
|
||||
<p>
|
||||
The NTCP transport allows passing I2P messages on top of TCP. The N in NTCP stands for 'New', as the NTCP transport replaces an older TCP transport which had issues concerning congestion collapse.
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
7
router/java/src/net/i2p/router/transport/package.html
Normal file
@ -0,0 +1,7 @@
|
||||
<html>
|
||||
<body>
|
||||
<p>
|
||||
The transport system allows the usage of communication layers that are below I2P in the stack, on which I2P messages are sent.
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,7 @@
|
||||
<html>
|
||||
<body>
|
||||
<p>
|
||||
The UDP transport (also known as 'SSU transport') allows passing I2P messages on top of UDP.
|
||||
</p>
|
||||
</body>
|
||||
</html>
|