forked from I2P_Developers/i2p.i2p
Add support for dmg and exe updates
This commit is contained in:
@@ -81,6 +81,10 @@ public class SU3File {
|
||||
public static final int TYPE_XML_GZ = 3;
|
||||
/** @since 0.9.28 */
|
||||
public static final int TYPE_TXT_GZ = 4;
|
||||
/** @since 0.9.51 */
|
||||
public static final int TYPE_DMG = 5;
|
||||
/** @since 0.9.51 */
|
||||
public static final int TYPE_EXE = 6;
|
||||
|
||||
public static final int CONTENT_UNKNOWN = 0;
|
||||
public static final int CONTENT_ROUTER = 1;
|
||||
@@ -703,7 +707,9 @@ public class SU3File {
|
||||
" HTML\t(code: 2)\n" +
|
||||
" XML_GZ\t(code: 3)\n" +
|
||||
" TXT_GZ\t(code: 4)\n" +
|
||||
" (user defined)\t(code: 5-255)\n");
|
||||
" DMG\t(code: 5)\n" +
|
||||
" EXE\t(code: 6)\n" +
|
||||
" (user defined)\t(code: 7-255)\n");
|
||||
return buf.toString();
|
||||
}
|
||||
|
||||
@@ -761,6 +767,10 @@ public class SU3File {
|
||||
ftype = "HTML";
|
||||
else if (file._fileType == TYPE_XML_GZ)
|
||||
ftype = "XML_GZ";
|
||||
else if (file._fileType == TYPE_DMG)
|
||||
ftype = "DMG";
|
||||
else if (file._fileType == TYPE_EXE)
|
||||
ftype = "EXE";
|
||||
else
|
||||
ftype = Integer.toString(file._fileType);
|
||||
System.out.println("FileType: " + ftype);
|
||||
@@ -861,6 +871,10 @@ public class SU3File {
|
||||
ft = TYPE_HTML;
|
||||
} else if (ftype.equalsIgnoreCase("XML_GZ")) {
|
||||
ft = TYPE_XML_GZ;
|
||||
} else if (ftype.equalsIgnoreCase("DMG")) {
|
||||
ft = TYPE_DMG;
|
||||
} else if (ftype.equalsIgnoreCase("EXE")) {
|
||||
ft = TYPE_EXE;
|
||||
} else {
|
||||
try {
|
||||
ft = Integer.parseInt(ftype);
|
||||
@@ -975,6 +989,12 @@ public class SU3File {
|
||||
case TYPE_TXT_GZ:
|
||||
sfx = ".txt.gz";
|
||||
break;
|
||||
case TYPE_DMG:
|
||||
sfx = ".dmg";
|
||||
break;
|
||||
case TYPE_EXE:
|
||||
sfx = ".exe";
|
||||
break;
|
||||
default:
|
||||
sfx = ".extracted";
|
||||
break;
|
||||
|
||||
@@ -34,7 +34,16 @@ public interface UpdateManager {
|
||||
public void unregister(Updater updater, UpdateType type, UpdateMethod method);
|
||||
|
||||
public void unregister(Checker checker, UpdateType type, UpdateMethod method);
|
||||
|
||||
|
||||
/**
|
||||
* Register a post-processor for this UpdateType and SU3File file type.
|
||||
*
|
||||
* @param type only ROUTER_SIGNED_SU3 and ROUTER_DEV_SU3 are currently supported
|
||||
* @param fileType a SU3File TYPE_xxx constant, 1-255, TYPE_ZIP not supported.
|
||||
* @since 0.9.51
|
||||
*/
|
||||
public void register(UpdatePostProcessor upp, UpdateType type, int fileType);
|
||||
|
||||
public void start();
|
||||
|
||||
public void shutdown();
|
||||
|
||||
50
core/java/src/net/i2p/update/UpdatePostProcessor.java
Normal file
50
core/java/src/net/i2p/update/UpdatePostProcessor.java
Normal file
@@ -0,0 +1,50 @@
|
||||
package net.i2p.update;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.File;
|
||||
|
||||
/**
|
||||
* An external class to handle complex processing of update files,
|
||||
* where necessary instead of simply copying i2pupdate.zip to the config dir.
|
||||
*
|
||||
* @since 0.9.51
|
||||
*/
|
||||
public interface UpdatePostProcessor {
|
||||
|
||||
/**
|
||||
* Notify the post-processor that an update has been downloaded and verified.
|
||||
* The version will be higher than the currently-installed version.
|
||||
*
|
||||
* This method MUST immediately postprocess, copy, or rename the file, which
|
||||
* will be located in the temporary directory.
|
||||
* Caller will delete the file if it remains, immediately after this method returns.
|
||||
*
|
||||
* This method MUST throw an IOException on all errors. The IOException will be
|
||||
* displayed to the user in the console, so it should be clear.
|
||||
*
|
||||
* This method must not trigger the shutdown itself.
|
||||
* Caller will trigger the shutdown if so configured.
|
||||
*
|
||||
* If the post-processor needs to perform any actions at shutdown, it should
|
||||
* call I2PAppContext.addShutdownTask() or RouterContext.addFinalShutdownTask().
|
||||
* See javadocs for restrictions on final shutdown tasks.
|
||||
* Note that the router's temporary directory is deleted at shutdown,
|
||||
* BEFORE the final shutdown tasks are run.
|
||||
*
|
||||
* After this call, the router will do a graceful shutdown if so configured,
|
||||
* or will notify the user in the console to manually shut down the router.
|
||||
* Therefore, the shutdown may happen immediately, or be delayed for 10 minutes,
|
||||
* or may be hours, days, or weeks later.
|
||||
*
|
||||
* In rare cases, a newer update may be downloaded before the shutdown
|
||||
* for the first update, and this method may be called again with the newer version.
|
||||
* Implementers must take care to properly handle multiple calls.
|
||||
*
|
||||
* @param type only ROUTER_SIGNED_SU3 and ROUTER_DEV_SU3 are currently supported
|
||||
* @param fileType a TYPE_xxx file type code from the SU3File, 0-255
|
||||
* @param version the version string from the SU3File
|
||||
* @param file in the temp directory, as extracted from the validated su3 file
|
||||
* @throws IOException on all errors, message will be displayed to the user
|
||||
*/
|
||||
public void updateDownloadedandVerified(UpdateType type, int fileType, String version, File file) throws IOException;
|
||||
}
|
||||
Reference in New Issue
Block a user