forked from I2P_Developers/i2p.i2p
- new ROUTER_SIGNED_SU3 UpdateType - Add support for torrent and HTTP - Refactor UpdateRunners to return actual UpdateType - Deal with signed/su3 conflicts - unpack/verify stubbed only
53 lines
1.8 KiB
Java
53 lines
1.8 KiB
Java
package org.klomp.snark;
|
|
|
|
import java.net.URI;
|
|
import java.util.List;
|
|
|
|
import net.i2p.I2PAppContext;
|
|
import net.i2p.update.*;
|
|
|
|
/**
|
|
* <p>Handles the request to update the router by firing up a magnet.
|
|
* {@link net.i2p.util.EepGet} calls to download the latest signed update file
|
|
* and displaying the status to anyone who asks.
|
|
* </p>
|
|
* <p>After the download completes the signed update file is verified with
|
|
* {@link net.i2p.crypto.TrustedUpdate}, and if it's authentic the payload
|
|
* of the signed update file is unpacked and the router is restarted to complete
|
|
* the update process.
|
|
* </p>
|
|
*
|
|
* This does not do any checking, that is handled by the NewsFetcher.
|
|
*
|
|
* @since 0.9.4
|
|
*/
|
|
class UpdateHandler implements Updater {
|
|
private final I2PAppContext _context;
|
|
private final UpdateManager _umgr;
|
|
private final SnarkManager _smgr;
|
|
|
|
public UpdateHandler(I2PAppContext ctx, UpdateManager umgr, SnarkManager smgr) {
|
|
_context = ctx;
|
|
_umgr = umgr;
|
|
_smgr = smgr;
|
|
}
|
|
|
|
/**
|
|
* Start a download and return a handle to the download task.
|
|
* Should not block.
|
|
*
|
|
* @param id plugin name or ignored
|
|
* @param maxTime how long you have
|
|
* @return active task or null if unable to download
|
|
*/
|
|
public UpdateTask update(UpdateType type, UpdateMethod method, List<URI> updateSources,
|
|
String id, String newVersion, long maxTime) {
|
|
if ((type != UpdateType.ROUTER_SIGNED && type != UpdateType.ROUTER_SIGNED_SU3) ||
|
|
method != UpdateMethod.TORRENT || updateSources.isEmpty())
|
|
return null;
|
|
UpdateRunner update = new UpdateRunner(_context, _umgr, _smgr, type, updateSources, newVersion);
|
|
_umgr.notifyProgress(update, "<b>" + _smgr.util().getString("Updating") + "</b>");
|
|
return update;
|
|
}
|
|
}
|