propagate from branch 'i2p.i2p' (head fc46f2d84625265a3899b5ad50af5e91d396ba01)

to branch 'i2p.i2p.str4d.ui' (head f8d5c7b37f4813b669d8a10f9ff82d0ed2a33282)
This commit is contained in:
str4d
2016-05-29 02:04:34 +00:00
34 changed files with 3634 additions and 2653 deletions

View File

@@ -75,6 +75,8 @@
<property name="workspace.changes.tr" value="" />
<!-- ideal for linux: 24x24, but transparency doesn't work -->
<copy tofile="${build}/desktopgui/resources/images/logo.png" file="../../installer/resources/themes/console/images/itoopie_xsm.png" />
<copy todir="${build}/desktopgui/resources/images" file="images/itoopie_black_24.png" />
<copy todir="${build}/desktopgui/resources/images" file="images/itoopie_white_24.png" />
<jar basedir="${build}" excludes="messages-src/**" destfile="${dist}/${jar}">
<manifest>
<attribute name="Main-Class" value="net.i2p.desktopgui.Main"/>

Binary file not shown.

After

Width:  |  Height:  |  Size: 558 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 677 B

View File

@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: I2P desktopgui\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-01-09 19:27+0000\n"
"POT-Creation-Date: 2016-05-25 12:29+0000\n"
"PO-Revision-Date: 2010-06-15 14:09+0100\n"
"Last-Translator: duck <duck@mail.i2p>\n"
"Language-Team: duck <duck@mail.i2p>\n"
@@ -18,38 +18,76 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
#: src/net/i2p/desktopgui/ExternalTrayManager.java:23
#: src/net/i2p/desktopgui/ExternalTrayManager.java:31
#: src/net/i2p/desktopgui/ExternalTrayManager.java:59
msgid "Start I2P"
msgstr ""
#: src/net/i2p/desktopgui/ExternalTrayManager.java:38
#: src/net/i2p/desktopgui/ExternalTrayManager.java:44
#: src/net/i2p/desktopgui/ExternalTrayManager.java:72
msgid "I2P is starting!"
msgstr ""
#: src/net/i2p/desktopgui/ExternalTrayManager.java:38
#: src/net/i2p/desktopgui/ExternalTrayManager.java:44
#: src/net/i2p/desktopgui/ExternalTrayManager.java:72
msgid "Starting"
msgstr ""
#: src/net/i2p/desktopgui/InternalTrayManager.java:26
#: src/net/i2p/desktopgui/InternalTrayManager.java:55
#: src/net/i2p/desktopgui/InternalTrayManager.java:207
msgid "Launch I2P Browser"
msgstr ""
#: src/net/i2p/desktopgui/InternalTrayManager.java:50
msgid "Configure desktopgui"
#: src/net/i2p/desktopgui/InternalTrayManager.java:76
#: src/net/i2p/desktopgui/InternalTrayManager.java:228
msgid "Configure I2P System Tray"
msgstr ""
#: src/net/i2p/desktopgui/InternalTrayManager.java:67
#: src/net/i2p/desktopgui/InternalTrayManager.java:77
#: src/net/i2p/desktopgui/InternalTrayManager.java:229
msgid "Disable"
msgstr ""
#: src/net/i2p/desktopgui/InternalTrayManager.java:93
#: src/net/i2p/desktopgui/InternalTrayManager.java:245
msgid "Restart I2P"
msgstr ""
#: src/net/i2p/desktopgui/InternalTrayManager.java:85
#: src/net/i2p/desktopgui/InternalTrayManager.java:110
#: src/net/i2p/desktopgui/InternalTrayManager.java:262
msgid "Stop I2P"
msgstr ""
#: src/net/i2p/desktopgui/gui/DesktopguiConfigurationFrame.java:43
msgid "Tray icon configuration"
#: src/net/i2p/desktopgui/InternalTrayManager.java:126
#: src/net/i2p/desktopgui/InternalTrayManager.java:278
msgid "Restart I2P Immediately"
msgstr ""
#: src/net/i2p/desktopgui/gui/DesktopguiConfigurationFrame.java:46
msgid "Should tray icon be enabled?"
#: src/net/i2p/desktopgui/InternalTrayManager.java:143
#: src/net/i2p/desktopgui/InternalTrayManager.java:295
msgid "Stop I2P Immediately"
msgstr ""
#: src/net/i2p/desktopgui/InternalTrayManager.java:157
#: src/net/i2p/desktopgui/InternalTrayManager.java:309
msgid "Cancel I2P Shutdown"
msgstr ""
#: src/net/i2p/desktopgui/InternalTrayManager.java:363
#, java-format
msgid "Shutdown in {0}"
msgstr ""
#: src/net/i2p/desktopgui/InternalTrayManager.java:365
msgid "Shutdown imminent"
msgstr ""
#. status translations are in the console bundle
#: src/net/i2p/desktopgui/InternalTrayManager.java:370
msgid "Network"
msgstr ""
#. Windows typically has tooltips; Linux (at least Ubuntu) doesn't
#: src/net/i2p/desktopgui/TrayManager.java:63
msgid "I2P: Right-click for menu"
msgstr ""

View File

