forked from I2P_Developers/i2p.i2p
merge of '7e9ec9156e65514e00e0d9f82be002cf9aadac5f'
and '9df57c2abc8e859828f9edf80e9d104fd6bf6729'
This commit is contained in:
@@ -17,18 +17,13 @@ import net.i2p.util.PartialEepGet;
|
||||
import net.i2p.util.VersionComparator;
|
||||
|
||||
/**
|
||||
* Download and install a plugin.
|
||||
* Check for an updated version of a plugin.
|
||||
* A plugin is a standard .sud file with a 40-byte signature,
|
||||
* a 16-byte version, and a .zip file.
|
||||
* Unlike for router updates, we need not have the public key
|
||||
* for the signature in advance.
|
||||
*
|
||||
* The zip file must have a standard directory layout, with
|
||||
* a plugin.config file at the top level.
|
||||
* The config file contains properties for the package name, version,
|
||||
* signing public key, and other settings.
|
||||
* The zip file will typically contain a webapps/ or lib/ dir,
|
||||
* and a webapps.config and/or clients.config file.
|
||||
* So we get the current version and update URL for the installed plugin,
|
||||
* then fetch the first 56 bytes of the URL, extract the version,
|
||||
* and compare.
|
||||
*
|
||||
* @since 0.7.12
|
||||
* @author zzz
|
||||
|
||||
@@ -16,7 +16,7 @@ import org.mortbay.jetty.servlet.WebApplicationContext;
|
||||
* individual jars and not lib/*.jar specified in wrapper.config.
|
||||
*
|
||||
* A sample line in webapps.config is:
|
||||
* webapps.appname.path=foo.jar,$I2P/lib/bar.jar
|
||||
* webapps.appname.classpath=foo.jar,$I2P/lib/bar.jar
|
||||
* Unless $I2P is specified the path will be relative to $I2P/lib for
|
||||
* webapps in the installation and appDir/plugins/appname/lib for plugins.
|
||||
*
|
||||
|
||||
@@ -15,13 +15,14 @@ import org.mortbay.jetty.servlet.WebApplicationContext;
|
||||
|
||||
|
||||
/**
|
||||
* Start a webappapp classpath as specified in webapps.config.
|
||||
* Add, start or stop a webapp.
|
||||
* Add to the webapp classpath if specified in webapps.config.
|
||||
*
|
||||
* Sadly, setting Class-Path in MANIFEST.MF doesn't work for jetty wars.
|
||||
* We could look there ourselves, or look for another properties file in the war,
|
||||
* See WebAppConfiguration for more information.
|
||||
* but let's just do it in webapps.config.
|
||||
*
|
||||
* No, wac.addClassPath() does not work.
|
||||
* No, wac.addClassPath() does not work. For more info see:
|
||||
*
|
||||
* http://servlets.com/archive/servlet/ReadMsg?msgId=511113&listName=jetty-support
|
||||
*
|
||||
|
||||
@@ -16,7 +16,7 @@ package net.i2p;
|
||||
public class CoreVersion {
|
||||
/** deprecated */
|
||||
public final static String ID = "Monotone";
|
||||
public final static String VERSION = "0.7.11";
|
||||
public final static String VERSION = "0.7.12";
|
||||
|
||||
public static void main(String args[]) {
|
||||
System.out.println("I2P Core version: " + VERSION);
|
||||
|
||||
@@ -404,6 +404,8 @@ D8usM7Dxp5yrDrCYZ5AIijc=
|
||||
*
|
||||
* @return The version string read, or an empty string if no version string
|
||||
* is present.
|
||||
*
|
||||
* @since 0.7.12
|
||||
*/
|
||||
public static String getVersionString(InputStream inputStream) {
|
||||
try {
|
||||
@@ -492,6 +494,8 @@ D8usM7Dxp5yrDrCYZ5AIijc=
|
||||
*
|
||||
* @return <code>null</code> if the
|
||||
* data was moved, and an error <code>String</code> otherwise.
|
||||
*
|
||||
* @since 0.7.12
|
||||
*/
|
||||
public String migrateFile(File signedFile, File outputFile) {
|
||||
if (!signedFile.exists())
|
||||
|
||||
@@ -252,6 +252,8 @@ public class Timestamper implements Runnable {
|
||||
|
||||
/**
|
||||
* Notify the listeners
|
||||
*
|
||||
* @since stratum param added in 0.7.12
|
||||
*/
|
||||
private void stampTime(long now, int stratum) {
|
||||
long before = _context.clock().now();
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
2010-03-013 zzz
|
||||
* 2010-03-15 0.7.12 released
|
||||
|
||||
2010-03-13 zzz
|
||||
* Partial fix for i2ptunnel nonce troubles
|
||||
|
||||
2010-03-08 zzz
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
<info>
|
||||
<appname>i2p</appname>
|
||||
<appversion>0.7.11</appversion>
|
||||
<appversion>0.7.12</appversion>
|
||||
<authors>
|
||||
<author name="I2P" email="http://forum.i2p2.de/"/>
|
||||
</authors>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<!--
|
||||
<i2p.news date="$Date: 2010-02-15 00:00:00 $">
|
||||
<i2p.release version="0.7.11" date="2010/02/15" minVersion="0.6"/>
|
||||
<i2p.news date="$Date: 2010-03-15 00:00:00 $">
|
||||
<i2p.release version="0.7.12" date="2010/03/15" minVersion="0.6"/>
|
||||
-->
|
||||
<h4><ul><li>Congratulations on getting I2P installed!</li></ul></h4>
|
||||
<p>
|
||||
|
||||
@@ -1,21 +1,29 @@
|
||||
<!--
|
||||
<i2p.news date="$Date: 2010-02-15 00:00:00 $">
|
||||
<i2p.release version="0.7.11" date="2010/02/15" minVersion="0.6" />
|
||||
<i2p.news date="$Date: 2010-03-15 00:00:00 $">
|
||||
<i2p.release version="0.7.12" date="2010/03/15" minVersion="0.6" />
|
||||
-->
|
||||
<h4><ul><li>2010-02-15: <b>0.7.11 <a href="http://www.i2p2.i2p/release-0.7.11.html">Released</a></b></li></ul></h4>
|
||||
<h4><ul><li>2010-03-15: <b>0.7.12 <a href="http://www.i2p2.i2p/release-0.7.12.html">Released</a></b></li></ul></h4>
|
||||
<p>
|
||||
The 0.7.11 release fixes several issues, some related to clocks, which prevented new routers from quickly integrating into the network.
|
||||
It also fixes the installer for 64-bit Windows.
|
||||
The release includes an
|
||||
update to <a href="http://old.nabble.com/jetty-5.1.15,-6.1.18-and-7.0.0.M2-td23652819.html">Jetty 5.1.15</a>
|
||||
to fix <a href="http://www.kb.cert.org/vuls/id/402580">this vulnerability</a>.
|
||||
The 0.7.12 release contains support for user-generated plugins. These plugins may contain console web applications,
|
||||
themes, translations, or standalone programs.
|
||||
Some plugins are available for testing at
|
||||
<a href="http://i2pbote.i2p/">i2pbote.i2p</a>
|
||||
and
|
||||
<a href="http://stats.i2p/i2p/plugins/">stats.i2p</a>.
|
||||
We are hopeful this support will enable rapid development of innovative i2p applications.
|
||||
</p><p>
|
||||
The release fixes the blank-page bug when an eepsite is not reachable,
|
||||
and also improves handling of clock skews and IP changes.
|
||||
It adds support for a new, smaller tunnel build message,
|
||||
that will be tested in this release and enabled in the next release.
|
||||
</p><p>
|
||||
As usual, the release contains more anonymity and performance improvements,
|
||||
and an assortment of bug fixes.
|
||||
translation updates, and an assortment of other bug fixes.
|
||||
Upgrading is recommended.
|
||||
</p><p>
|
||||
We already have more big improvements in development for the next two releases.
|
||||
Please give the
|
||||
The last 6 months of development have dramatically increased the performance and capacity of the network.
|
||||
Please help grow the network.
|
||||
Give the
|
||||
developers feedback on <a href="irc://127.0.0.1:6668/i2p">IRC #i2p</a> or <a href="http://forum.i2p">forum.i2p</a>
|
||||
and <a href="http://www.i2p2.i2p/getinvolved.html">get involved</a>,
|
||||
spread the word,
|
||||
|
||||
@@ -19,7 +19,7 @@ public class TunnelBuildMessage extends I2NPMessageImpl {
|
||||
this(context, MAX_RECORD_COUNT);
|
||||
}
|
||||
|
||||
/** @since 0.7.10 */
|
||||
/** @since 0.7.12 */
|
||||
protected TunnelBuildMessage(I2PAppContext context, int records) {
|
||||
super(context);
|
||||
if (records > 0) {
|
||||
@@ -31,7 +31,7 @@ public class TunnelBuildMessage extends I2NPMessageImpl {
|
||||
|
||||
public void setRecord(int index, ByteArray record) { _records[index] = record; }
|
||||
public ByteArray getRecord(int index) { return _records[index]; }
|
||||
/** @since 0.7.10 */
|
||||
/** @since 0.7.12 */
|
||||
public int getRecordCount() { return RECORD_COUNT; }
|
||||
|
||||
public static final int RECORD_SIZE = 512+16;
|
||||
|
||||
@@ -20,7 +20,7 @@ public class TunnelBuildReplyMessage extends I2NPMessageImpl {
|
||||
this(context, MAX_RECORD_COUNT);
|
||||
}
|
||||
|
||||
/** @since 0.7.10 */
|
||||
/** @since 0.7.12 */
|
||||
protected TunnelBuildReplyMessage(I2PAppContext context, int records) {
|
||||
super(context);
|
||||
if (records > 0) {
|
||||
@@ -32,7 +32,7 @@ public class TunnelBuildReplyMessage extends I2NPMessageImpl {
|
||||
|
||||
public void setRecord(int index, ByteArray record) { _records[index] = record; }
|
||||
public ByteArray getRecord(int index) { return _records[index]; }
|
||||
/** @since 0.7.10 */
|
||||
/** @since 0.7.12 */
|
||||
public int getRecordCount() { return RECORD_COUNT; }
|
||||
|
||||
public static final int RECORD_SIZE = TunnelBuildMessage.RECORD_SIZE;
|
||||
|
||||
@@ -18,10 +18,10 @@ public class RouterVersion {
|
||||
/** deprecated */
|
||||
public final static String ID = "Monotone";
|
||||
public final static String VERSION = CoreVersion.VERSION;
|
||||
public final static long BUILD = 11;
|
||||
public final static long BUILD = 0;
|
||||
|
||||
/** for example "-test" */
|
||||
public final static String EXTRA = "-rc";
|
||||
public final static String EXTRA = "";
|
||||
public final static String FULL_VERSION = VERSION + "-" + BUILD + EXTRA;
|
||||
public static void main(String args[]) {
|
||||
System.out.println("I2P Router version: " + FULL_VERSION);
|
||||
|
||||
@@ -93,6 +93,8 @@ public class ClientAppConfig {
|
||||
|
||||
/*
|
||||
* Go through the properties, and return a List of ClientAppConfig structures
|
||||
*
|
||||
* @since 0.7.12
|
||||
*/
|
||||
public static List<ClientAppConfig> getClientApps(File cfgFile) {
|
||||
Properties clientApps = new Properties();
|
||||
@@ -106,6 +108,8 @@ public class ClientAppConfig {
|
||||
|
||||
/*
|
||||
* Go through the properties, and return a List of ClientAppConfig structures
|
||||
*
|
||||
* @since 0.7.12
|
||||
*/
|
||||
private static List<ClientAppConfig> getClientApps(Properties clientApps) {
|
||||
List<ClientAppConfig> rv = new ArrayList(8);
|
||||
|
||||
@@ -506,6 +506,7 @@ class BuildExecutor implements Runnable {
|
||||
/**
|
||||
* Only do this for non-fallback tunnels.
|
||||
* @return true if refused because of a duplicate key
|
||||
* @since 0.7.12
|
||||
*/
|
||||
private boolean addToBuilding(PooledTunnelCreatorConfig cfg) {
|
||||
//_log.error("Adding ID: " + cfg.getReplyMessageId() + "; size was: " + _currentlyBuildingMap.size());
|
||||
@@ -521,6 +522,7 @@ class BuildExecutor implements Runnable {
|
||||
* But that's ok. A peer that rejects slowly gets penalized twice, for example.
|
||||
*
|
||||
* @return ptcc or null
|
||||
* @since 0.7.12
|
||||
*/
|
||||
PooledTunnelCreatorConfig removeFromBuilding(long id) {
|
||||
//_log.error("Removing ID: " + id + "; size was: " + _currentlyBuildingMap.size());
|
||||
|
||||
@@ -187,6 +187,7 @@ class BuildRequestor {
|
||||
SHORT_ORDER.add(Integer.valueOf(i));
|
||||
}
|
||||
|
||||
/** @since 0.7.12 */
|
||||
private static boolean supportsVariable(RouterContext ctx, Hash h) {
|
||||
RouterInfo ri = ctx.netDb().lookupRouterInfoLocally(h);
|
||||
if (ri == null)
|
||||
|
||||
Reference in New Issue
Block a user