@@ -38,6 +38,11 @@ abstract class TrayManager {
///Our tray icon, or null if unsupported
protected TrayIcon trayIcon;
private static final String PNG_DIR = "/desktopgui/resources/images/";
private static final String MAC_ICON = "itoopie_black_24.png";
private static final String WIN_ICON = "itoopie_white_24.png";
private static final String LIN_ICON = "logo.png";
/**
* Instantiate tray manager.
*/
@@ -185,9 +190,16 @@ abstract class TrayManager {
* @throws AWTException if image not found
*/
private Image getTrayImage() throws AWTException {
URL url = getClass().getResource("/desktopgui/resources/images/logo.png");
String img;
if (SystemVersion.isWindows())
img = WIN_ICON;
else if (SystemVersion.isMac())
img = MAC_ICON;
else
img = LIN_ICON;
URL url = getClass().getResource(PNG_DIR + img);
if (url == null)
throw new AWTException("cannot load tray image");
throw new AWTException("cannot load tray image " + img);
Image image = Toolkit.getDefaultToolkit().getImage(url);
return image;
}

View File

@@ -2147,7 +2147,7 @@ public class SnarkManager implements CompleteListener {
}
_magnets.remove(snark.getName());
removeMagnetStatus(snark.getInfoHash());
addMessage(_t("Metainfo received for {0}", snark.getName()));
//addMessage(_t("Metainfo received for {0}", snark.getName()));
addMessageNoEscape(_t("Starting up torrent {0}", linkify(snark)));
return name;
} catch (IOException ioe) {

File diff suppressed because it is too large Load Diff

View File

@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: I2P i2ptunnel\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-01-17 17:08+0000\n"
"POT-Creation-Date: 2016-05-25 12:28+0000\n"
"PO-Revision-Date: 2010-06-15 14:09+0100\n"
"Last-Translator: duck <duck@mail.i2p>\n"
"Language-Team: duck <duck@mail.i2p>\n"
@@ -18,470 +18,479 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
#: ../java/build/Proxy.java:5
msgid "Information: New Host Name"
#: ../java/build/Proxy.java:5 ../java/build/Proxy.java:11
#: ../java/build/Proxy.java:40 ../java/build/Proxy.java:46
#: ../java/build/Proxy.java:82 ../java/build/Proxy.java:88
msgid "Website Unreachable"
msgstr ""
#: ../java/build/Proxy.java:6 ../java/build/Proxy.java:18
#: ../java/build/Proxy.java:28 ../java/build/Proxy.java:38
#: ../java/build/Proxy.java:46 ../java/build/Proxy.java:57
#: ../java/build/Proxy.java:69 ../java/build/Proxy.java:78
#: ../java/build/Proxy.java:87 ../java/build/Proxy.java:96
#: ../java/build/Proxy.java:107 ../java/build/Proxy.java:119
#: ../java/build/Proxy.java:129 ../java/build/Proxy.java:140
#: ../java/build/Proxy.java:151 ../java/build/Proxy.java:164
#: ../java/build/Proxy.java:173 ../java/build/Proxy.java:185
#: ../java/build/Proxy.java:6 ../java/build/Proxy.java:17
#: ../java/build/Proxy.java:29 ../java/build/Proxy.java:41
#: ../java/build/Proxy.java:52 ../java/build/Proxy.java:61
#: ../java/build/Proxy.java:70 ../java/build/Proxy.java:83
#: ../java/build/Proxy.java:92 ../java/build/Proxy.java:103
#: ../java/build/Proxy.java:115 ../java/build/Proxy.java:124
#: ../java/build/Proxy.java:134 ../java/build/Proxy.java:144
#: ../java/build/Proxy.java:156 ../java/build/Proxy.java:169
#: ../java/build/Proxy.java:181 ../java/build/Proxy.java:191
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:209
msgid "Router Console"
msgstr ""
#: ../java/build/Proxy.java:7 ../java/build/Proxy.java:19
#: ../java/build/Proxy.java:29 ../java/build/Proxy.java:39
#: ../java/build/Proxy.java:47 ../java/build/Proxy.java:58
#: ../java/build/Proxy.java:70 ../java/build/Proxy.java:79
#: ../java/build/Proxy.java:88 ../java/build/Proxy.java:97
#: ../java/build/Proxy.java:108 ../java/build/Proxy.java:120
#: ../java/build/Proxy.java:130 ../java/build/Proxy.java:141
#: ../java/build/Proxy.java:152 ../java/build/Proxy.java:165
#: ../java/build/Proxy.java:174 ../java/build/Proxy.java:186
#: ../java/build/Proxy.java:7 ../java/build/Proxy.java:18
#: ../java/build/Proxy.java:30 ../java/build/Proxy.java:42
#: ../java/build/Proxy.java:53 ../java/build/Proxy.java:62
#: ../java/build/Proxy.java:71 ../java/build/Proxy.java:84
#: ../java/build/Proxy.java:93 ../java/build/Proxy.java:104
#: ../java/build/Proxy.java:116 ../java/build/Proxy.java:125
#: ../java/build/Proxy.java:135 ../java/build/Proxy.java:145
#: ../java/build/Proxy.java:157 ../java/build/Proxy.java:170
#: ../java/build/Proxy.java:182 ../java/build/Proxy.java:192
msgid "I2P Router Console"
msgstr ""
#: ../java/build/Proxy.java:8 ../java/build/Proxy.java:20
#: ../java/build/Proxy.java:30 ../java/build/Proxy.java:40
#: ../java/build/Proxy.java:48 ../java/build/Proxy.java:59
#: ../java/build/Proxy.java:71 ../java/build/Proxy.java:80
#: ../java/build/Proxy.java:89 ../java/build/Proxy.java:98
#: ../java/build/Proxy.java:109 ../java/build/Proxy.java:121
#: ../java/build/Proxy.java:131 ../java/build/Proxy.java:142
#: ../java/build/Proxy.java:153 ../java/build/Proxy.java:166
#: ../java/build/Proxy.java:175 ../java/build/Proxy.java:187
#: ../java/build/Proxy.java:8 ../java/build/Proxy.java:19
#: ../java/build/Proxy.java:31 ../java/build/Proxy.java:43
#: ../java/build/Proxy.java:54 ../java/build/Proxy.java:63
#: ../java/build/Proxy.java:72 ../java/build/Proxy.java:85
#: ../java/build/Proxy.java:94 ../java/build/Proxy.java:105
#: ../java/build/Proxy.java:117 ../java/build/Proxy.java:126
#: ../java/build/Proxy.java:136 ../java/build/Proxy.java:146
#: ../java/build/Proxy.java:158 ../java/build/Proxy.java:171
#: ../java/build/Proxy.java:183 ../java/build/Proxy.java:193
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:210
msgid "Configuration"
msgstr ""
#: ../java/build/Proxy.java:9 ../java/build/Proxy.java:21
#: ../java/build/Proxy.java:31 ../java/build/Proxy.java:41
#: ../java/build/Proxy.java:49 ../java/build/Proxy.java:60
#: ../java/build/Proxy.java:72 ../java/build/Proxy.java:81
#: ../java/build/Proxy.java:90 ../java/build/Proxy.java:99
#: ../java/build/Proxy.java:110 ../java/build/Proxy.java:122
#: ../java/build/Proxy.java:132 ../java/build/Proxy.java:143
#: ../java/build/Proxy.java:154 ../java/build/Proxy.java:167
#: ../java/build/Proxy.java:176 ../java/build/Proxy.java:188
#: ../java/build/Proxy.java:9 ../java/build/Proxy.java:20
#: ../java/build/Proxy.java:32 ../java/build/Proxy.java:44
#: ../java/build/Proxy.java:55 ../java/build/Proxy.java:64
#: ../java/build/Proxy.java:73 ../java/build/Proxy.java:86
#: ../java/build/Proxy.java:95 ../java/build/Proxy.java:106
#: ../java/build/Proxy.java:118 ../java/build/Proxy.java:127
#: ../java/build/Proxy.java:137 ../java/build/Proxy.java:147
#: ../java/build/Proxy.java:159 ../java/build/Proxy.java:172
#: ../java/build/Proxy.java:184 ../java/build/Proxy.java:194
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:210
msgid "Help"
msgstr ""
#: ../java/build/Proxy.java:10 ../java/build/Proxy.java:22
#: ../java/build/Proxy.java:32 ../java/build/Proxy.java:42
#: ../java/build/Proxy.java:50 ../java/build/Proxy.java:61
#: ../java/build/Proxy.java:73 ../java/build/Proxy.java:82
#: ../java/build/Proxy.java:91 ../java/build/Proxy.java:100
#: ../java/build/Proxy.java:111 ../java/build/Proxy.java:123
#: ../java/build/Proxy.java:133 ../java/build/Proxy.java:144
#: ../java/build/Proxy.java:155 ../java/build/Proxy.java:168
#: ../java/build/Proxy.java:177 ../java/build/Proxy.java:189
#: ../java/build/Proxy.java:10 ../java/build/Proxy.java:21
#: ../java/build/Proxy.java:33 ../java/build/Proxy.java:45
#: ../java/build/Proxy.java:56 ../java/build/Proxy.java:65
#: ../java/build/Proxy.java:74 ../java/build/Proxy.java:87
#: ../java/build/Proxy.java:96 ../java/build/Proxy.java:107
#: ../java/build/Proxy.java:119 ../java/build/Proxy.java:128
#: ../java/build/Proxy.java:138 ../java/build/Proxy.java:148
#: ../java/build/Proxy.java:160 ../java/build/Proxy.java:173
#: ../java/build/Proxy.java:185 ../java/build/Proxy.java:195
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:210
msgid "Addressbook"
msgstr ""
#: ../java/build/Proxy.java:11
msgid "Information: New Host Name with Address Helper"
msgstr ""
#: ../java/build/Proxy.java:12
msgid ""
"The address helper link you followed is for a new host name that is not in "
"your address book."
msgid "The website was not reachable."
msgstr ""
#: ../java/build/Proxy.java:13
msgid "You may save this host name to your local address book."
msgstr ""
#: ../java/build/Proxy.java:14
msgid ""
"If you save it to your address book, you will not see this message again."
"The website is offline, there is network congestion, or your router is not "
"yet well-integrated with peers."
msgstr ""
#: ../java/build/Proxy.java:15
msgid ""
"If you do not save it, the host name will be forgotten after the next router "
"restart."
msgstr ""
#: ../java/build/Proxy.java:16
msgid ""
"If you do not wish to visit this host, click the \"back\" button on your "
"browser."
msgstr ""
#: ../java/build/Proxy.java:17 ../java/build/Proxy.java:23
msgid "Warning: Destination Key Conflict"
msgstr ""
#: ../java/build/Proxy.java:24
msgid ""
"The addresshelper link you followed specifies a different destination key "
"than a host entry in your host database."
msgstr ""
#: ../java/build/Proxy.java:25
msgid ""
"Someone could be trying to impersonate another website, or people have given "
"two websites identical names."
msgstr ""
#: ../java/build/Proxy.java:26
msgid ""
"You can resolve the conflict by considering which key you trust, and either "
"discarding the addresshelper link, discarding the host entry from your host "
"database, or naming one of them differently."
msgstr ""
#: ../java/build/Proxy.java:27 ../java/build/Proxy.java:33
msgid "Warning: Bad Address Helper"
msgstr ""
#: ../java/build/Proxy.java:34
#, java-format
msgid "The helper key in the URL ({0}i2paddresshelper={1}) is not resolvable."
msgstr ""
#: ../java/build/Proxy.java:35
msgid "It seems to be garbage data, or a mistyped Base 32 address."
msgstr ""
#: ../java/build/Proxy.java:36
msgid ""
"Check your URL to try and fix the helper key to be a valid Base 32 hostname "
"or Base 64 key."
msgstr ""
#: ../java/build/Proxy.java:37 ../java/build/Proxy.java:43
msgid "Warning: Request Denied"
msgstr ""
#: ../java/build/Proxy.java:44
msgid "You attempted to connect to a non-I2P website or location."
msgstr ""
#: ../java/build/Proxy.java:45 ../java/build/Proxy.java:51
#: ../java/build/Proxy.java:68 ../java/build/Proxy.java:74
#: ../java/build/Proxy.java:95 ../java/build/Proxy.java:101
msgid "Website Unreachable"
msgstr ""
#: ../java/build/Proxy.java:52
msgid "The website was not reachable, because its lease set was not found."
msgstr ""
#: ../java/build/Proxy.java:53
msgid ""
"The website is probably down, but there could also be network congestion."
msgstr ""
#: ../java/build/Proxy.java:54 ../java/build/Proxy.java:104
#: ../java/build/Proxy.java:116 ../java/build/Proxy.java:137
#: ../java/build/Proxy.java:14 ../java/build/Proxy.java:49
#: ../java/build/Proxy.java:100 ../java/build/Proxy.java:112
#, java-format
msgid "You may want to {0}retry{1}."
msgstr ""
#: ../java/build/Proxy.java:55 ../java/build/Proxy.java:67
#: ../java/build/Proxy.java:105 ../java/build/Proxy.java:117
#: ../java/build/Proxy.java:138 ../java/build/Proxy.java:162
#: ../java/build/Proxy.java:183 ../java/build/Proxy.java:195
#: ../java/build/Proxy.java:15 ../java/build/Proxy.java:27
#: ../java/build/Proxy.java:50 ../java/build/Proxy.java:81
#: ../java/build/Proxy.java:101 ../java/build/Proxy.java:113
#: ../java/build/Proxy.java:154 ../java/build/Proxy.java:179
msgid "Could not find the following destination:"
msgstr ""
#: ../java/build/Proxy.java:56 ../java/build/Proxy.java:62
#: ../java/build/Proxy.java:128 ../java/build/Proxy.java:134
msgid "Connection Reset"
#: ../java/build/Proxy.java:16 ../java/build/Proxy.java:22
#: ../java/build/Proxy.java:143 ../java/build/Proxy.java:149
msgid "Outproxy Not Found"
msgstr ""
#: ../java/build/Proxy.java:63
msgid "The connection to the proxy was reset."
msgstr ""
#: ../java/build/Proxy.java:64
#: ../java/build/Proxy.java:23
msgid ""
"The proxy could be temporarily unavailable, too busy, or it has blocked your "
"access."
"The HTTP outproxy was not reachable, because its lease set was not found."
msgstr ""
#: ../java/build/Proxy.java:65 ../java/build/Proxy.java:147
#: ../java/build/Proxy.java:181 ../java/build/Proxy.java:193
#: ../java/build/Proxy.java:24
msgid ""
"The outproxy is probably down, but there could also be network congestion."
msgstr ""
#: ../java/build/Proxy.java:25 ../java/build/Proxy.java:152
#: ../java/build/Proxy.java:177 ../java/build/Proxy.java:198
#, java-format
msgid ""
"You may want to {0}retry{1} as this will randomly reselect an outproxy from "
"the pool you have defined {2}here{3} (if you have more than one configured)."
msgstr ""
#: ../java/build/Proxy.java:66 ../java/build/Proxy.java:148
#: ../java/build/Proxy.java:182 ../java/build/Proxy.java:194
#: ../java/build/Proxy.java:26 ../java/build/Proxy.java:153
#: ../java/build/Proxy.java:178 ../java/build/Proxy.java:199
#, java-format
msgid ""
"If you continue to have trouble you may want to edit your outproxy list {0}"
"here{1}."
msgstr ""
#: ../java/build/Proxy.java:75
#: ../java/build/Proxy.java:28
msgid "Information: New Host Name"
msgstr ""
#: ../java/build/Proxy.java:34
msgid "Information: New Host Name with Address Helper"
msgstr ""
#: ../java/build/Proxy.java:35
msgid ""
"The website was not reachable, because it uses encryption options that are "
"not supported by your I2P or Java version."
"The address helper link you followed is for a new host name that is not in "
"your address book."
msgstr ""
#: ../java/build/Proxy.java:76 ../java/build/Proxy.java:149
msgid "Could not connect to the following destination:"
#: ../java/build/Proxy.java:36
msgid "You may save this host name to your local address book."
msgstr ""
#: ../java/build/Proxy.java:77
#: ../java/build/Proxy.java:37
msgid ""
"If you save it to your address book, you will not see this message again."
msgstr ""
#: ../java/build/Proxy.java:38
msgid ""
"If you do not save it, the host name will be forgotten after the next router "
"restart."
msgstr ""
#: ../java/build/Proxy.java:39
msgid ""
"If you do not wish to visit this host, click the \"back\" button on your "
"browser."
msgstr ""
#: ../java/build/Proxy.java:47
msgid "The website was not reachable, because its lease set was not found."
msgstr ""
#: ../java/build/Proxy.java:48
msgid ""
"The website is probably down, but there could also be network congestion."
msgstr ""
#: ../java/build/Proxy.java:51 ../java/build/Proxy.java:57
msgid "Warning: Invalid Request URI"
msgstr ""
#: ../java/build/Proxy.java:58
msgid "The request URI is invalid, and probably contains illegal characters."
msgstr ""
#: ../java/build/Proxy.java:59
msgid ""
"If you clicked a link, check the end of the URI for any characters the "
"browser has mistakenly added on."
msgstr ""
#: ../java/build/Proxy.java:60
msgid "Error: Request Denied"
msgstr ""
#: ../java/build/Proxy.java:83
#: ../java/build/Proxy.java:66
msgid "Error: Local Access"
msgstr ""
#: ../java/build/Proxy.java:84
#: ../java/build/Proxy.java:67
msgid "Your browser is misconfigured."
msgstr ""
#: ../java/build/Proxy.java:85
#: ../java/build/Proxy.java:68
msgid ""
"Do not use the proxy to access the router console, localhost, or local LAN "
"destinations."
msgstr ""
#: ../java/build/Proxy.java:86 ../java/build/Proxy.java:92
msgid "Warning: No Outproxy Configured"
msgstr ""
#: ../java/build/Proxy.java:93
msgid ""
"Your request was for a site outside of I2P, but you have no HTTP outproxy "
"configured."
msgstr ""
#: ../java/build/Proxy.java:94
msgid "Please configure an outproxy in I2PTunnel."
msgstr ""
#: ../java/build/Proxy.java:102
msgid "The website was not reachable."
msgstr ""
#: ../java/build/Proxy.java:103
msgid ""
"The website is offline, there is network congestion, or your router is not "
"yet well-integrated with peers."
msgstr ""
#: ../java/build/Proxy.java:106 ../java/build/Proxy.java:112
msgid "Warning: Invalid Destination"
msgstr ""
#: ../java/build/Proxy.java:113
msgid ""
"The website destination specified was not valid, or was otherwise "
"unreachable."
msgstr ""
#: ../java/build/Proxy.java:114
msgid ""
"Perhaps you pasted in the wrong Base 64 string or the link you are following "
"is bad."
msgstr ""
#: ../java/build/Proxy.java:115
msgid "The I2P host could also be offline."
msgstr ""
#: ../java/build/Proxy.java:118 ../java/build/Proxy.java:124
msgid "Warning: Non-HTTP Protocol"
msgstr ""
#: ../java/build/Proxy.java:125
msgid "The request uses a bad protocol."
msgstr ""
#: ../java/build/Proxy.java:126
msgid "The I2P HTTP Proxy supports HTTP and HTTPS requests only."
msgstr ""
#: ../java/build/Proxy.java:127
msgid "Other protocols such as FTP are not allowed."
msgstr ""
#: ../java/build/Proxy.java:135
msgid "The connection to the website was reset while the page was loading."
msgstr ""
#: ../java/build/Proxy.java:136
msgid ""
"The website could be temporarily unavailable, too busy, or it has blocked "
"your access."
msgstr ""
#: ../java/build/Proxy.java:139 ../java/build/Proxy.java:145
msgid "Outproxy Unreachable"
msgstr ""
#: ../java/build/Proxy.java:146
msgid ""
"The HTTP outproxy was not reachable, because it uses encryption options that "
"are not supported by your I2P or Java version."
msgstr ""
#: ../java/build/Proxy.java:150
#: ../java/build/Proxy.java:69
msgid "Website Unknown"
msgstr ""
#: ../java/build/Proxy.java:156
#: ../java/build/Proxy.java:75
msgid "Website Not Found in Addressbook"
msgstr ""
#: ../java/build/Proxy.java:157
#: ../java/build/Proxy.java:76
msgid "The website was not found in your router's addressbook."
msgstr ""
#: ../java/build/Proxy.java:158
#: ../java/build/Proxy.java:77
msgid "Check the link or find a Base 32 or Base 64 address."
msgstr ""
#: ../java/build/Proxy.java:159
#: ../java/build/Proxy.java:78
#, java-format
msgid "If you have the Base 64 address, {0}add it to your addressbook{1}."
msgstr ""
#: ../java/build/Proxy.java:160
#: ../java/build/Proxy.java:79
msgid ""
"Otherwise, find a Base 32 or address helper link, or use a jump service link "
"below."
msgstr ""
#: ../java/build/Proxy.java:161
#: ../java/build/Proxy.java:80
#, java-format
msgid ""
"Seeing this page often? See {0}the FAQ{1} for help in {2}adding some "
"subscriptions{3} to your addressbook."
msgstr ""
#: ../java/build/Proxy.java:163 ../java/build/Proxy.java:169
msgid "Warning: Invalid Request URI"
msgstr ""
#: ../java/build/Proxy.java:170
msgid "The request URI is invalid, and probably contains illegal characters."
msgstr ""
#: ../java/build/Proxy.java:171
#: ../java/build/Proxy.java:89
msgid ""
"If you clicked a link, check the end of the URI for any characters the "
"browser has mistakenly added on."
"The website was not reachable, because it uses encryption options that are "
"not supported by your I2P or Java version."
msgstr ""
#: ../java/build/Proxy.java:172 ../java/build/Proxy.java:178
#: ../java/build/Proxy.java:184 ../java/build/Proxy.java:190
msgid "Outproxy Not Found"
#: ../java/build/Proxy.java:90 ../java/build/Proxy.java:200
msgid "Could not connect to the following destination:"
msgstr ""
#: ../java/build/Proxy.java:179
#: ../java/build/Proxy.java:91 ../java/build/Proxy.java:97
#: ../java/build/Proxy.java:168 ../java/build/Proxy.java:174
msgid "Connection Reset"
msgstr ""
#: ../java/build/Proxy.java:98
msgid "The connection to the website was reset while the page was loading."
msgstr ""
#: ../java/build/Proxy.java:99
msgid ""
"The HTTP outproxy was not reachable, because its lease set was not found."
"The website could be temporarily unavailable, too busy, or it has blocked "
"your access."
msgstr ""
#: ../java/build/Proxy.java:180
#: ../java/build/Proxy.java:102 ../java/build/Proxy.java:108
msgid "Warning: Invalid Destination"
msgstr ""
#: ../java/build/Proxy.java:109
msgid ""
"The outproxy is probably down, but there could also be network congestion."
"The website destination specified was not valid, or was otherwise "
"unreachable."
msgstr ""
#: ../java/build/Proxy.java:191
#: ../java/build/Proxy.java:110
msgid ""
"Perhaps you pasted in the wrong Base 64 string or the link you are following "
"is bad."
msgstr ""
#: ../java/build/Proxy.java:111
msgid "The I2P host could also be offline."
msgstr ""
#: ../java/build/Proxy.java:114 ../java/build/Proxy.java:120
msgid "Warning: No Outproxy Configured"
msgstr ""
#: ../java/build/Proxy.java:121
msgid ""
"Your request was for a site outside of I2P, but you have no HTTP outproxy "
"configured."
msgstr ""
#: ../java/build/Proxy.java:122
msgid "Please configure an outproxy in I2PTunnel."
msgstr ""
#: ../java/build/Proxy.java:123 ../java/build/Proxy.java:129
msgid "Warning: Destination Key Conflict"
msgstr ""
#: ../java/build/Proxy.java:130
msgid ""
"The address helper link you followed specifies a different destination key "
"than the entry in your address book."
msgstr ""
#: ../java/build/Proxy.java:131
msgid ""
"Someone could be trying to impersonate another website, or people have given "
"two websites identical names."
msgstr ""
#: ../java/build/Proxy.java:132
msgid ""
"Resolve the conflict by deciding which key you trust, and then either ignore "
"the address helper link, or delete the host entry from your address book and "
"click the address helper link again."
msgstr ""
#: ../java/build/Proxy.java:133 ../java/build/Proxy.java:139
msgid "Warning: Bad Address Helper"
msgstr ""
#: ../java/build/Proxy.java:140
#, java-format
msgid "The helper key in the URL ({0}i2paddresshelper={1}) is not resolvable."
msgstr ""
#: ../java/build/Proxy.java:141
msgid "It seems to be garbage data, or a mistyped Base 32 address."
msgstr ""
#: ../java/build/Proxy.java:142
msgid ""
"Check your URL to try and fix the helper key to be a valid Base 32 hostname "
"or Base 64 key."
msgstr ""
#: ../java/build/Proxy.java:150
msgid "The HTTP Outproxy was not found."
msgstr ""
#: ../java/build/Proxy.java:192
#: ../java/build/Proxy.java:151
msgid ""
"It is offline, there is network congestion, or your router is not yet well-"
"integrated with peers."
msgstr ""
#: ../java/build/Proxy.java:196
#: ../java/build/Proxy.java:155 ../java/build/Proxy.java:161
msgid "Warning: Request Denied"
msgstr ""
#: ../java/build/Proxy.java:162
msgid "You attempted to connect to a non-I2P website or location."
msgstr ""
#: ../java/build/Proxy.java:163
msgid "Proxy Authorization Required"
msgstr ""
#: ../java/build/Proxy.java:197
#: ../java/build/Proxy.java:164
msgid "I2P HTTP Proxy Authorization Required"
msgstr ""
#: ../java/build/Proxy.java:198
#: ../java/build/Proxy.java:165
msgid "This proxy is configured to require a username and password for access."
msgstr ""
#: ../java/build/Proxy.java:199
#: ../java/build/Proxy.java:166
#, java-format
msgid ""
"Please enter your username and password, or check your {0}router "
"configuration{1} or {2}I2PTunnel configuration{3}."
msgstr ""
#: ../java/build/Proxy.java:200
#: ../java/build/Proxy.java:167
#, java-format
msgid ""
"To disable authorization, remove the configuration {0}i2ptunnel.proxy."
"auth=basic{1}, then stop and restart the HTTP Proxy tunnel."
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:634
#: ../java/build/Proxy.java:175
msgid "The connection to the proxy was reset."
msgstr ""
#: ../java/build/Proxy.java:176
msgid ""
"The proxy could be temporarily unavailable, too busy, or it has blocked your "
"access."
msgstr ""
#: ../java/build/Proxy.java:180 ../java/build/Proxy.java:186
msgid "Warning: Non-HTTP Protocol"
msgstr ""
#: ../java/build/Proxy.java:187
msgid "The request uses a bad protocol."
msgstr ""
#: ../java/build/Proxy.java:188
msgid "The I2P HTTP Proxy supports HTTP and HTTPS requests only."
msgstr ""
#: ../java/build/Proxy.java:189
msgid "Other protocols such as FTP are not allowed."
msgstr ""
#: ../java/build/Proxy.java:190 ../java/build/Proxy.java:196
msgid "Outproxy Unreachable"
msgstr ""
#: ../java/build/Proxy.java:197
msgid ""
"The HTTP outproxy was not reachable, because it uses encryption options that "
"are not supported by your I2P or Java version."
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:640
msgid "This seems to be a bad destination:"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:635
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:641
msgid "i2paddresshelper cannot help you with a destination like that!"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:709
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:716
#, java-format
msgid ""
"To visit the destination in your host database, click <a href=\"{0}\">here</"
"To visit the destination in your address book, click <a href=\"{0}\">here</"
"a>. To visit the conflicting addresshelper destination, click <a href="
"\"{1}\">here</a>."
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1121
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:741
#, java-format
msgid "Destination for {0} in address book"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:744
msgid "Conflicting address helper destination"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1169
msgid "Destination lease set not found"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1273
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1321
msgid "Host"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1277
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1325
msgid "Base 32"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1281
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1329
msgid "Destination"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1287
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1335
#, java-format
msgid "Continue to {0} without saving"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1293
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1341
#, java-format
msgid "Save {0} to router address book and continue to website"
msgstr ""
#. only blockfile supports multiple books
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1296
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1344
#, java-format
msgid "Save {0} to master address book and continue to website"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1297
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1345
#, java-format
msgid "Save {0} to private address book and continue to website"
msgstr ""

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -10,6 +10,7 @@ import java.nio.channels.ServerSocketChannel;
import net.i2p.I2PException;
import net.i2p.client.streaming.I2PSocket;
import net.i2p.client.streaming.I2PSocketAddress;
/**
* Bridge to I2PServerSocket.
@@ -99,11 +100,14 @@ class StandardServerSocket extends ServerSocket {
}
/**
* @return null always
* Port in returned SocketAddress will be zero.
*
* @return an I2PSocketAddress as of 0.9.26; prior to that, returned null
* @since implemented in 0.9.26
*/
@Override
public SocketAddress getLocalSocketAddress() {
return null;
return new I2PSocketAddress(_socket.getManager().getSession().getMyDestination(), 0);
}
@Override

View File

@@ -10,6 +10,7 @@ import java.net.SocketException;
import java.nio.channels.SocketChannel;
import net.i2p.client.streaming.I2PSocket;
import net.i2p.client.streaming.I2PSocketAddress;
import net.i2p.client.streaming.I2PSocketOptions;
/**
@@ -117,11 +118,12 @@ class StandardSocket extends Socket {
}
/**
* @return null always
* @return an I2PSocketAddress as of 0.9.26; prior to that, returned null
* @since implemented in 0.9.26
*/
@Override
public SocketAddress getLocalSocketAddress() {
return null;
return new I2PSocketAddress(_socket.getThisDestination(), _socket.getLocalPort());
}
/**
@@ -157,11 +159,12 @@ class StandardSocket extends Socket {
}
/**
* @throws UnsupportedOperationException always
* @return an I2PSocketAddress as of 0.9.26; prior to that, threw UnsupportedOperationException
* @since implemented in 0.9.26
*/
@Override
public SocketAddress getRemoteSocketAddress() {
throw new UnsupportedOperationException();
return new I2PSocketAddress(_socket.getPeerDestination(), _socket.getPort());
}
/**

View File

@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: I2P susidns\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-11-05 17:12+0000\n"
"POT-Creation-Date: 2016-05-25 12:28+0000\n"
"PO-Revision-Date: 2010-06-15 14:09+0100\n"
"Last-Translator: duck <duck@mail.i2p>\n"
"Language-Team: duck <duck@mail.i2p>\n"
@@ -48,35 +48,35 @@ msgid ""
"unavailable in this JVM"
msgstr ""
#: ../src/java/src/i2p/susi/dns/AddressBean.java:219
#: ../src/java/src/i2p/susi/dns/AddressBean.java:223
msgid "None"
msgstr ""
#: ../src/java/src/i2p/susi/dns/AddressBean.java:227
#: ../src/java/src/i2p/susi/dns/AddressBean.java:231
msgid "Hashcash"
msgstr ""
#: ../src/java/src/i2p/susi/dns/AddressBean.java:229
#: ../src/java/src/i2p/susi/dns/AddressBean.java:233
msgid "Hidden"
msgstr ""
#: ../src/java/src/i2p/susi/dns/AddressBean.java:231
#: ../src/java/src/i2p/susi/dns/AddressBean.java:235
msgid "Signed"
msgstr ""
#: ../src/java/src/i2p/susi/dns/AddressBean.java:233
#: ../src/java/src/i2p/susi/dns/AddressBean.java:237
msgid "Key"
msgstr ""
#: ../src/java/src/i2p/susi/dns/AddressBean.java:235
#: ../src/java/src/i2p/susi/dns/AddressBean.java:260
#: ../src/java/src/i2p/susi/dns/AddressBean.java:239
#: ../src/java/src/i2p/susi/dns/AddressBean.java:264
#, java-format
msgid "Type {0}"
msgstr ""
#: ../src/java/src/i2p/susi/dns/AddressBean.java:247
#: ../src/java/src/i2p/susi/dns/AddressBean.java:254
#: ../src/java/src/i2p/susi/dns/AddressBean.java:257
#: ../src/java/src/i2p/susi/dns/AddressBean.java:251
#: ../src/java/src/i2p/susi/dns/AddressBean.java:258
#: ../src/java/src/i2p/susi/dns/AddressBean.java:261
msgid "DSA 1024 bit"
msgstr ""
@@ -114,27 +114,27 @@ msgid "Showing {0} of {1}"
msgstr ""
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:244
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:232
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:432
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:234
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:453
msgid "Add"
msgstr ""
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:244
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:255
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:232
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:244
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:430
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:234
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:246
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:451
msgid "Replace"
msgstr ""
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:254
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:243
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:245
#, java-format
msgid "Host name {0} is already in address book, unchanged."
msgstr ""
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:256
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:245
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:247
#, java-format
msgid ""
"Host name {0} is already in address book with a different destination. Click "
@@ -142,63 +142,63 @@ msgid ""
msgstr ""
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:269
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:258
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:260
#, java-format
msgid "Destination added for {0}."
msgstr ""
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:271
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:260
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:262
#, java-format
msgid "Destination changed for {0}."
msgstr ""
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:273
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:262
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:264
msgid "Warning - host name does not end with \".i2p\""
msgstr ""
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:278
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:270
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:272
msgid "Invalid Base 64 destination."
msgstr ""
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:284
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:276
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:278
#, java-format
msgid "Invalid host name \"{0}\"."
msgstr ""
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:287
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:279
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:281
msgid "Please enter a host name and destination"
msgstr ""
#. clear search when deleting
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:291
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:312
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:283
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:308
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:270
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:285
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:310
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:285
msgid "Delete Entry"
msgstr ""
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:291
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:283
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:354
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:285
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:369
msgid "Delete Selected"
msgstr ""
#. parameter is a host name
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:305
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:300
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:302
#, java-format
msgid "Destination {0} deleted."
msgstr ""
#. parameter will always be >= 2
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:308
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:303
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:305
#, java-format
msgid "1 destination deleted."
msgid_plural "{0} destinations deleted."
@@ -206,12 +206,12 @@ msgstr[0] ""
msgstr[1] ""
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:310
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:305
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:307
msgid "No entries selected to delete."
msgstr ""
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:318
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:312
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:314
msgid "Address book saved."
msgstr ""
@@ -221,7 +221,7 @@ msgstr ""
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:326
#: ../src/java/src/i2p/susi/dns/ConfigBean.java:108
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:316
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:318
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:157
msgid ""
"Invalid form submission, probably because you used the \"back\" or \"reload"
@@ -230,7 +230,7 @@ msgstr ""
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:328
#: ../src/java/src/i2p/susi/dns/ConfigBean.java:110
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:318
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:320
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:159
msgid ""
"If the problem persists, verify that you have cookies enabled in your "
@@ -239,8 +239,8 @@ msgstr ""
#: ../src/java/src/i2p/susi/dns/ConfigBean.java:99
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:131
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:160
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:151
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:161
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:152
msgid "Save"
msgstr ""
@@ -250,8 +250,8 @@ msgstr ""
#: ../src/java/src/i2p/susi/dns/ConfigBean.java:102
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:151
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:158
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:149
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:159
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:150
msgid "Reload"
msgstr ""
@@ -259,21 +259,21 @@ msgstr ""
msgid "Configuration reloaded."
msgstr ""
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:104
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:106
#, java-format
msgid "{0} address book in {1} database"
msgstr ""
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:253
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:255
msgid "Manually added via SusiDNS"
msgstr ""
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:267
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:269
#, java-format
msgid "Failed to add Destination for {0} to naming service {1}"
msgstr ""
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:291
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:293
#, java-format
msgid "Failed to delete Destination for {0} from naming service {1}"
msgstr ""
@@ -291,428 +291,440 @@ msgstr ""
msgid "Subscriptions reloaded."
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:127
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:135
msgid "address book"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:133
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:149
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:132
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:148
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:118
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:134
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:135
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:123
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:139
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:141
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:157
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:133
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:149
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:125
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:141
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:136
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:124
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:140
msgid "Overview"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:135
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:134
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:120
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:121
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:125
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:143
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:135
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:127
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:122
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:126
msgid "Address books"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:137
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:136
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:122
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:123
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:127
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:145
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:137
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:129
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:124
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:128
msgid "private"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:139
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:138
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:124
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:125
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:129
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:147
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:139
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:131
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:126
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:130
msgid "master"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:141
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:140
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:126
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:127
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:131
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:149
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:141
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:133
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:128
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:132
msgid "router"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:143
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:142
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:128
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:129
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:133
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:151
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:143
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:135
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:130
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:134
msgid "published"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:145
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:144
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:130
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:131
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:135
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:153
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:145
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:137
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:132
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:136
msgid "Subscriptions"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:147
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:146
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:132
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:133
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:137
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:155
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:147
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:139
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:134
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:138
msgid "Configuration"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:151
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:136
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:159
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:143
msgid "Address book"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:156
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:141
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:164
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:148
msgid "Storage"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:174
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:184
msgid "Filter"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:177
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:187
msgid "other"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:179
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:189
msgid "all"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:193
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:201
msgid "Current filter"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:198
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:206
msgid "clear filter"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:211
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:215
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:219
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:223
msgid "Search"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:249
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:262
msgid "Name"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:251
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:264
msgid "Links"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:253
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:424
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:262
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:266
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:445
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:277
msgid "Destination"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:289
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:302
msgid "Mark for deletion"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:308
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:321
msgid "Base 32 address"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:312
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:325
msgid "More information on this entry"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:315
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:328
msgid "details"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:352
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:428
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:367
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:449
msgid "Cancel"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:379
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:396
msgid "Export in hosts.txt format"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:403
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:424
msgid "This address book is empty."
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:418
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:439
msgid "Add new destination"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:420
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:168
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:441
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:177
msgid "Host Name"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:126
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:127
msgid "configuration"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:162
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:163
msgid "Hints"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:164
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:165
msgid ""
"File and directory paths here are relative to the addressbook's working "
"directory, which is normally ~/.i2p/addressbook/ (Linux) or %APPDATA%\\I2P"
"\\addressbook\\ (Windows)."
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:166
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:167
msgid ""
"If you want to manually add lines to an addressbook, add them to the private "
"or master addressbooks."
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:168
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:169
msgid ""
"The router addressbook and the published addressbook are updated by the "
"addressbook application."
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:170
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:171
msgid ""
"When you publish your addressbook, ALL destinations from the master and "
"router addressbooks appear there."
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:172
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:173
msgid ""
"Use the private addressbook for private destinations, these are not "
"published."
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:174
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:175
msgid "Options"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:176
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:177
msgid "File containing the list of subscriptions URLs (no need to change)"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:178
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:179
msgid "Update interval in hours"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:180
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:181
msgid ""
"Your public hosts.txt file (choose a path within your webserver document "
"root)"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:182
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:183
msgid "Your hosts.txt (don't change)"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:184
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:185
msgid "Your personal addressbook, these hosts will be published"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:186
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:187
msgid "Your private addressbook, it is never published"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:188
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:189
msgid "Port for your eepProxy (no need to change)"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:190
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:191
msgid "Hostname for your eepProxy (no need to change)"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:192
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:193
msgid "Whether to update the published addressbook"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:194
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:195
msgid ""
"File containing the etags header from the fetched subscription URLs (no need "
"to change)"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:196
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:197
msgid ""
"File containing the modification timestamp for each fetched subscription URL "
"(no need to change)"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:198
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:199
msgid "File to log activity to (change to /dev/null if you like)"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:200
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:201
msgid "Name of the theme to use (defaults to 'light')"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:112
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:119
msgid "addressbook"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:182
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:191
msgid "Encoded Name"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:196
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:205
msgid "Base 32 Address"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:204
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:213
msgid "Base 64 Hash"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:210
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:219
msgid "Address Helper"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:216
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:225
msgid "link"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:220
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:229
msgid "Public Key"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:222
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:231
msgid "ElGamal 2048 bit"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:226
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:235
msgid "Signing Key"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:232
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:241
msgid "Certificate"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:238
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:247
msgid "Added Date"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:244
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:253
msgid "Validated"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:255
msgid "no"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:255
msgid "yes"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:259
msgid "Source"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:250
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:265
msgid "Last Modified"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:256
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:271
msgid "Notes"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:115
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:116
msgid "Introduction"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:137
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:138
msgid "What is the addressbook?"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:139
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:140
msgid "The addressbook application is part of your I2P installation."
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:141
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:142
msgid ""
"It regularly updates your hosts.txt file from distributed sources or "
"\"subscriptions\"."
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:143
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:144
#, java-format
msgid ""
"In the default configuration, the address book is only subscribed to {0}."
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:145
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:146
msgid ""
"Subscribing to additional sites is easy, just add them to your <a href="
"\"subscriptions\">subscriptions</a> file."
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:147
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:148
msgid ""
"For more information on naming in I2P, see <a href=\"http://i2p-projekt.i2p/"
"naming.html\" target=\"_top\">the overview</a>."
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:149
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:150
msgid "How does the addressbook application work?"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:151
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:152
msgid ""
"The addressbook application regularly polls your subscriptions and merges "
"their content into your \"router\" address book."
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:153
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:154
msgid ""
"Then it merges your \"master\" address book into the router address book as "
"well."
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:155
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:156
msgid ""
"If configured, the router address book is now written to the \"published\" "
"address book, which will be publicly available if you are running an eepsite."
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:157
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:158
msgid ""
"The router also uses a private address book (not shown in the picture), "
"which is not merged or published."
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:159
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:160
msgid ""
"Hosts in the private address book can be accessed by you but their addresses "
"are never distributed to others."
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:161
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:162
msgid ""
"The private address book can also be used for aliases of hosts in your other "
"address books."
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:117
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:118
msgid "subscriptions"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:153
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:154
msgid "The subscription file contains a list of i2p URLs."
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:155
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:156
msgid ""
"The addressbook application regularly checks this list for new eepsites."
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:157
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:158
msgid "Those URLs refer to published hosts.txt files."
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:159
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:160
#, java-format
msgid ""
"The default subscription is the hosts.txt from {0}, which is updated "
"infrequently."
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:161
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:162
msgid ""
"So it is a good idea to add additional subscriptions to sites that have the "
"latest addresses."
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:163
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:164
msgid "See the FAQ for a list of subscription URLs."
msgstr ""

View File

@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: I2P susimail\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-03-29 14:30+0000\n"
"POT-Creation-Date: 2016-05-25 12:29+0000\n"
"PO-Revision-Date: 2010-06-15 14:09+0100\n"
"Last-Translator: duck <duck@mail.i2p>\n"
"Language-Team: duck <duck@mail.i2p>\n"
@@ -109,6 +109,7 @@ msgid "User logged out."
msgstr ""
#: src/src/i2p/susi/webmail/WebMail.java:837
#: src/src/i2p/susi/webmail/WebMail.java:1143
msgid "Internal error, lost connection."
msgstr ""
@@ -126,7 +127,7 @@ msgid "end forwarded mail"
msgstr ""
#: src/src/i2p/susi/webmail/WebMail.java:1070
#: src/src/i2p/susi/webmail/WebMail.java:2369
#: src/src/i2p/susi/webmail/WebMail.java:2376
msgid "Could not fetch mail body."
msgstr ""
@@ -138,209 +139,209 @@ msgstr ""
msgid "Configuration reloaded"
msgstr ""
#: src/src/i2p/susi/webmail/WebMail.java:1199
#: src/src/i2p/susi/webmail/WebMail.java:1205
#, java-format
msgid "No Encoding found for {0}"
msgstr ""
#: src/src/i2p/susi/webmail/WebMail.java:1203
#: src/src/i2p/susi/webmail/WebMail.java:1209
#, java-format
msgid "Could not encode data: {0}"
msgstr ""
#: src/src/i2p/susi/webmail/WebMail.java:1208
#: src/src/i2p/susi/webmail/WebMail.java:1214
#, java-format
msgid "Error reading uploaded file: {0}"
msgstr ""
#. error if we get here
#: src/src/i2p/susi/webmail/WebMail.java:1293
#: src/src/i2p/susi/webmail/WebMail.java:1296
#: src/src/i2p/susi/webmail/WebMail.java:1299
#: src/src/i2p/susi/webmail/WebMail.java:1302
msgid "Attachment not found."
msgstr ""
#. error if we get here
#: src/src/i2p/susi/webmail/WebMail.java:1323
#: src/src/i2p/susi/webmail/WebMail.java:1325
#: src/src/i2p/susi/webmail/WebMail.java:1329
#: src/src/i2p/susi/webmail/WebMail.java:1331
msgid "Message not found."
msgstr ""
#: src/src/i2p/susi/webmail/WebMail.java:1370
#: src/src/i2p/susi/webmail/WebMail.java:1498
#: src/src/i2p/susi/webmail/WebMail.java:1376
#: src/src/i2p/susi/webmail/WebMail.java:1504
msgid "Invalid pagesize number, resetting to default value."
msgstr ""
#: src/src/i2p/susi/webmail/WebMail.java:1394
#: src/src/i2p/susi/webmail/WebMail.java:1400
msgid "No messages marked for deletion."
msgstr ""
#: src/src/i2p/susi/webmail/WebMail.java:1410
#: src/src/i2p/susi/webmail/WebMail.java:1416
#, java-format
msgid "1 message deleted."
msgid_plural "{0} messages deleted."
msgstr[0] ""
msgstr[1] ""
#: src/src/i2p/susi/webmail/WebMail.java:1477
#: src/src/i2p/susi/webmail/WebMail.java:1483
msgid "Configuration saved"
msgstr ""
#: src/src/i2p/susi/webmail/WebMail.java:1697
#: src/src/i2p/susi/webmail/WebMail.java:2159
#: src/src/i2p/susi/webmail/WebMail.java:1704
#: src/src/i2p/susi/webmail/WebMail.java:2166
msgid "Login"
msgstr ""
#. mailbox.getNumMails() forces a connection, don't use it
#. Not only does it slow things down, but a failure causes all our messages to "vanish"
#. subtitle = ngettext("1 Message", "{0} Messages", sessionObject.mailbox.getNumMails());
#: src/src/i2p/susi/webmail/WebMail.java:1702
#: src/src/i2p/susi/webmail/WebMail.java:1709
#, java-format
msgid "1 Message"
msgid_plural "{0} Messages"
msgstr[0] ""
msgstr[1] ""
#: src/src/i2p/susi/webmail/WebMail.java:1708
#: src/src/i2p/susi/webmail/WebMail.java:1715
msgid "Show Message"
msgstr ""
#: src/src/i2p/susi/webmail/WebMail.java:1710
#: src/src/i2p/susi/webmail/WebMail.java:1717
msgid "New Message"
msgstr ""
#: src/src/i2p/susi/webmail/WebMail.java:1712
#: src/src/i2p/susi/webmail/WebMail.java:1719
msgid "Configuration"
msgstr ""
#: src/src/i2p/susi/webmail/WebMail.java:1723
#: src/src/i2p/susi/webmail/WebMail.java:1730
msgid "SusiMail"
msgstr ""
#: src/src/i2p/susi/webmail/WebMail.java:1736
#: src/src/i2p/susi/webmail/WebMail.java:1743
msgid "Message has not been sent. Do you want to discard it?"
msgstr ""
#: src/src/i2p/susi/webmail/WebMail.java:1798
#: src/src/i2p/susi/webmail/WebMail.java:1805
#, java-format
msgid "Error decoding content: {0}"
msgstr ""
#: src/src/i2p/susi/webmail/WebMail.java:1907
#: src/src/i2p/susi/webmail/WebMail.java:1914
msgid "no subject"
msgstr ""
#: src/src/i2p/susi/webmail/WebMail.java:1924
#: src/src/i2p/susi/webmail/WebMail.java:1931
msgid "Found no valid sender address."
msgstr ""
#: src/src/i2p/susi/webmail/WebMail.java:1930
#: src/src/i2p/susi/webmail/WebMail.java:1937
#, java-format
msgid "Found no valid address in \\''{0}\\''."
msgstr ""
#: src/src/i2p/susi/webmail/WebMail.java:1951
#: src/src/i2p/susi/webmail/WebMail.java:1958
msgid "No recipients found."
msgstr ""
#: src/src/i2p/susi/webmail/WebMail.java:2015
#: src/src/i2p/susi/webmail/WebMail.java:2022
msgid "Mail sent."
msgstr ""
#: src/src/i2p/susi/webmail/WebMail.java:2059
#: src/src/i2p/susi/webmail/WebMail.java:2066
msgid "Send"
msgstr ""
#: src/src/i2p/susi/webmail/WebMail.java:2060
#: src/src/i2p/susi/webmail/WebMail.java:2275
#: src/src/i2p/susi/webmail/WebMail.java:2409
#: src/src/i2p/susi/webmail/WebMail.java:2067
#: src/src/i2p/susi/webmail/WebMail.java:2282
#: src/src/i2p/susi/webmail/WebMail.java:2416
msgid "Cancel"
msgstr ""
#: src/src/i2p/susi/webmail/WebMail.java:2103
#: src/src/i2p/susi/webmail/WebMail.java:2202
#: src/src/i2p/susi/webmail/WebMail.java:2357
#: src/src/i2p/susi/webmail/WebMail.java:2110
#: src/src/i2p/susi/webmail/WebMail.java:2209
#: src/src/i2p/susi/webmail/WebMail.java:2364
msgid "From"
msgstr ""
#: src/src/i2p/susi/webmail/WebMail.java:2104
#: src/src/i2p/susi/webmail/WebMail.java:2111
msgid "To"
msgstr ""
#: src/src/i2p/susi/webmail/WebMail.java:2105
#: src/src/i2p/susi/webmail/WebMail.java:2112
msgid "Cc"
msgstr ""
#: src/src/i2p/susi/webmail/WebMail.java:2106
#: src/src/i2p/susi/webmail/WebMail.java:2113
msgid "Bcc"
msgstr ""
#: src/src/i2p/susi/webmail/WebMail.java:2107
#: src/src/i2p/susi/webmail/WebMail.java:2114
msgid "Bcc to self"
msgstr ""
#: src/src/i2p/susi/webmail/WebMail.java:2108
#: src/src/i2p/susi/webmail/WebMail.java:2203
#: src/src/i2p/susi/webmail/WebMail.java:2359
#: src/src/i2p/susi/webmail/WebMail.java:2115
#: src/src/i2p/susi/webmail/WebMail.java:2210
#: src/src/i2p/susi/webmail/WebMail.java:2366
msgid "Subject"
msgstr ""
#: src/src/i2p/susi/webmail/WebMail.java:2111
#: src/src/i2p/susi/webmail/WebMail.java:2118
msgid "Add Attachment"
msgstr ""
#. TODO disable/hide in JS if no file selected
#: src/src/i2p/susi/webmail/WebMail.java:2113
#: src/src/i2p/susi/webmail/WebMail.java:2120
msgid "Add another attachment"
msgstr ""
#: src/src/i2p/susi/webmail/WebMail.java:2119
#: src/src/i2p/susi/webmail/WebMail.java:2126
msgid "Attachments"
msgstr ""
#: src/src/i2p/susi/webmail/WebMail.java:2128
#: src/src/i2p/susi/webmail/WebMail.java:2135
msgid "Delete selected attachments"
msgstr ""
#. current postman hq length limits 16/12, new postman version 32/32
#: src/src/i2p/susi/webmail/WebMail.java:2147
#: src/src/i2p/susi/webmail/WebMail.java:2154
msgid "User"
msgstr ""
#: src/src/i2p/susi/webmail/WebMail.java:2148
#: src/src/i2p/susi/webmail/WebMail.java:2155
msgid "Password"
msgstr ""
#: src/src/i2p/susi/webmail/WebMail.java:2153
#: src/src/i2p/susi/webmail/WebMail.java:2160
msgid "Host"
msgstr ""
#: src/src/i2p/susi/webmail/WebMail.java:2154
#: src/src/i2p/susi/webmail/WebMail.java:2161
msgid "POP3 Port"
msgstr ""
#: src/src/i2p/susi/webmail/WebMail.java:2155
#: src/src/i2p/susi/webmail/WebMail.java:2162
msgid "SMTP Port"
msgstr ""
#: src/src/i2p/susi/webmail/WebMail.java:2160
#: src/src/i2p/susi/webmail/WebMail.java:2167
msgid "Read Mail Offline"
msgstr ""
#: src/src/i2p/susi/webmail/WebMail.java:2164
#: src/src/i2p/susi/webmail/WebMail.java:2293
#: src/src/i2p/susi/webmail/WebMail.java:2171
#: src/src/i2p/susi/webmail/WebMail.java:2300
msgid "Settings"
msgstr ""
#: src/src/i2p/susi/webmail/WebMail.java:2167
#: src/src/i2p/susi/webmail/WebMail.java:2174
msgid "Learn about I2P mail"
msgstr ""
#: src/src/i2p/susi/webmail/WebMail.java:2168
#: src/src/i2p/susi/webmail/WebMail.java:2175
msgid "Create Account"
msgstr ""
#: src/src/i2p/susi/webmail/WebMail.java:2181
#: src/src/i2p/susi/webmail/WebMail.java:2337
#: src/src/i2p/susi/webmail/WebMail.java:2188
#: src/src/i2p/susi/webmail/WebMail.java:2344
msgid "New"
msgstr ""
@@ -350,139 +351,139 @@ msgstr ""
#. button( REPLYALL, _t("Reply All") ) +
#. button( FORWARD, _t("Forward") ) + spacer +
#. button( DELETE, _t("Delete") ) + spacer +
#: src/src/i2p/susi/webmail/WebMail.java:2188
#: src/src/i2p/susi/webmail/WebMail.java:2195
msgid "Check Mail"
msgstr ""
#. if (Config.hasConfigFile())
#. out.println(button( RELOAD, _t("Reload Config") ) + spacer);
#: src/src/i2p/susi/webmail/WebMail.java:2191
#: src/src/i2p/susi/webmail/WebMail.java:2198
msgid "Logout"
msgstr ""
#: src/src/i2p/susi/webmail/WebMail.java:2204
#: src/src/i2p/susi/webmail/WebMail.java:2361
#: src/src/i2p/susi/webmail/WebMail.java:2211
#: src/src/i2p/susi/webmail/WebMail.java:2368
msgid "Date"
msgstr ""
#: src/src/i2p/susi/webmail/WebMail.java:2207
#: src/src/i2p/susi/webmail/WebMail.java:2214
msgid "Size"
msgstr ""
#: src/src/i2p/susi/webmail/WebMail.java:2248
#: src/src/i2p/susi/webmail/WebMail.java:2255
msgid "Message is new"
msgstr ""
#: src/src/i2p/susi/webmail/WebMail.java:2251
#: src/src/i2p/susi/webmail/WebMail.java:2258
msgid "Message has an attachment"
msgstr ""
#: src/src/i2p/susi/webmail/WebMail.java:2253
#: src/src/i2p/susi/webmail/WebMail.java:2260
msgid "Message is spam"
msgstr ""
#: src/src/i2p/susi/webmail/WebMail.java:2261
#: src/src/i2p/susi/webmail/WebMail.java:2268
msgid "No messages"
msgstr ""
#. TODO ngettext
#: src/src/i2p/susi/webmail/WebMail.java:2273
#: src/src/i2p/susi/webmail/WebMail.java:2280
msgid "Really delete the marked messages?"
msgstr ""
#: src/src/i2p/susi/webmail/WebMail.java:2274
#: src/src/i2p/susi/webmail/WebMail.java:2281
msgid "Yes, really delete them!"
msgstr ""
#: src/src/i2p/susi/webmail/WebMail.java:2277
#: src/src/i2p/susi/webmail/WebMail.java:2284
msgid "Delete Selected"
msgstr ""
#: src/src/i2p/susi/webmail/WebMail.java:2279
#: src/src/i2p/susi/webmail/WebMail.java:2286
msgid "Mark All"
msgstr ""
#: src/src/i2p/susi/webmail/WebMail.java:2281
#: src/src/i2p/susi/webmail/WebMail.java:2288
msgid "Clear All"
msgstr ""
#: src/src/i2p/susi/webmail/WebMail.java:2306
#: src/src/i2p/susi/webmail/WebMail.java:2307
#: src/src/i2p/susi/webmail/WebMail.java:2313
#: src/src/i2p/susi/webmail/WebMail.java:2314
msgid "First"
msgstr ""
#: src/src/i2p/susi/webmail/WebMail.java:2306
#: src/src/i2p/susi/webmail/WebMail.java:2307
#: src/src/i2p/susi/webmail/WebMail.java:2347
#: src/src/i2p/susi/webmail/WebMail.java:2313
#: src/src/i2p/susi/webmail/WebMail.java:2314
#: src/src/i2p/susi/webmail/WebMail.java:2354
msgid "Previous"
msgstr ""
#: src/src/i2p/susi/webmail/WebMail.java:2309
#: src/src/i2p/susi/webmail/WebMail.java:2316
#, java-format
msgid "Page {0} of {1}"
msgstr ""
#: src/src/i2p/susi/webmail/WebMail.java:2312
#: src/src/i2p/susi/webmail/WebMail.java:2313
#: src/src/i2p/susi/webmail/WebMail.java:2319
#: src/src/i2p/susi/webmail/WebMail.java:2320
msgid "Last"
msgstr ""
#: src/src/i2p/susi/webmail/WebMail.java:2312
#: src/src/i2p/susi/webmail/WebMail.java:2313
#: src/src/i2p/susi/webmail/WebMail.java:2349
#: src/src/i2p/susi/webmail/WebMail.java:2319
#: src/src/i2p/susi/webmail/WebMail.java:2320
#: src/src/i2p/susi/webmail/WebMail.java:2356
msgid "Next"
msgstr ""
#: src/src/i2p/susi/webmail/WebMail.java:2325
#: src/src/i2p/susi/webmail/WebMail.java:2332
msgid "Really delete this message?"
msgstr ""
#: src/src/i2p/susi/webmail/WebMail.java:2325
#: src/src/i2p/susi/webmail/WebMail.java:2332
msgid "Yes, really delete it!"
msgstr ""
#: src/src/i2p/susi/webmail/WebMail.java:2338
#: src/src/i2p/susi/webmail/WebMail.java:2345
msgid "Reply"
msgstr ""
#: src/src/i2p/susi/webmail/WebMail.java:2339
#: src/src/i2p/susi/webmail/WebMail.java:2346
msgid "Reply All"
msgstr ""
#: src/src/i2p/susi/webmail/WebMail.java:2340
#: src/src/i2p/susi/webmail/WebMail.java:2347
msgid "Forward"
msgstr ""
#: src/src/i2p/susi/webmail/WebMail.java:2341
#: src/src/i2p/susi/webmail/WebMail.java:2348
msgid "Save As"
msgstr ""
#: src/src/i2p/susi/webmail/WebMail.java:2343
#: src/src/i2p/susi/webmail/WebMail.java:2345
#: src/src/i2p/susi/webmail/WebMail.java:2350
#: src/src/i2p/susi/webmail/WebMail.java:2352
msgid "Delete"
msgstr ""
#: src/src/i2p/susi/webmail/WebMail.java:2348
#: src/src/i2p/susi/webmail/WebMail.java:2355
msgid "Back to Folder"
msgstr ""
#: src/src/i2p/susi/webmail/WebMail.java:2373
#: src/src/i2p/susi/webmail/WebMail.java:2380
msgid "Could not fetch mail."
msgstr ""
#: src/src/i2p/susi/webmail/WebMail.java:2391
#: src/src/i2p/susi/webmail/WebMail.java:2398
msgid "Folder Page Size"
msgstr ""
#: src/src/i2p/susi/webmail/WebMail.java:2394
#: src/src/i2p/susi/webmail/WebMail.java:2401
msgid "Set"
msgstr ""
#: src/src/i2p/susi/webmail/WebMail.java:2397
#: src/src/i2p/susi/webmail/WebMail.java:2404
msgid "Advanced Configuration"
msgstr ""
#: src/src/i2p/susi/webmail/WebMail.java:2408
#: src/src/i2p/susi/webmail/WebMail.java:2415
msgid "Save Configuration"
msgstr ""

View File

@@ -2094,6 +2094,86 @@
</tar>
</target>
<!-- same as debian-tarball but with bundled jetty -->
<target name="precise-tarball" depends="getExtendedVersion">
<!-- this will use the monotonerc file in the current workspace -->
<fail message="This target cannot be used without Monotone! Use &quot;fakeroot debian/rules get-orig-source&quot; instead.">
<condition>
<not>
<isset property="mtn.available" />
</not>
</condition>
</fail>
<property name="debian.tarball.name" value="i2p_${Extended.Version}.orig.tar.bz2" />
<echo message="Checking out fresh copy into ../i2p-${Extended.Version} for tarballing:" />
<delete dir="../i2p-${Extended.Version}" />
<exec executable="mtn" failonerror="true">
<arg value="co" />
<!-- w: is the revision of the current workspace -->
<arg value="-r" />
<arg value="w:" />
<arg value="../i2p-${Extended.Version}" />
</exec>
<delete includeemptydirs="true" quiet="false">
<fileset dir="../i2p-${Extended.Version}/debian-alt/" />
<fileset dir="../i2p-${Extended.Version}/installer/lib/" />
<fileset dir="../i2p-${Extended.Version}/Slackware" />
<fileset dir="../i2p-${Extended.Version}/_MTN" />
<!-- gettext-base -->
<fileset dir="../i2p-${Extended.Version}/core/java/src/gnu/gettext" />
<!-- libgetopt-java -->
<fileset dir="../i2p-${Extended.Version}/core/java/src/gnu/getopt" />
<!-- libhttpclient-java and libhttpcore-java -->
<!--
<fileset dir="../i2p-${Extended.Version}/core/java/src/org/apache/http" />
-->
<!-- systray4j -->
<fileset dir="../i2p-${Extended.Version}/apps/systray/java/lib" />
<file name="../i2p-${Extended.Version}/apps/systray/java/src/net/i2p/apps/systray/SysTrayImpl.java" />
<!-- geoip-database -->
<file name="../i2p-${Extended.Version}/installer/resources/geoip.txt" />
<file name="../i2p-${Extended.Version}/installer/resources/geoipv6.dat.gz" />
<!-- libjetty8-java -->
<!--
<fileset dir="../i2p-${Extended.Version}/apps/jetty/jetty-distribution-8.1.17.v20150415" />
-->
<!-- libjstl1.1-java or glassfish-javaee -->
<file name="../i2p-${Extended.Version}/apps/susidns/src/lib/jstl.jar" />
<!-- libjakarta-taglibs-standard-java or glassfish-javaee -->
<file name="../i2p-${Extended.Version}/apps/susidns/src/lib/standard.jar" />
<!-- libtomcat6-java or libtomcat7-java -->
<!--
<fileset dir="../i2p-${Extended.Version}/apps/jetty/apache-tomcat" />
<fileset dir="../i2p-${Extended.Version}/apps/jetty/apache-tomcat-deployer/" />
-->
<!-- anything added above, add in debian-release-tarball also -->
</delete>
<tar longfile="gnu" destfile="../${debian.tarball.name}" compression="bzip2">
<tarfileset dir="../i2p-${Extended.Version}" prefix="/i2p-${Extended.Version}">
<include name="**/**" />
<exclude name="debian/**"/>
<exclude name="debian-alt/**"/>
<exclude name="**/*.sh"/>
<exclude name="installer/resources/geoip.txt"/>
<exclude name="installer/resources/geoipv6.dat.gz"/>
<!--
<exclude name="apps/jetty/jetty-distribution-*/**"/>
-->
<exclude name="apps/susidns/src/lib/jstl.jar" />
<exclude name="apps/susidns/src/lib/standard.jar" />
<!--
<exclude name="apps/jetty/apache-tomcat/**"/>
<exclude name="apps/jetty/apache-tomcat-deployer/**"/>
-->
<!-- anything added above, add in debian-release-tarball also -->
</tarfileset>
<tarfileset dir="../i2p-${Extended.Version}" prefix="/i2p-${Extended.Version}" filemode="755">
<exclude name="debian/**" />
<include name="**/*.sh" />
</tarfileset>
</tar>
</target>
<!-- same as debian-tarball but with a release tar.bz2 file name and tar prefix -->
<target name="debian-release-tarball" depends="getExtendedVersion">
<!-- this will use the monotonerc file in the current workspace -->

View File

@@ -26,7 +26,7 @@ if [ -z $BITS ]; then
exit
fi
printf "\aBITS variable not set, $BITS bit system detected\n\a" >&2
printf "BITS variable not set, $BITS bit system detected\n" >&2
fi
# If JAVA_HOME isn't set we'll try to figure it out

View File

@@ -45,13 +45,13 @@ if [ -z $BITS ]; then
exit
fi
printf "\aBITS variable not set, $BITS bit system detected\n\a" >&2
printf "BITS variable not set, $BITS bit system detected\n" >&2
fi
if [ -z $CC ]; then
export CC="gcc"
printf "\aCC variable not set, defaulting to $CC\n\a" >&2
printf "CC variable not set, defaulting to $CC\n" >&2
fi
@@ -64,7 +64,7 @@ elif [ $BITS -eq 64 ]; then
export CFLAGS="-m64 -mtune=generic"
export LDFLAGS="-m64"
else
printf "\aBITS value \"$BITS\" not valid, please select 32 or 64\n\a" >&2
printf "BITS value \"$BITS\" not valid, please select 32 or 64\n" >&2
exit 1
fi

View File

@@ -0,0 +1,218 @@
package net.i2p.util;
/*
* free (adj.): unencumbered; not under the control of others
* Written by jrandom in 2003 and released into the public domain
* with no warranty of any kind, either expressed or implied.
* It probably won't make your computer catch on fire, or eat
* your children, but it might. Use at your own risk.
*
*/
import java.io.BufferedWriter;
import java.io.File;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.Writer;
/**
* File-based log writer thread that pulls log records from the LogManager,
* writes them to the current logfile, and rotates the logs as necessary.
*
*/
class FileLogWriter extends LogWriter {
// volatile as it changes on log file rotation
private volatile Writer _currentOut;
private int _rotationNum = -1;
private File _currentFile;
private long _numBytesInCurrentFile;
private static final int MAX_DISKFULL_MESSAGES = 8;
private int _diskFullMessageCount;
public FileLogWriter(LogManager manager) {
super(manager);
}
/**
* File may not exist or have old logs in it if not opened yet
*/
public synchronized String currentFile() {
if (_currentFile != null)
return _currentFile.getAbsolutePath();
String rv = getNextFile().getAbsolutePath();
// so it doesn't increment every time we call this
_rotationNum = -1;
return rv;
}
protected void writeRecord(LogRecord rec, String formatted) {
writeRecord(rec.getPriority(), formatted);
}
protected synchronized void writeRecord(int priority, String val) {
if (val == null) return;
if (_currentOut == null) {
rotateFile();
if (_currentOut == null)
return; // hosed
}
try {
_currentOut.write(val);
// may be a little off if a lot of multi-byte chars, but unlikely
_numBytesInCurrentFile += val.length();
} catch (Throwable t) {
if (!_write)
return;
if (++_diskFullMessageCount < MAX_DISKFULL_MESSAGES)
System.err.println("Error writing log, disk full? " + t);
//t.printStackTrace();
}
if (_numBytesInCurrentFile >= _manager.getFileSize()) {
rotateFile();
}
}
/**
* @since 0.9.19
*/
protected void flushWriter() {
try {
if (_currentOut != null)
_currentOut.flush();
} catch (IOException ioe) {
if (_write && ++_diskFullMessageCount < MAX_DISKFULL_MESSAGES)
System.err.println("Error writing the router log - disk full? " + ioe);
}
}
/**
* @since 0.9.19 renamed from closeFile()
*/
protected void closeWriter() {
Writer out = _currentOut;
if (out != null) {
try {
out.close();
} catch (IOException ioe) {}
}
}
/**
* Rotate to the next file (or the first file if this is the first call)
*
* Caller must synch
*/
private void rotateFile() {
File f = getNextFile();
_currentFile = f;
_numBytesInCurrentFile = 0;
File parent = f.getParentFile();
if (parent != null) {
if (!parent.exists()) {
File sd = new SecureDirectory(parent.getAbsolutePath());
boolean ok = sd.mkdirs();
if (!ok) {
System.err.println("Unable to create the parent directory: " + parent.getAbsolutePath());
//System.exit(0);
}
}
if (!parent.isDirectory()) {
System.err.println("Cannot put the logs in a subdirectory of a plain file: " + f.getAbsolutePath());
//System.exit(0);
}
}
closeWriter();
try {
_currentOut = new BufferedWriter(new OutputStreamWriter(new SecureFileOutputStream(f), "UTF-8"));
} catch (IOException ioe) {
if (++_diskFullMessageCount < MAX_DISKFULL_MESSAGES)
System.err.println("Error creating log file [" + f.getAbsolutePath() + "]" + ioe);
}
}
/**
* Get the next file in the rotation
*
* Caller must synch
*/
private File getNextFile() {
String pattern = _manager.getBaseLogfilename();
File f = new File(pattern);
File base = null;
if (!f.isAbsolute())
base = _manager.getContext().getLogDir();
if ( (pattern.indexOf('#') < 0) && (pattern.indexOf('@') <= 0) ) {
if (base != null)
return new File(base, pattern);
else
return f;
}
int max = _manager.getRotationLimit();
if (_rotationNum == -1) {
return getFirstFile(base, pattern, max);
}
// we're in rotation, just go to the next
_rotationNum++;
if (_rotationNum > max) _rotationNum = 0;
String newf = replace(pattern, _rotationNum);
if (base != null)
return new File(base, newf);
return new File(newf);
}
/**
* Retrieve the first file, updating the rotation number accordingly
*
* Caller must synch
*/
private File getFirstFile(File base, String pattern, int max) {
for (int i = 0; i < max; i++) {
File f;
if (base != null)
f = new File(base, replace(pattern, i));
else
f = new File(replace(pattern, i));
if (!f.exists()) {
_rotationNum = i;
return f;
}
}
// all exist, pick the oldest to replace
File oldest = null;
for (int i = 0; i < max; i++) {
File f;
if (base != null)
f = new File(base, replace(pattern, i));
else
f = new File(replace(pattern, i));
if (oldest == null) {
oldest = f;
} else {
if (f.lastModified() < oldest.lastModified()) {
_rotationNum = i;
oldest = f;
}
}
}
return oldest;
}
private static final String replace(String pattern, int num) {
char c[] = pattern.toCharArray();
StringBuilder buf = new StringBuilder();
for (int i = 0; i < c.length; i++) {
if ( (c[i] != '#') && (c[i] != '@') )
buf.append(c[i]);
else
buf.append(num);
}
return buf.toString();
}
}

View File

@@ -12,6 +12,8 @@ package net.i2p.util;
import java.io.File;
import java.io.Flushable;
import java.io.IOException;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.text.DateFormat;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
@@ -163,7 +165,21 @@ public class LogManager implements Flushable {
// yeah, this doesn't always work, _writer should be volatile
if (_writer != null)
return;
_writer = new LogWriter(this);
if (SystemVersion.isAndroid()) {
try {
Class<?> clazz = Class.forName("net.i2p.util.AndroidLogWriter");
Constructor<?> ctor = clazz.getDeclaredConstructor(LogManager.class);
_writer = (LogWriter) ctor.newInstance(this);
} catch (ClassNotFoundException e) {
} catch (InstantiationException e) {
} catch (IllegalAccessException e) {
} catch (InvocationTargetException e) {
} catch (NoSuchMethodException e) {
}
}
// Default writer
if (_writer == null)
_writer = new FileLogWriter(this);
_writer.setFlushInterval(_flushInterval * 1000);
// if you enable logging in I2PThread again, you MUST change this back to Thread
Thread t = new I2PThread(_writer, "LogWriter");

View File

@@ -9,210 +9,182 @@ package net.i2p.util;
*
*/
import java.io.BufferedWriter;
import java.io.File;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.util.Queue;
/**
* File-based log writer thread that pulls log records from the LogManager,
* writes them to the current logfile, and rotates the logs as necessary.
* Log writer thread that pulls log records from the LogManager and writes them to
* the log. This also periodically instructs the LogManager to reread its config
* file.
*
* @since 0.9.19 pulled from FileLogWriter so Android may extend
*/
class LogWriter extends LogWriterBase {
// volatile as it changes on log file rotation
private volatile Writer _currentOut;
private int _rotationNum = -1;
private File _currentFile;
private long _numBytesInCurrentFile;
abstract class LogWriter implements Runnable {
/** every 10 seconds? why? Just have the gui force a reread after a change?? */
private final static long CONFIG_READ_INTERVAL = 50 * 1000;
final static long FLUSH_INTERVAL = 29 * 1000;
private final static long MIN_FLUSH_INTERVAL = 2*1000;
private final static long MAX_FLUSH_INTERVAL = 5*60*1000;
private long _lastReadConfig;
protected final LogManager _manager;
private static final int MAX_DISKFULL_MESSAGES = 8;
private int _diskFullMessageCount;
protected volatile boolean _write;
private LogRecord _last;
// ms
private volatile long _flushInterval = FLUSH_INTERVAL;
public LogWriter(LogManager manager) {
super(manager);
_manager = manager;
_lastReadConfig = Clock.getInstance().now();
}
public abstract String currentFile();
/**
* Write the provided LogRecord to the writer.
* @param rec the LogRecord to write.
* @param formatted a String pre-formatted from rec, may be ignored.
*/
protected abstract void writeRecord(LogRecord rec, String formatted);
/**
* Write a single String verbatim to the writer.
* @param priority the level to log the line at.
* @param line the String to write.
*/
protected abstract void writeRecord(int priority, String line);
protected abstract void flushWriter();
protected abstract void closeWriter();
public void stopWriting() {
_write = false;
}
/**
* File may not exist or have old logs in it if not opened yet
* @param interval ms
* @since 0.9.18
*/
public synchronized String currentFile() {
if (_currentFile != null)
return _currentFile.getAbsolutePath();
String rv = getNextFile().getAbsolutePath();
// so it doesn't increment every time we call this
_rotationNum = -1;
return rv;
}
protected void writeRecord(LogRecord rec, String formatted) {
writeRecord(rec.getPriority(), formatted);
}
protected synchronized void writeRecord(int priority, String val) {
if (val == null) return;
if (_currentOut == null) {
rotateFile();
if (_currentOut == null)
return; // hosed
public void setFlushInterval(long interval) {
_flushInterval = Math.min(MAX_FLUSH_INTERVAL, Math.max(MIN_FLUSH_INTERVAL, interval));
}
public void run() {
_write = true;
// don't bother on Android
final boolean shouldReadConfig = !SystemVersion.isAndroid();
try {
_currentOut.write(val);
// may be a little off if a lot of multi-byte chars, but unlikely
_numBytesInCurrentFile += val.length();
} catch (Throwable t) {
if (!_write)
return;
if (++_diskFullMessageCount < MAX_DISKFULL_MESSAGES)
System.err.println("Error writing log, disk full? " + t);
//t.printStackTrace();
}
if (_numBytesInCurrentFile >= _manager.getFileSize()) {
rotateFile();
}
}
/**
* @since 0.9.19
*/
protected void flushWriter() {
try {
if (_currentOut != null)
_currentOut.flush();
} catch (IOException ioe) {
if (_write && ++_diskFullMessageCount < MAX_DISKFULL_MESSAGES)
System.err.println("Error writing the router log - disk full? " + ioe);
}
}
/**
* @since 0.9.19 renamed from closeFile()
*/
protected void closeWriter() {
Writer out = _currentOut;
if (out != null) {
try {
out.close();
} catch (IOException ioe) {}
}
}
/**
* Rotate to the next file (or the first file if this is the first call)
*
* Caller must synch
*/
private void rotateFile() {
File f = getNextFile();
_currentFile = f;
_numBytesInCurrentFile = 0;
File parent = f.getParentFile();
if (parent != null) {
if (!parent.exists()) {
File sd = new SecureDirectory(parent.getAbsolutePath());
boolean ok = sd.mkdirs();
if (!ok) {
System.err.println("Unable to create the parent directory: " + parent.getAbsolutePath());
//System.exit(0);
}
}
if (!parent.isDirectory()) {
System.err.println("Cannot put the logs in a subdirectory of a plain file: " + f.getAbsolutePath());
//System.exit(0);
while (_write) {
flushRecords();
if (_write && shouldReadConfig)
rereadConfig();
}
} catch (RuntimeException e) {
System.err.println("Error writing the log: " + e);
e.printStackTrace();
}
closeWriter();
}
public void flushRecords() { flushRecords(true); }
public void flushRecords(boolean shouldWait) {
try {
_currentOut = new BufferedWriter(new OutputStreamWriter(new SecureFileOutputStream(f), "UTF-8"));
} catch (IOException ioe) {
if (++_diskFullMessageCount < MAX_DISKFULL_MESSAGES)
System.err.println("Error creating log file [" + f.getAbsolutePath() + "]" + ioe);
}
}
/**
* Get the next file in the rotation
*
* Caller must synch
*/
private File getNextFile() {
String pattern = _manager.getBaseLogfilename();
File f = new File(pattern);
File base = null;
if (!f.isAbsolute())
base = _manager.getContext().getLogDir();
if ( (pattern.indexOf('#') < 0) && (pattern.indexOf('@') <= 0) ) {
if (base != null)
return new File(base, pattern);
else
return f;
}
int max = _manager.getRotationLimit();
if (_rotationNum == -1) {
return getFirstFile(base, pattern, max);
}
// we're in rotation, just go to the next
_rotationNum++;
if (_rotationNum > max) _rotationNum = 0;
String newf = replace(pattern, _rotationNum);
if (base != null)
return new File(base, newf);
return new File(newf);
}
/**
* Retrieve the first file, updating the rotation number accordingly
*
* Caller must synch
*/
private File getFirstFile(File base, String pattern, int max) {
for (int i = 0; i < max; i++) {
File f;
if (base != null)
f = new File(base, replace(pattern, i));
else
f = new File(replace(pattern, i));
if (!f.exists()) {
_rotationNum = i;
return f;
}
}
// all exist, pick the oldest to replace
File oldest = null;
for (int i = 0; i < max; i++) {
File f;
if (base != null)
f = new File(base, replace(pattern, i));
else
f = new File(replace(pattern, i));
if (oldest == null) {
oldest = f;
// zero copy, drain the manager queue directly
Queue<LogRecord> records = _manager.getQueue();
if (records == null) return;
if (!records.isEmpty()) {
if (_last != null && _last.getDate() < _manager.getContext().clock().now() - 30*60*1000)
_last = null;
LogRecord rec;
int dupCount = 0;
while ((rec = records.poll()) != null) {
if (_manager.shouldDropDuplicates() && rec.equals(_last)) {
dupCount++;
} else {
if (f.lastModified() < oldest.lastModified()) {
_rotationNum = i;
oldest = f;
if (dupCount > 0) {
writeDupMessage(dupCount, _last);
dupCount = 0;
}
writeRecord(rec);
}
_last = rec;
}
if (dupCount > 0) {
writeDupMessage(dupCount, _last);
}
flushWriter();
}
} catch (Throwable t) {
t.printStackTrace();
} finally {
if (shouldWait) {
try {
synchronized (this) {
this.wait(_flushInterval);
}
} catch (InterruptedException ie) { // nop
}
}
}
return oldest;
}
private static final String replace(String pattern, int num) {
char c[] = pattern.toCharArray();
StringBuilder buf = new StringBuilder();
for (int i = 0; i < c.length; i++) {
if ( (c[i] != '#') && (c[i] != '@') )
buf.append(c[i]);
/**
* Write a msg with the date stamp of the last duplicate
* @since 0.9.21
*/
private void writeDupMessage(int dupCount, LogRecord lastRecord) {
String dmsg = dupMessage(dupCount, lastRecord, false);
writeRecord(lastRecord.getPriority(), dmsg);
if (_manager.getDisplayOnScreenLevel() <= lastRecord.getPriority() && _manager.displayOnScreen())
System.out.print(dmsg);
dmsg = dupMessage(dupCount, lastRecord, true);
_manager.getBuffer().add(dmsg);
if (lastRecord.getPriority() >= Log.CRIT)
_manager.getBuffer().addCritical(dmsg);
}
/**
* Return a msg with the date stamp of the last duplicate
* @since 0.9.3
*/
private String dupMessage(int dupCount, LogRecord lastRecord, boolean reverse) {
String arrows = reverse ? (SystemVersion.isAndroid() ? "vvv" : "&darr;&darr;&darr;") : "^^^";
return LogRecordFormatter.getWhen(_manager, lastRecord) + ' ' + arrows + ' ' +
_t(dupCount, "1 similar message omitted", "{0} similar messages omitted") + ' ' + arrows +
LogRecordFormatter.NL;
}
private static final String BUNDLE_NAME = "net.i2p.router.web.messages";
/**
* gettext
* @since 0.9.3
*/
private String _t(int a, String b, String c) {
return Translate.getString(a, b, c, _manager.getContext(), BUNDLE_NAME);
}
private void rereadConfig() {
long now = Clock.getInstance().now();
if (now - _lastReadConfig > CONFIG_READ_INTERVAL) {
_manager.rereadConfig();
_lastReadConfig = now;
}
}
private void writeRecord(LogRecord rec) {
String val = LogRecordFormatter.formatRecord(_manager, rec, true);
writeRecord(rec, val);
// we always add to the console buffer, but only sometimes write to stdout
_manager.getBuffer().add(val);
if (rec.getPriority() >= Log.CRIT)
_manager.getBuffer().addCritical(val);
if (_manager.getDisplayOnScreenLevel() <= rec.getPriority()) {
if (_manager.displayOnScreen()) {
// wrapper and android logs already do time stamps, so reformat without the date
if (_manager.getContext().hasWrapper() || SystemVersion.isAndroid())
System.out.print(LogRecordFormatter.formatRecord(_manager, rec, false));
else
buf.append(num);
}
return buf.toString();
System.out.print(val);
}
}
}
}

View File

@@ -1,190 +0,0 @@
package net.i2p.util;
/*
* free (adj.): unencumbered; not under the control of others
* Written by jrandom in 2003 and released into the public domain
* with no warranty of any kind, either expressed or implied.
* It probably won't make your computer catch on fire, or eat
* your children, but it might. Use at your own risk.
*
*/
import java.util.Queue;
/**
* Log writer thread that pulls log records from the LogManager and writes them to
* the log. This also periodically instructs the LogManager to reread its config
* file.
*
* @since 0.9.19 pulled from LogWriter so Android may extend
*/
abstract class LogWriterBase implements Runnable {
/** every 10 seconds? why? Just have the gui force a reread after a change?? */
private final static long CONFIG_READ_INTERVAL = 50 * 1000;
final static long FLUSH_INTERVAL = 29 * 1000;
private final static long MIN_FLUSH_INTERVAL = 2*1000;
private final static long MAX_FLUSH_INTERVAL = 5*60*1000;
private long _lastReadConfig;
protected final LogManager _manager;
protected volatile boolean _write;
private LogRecord _last;
// ms
private volatile long _flushInterval = FLUSH_INTERVAL;
public LogWriterBase(LogManager manager) {
_manager = manager;
_lastReadConfig = Clock.getInstance().now();
}
public abstract String currentFile();
/**
* Write the provided LogRecord to the writer.
* @param rec the LogRecord to write.
* @param formatted a String pre-formatted from rec, may be ignored.
*/
protected abstract void writeRecord(LogRecord rec, String formatted);
/**
* Write a single String verbatim to the writer.
* @param priority the level to log the line at.
* @param line the String to write.
*/
protected abstract void writeRecord(int priority, String line);
protected abstract void flushWriter();
protected abstract void closeWriter();
public void stopWriting() {
_write = false;
}
/**
* @param interval ms
* @since 0.9.18
*/
public void setFlushInterval(long interval) {
_flushInterval = Math.min(MAX_FLUSH_INTERVAL, Math.max(MIN_FLUSH_INTERVAL, interval));
}
public void run() {
_write = true;
// don't bother on Android
final boolean shouldReadConfig = !SystemVersion.isAndroid();
try {
while (_write) {
flushRecords();
if (_write && shouldReadConfig)
rereadConfig();
}
} catch (RuntimeException e) {
System.err.println("Error writing the log: " + e);
e.printStackTrace();
}
closeWriter();
}
public void flushRecords() { flushRecords(true); }
public void flushRecords(boolean shouldWait) {
try {
// zero copy, drain the manager queue directly
Queue<LogRecord> records = _manager.getQueue();
if (records == null) return;
if (!records.isEmpty()) {
if (_last != null && _last.getDate() < _manager.getContext().clock().now() - 30*60*1000)
_last = null;
LogRecord rec;
int dupCount = 0;
while ((rec = records.poll()) != null) {
if (_manager.shouldDropDuplicates() && rec.equals(_last)) {
dupCount++;
} else {
if (dupCount > 0) {
writeDupMessage(dupCount, _last);
dupCount = 0;
}
writeRecord(rec);
}
_last = rec;
}
if (dupCount > 0) {
writeDupMessage(dupCount, _last);
}
flushWriter();
}
} catch (Throwable t) {
t.printStackTrace();
} finally {
if (shouldWait) {
try {
synchronized (this) {
this.wait(_flushInterval);
}
} catch (InterruptedException ie) { // nop
}
}
}
}
/**
* Write a msg with the date stamp of the last duplicate
* @since 0.9.21
*/
private void writeDupMessage(int dupCount, LogRecord lastRecord) {
String dmsg = dupMessage(dupCount, lastRecord, false);
writeRecord(lastRecord.getPriority(), dmsg);
if (_manager.getDisplayOnScreenLevel() <= lastRecord.getPriority() && _manager.displayOnScreen())
System.out.print(dmsg);
dmsg = dupMessage(dupCount, lastRecord, true);
_manager.getBuffer().add(dmsg);
if (lastRecord.getPriority() >= Log.CRIT)
_manager.getBuffer().addCritical(dmsg);
}
/**
* Return a msg with the date stamp of the last duplicate
* @since 0.9.3
*/
private String dupMessage(int dupCount, LogRecord lastRecord, boolean reverse) {
String arrows = reverse ? (SystemVersion.isAndroid() ? "vvv" : "&darr;&darr;&darr;") : "^^^";
return LogRecordFormatter.getWhen(_manager, lastRecord) + ' ' + arrows + ' ' +
_t(dupCount, "1 similar message omitted", "{0} similar messages omitted") + ' ' + arrows +
LogRecordFormatter.NL;
}
private static final String BUNDLE_NAME = "net.i2p.router.web.messages";
/**
* gettext
* @since 0.9.3
*/
private String _t(int a, String b, String c) {
return Translate.getString(a, b, c, _manager.getContext(), BUNDLE_NAME);
}
private void rereadConfig() {
long now = Clock.getInstance().now();
if (now - _lastReadConfig > CONFIG_READ_INTERVAL) {
_manager.rereadConfig();
_lastReadConfig = now;
}
}
private void writeRecord(LogRecord rec) {
String val = LogRecordFormatter.formatRecord(_manager, rec, true);
writeRecord(rec, val);
// we always add to the console buffer, but only sometimes write to stdout
_manager.getBuffer().add(val);
if (rec.getPriority() >= Log.CRIT)
_manager.getBuffer().addCritical(val);
if (_manager.getDisplayOnScreenLevel() <= rec.getPriority()) {
if (_manager.displayOnScreen()) {
// wrapper and android logs already do time stamps, so reformat without the date
if (_manager.getContext().hasWrapper() || SystemVersion.isAndroid())
System.out.print(LogRecordFormatter.formatRecord(_manager, rec, false));
else
System.out.print(val);
}
}
}
}

View File

@@ -1,9 +1,7 @@
The files in ../debian/ are for jessie/stable.
Alternates are in the subdirectories here.
trusty may be copied to utopic and vivid.
They do not have libjetty8-java.
wily has libjetty8-java.
trusty may be copied to utopic, vivid, wily, xenial.
tails-jessie and tails-wheezy are currently the same as
jessie and wheezy, respectively. If they diverge, put the changes here.

View File

@@ -39,20 +39,21 @@ Generate files to upload
- export TZ=UTC
- cd i2p.i2p.foobar
- copy debian-alt/(series)/changelog to debian/
- edit debian/changelog to add the release at the top
* version MUST be 0.9.XX-1ubuntu1
next version for fixes would be 0.9.XX-2ubunutu1
* series MUST be trusty
* series MUST be trusty (or precise)
* name and email MUST EXACTLY match what's in your GPG keyring
or the signing will fail.
(or add -kkeyid argument to debuild, which you must do
if you want to sign with a subkey)
run gpg -K to list your private keys
- edit debian/control to uncomment libservice-wrapper-java line
- ant debian-release-tarball
this will make a directory ../i2p-0.9.XX-0-xxxxxxxx/
and a tarball ../i2p_0.9.XX.orig.tar.bz2
- cp debian/changelog ../i2p-0.9.XX-0-xxxxxxxx/debian/
- cp debian-alt/(series)/(other files besides changelog) to ../i2p-0.9.XX-0-xxxxxxxx/debian/
- cd ../i2p-0.9.XX-0-xxxxxxxx/
- Build the *1ubuntu1* files:
If you have NOT done a successful dput for this release yet:

View File

@@ -4,7 +4,7 @@ Section: net
Standards-Version: 3.9.6
Priority: optional
Bugs: mailto:zzz@i2pmail.org
Homepage: https://geti2p.net
Homepage: https://geti2p.net/
Build-Depends: debhelper (>= 7.0.50~)
,ant (>= 1.8)
,ant-optional
@@ -13,9 +13,11 @@ Build-Depends: debhelper (>= 7.0.50~)
# Ant requires java 6 tools.jar:
# Unable to locate tools.jar. Expected to find it in /usr/lib/jvm/java-6-openjdk-amd64/lib/tools.jar
,openjdk-6-jdk
,glassfish-javaee
,dh-apparmor
,gettext
,libgmp3-dev
,libgetopt-java
,libgmp-dev (>= 2:5.0.2)
,libservice-wrapper-java
,hardening-wrapper
,po-debconf
@@ -45,7 +47,7 @@ Architecture: any
Section: java
Priority: optional
Depends: ${shlibs:Depends}, i2p-router
Homepage: http://www.i2p2.de/jbigi
Homepage: https://geti2p.net/
Description: Java Big Integer library
This Package contains the libjbigi JNI library (and on x86 platforms, jcpuid).
.
@@ -72,7 +74,12 @@ Architecture: all
Section: net
Priority: optional
Depends: ${misc:Depends}, ${java:Depends}, ${shlibs:Depends},
openjdk-8-jre-headless | openjdk-7-jre-headless | java8-runtime-headless | java7-runtime-headless, libecj-java
openjdk-8-jre-headless | openjdk-7-jre-headless | java8-runtime-headless | java7-runtime-headless,
libecj-java,
geoip-database,
gettext-base,
libgetopt-java,
glassfish-javaee
Replaces: i2p ( << 0.8.6-5)
Breaks: i2p (<< 0.8.6-5)
Recommends: libjbigi-jni, ttf-dejavu

View File

@@ -0,0 +1,72 @@
# history.txt is installed to /usr/share/i2p because
# it's shown in the router console at http://127.0.0.1:7657
# (this is also why I don't use dh_installchangelogs -k for it)
history.txt usr/share/i2p
pkg-temp/blocklist.txt usr/share/i2p
pkg-temp/certificates usr/share/i2p
pkg-temp/clients.config usr/share/i2p
pkg-temp/docs usr/share/i2p/
pkg-temp/eepget usr/bin
pkg-temp/eepsite usr/share/i2p
pkg-temp/geoip usr/share/i2p
pkg-temp/hosts.txt usr/share/i2p
pkg-temp/i2prouter-nowrapper usr/bin
pkg-temp/i2psnark.config usr/share/i2p
pkg-temp/i2ptunnel.config usr/share/i2p
pkg-temp/router.config usr/share/i2p
pkg-temp/systray.config usr/share/i2p
pkg-temp/webapps usr/share/i2p
pkg-temp/lib/BOB.jar usr/share/i2p/lib
pkg-temp/lib/desktopgui.jar usr/share/i2p/lib
pkg-temp/lib/i2p.jar usr/share/i2p/lib
pkg-temp/lib/i2psnark.jar usr/share/i2p/lib
pkg-temp/lib/i2ptunnel.jar usr/share/i2p/lib
pkg-temp/lib/jetty-i2p.jar usr/share/i2p/lib
pkg-temp/lib/jrobin.jar usr/share/i2p/lib
pkg-temp/lib/mstreaming.jar usr/share/i2p/lib
pkg-temp/lib/routerconsole.jar usr/share/i2p/lib
pkg-temp/lib/router.jar usr/share/i2p/lib
pkg-temp/lib/sam.jar usr/share/i2p/lib
pkg-temp/lib/streaming.jar usr/share/i2p/lib
pkg-temp/lib/systray.jar usr/share/i2p/lib
# uncomment if not building with libjetty8-java
# ubuntu: in trusty vivid wily xenial
# debian: in wheezy jessie stretch sid
pkg-temp/lib/jetty-continuation.jar usr/share/i2p/lib
pkg-temp/lib/jetty-deploy.jar usr/share/i2p/lib
pkg-temp/lib/jetty-http.jar usr/share/i2p/lib
pkg-temp/lib/jetty-io.jar usr/share/i2p/lib
pkg-temp/lib/jetty-rewrite-handler.jar usr/share/i2p/lib
pkg-temp/lib/jetty-security.jar usr/share/i2p/lib
pkg-temp/lib/jetty-servlet.jar usr/share/i2p/lib
pkg-temp/lib/jetty-servlets.jar usr/share/i2p/lib
pkg-temp/lib/jetty-start.jar usr/share/i2p/lib
pkg-temp/lib/jetty-util.jar usr/share/i2p/lib
pkg-temp/lib/jetty-webapp.jar usr/share/i2p/lib
pkg-temp/lib/jetty-xml.jar usr/share/i2p/lib
pkg-temp/lib/org.mortbay.jetty.jar usr/share/i2p/lib
pkg-temp/lib/org.mortbay.jmx.jar usr/share/i2p/lib
# following two are from libservlet3.0-java which is a dependency of libjetty8-java
pkg-temp/lib/javax.servlet.jar usr/share/i2p/lib
# uncomment if not building with either libtomcat6-java or libtomcat7-java
pkg-temp/lib/commons-el.jar usr/share/i2p/lib
# legacy name, contains only tomcat-juli, not commons-logging
pkg-temp/lib/commons-logging.jar usr/share/i2p/lib
pkg-temp/lib/jasper-runtime.jar usr/share/i2p/lib
# uncomment if not building with either glassfish-javaee or libjakarta-taglibs-standard-java
# ubuntu and debian: everywhere
#pkg-temp/lib/jstl.jar usr/share/i2p/lib
# uncomment if not building with either glassfish-javaee or libjstl1.1-java
# ubuntu and debian: everywhere
#pkg-temp/lib/standard.jar usr/share/i2p/lib

View File

@@ -0,0 +1,100 @@
usr/share/common-licenses/GPL-2 usr/share/doc/i2p-router/licenses/LICENSE-GPLv2.txt
usr/share/common-licenses/LGPL-2.1 usr/share/doc/i2p-router/licenses/LICENSE-LGPLv2.1.txt
usr/share/common-licenses/Apache-2.0 usr/share/doc/i2p-router/licenses/LICENSE-Apache2.0.txt
usr/share/common-licenses/BSD usr/share/doc/i2p-router/licenses/LICENSE-BSD.txt
usr/share/java/eclipse-ecj.jar usr/share/i2p/lib/eclipse-ecj.jar
# comment out if not building with libjetty8-java
# ubuntu: in trusty vivid wily xenial
# debian: in wheezy jessie stretch sid
#usr/share/java/jetty8-continuation.jar usr/share/i2p/lib/jetty-continuation.jar
#usr/share/java/jetty8-deploy.jar usr/share/i2p/lib/jetty-deploy.jar
#usr/share/java/jetty8-http.jar usr/share/i2p/lib/jetty-http.jar
#usr/share/java/jetty8-io.jar usr/share/i2p/lib/jetty-io.jar
# legacy name in lib/
#usr/share/java/jetty8-rewrite.jar usr/share/i2p/lib/jetty-rewrite-handler.jar
#usr/share/java/jetty8-security.jar usr/share/i2p/lib/jetty-security.jar
#usr/share/java/jetty8-servlet.jar usr/share/i2p/lib/jetty-servlet.jar
#usr/share/java/jetty8-servlets.jar usr/share/i2p/lib/jetty-servlets.jar
#usr/share/java/jetty8-start.jar usr/share/i2p/lib/jetty-start.jar
#usr/share/java/jetty8-util.jar usr/share/i2p/lib/jetty-util.jar
#usr/share/java/jetty8-webapp.jar usr/share/i2p/lib/jetty-webapp.jar
#usr/share/java/jetty8-xml.jar usr/share/i2p/lib/jetty-xml.jar
# legacy name in lib/
#usr/share/java/jetty8-server.jar usr/share/i2p/lib/org.mortbay.jetty.jar
# legacy name in lib/
#usr/share/java/jetty8-jmx.jar usr/share/i2p/lib/org.mortbay.jmx.jar
# following two are from libservlet3.0-java which is a dependency of libjetty8-java
# legacy name in lib/
#usr/share/java/servlet-api-3.0.jar usr/share/i2p/lib/javax.servlet.jar
# combined into javax.servlet.jar in non-package builds
#usr/share/java/jsp-api-2.2.jar usr/share/i2p/lib/jsp-api.jar
# comment out if not building with libtomcat6-java
# ubuntu: only in precise trusty vivid
# debian: only in wheezy
# legacy name, contains only tomcat-juli, not commons-logging
#usr/share/java/tomcat-juli.jar usr/share/i2p/lib/commons-logging.jar
#usr/share/java/jasper.jar usr/share/i2p/lib/jasper-runtime.jar
# combined into jasper-runtime.jar in non-package builds
#usr/share/java/tomcat-coyote.jar usr/share/i2p/lib/tomcat-coyote.jar
# combined into commons-el.jar in non-package builds
#usr/share/java/jasper-el.jar usr/share/i2p/lib/jasper-el.jar
# following is from libservlet2.5-java which is a dependency of libtomcat6-java
# legacy name in lib/
#usr/share/java/el-api-2.1.jar usr/share/i2p/lib/commons-el.jar
# comment out if not building with libtomcat7-java
# ubuntu: only in precise trusty vivid
# debian: only in wheezy
# legacy name, contains only tomcat-juli, not commons-logging
#usr/share/java/tomcat-juli.jar usr/share/i2p/lib/commons-logging.jar
#usr/share/java/tomcat-jasper.jar usr/share/i2p/lib/jasper-runtime.jar
# combined into jasper-runtime.jar in non-package builds
#usr/share/java/tomcat-coyote.jar usr/share/i2p/lib/tomcat-coyote.jar
# tomcat 7 only
#usr/share/java/tomcat-api.jar usr/share/i2p/lib/tomcat-api.jar
#usr/share/java/tomcat-util.jar usr/share/i2p/lib/tomcat-util.jar
# combined into commons-el.jar in non-package builds
#usr/share/java/tomcat-jasper-el.jar usr/share/i2p/lib/jasper-el.jar
# following is from libservlet3.0-java which is a dependency of libtomcat7-java
# legacy name in lib/
#usr/share/java/el-api-2.2.jar usr/share/i2p/lib/commons-el.jar
# comment out if not building with glassfish-javaee
usr/share/java/glassfish-javaee.jar usr/share/i2p/lib/jstl.jar
usr/share/java/glassfish-appserv-jstl.jar usr/share/i2p/lib/standard.jar
# comment out if not building with libjakarta-taglibs-standard-java
# ubuntu and debian: everywhere
#usr/share/java/standard.jar usr/share/i2p/lib/standard.jar
# comment out if not building with libjstl1.1-java
# ubuntu and debian: everywhere
#usr/share/java/jstl1.1.jar usr/share/i2p/lib/jstl.jar
# comment out if not building with gettext-base
# ubuntu and debian: everywhere
usr/share/java/libintl.jar usr/share/i2p/lib/libintl.jar
# comment out if not building with libgetopt-java
# ubuntu and debian: everywhere
usr/share/java/gnu-getopt.jar usr/share/i2p/lib/gnu-getopt.jar
# comment out if not building with libhttpclient-java and libhttpcore-java
# 2 MB of dependencies vs. 20 KB of copied source
# Requires 4.4 or higher.
# Debian: Not in wheezy/jessie
# Ubuntu: Only in wily and later
#usr/share/java/httpclient.jar usr/share/i2p/lib/httpclient.jar
#usr/share/java/httpcore.jar usr/share/i2p/lib/httpcore.jar

View File

@@ -34,6 +34,9 @@ export DEB_BUILD_HARDENING=1
#export EXTRAPREFIX := deb
export JAVA_HOME I2P
export DEBIANVERSION := $(shell dpkg-parsechangelog |awk -F' ' '/^Version:/{print $$2}' |sed 's/.*-\([.0-9A-Za-z~+]\{1,\}\)$$/\1/')
# required for jbigi/jcpuid build
export BITS := $(shell dpkg-architecture -qDEB_HOST_ARCH_BITS)
#export DEB_HOST_ARCH_CPU := $(shell dpkg-architecture -qDEB_HOST_ARCH_CPU)
%:
dh $@
@@ -62,8 +65,6 @@ binary-indep: build-indep
build-indep:
dh_prep
mkdir -p $(CURDIR)/installer/lib/wrapper/all
mkdir -p $(CURDIR)/installer/lib/launch4j/lib/
ln -sf /usr/share/java/commons-logging.jar $(CURDIR)/installer/lib/launch4j/lib/commons-logging.jar
ln -sf /usr/share/java/wrapper.jar $(CURDIR)/installer/lib/wrapper/all/wrapper.jar
if [ ! -e $(CURDIR)/debian/routerversion.java.bak ]; then \
cp $(ROUTERVERSION) $(CURDIR)/debian/routerversion.java.bak; \
@@ -74,11 +75,92 @@ ifeq "$(findstring deb,$(shell grep 'deb' $(ROUTERVERSION)))" ""
else
@echo "Already found deb in version, not doing anything"
endif
# build options
@# build options
@/bin/echo -e "javac.version=1.7" > $(CURDIR)/override.properties
@/bin/echo -e "javac.compilerargs=-bootclasspath $(JAVA_HOME)/jre/lib/rt.jar:$(JAVA_HOME)/jre/lib/jce.jar" >> $(CURDIR)/override.properties
@/bin/echo -e "javac.compilerargs7=-bootclasspath $(JAVA_HOME)/jre/lib/rt.jar:$(JAVA_HOME)/jre/lib/jce.jar" >> $(CURDIR)/override.properties
@/bin/echo -e "build.built-by=debian" >> $(CURDIR)/override.properties
@# debian and ubuntu: everywhere
@/bin/echo -e "with-geoip-database=true" >> $(CURDIR)/override.properties
@# ubuntu: not in precise
@# debian: in wheezy jessie stretch sid
@#/bin/echo -e "with-libjetty8-java=true" >> $(CURDIR)/override.properties
@#mkdir -p $(CURDIR)/apps/jetty/jettylib
@#ln -sf /usr/share/java/jetty8-continuation.jar $(CURDIR)/apps/jetty/jettylib/jetty-continuation.jar
@#ln -sf /usr/share/java/jetty8-deploy.jar $(CURDIR)/apps/jetty/jettylib/jetty-deploy.jar
@#ln -sf /usr/share/java/jetty8-http.jar $(CURDIR)/apps/jetty/jettylib/jetty-http.jar
@#ln -sf /usr/share/java/jetty8-io.jar $(CURDIR)/apps/jetty/jettylib/jetty-io.jar
@#ln -sf /usr/share/java/jetty8-rewrite.jar $(CURDIR)/apps/jetty/jettylib/jetty-rewrite-handler.jar
@#ln -sf /usr/share/java/jetty8-security.jar $(CURDIR)/apps/jetty/jettylib/jetty-security.jar
@#ln -sf /usr/share/java/jetty8-servlet.jar $(CURDIR)/apps/jetty/jettylib/jetty-servlet.jar
@#ln -sf /usr/share/java/jetty8-servlets.jar $(CURDIR)/apps/jetty/jettylib/jetty-servlets.jar
@#ln -sf /usr/share/java/jetty8-start.jar $(CURDIR)/apps/jetty/jettylib/jetty-start.jar
@#ln -sf /usr/share/java/jetty8-util.jar $(CURDIR)/apps/jetty/jettylib/jetty-util.jar
@#ln -sf /usr/share/java/jetty8-webapp.jar $(CURDIR)/apps/jetty/jettylib/jetty-webapp.jar
@#ln -sf /usr/share/java/jetty8-xml.jar $(CURDIR)/apps/jetty/jettylib/jetty-xml.jar
@#ln -sf /usr/share/java/jetty8-server.jar $(CURDIR)/apps/jetty/jettylib/org.mortbay.jetty.jar
@#ln -sf /usr/share/java/jetty8-jmx.jar $(CURDIR)/apps/jetty/jettylib/org.mortbay.jmx.jar
@# following two are from libservlet3.0-java which is a dependency of libjetty8-java
@#ln -sf /usr/share/java/servlet-api-3.0.jar $(CURDIR)/apps/jetty/jettylib/javax.servlet.jar
@#ln -sf /usr/share/java/jsp-api-2.2.jar $(CURDIR)/apps/jetty/jettylib/jsp-api.jar
@# ubuntu: only in precise trusty vivid
@# debian: only in wheezy
@#@/bin/echo -e "with-libtomcat6-java=true" >> $(CURDIR)/override.properties
@#mkdir -p $(CURDIR)/apps/jetty/jettylib
@#ln -sf /usr/share/java/jasper.jar $(CURDIR)/apps/jetty/jettylib/jasper-runtime.jar
@#ln -sf /usr/share/java/tomcat-coyote.jar $(CURDIR)/apps/jetty/jettylib/tomcat-coyote.jar
@#ln -sf /usr/share/java/tomcat-juli.jar $(CURDIR)/apps/jetty/jettylib/commons-logging.jar
@#ln -sf /usr/share/java/jasper-el.jar $(CURDIR)/apps/jetty/jettylib/jasper-el.jar
@# following is from libservlet2.5-java which is a dependency of libtomcat6-java
@#ln -sf /usr/share/java/el-api-2.1.jar $(CURDIR)/apps/jetty/jettylib/commons-el.jar
@# debian and ubuntu: everywhere
@#/bin/echo -e "with-libtomcat7-java=true" >> $(CURDIR)/override.properties
@#mkdir -p $(CURDIR)/apps/jetty/jettylib
@#ln -sf /usr/share/java/tomcat-jasper.jar $(CURDIR)/apps/jetty/jettylib/jasper-runtime.jar
@#ln -sf /usr/share/java/tomcat-api.jar $(CURDIR)/apps/jetty/jettylib/tomcat-api.jar
@#ln -sf /usr/share/java/tomcat-util.jar $(CURDIR)/apps/jetty/jettylib/tomcat-util.jar
@#ln -sf /usr/share/java/tomcat-coyote.jar $(CURDIR)/apps/jetty/jettylib/tomcat-coyote.jar
@#ln -sf /usr/share/java/tomcat-juli.jar $(CURDIR)/apps/jetty/jettylib/commons-logging.jar
@#ln -sf /usr/share/java/tomcat-jasper-el.jar $(CURDIR)/apps/jetty/jettylib/jasper-el.jar
@# following is from libservlet3.0-java which is a dependency of libtomcat7-java
@#ln -sf /usr/share/java/el-api-2.2.jar $(CURDIR)/apps/jetty/jettylib/commons-el.jar
@# debian and ubuntu: everywhere
@/bin/echo -e "with-glassfish-javaee=true" >> $(CURDIR)/override.properties
ln -sf /usr/share/java/glassfish-javaee.jar $(CURDIR)/apps/susidns/src/lib/jstl.jar
ln -sf /usr/share/java/glassfish-appserv-jstl.jar $(CURDIR)/apps/susidns/src/lib/standard.jar
@# debian and ubuntu: everywhere
@#/bin/echo -e "with-libjakarta-taglibs-standard-java=true" >> $(CURDIR)/override.properties
@#ln -sf /usr/share/java/standard.jar $(CURDIR)/apps/susidns/src/lib/standard.jar
@# debian and ubuntu: everywhere
@#/bin/echo -e "with-libjstl1.1-java=true" >> $(CURDIR)/override.properties
@#ln -sf /usr/share/java/jstl1.1.jar $(CURDIR)/apps/susidns/src/lib/jstl.jar
@# debian and ubuntu: everywhere
@/bin/echo -e "with-gettext-base=true" >> $(CURDIR)/override.properties
@mkdir -p $(CURDIR)/core/java/build
ln -sf /usr/share/java/libintl.jar $(CURDIR)/core/java/build/libintl.jar
@# debian and ubuntu: everywhere
@/bin/echo -e "with-libgetopt-java=true" >> $(CURDIR)/override.properties
@mkdir -p $(CURDIR)/core/java/build
ln -sf /usr/share/java/gnu-getopt.jar $(CURDIR)/core/java/build/gnu-getopt.jar
@# 2 MB of dependencies vs. 20 KB of copied source
@# Requires 4.4 or higher.
@# Debian: Not in wheezy/jessie
@# Ubuntu: Only in wily and later
@#/bin/echo -e "with-libhttpclient-java=true" >> $(CURDIR)/override.properties
@#mkdir -p $(CURDIR)/core/java/build
@#ln -sf /usr/share/java/httpclient.jar $(CURDIR)/core/java/build/httpclient.jar
@#ln -sf /usr/share/java/httpcore.jar $(CURDIR)/core/java/build/httpcore.jar
TZ=UTC JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF8 ant preppkg-unix javadoc
echo router.updateDisabled=true > $(I2P)/router.config
mv $(I2P)/runplain.sh $(I2P)/i2prouter-nowrapper

213
debian-alt/trusty/rules Executable file
View File

@@ -0,0 +1,213 @@
#!/usr/bin/make -f
# Quoting Policy version 3.9.2.0, 2011-04-07 section 4.9:
# /start quote
# For some packages, notably ones where the same source tree is compiled in
# different ways to produce two binary packages, the build target does not make
# much sense. For these packages it is good enough to provide two (or more)
# targets (build-a and build-b or whatever) for each of the ways of building the
# package, and a build target that does nothing. The binary target will have to
# build the package in each of the possible ways and make the binary package out
# of each.
# ...
# When a package has a configuration and build routine which takes a long time,
# or when the makefiles are poorly designed, or when build needs to run clean
# first, it is a good idea to touch build when the build process is complete.
# This will ensure that if debian/rules build is run again it will not rebuild
# the whole program.
# /end quote
# Since that fits building I2P very well, we override the build target.
#
build:
@echo 'The build target is disabled. Use the appropriate binary target.'
JAVA_HOME=/usr/lib/jvm/default-java
I2P=$(CURDIR)/pkg-temp
ROUTERVERSION=$(CURDIR)/router/java/src/net/i2p/router/RouterVersion.java
export DEB_BUILD_HARDENING=1
# I2P's version will be displayed in the router console as "$I2PVERSION-$EXTRAPREFIX$DEBIANVERSION", eg. 0.8.12-0-deb1
#export EXTRAPREFIX := deb
export JAVA_HOME I2P
export DEBIANVERSION := $(shell dpkg-parsechangelog |awk -F' ' '/^Version:/{print $$2}' |sed 's/.*-\([.0-9A-Za-z~+]\{1,\}\)$$/\1/')
# required for jbigi/jcpuid build
export BITS := $(shell dpkg-architecture -qDEB_HOST_ARCH_BITS)
#export DEB_HOST_ARCH_CPU := $(shell dpkg-architecture -qDEB_HOST_ARCH_CPU)
%:
dh $@ --with systemd
clean: createcopyright
override_dh_auto_clean:
-[ -r $(CURDIR)/debian/routerversion.java.bak ] && mv -f $(CURDIR)/debian/routerversion.java.bak $(ROUTERVERSION)
dh_auto_clean
ant distclean
find $(CURDIR)/core \( -name '*\.so' -o -name '*\.o' \) -exec rm -f {} \;
rm -rf $(CURDIR)/core/c/jcpuid/lib/
rm -f $(CURDIR)/installer/lib/wrapper/all/wrapper.jar
rm -rf $(CURDIR)/debian/python-i2p
rm -f $(CURDIR)/override.properties
debconf-updatepo
override_dh_auto_build:
override_dh_systemd_enable:
# We purposely do not set I2P to start at boot.
# This matches the behavior of the initscript
# and the setting RUN_DAEMON=false in /etc/default/i2p
binary-indep: build-indep
build-indep:
dh_prep
mkdir -p $(CURDIR)/installer/lib/wrapper/all
ln -sf /usr/share/java/wrapper.jar $(CURDIR)/installer/lib/wrapper/all/wrapper.jar
if [ ! -e $(CURDIR)/debian/routerversion.java.bak ]; then \
cp $(ROUTERVERSION) $(CURDIR)/debian/routerversion.java.bak; \
fi
ifeq "$(findstring deb,$(shell grep 'deb' $(ROUTERVERSION)))" ""
sed -e "s/\(.*EXTRA\ =\ \)[^ ]*\"\(.*\)\"/\1\"\2-$$EXTRAPREFIX$$DEBIANVERSION\"/" < $(ROUTERVERSION) > $(ROUTERVERSION).tmp
mv -f $(ROUTERVERSION).tmp $(ROUTERVERSION)
else
@echo "Already found deb in version, not doing anything"
endif
@# build options
@/bin/echo -e "javac.version=1.7" > $(CURDIR)/override.properties
@/bin/echo -e "javac.compilerargs=-bootclasspath $(JAVA_HOME)/jre/lib/rt.jar:$(JAVA_HOME)/jre/lib/jce.jar" >> $(CURDIR)/override.properties
@/bin/echo -e "javac.compilerargs7=-bootclasspath $(JAVA_HOME)/jre/lib/rt.jar:$(JAVA_HOME)/jre/lib/jce.jar" >> $(CURDIR)/override.properties
@/bin/echo -e "build.built-by=debian" >> $(CURDIR)/override.properties
@# debian and ubuntu: everywhere
@/bin/echo -e "with-geoip-database=true" >> $(CURDIR)/override.properties
@# ubuntu: not in precise
@# debian: in wheezy jessie stretch sid
@/bin/echo -e "with-libjetty8-java=true" >> $(CURDIR)/override.properties
mkdir -p $(CURDIR)/apps/jetty/jettylib
ln -sf /usr/share/java/jetty8-continuation.jar $(CURDIR)/apps/jetty/jettylib/jetty-continuation.jar
ln -sf /usr/share/java/jetty8-deploy.jar $(CURDIR)/apps/jetty/jettylib/jetty-deploy.jar
ln -sf /usr/share/java/jetty8-http.jar $(CURDIR)/apps/jetty/jettylib/jetty-http.jar
ln -sf /usr/share/java/jetty8-io.jar $(CURDIR)/apps/jetty/jettylib/jetty-io.jar
ln -sf /usr/share/java/jetty8-rewrite.jar $(CURDIR)/apps/jetty/jettylib/jetty-rewrite-handler.jar
ln -sf /usr/share/java/jetty8-security.jar $(CURDIR)/apps/jetty/jettylib/jetty-security.jar
ln -sf /usr/share/java/jetty8-servlet.jar $(CURDIR)/apps/jetty/jettylib/jetty-servlet.jar
ln -sf /usr/share/java/jetty8-servlets.jar $(CURDIR)/apps/jetty/jettylib/jetty-servlets.jar
ln -sf /usr/share/java/jetty8-start.jar $(CURDIR)/apps/jetty/jettylib/jetty-start.jar
ln -sf /usr/share/java/jetty8-util.jar $(CURDIR)/apps/jetty/jettylib/jetty-util.jar
ln -sf /usr/share/java/jetty8-webapp.jar $(CURDIR)/apps/jetty/jettylib/jetty-webapp.jar
ln -sf /usr/share/java/jetty8-xml.jar $(CURDIR)/apps/jetty/jettylib/jetty-xml.jar
ln -sf /usr/share/java/jetty8-server.jar $(CURDIR)/apps/jetty/jettylib/org.mortbay.jetty.jar
ln -sf /usr/share/java/jetty8-jmx.jar $(CURDIR)/apps/jetty/jettylib/org.mortbay.jmx.jar
@# following two are from libservlet3.0-java which is a dependency of libjetty8-java
ln -sf /usr/share/java/servlet-api-3.0.jar $(CURDIR)/apps/jetty/jettylib/javax.servlet.jar
ln -sf /usr/share/java/jsp-api-2.2.jar $(CURDIR)/apps/jetty/jettylib/jsp-api.jar
@# ubuntu: only in precise trusty vivid
@# debian: only in wheezy
@#@/bin/echo -e "with-libtomcat6-java=true" >> $(CURDIR)/override.properties
@#mkdir -p $(CURDIR)/apps/jetty/jettylib
@#ln -sf /usr/share/java/jasper.jar $(CURDIR)/apps/jetty/jettylib/jasper-runtime.jar
@#ln -sf /usr/share/java/tomcat-coyote.jar $(CURDIR)/apps/jetty/jettylib/tomcat-coyote.jar
@#ln -sf /usr/share/java/tomcat-juli.jar $(CURDIR)/apps/jetty/jettylib/commons-logging.jar
@#ln -sf /usr/share/java/jasper-el.jar $(CURDIR)/apps/jetty/jettylib/jasper-el.jar
@# following is from libservlet2.5-java which is a dependency of libtomcat6-java
@#ln -sf /usr/share/java/el-api-2.1.jar $(CURDIR)/apps/jetty/jettylib/commons-el.jar
@# debian and ubuntu: everywhere
@#/bin/echo -e "with-libtomcat7-java=true" >> $(CURDIR)/override.properties
@#mkdir -p $(CURDIR)/apps/jetty/jettylib
@#ln -sf /usr/share/java/tomcat-jasper.jar $(CURDIR)/apps/jetty/jettylib/jasper-runtime.jar
@#ln -sf /usr/share/java/tomcat-api.jar $(CURDIR)/apps/jetty/jettylib/tomcat-api.jar
@#ln -sf /usr/share/java/tomcat-util.jar $(CURDIR)/apps/jetty/jettylib/tomcat-util.jar
@#ln -sf /usr/share/java/tomcat-coyote.jar $(CURDIR)/apps/jetty/jettylib/tomcat-coyote.jar
@#ln -sf /usr/share/java/tomcat-juli.jar $(CURDIR)/apps/jetty/jettylib/commons-logging.jar
@#ln -sf /usr/share/java/tomcat-jasper-el.jar $(CURDIR)/apps/jetty/jettylib/jasper-el.jar
@# following is from libservlet3.0-java which is a dependency of libtomcat7-java
@#ln -sf /usr/share/java/el-api-2.2.jar $(CURDIR)/apps/jetty/jettylib/commons-el.jar
@# debian and ubuntu: everywhere
@/bin/echo -e "with-glassfish-javaee=true" >> $(CURDIR)/override.properties
ln -sf /usr/share/java/glassfish-javaee.jar $(CURDIR)/apps/susidns/src/lib/jstl.jar
ln -sf /usr/share/java/glassfish-appserv-jstl.jar $(CURDIR)/apps/susidns/src/lib/standard.jar
@# debian and ubuntu: everywhere
@#/bin/echo -e "with-libjakarta-taglibs-standard-java=true" >> $(CURDIR)/override.properties
@#ln -sf /usr/share/java/standard.jar $(CURDIR)/apps/susidns/src/lib/standard.jar
@# debian and ubuntu: everywhere
@#/bin/echo -e "with-libjstl1.1-java=true" >> $(CURDIR)/override.properties
@#ln -sf /usr/share/java/jstl1.1.jar $(CURDIR)/apps/susidns/src/lib/jstl.jar
@# debian and ubuntu: everywhere
@/bin/echo -e "with-gettext-base=true" >> $(CURDIR)/override.properties
@mkdir -p $(CURDIR)/core/java/build
ln -sf /usr/share/java/libintl.jar $(CURDIR)/core/java/build/libintl.jar
@# debian and ubuntu: everywhere
@/bin/echo -e "with-libgetopt-java=true" >> $(CURDIR)/override.properties
@mkdir -p $(CURDIR)/core/java/build
ln -sf /usr/share/java/gnu-getopt.jar $(CURDIR)/core/java/build/gnu-getopt.jar
@# 2 MB of dependencies vs. 20 KB of copied source
@# Requires 4.4 or higher.
@# Debian: Not in wheezy/jessie
@# Ubuntu: Only in wily and later
@#/bin/echo -e "with-libhttpclient-java=true" >> $(CURDIR)/override.properties
@#mkdir -p $(CURDIR)/core/java/build
@#ln -sf /usr/share/java/httpclient.jar $(CURDIR)/core/java/build/httpclient.jar
@#ln -sf /usr/share/java/httpcore.jar $(CURDIR)/core/java/build/httpcore.jar
TZ=UTC JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF8 ant preppkg-unix javadoc
echo router.updateDisabled=true > $(I2P)/router.config
mv $(I2P)/runplain.sh $(I2P)/i2prouter-nowrapper
binary-arch: build-arch
build-arch:
# build jbigi
cd $(CURDIR)/core/c/jbigi && ./build_jbigi.sh dynamic
# build jcpuid
cd $(CURDIR)/core/c/jcpuid && ./build.sh
binary: binary-arch binary-indep
createcopyright:
@echo " *** Creating debian/copyright*** "
@rm -f $(CURDIR)/debian/copyright
@/bin/echo -e "This package was Debianized by kytv <killyourtv@i2pmail.org>" >> $(CURDIR)/debian/copyright
@/bin/echo -e "Sun, 23 Jan 2011 20:26:51 +0000" >> $(CURDIR)/debian/copyright
@/bin/echo -e "\nIt was downloaded from https://geti2p.net" >> $(CURDIR)/debian/copyright
@/bin/echo -e "\nI2P is tracked upstream using the Monotone VCS" >> $(CURDIR)/debian/copyright
@/bin/echo -e "Complete information on fetching the source with monotone can be found" >> $(CURDIR)/debian/copyright
@/bin/echo -e "at https://geti2p.net/newdevelopers#getting-the-i2p-code\n\n\n" >> $(CURDIR)/debian/copyright
@/bin/cat $(CURDIR)/LICENSE.txt >> $(CURDIR)/debian/copyright
@/bin/echo -e "\n\n The debian packaging has been released into the public domain." >> $(CURDIR)/debian/copyright
override_dh_compress:
dh_compress -X.xsl -X.xml
override_dh_install:
dh_install --list-missing
dh_apparmor --profile-name=system_i2p -pi2p
dh_apparmor --profile-name=usr.bin.i2prouter -pi2p
override_dh_installchangelogs:
dh_installchangelogs history.txt
override_dh_installdocs:
dh_installdocs -pi2p -plibjbigi-jni --link-doc=i2p-router
dh_installdocs --remaining-packages
override_dh_dhlibdeps:
dh_shlibdeps -llibjbigi-jni debian/libjbigi-jni/usr/lib/jni/*.so
#override_dh_installinit:
# dh_installinit -r
override_dh_builddeb:
dh_builddeb -- -Zxz
get-orig-source:
uscan --verbose --rename --destdir $(CURDIR)/.. --watchfile debian/watch --force-download

View File

@@ -371,16 +371,16 @@ Debian wrapper.config to try to prevent confusion.
@@ -185,7 +185,7 @@
msgstr ""
#: ../i2prouter:1864
#: ../i2prouter:1875
-msgid "Please edit i2prouter and set the variable RUN_AS_USER"
+msgid "Please edit /etc/default/i2p and set the variable RUN_AS_USER"
msgstr ""
#: ../i2prouter:1869
#: ../i2prouter:1880
@@ -193,5 +193,5 @@
msgstr ""
#: ../i2prouter:1872
#: ../i2prouter:1883
-msgid "To run as root anyway, edit i2prouter and set ALLOW_ROOT=true."
+msgid "To run as root anyway, edit /etc/default/i2p and set ALLOW_ROOT=true."
msgstr ""

2
debian/rules vendored
View File

@@ -33,6 +33,8 @@ export DEB_BUILD_HARDENING=1
#export EXTRAPREFIX := deb
export JAVA_HOME I2P
export DEBIANVERSION := $(shell dpkg-parsechangelog |awk -F' ' '/^Version:/{print $$2}' |sed 's/.*-\([.0-9A-Za-z~+]\{1,\}\)$$/\1/')
# required for jbigi/jcpuid build
export BITS := $(shell dpkg-architecture -qDEB_HOST_ARCH_BITS)
#export DEB_HOST_ARCH_CPU := $(shell dpkg-architecture -qDEB_HOST_ARCH_CPU)
%:

View File

@@ -1,3 +1,10 @@
2016-05-25 zzz
* DesktopGui: Add monochrome icons for Windows and Mac
* Reseed:
- Require two sources minimum (ticket #1794)
- Update list of sources requiring SNI
* Translations: Update English po files
2016-05-20 zzz
* DesktopGui:
- Fix systray menu redraw on Mac;

View File

@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: I2P startup script\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-07-17 01:16+0000\n"
"POT-Creation-Date: 2016-05-25 12:29+0000\n"
"PO-Revision-Date: 2012-12-21 23:34+0000\n"
"Last-Translator: kytv <killyourtv@mail.i2p>\n"
"Language-Team: English \n"
@@ -18,180 +18,180 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
#: ../i2prouter:221
#: ../i2prouter:224
msgid "Failed to load the wrapper"
msgstr ""
#: ../i2prouter:978 ../i2prouter:1006 ../i2prouter:1080 ../i2prouter:1108
#: ../i2prouter:1129
#: ../i2prouter:989 ../i2prouter:1017 ../i2prouter:1091 ../i2prouter:1119
#: ../i2prouter:1140
#, sh-format
msgid "$APP_LONG_NAME is already running."
msgstr ""
#: ../i2prouter:989
#: ../i2prouter:1000
#, sh-format
msgid "Running $APP_LONG_NAME"
msgstr ""
#: ../i2prouter:1013
#: ../i2prouter:1024
#, sh-format
msgid "Waiting for $APP_LONG_NAME"
msgstr ""
#: ../i2prouter:1060
#: ../i2prouter:1071
#, sh-format
msgid "WARNING: $APP_LONG_NAME may have failed to start."
msgstr ""
#: ../i2prouter:1074 ../i2prouter:1102 ../i2prouter:1308 ../i2prouter:1597
#: ../i2prouter:1085 ../i2prouter:1113 ../i2prouter:1319 ../i2prouter:1608
msgid "Must be root to perform this action."
msgstr ""
#: ../i2prouter:1118
#: ../i2prouter:1129
#, sh-format
msgid "Starting $APP_LONG_NAME"
msgstr ""
#: ../i2prouter:1140
#: ../i2prouter:1151
#, sh-format
msgid "Stopping $APP_LONG_NAME"
msgstr ""
#: ../i2prouter:1144 ../i2prouter:1212 ../i2prouter:1765
#: ../i2prouter:1155 ../i2prouter:1223 ../i2prouter:1776
#, sh-format
msgid "$APP_LONG_NAME was not running."
msgstr ""
#: ../i2prouter:1157 ../i2prouter:1165 ../i2prouter:1227 ../i2prouter:1235
#: ../i2prouter:1168 ../i2prouter:1176 ../i2prouter:1238 ../i2prouter:1246
#, sh-format
msgid "Unable to stop $APP_LONG_NAME."
msgstr ""
#: ../i2prouter:1183
#: ../i2prouter:1194
#, sh-format
msgid "Waiting for $APP_LONG_NAME to exit"
msgstr ""
#: ../i2prouter:1197
#: ../i2prouter:1208
#, sh-format
msgid "Failed to stop $APP_LONG_NAME."
msgstr ""
#: ../i2prouter:1200
#: ../i2prouter:1211
#, sh-format
msgid "Stopped $APP_LONG_NAME."
msgstr ""
#: ../i2prouter:1208
#: ../i2prouter:1219
#, sh-format
msgid "Stopping $APP_LONG_NAME gracefully"
msgstr ""
#: ../i2prouter:1254
#: ../i2prouter:1265
#, sh-format
msgid "$APP_LONG_NAME is not running."
msgstr ""
#: ../i2prouter:1259
#: ../i2prouter:1270
#, sh-format
msgid "$APP_LONG_NAME is running: PID:$pid"
msgstr ""
#: ../i2prouter:1262
#: ../i2prouter:1273
#, sh-format
msgid "$APP_LONG_NAME is running: PID:$pid, Wrapper:$STATUS, Java:$JAVASTATUS"
msgstr ""
#: ../i2prouter:1315 ../i2prouter:1327 ../i2prouter:1346 ../i2prouter:1363
#: ../i2prouter:1430 ../i2prouter:1450 ../i2prouter:1464 ../i2prouter:1478
#: ../i2prouter:1506 ../i2prouter:1544 ../i2prouter:1579
#: ../i2prouter:1326 ../i2prouter:1338 ../i2prouter:1357 ../i2prouter:1374
#: ../i2prouter:1441 ../i2prouter:1461 ../i2prouter:1475 ../i2prouter:1489
#: ../i2prouter:1517 ../i2prouter:1555 ../i2prouter:1590
#, sh-format
msgid "The $APP_LONG_NAME daemon is already installed."
msgstr ""
#: ../i2prouter:1318 ../i2prouter:1333 ../i2prouter:1435 ../i2prouter:1467
#: ../i2prouter:1481 ../i2prouter:1495 ../i2prouter:1509 ../i2prouter:1547
#: ../i2prouter:1582
#: ../i2prouter:1329 ../i2prouter:1344 ../i2prouter:1446 ../i2prouter:1478
#: ../i2prouter:1492 ../i2prouter:1506 ../i2prouter:1520 ../i2prouter:1558
#: ../i2prouter:1593
#, sh-format
msgid "Installing the $APP_LONG_NAME daemon"
msgstr ""
#: ../i2prouter:1589
#: ../i2prouter:1600
#, sh-format
msgid "Install not currently supported for $DIST_OS"
msgstr ""
#: ../i2prouter:1605 ../i2prouter:1618 ../i2prouter:1632 ../i2prouter:1641
#: ../i2prouter:1651 ../i2prouter:1675 ../i2prouter:1688 ../i2prouter:1700
#: ../i2prouter:1718 ../i2prouter:1731 ../i2prouter:1745
#: ../i2prouter:1616 ../i2prouter:1629 ../i2prouter:1643 ../i2prouter:1652
#: ../i2prouter:1662 ../i2prouter:1686 ../i2prouter:1699 ../i2prouter:1711
#: ../i2prouter:1729 ../i2prouter:1742 ../i2prouter:1756
#, sh-format
msgid "Removing $APP_LONG_NAME daemon"
msgstr ""
#: ../i2prouter:1611 ../i2prouter:1626 ../i2prouter:1635 ../i2prouter:1645
#: ../i2prouter:1656 ../i2prouter:1669 ../i2prouter:1681 ../i2prouter:1694
#: ../i2prouter:1712 ../i2prouter:1725 ../i2prouter:1739 ../i2prouter:1750
#: ../i2prouter:1622 ../i2prouter:1637 ../i2prouter:1646 ../i2prouter:1656
#: ../i2prouter:1667 ../i2prouter:1680 ../i2prouter:1692 ../i2prouter:1705
#: ../i2prouter:1723 ../i2prouter:1736 ../i2prouter:1750 ../i2prouter:1761
#, sh-format
msgid "The $APP_LONG_NAME daemon is not currently installed."
msgstr ""
#: ../i2prouter:1754
#: ../i2prouter:1765
#, sh-format
msgid "Remove not currently supported for $DIST_OS"
msgstr ""
#: ../i2prouter:1841
#: ../i2prouter:1852
msgid "Commands:"
msgstr ""
#: ../i2prouter:1842
#: ../i2prouter:1853
msgid "Launch in the current console."
msgstr ""
#: ../i2prouter:1843
#: ../i2prouter:1854
msgid "Start in the background as a daemon process."
msgstr ""
#: ../i2prouter:1844
#: ../i2prouter:1855
msgid "Stop if running as a daemon or in another console."
msgstr ""
#: ../i2prouter:1845
#: ../i2prouter:1856
msgid "Stop gracefully, may take up to 11 minutes."
msgstr ""
#: ../i2prouter:1846
#: ../i2prouter:1857
msgid "Stop if running and then start."
msgstr ""
#: ../i2prouter:1847
#: ../i2prouter:1858
msgid "Restart only if already running."
msgstr ""
#: ../i2prouter:1848
#: ../i2prouter:1859
msgid "Query the current status."
msgstr ""
#: ../i2prouter:1849
#: ../i2prouter:1860
msgid "Install to start automatically when system boots."
msgstr ""
#: ../i2prouter:1850
#: ../i2prouter:1861
msgid "Uninstall."
msgstr ""
#: ../i2prouter:1851
#: ../i2prouter:1862
msgid "Request a Java thread dump if running."
msgstr ""
#: ../i2prouter:1864
#: ../i2prouter:1875
msgid "Please edit i2prouter and set the variable RUN_AS_USER"
msgstr ""
#: ../i2prouter:1869
#: ../i2prouter:1880
msgid "Running I2P as the root user is *not* recommended."
msgstr ""
#: ../i2prouter:1872
#: ../i2prouter:1883
msgid "To run as root anyway, edit i2prouter and set ALLOW_ROOT=true."
msgstr ""

View File

@@ -18,7 +18,7 @@ public class RouterVersion {
/** deprecated */
public final static String ID = "Monotone";
public final static String VERSION = CoreVersion.VERSION;
public final static long BUILD = 12;
public final static long BUILD = 13;
/** for example "-test" */
public final static String EXTRA = "";

View File

@@ -63,6 +63,8 @@ public class Reseeder {
private static final boolean ENABLE_SU3 = true;
/** if false, use su3 only, and disable fallback reading directory index and individual dat files */
private static final boolean ENABLE_NON_SU3 = false;
private static final int MIN_RI_WANTED = 100;
private static final int MIN_RESEED_SERVERS = 2;
/**
* NOTE - URLs that are in both the standard and SSL groups must use the same hostname,
@@ -241,6 +243,9 @@ public class Reseeder {
* Since Java 7 or Android 2.3 (API 9),
* which is the lowest Android we support anyway.
*
* Not guaranteed to be correct, e.g. FreeBSD:
* https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=201446
*
* @since 0.9.20
*/
private static boolean isSNISupported() {
@@ -500,6 +505,9 @@ public class Reseeder {
}
if (!isSNISupported()) {
try {
URLList.remove(new URI("https://i2p.manas.ca:8443/"));
URLList.remove(new URI("https://i2p-0.manas.ca:8443/"));
URLList.remove(new URI("https://download.xxlspeed.com/"));
URLList.remove(new URI("https://netdb.i2p2.no/"));
} catch (URISyntaxException mue) {}
}
@@ -521,6 +529,7 @@ public class Reseeder {
*/
private int reseed(List<URI> URLList, boolean echoStatus) {
int total = 0;
int fetched_reseed_servers = 0;
for (int i = 0; i < URLList.size() && _isRunning; i++) {
if (_context.router().gracefulShutdownInProgress()) {
System.out.println("Reseed aborted, shutdown in progress");
@@ -539,8 +548,9 @@ public class Reseeder {
}
if (dl > 0) {
total += dl;
fetched_reseed_servers++;
// Don't go on to the next URL if we have enough
if (total >= 100)
if (total >= MIN_RI_WANTED && fetched_reseed_servers >= MIN_RESEED_SERVERS)
break;
// remove alternate versions if we haven't tried them yet
for (int j = i + 1; j < URLList.size(); ) {