diff --git a/LINUX.html b/docs/LINUX.html similarity index 100% rename from LINUX.html rename to docs/LINUX.html diff --git a/LINUX.md b/docs/LINUX.md similarity index 100% rename from LINUX.md rename to docs/LINUX.md diff --git a/OSX.html b/docs/OSX.html similarity index 100% rename from OSX.html rename to docs/OSX.html diff --git a/OSX.md b/docs/OSX.md similarity index 100% rename from OSX.md rename to docs/OSX.md diff --git a/WINDOWS.html b/docs/WINDOWS.html similarity index 100% rename from WINDOWS.html rename to docs/WINDOWS.html diff --git a/WINDOWS.md b/docs/WINDOWS.md similarity index 100% rename from WINDOWS.md rename to docs/WINDOWS.md diff --git a/i2p.plugins.firefox.torrent b/i2p.plugins.firefox.torrent index a36c030..3cbc343 100644 Binary files a/i2p.plugins.firefox.torrent and b/i2p.plugins.firefox.torrent differ diff --git a/scripts/build.number b/scripts/build.number index 27ef1e4..d26d8fc 100644 --- a/scripts/build.number +++ b/scripts/build.number @@ -1,3 +1,3 @@ #Build Number for ANT. Do not edit! -#Mon Dec 19 16:45:03 UTC 2022 -build.number=268 +#Mon Dec 19 22:31:46 UTC 2022 +build.number=308 diff --git a/scripts/favicon.png b/scripts/favicon.png index 3d76cec..433b8ec 100644 Binary files a/scripts/favicon.png and b/scripts/favicon.png differ diff --git a/scripts/favicon.png.b64 b/scripts/favicon.png.b64 index e106aa7..9850282 100644 --- a/scripts/favicon.png.b64 +++ b/scripts/favicon.png.b64 @@ -1 +1 @@ -iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA~wD~AP-gvaeTAAAHF0lEQVRYhcWXf0zU5x3HX8~37jjhjoKoEESRdaI2tsrU1a7bog7FuMlsXP05rQ5SY4xrs6y2XTBbarppbKZpuprUIK3GOgOdWvwBGB06goiAiBbm9abIifwQDvl5v-8---OQnYCVbS57J0~u-X6ez~N-v7~PPd~nB~yfof6DPnHAa8Ai4NuAAWgGyoDPgYr~lQEN2AZsj4rC9MYbMHUqymCA-~eRkydRZ88iwAlgC9Dy7xh5EvTAnzWNQHY2YrcTECEggvSXgMeDlJURSEtDgDvA5KdpYLfRiJSWDgg-tnR0IBkZCFAHmJ-GeArgPX4c8XqRmhqkogLp6~uXaHc3cuYMcuwY0tKCtLYiKSkI8PunYeCz9HTE4UB2754jxcXFUllZKVlZG6SzM2gkK2utWCwWsdlssmPHu9Lejpw4gQAdQMR~I64D2nJzEYsFKSgoCIiIBAIBqa-vl~x8pLwcqa6ulv54wGq1SmEh0taGaBoCLPkmAW1wYP2h9aZNn2wy9D9OAMYkJ4PHAyaTSdXW1jJv3jxsNhtuNxgM0NjYyK5du6ioqFButxuDAcaMgbQ0AJ5~yH13xYpw65IlxlA9~YDw0fXPaTptv0J9zx3udm7M25h94eMLB-9cuKPMZkhMhPff34vJNJeSkhKysn5Bbi6MHQt5ecvYuTPAhg0bSEx08M47oBQkJABgtq1eNF4C2v4A3YvDIvE1rFqc59FrW5M~L-hWAFtyt5gdmqMOYWKoO1ePK~doxtFXr11DmzkT-vrg8mVwOuHFFyE2Npjn84HFEvydOhWMRhCBpUvh5l~1b11YlroGmB3KrZDjiblnl-sBHMqxdLA4gNFs~LE-Ut9utfpiZ84EkwlSU4f-jzo9TJ8OEhJ70AGFhZDz~en6weIAglpmW71ovAYgIs8MpQWlVETUxKhThw8H58DjoIapl5aCCM0vx8XeeEw3Tfz6aA1Ah-6iIL5hkkrsdfY~fPklrqKixxuQQfX2NtixA4A~jjKGlQHdw3SrT8Rs0QByVuZYlKi3BpmwodgM3AJ-u2YNlJcPbyB0BLo6ISsLqqoAmDPpyOkeRDJBnCFpHYh6TeXl-R~ZjDJyM6aKkvmCdEVIxKl9K~f1AlOAg8BLJp3i4wPC2rXBzy8Ufj9UV8MXv4th8ZkEKuniN9jwwwHg9cblSxJ8OlmsVMCn8~pPTTh-3g4hnyHAgcTaTvz-FkS665pcnn2wGfhgIRHm7Uxmlv8ZNu2tYdWqHoqKwOEIGmlpgVsnY1hcMJ73GI0RjQXEMJsoUrmRCbRvXx-3S~lUKwpvb6DXwfGg5oABKf3uOnz-T4CIrr4AR0-3dQAxe0kikwQi0dOKh4Vbe~D5oObNBDbcnogfIRIdozEM2dt~yGhSCKPphehf4eN1QWIQMGmmuxnHMtJzlufUKAApeykJv-8mYHR7hWVv13G2wskxnmMZ47Dj4zKd2PEy9-9W7HbQ~yCFuUQ9IihKUBK00YMPEzpSqRTv1u-o5HnJg6dObVJt0ozgUuz3LgSMAEaDIjM9DhQU04EH4U~YSKeOE69YSU6GopN6XiByMOGAeBNuUqniPl4u4lCxybFDcoHpt6fdnqzvt-4OHb8VPxpLlEnPT97-B8n-CGIJAyAlBZqaIGFPIhFDtxEAHPjZGd5Ai05HTu89Rk-J8UXGReqHSRU0XEEWneE00B7amjY3mtO7J1~5JfWeD8Z1kpv1Ju1Vi5gxA-K9xmH4gvgaB~N~vYqagx~iXjsHt8N9SNNpliHqIucPrTxk0wDUy2UdiCwFbva3-0EdSZtlTAVe7XO6fJMT4tmxcTV7Mjfzc27yNx7gJjCwCAWAWzj4VHePXpcLEZgyMZ6-xr5qFOnAlYE3F4oMPsM6GHQoFUFxafazeOhSC6pCRyQ3~lvxK9ru3ici2sSCVxZgjjJzZs9R5ouZmVuX0BU3mqhJcUSPiSb~03y-Kr~B~bttfiABaAXI~EvmJDduz-GfHW5-SDyiU7FS6spHRR~N0ZRG2Kgwpek0AaguqSb~s3y2fbgNpZQSkYFVef97-7leev0ckPZN3MPPpKFZmtvpVuHmcKXT61D9mDZrmkqalqSUUqrf6MO6CvgDCnjwZOoRwBhhvGq9bh22rbK4kvbmR-Yvzj4n4aZwGMElZUQGXD2u7MIjhQF7i~2ReF1lHROenUDJ6RKcfU4Eobe7l3NfnEOn13mA~Cdx60ZiAGhC46f2Vnt8uDmczvZOrl68SktDC26nm3Hx47Bet-LocVBVXIXX4-VSwaUjIpL9tAy86-pzrVOaosHSoG59dUt6Onu4V39P1ZbX4vP5JGZcjOpo7ZDmhmZVcb4CEXkeuAtcG6HGY6GARoJnjcHFRfBi6iR46LATvBPagK-BXSMhHwlGEdwrQkdMD7gBR3~cT3A98o-QE4B~ArxvOJmT8uQGAAAAAElFTkSuQmCC \ No newline at end of file +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 \ No newline at end of file diff --git a/scripts/plugin.config b/scripts/plugin.config index f5f3c01..f3a2737 100644 --- a/scripts/plugin.config +++ b/scripts/plugin.config @@ -3,7 +3,7 @@ signer=idki2p@mail.i2p consoleLinkName=I2PFirefox consoleLinkURL=/ consoleLinkTooltip=Firefox process manager for I2P -icon-code=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 +icon-code=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 description=Firefox process manager for I2P author=idk updateURL=/i2psnark/i2p.plugins.firefox/i2pfirefox-update.xpi2p diff --git a/src/java/net/i2p/i2pfirefox/I2PBrowser.java b/src/java/net/i2p/i2pfirefox/I2PBrowser.java index f384880..aeb5437 100644 --- a/src/java/net/i2p/i2pfirefox/I2PBrowser.java +++ b/src/java/net/i2p/i2pfirefox/I2PBrowser.java @@ -1,5 +1,6 @@ package net.i2p.i2pfirefox; +import java.awt.AWTException; import java.awt.Image; import java.awt.Menu; import java.awt.MenuItem; @@ -41,9 +42,12 @@ public class I2PBrowser extends I2PCommonBrowser { private final I2PChromium i2pChromium = new I2PChromium(); private final I2PGenericUnsafeBrowser i2pGeneral = new I2PGenericUnsafeBrowser(); + private final Toolkit toolkit = Toolkit.getDefaultToolkit(); private final SystemTray tray = initTray(); + private final Image image = toolkit.getImage("icon.png"); private final TrayIcon icon = initIcon(); private final PopupMenu menu = initMenu(); + private final Menu submenuStrict = new Menu("Strict Mode"); private final MenuItem launchRegularBrowserStrict = new MenuItem("Launch I2P Browser"); @@ -57,6 +61,7 @@ public class I2PBrowser extends I2PCommonBrowser { private final MenuItem launchConfigBrowserUsability = new MenuItem("Launch I2P Console"); private final MenuItem closeItem = new MenuItem("Close"); + public boolean firefox = false; public boolean chromium = false; public boolean generic = false; @@ -96,7 +101,7 @@ public class I2PBrowser extends I2PCommonBrowser { * * @since 0.0.16 */ - public I2PBrowser() {} + public I2PBrowser() { initIconFile(); } /** * Construct an I2PBrowser class which automatically determines which browser @@ -106,6 +111,7 @@ public class I2PBrowser extends I2PCommonBrowser { */ public I2PBrowser(String browserPath) { I2PGenericUnsafeBrowser.BROWSER = browserPath; + initIconFile(); } public void setBrowser(String browserPath) { @@ -282,7 +288,10 @@ public class I2PBrowser extends I2PCommonBrowser { try { if (useSystray) { logger.info("Starting systray"); - systray(args); + if (systray()) { + logger.info("Systray started"); + } + startupSystray(); Runtime.getRuntime().addShutdownHook(new Thread() { @Override public void run() { @@ -313,13 +322,6 @@ public class I2PBrowser extends I2PCommonBrowser { } return false; } - protected void shutdownSystray() { - tray.remove(icon); - File systrayIsRunningFile = - new File(runtimeDirectory(""), "systray.running"); - if (systrayIsRunningFile.exists()) - systrayIsRunningFile.delete(); - } private SystemTray initTray() { if (systrayIsRunningExternally()) { return null; @@ -336,46 +338,61 @@ public class I2PBrowser extends I2PCommonBrowser { return menu; } - private TrayIcon initIcon() { - File iconFile = new File(runtimeDirectory(""), "icon.png"); - if (!iconFile.exists()) { + private File initIconFile() { + File icon = new File(runtimeDirectory(""), "icon.png"); + if (!icon.exists()) { InputStream resources = I2PBrowser.class.getClassLoader().getResourceAsStream("icon.png"); try { - OutputStream fos = new FileOutputStream(iconFile); + OutputStream fos = new FileOutputStream(icon); copy(resources, fos); } catch (IOException e) { logger.warning(e.toString()); } } - Toolkit toolkit = Toolkit.getDefaultToolkit(); - Image image = toolkit.getImage("icon.png"); + return icon; + } + private TrayIcon initIcon() { TrayIcon icon = new TrayIcon(image, "I2P Browser Profile Controller", menu); icon.setImageAutoSize(true); return icon; } - public boolean systray(String[] args) throws Exception { + protected void startupSystray() { + logger.info("Setting up systray"); + File systrayIsRunningFile = + new File(runtimeDirectory(""), "systray.running"); + if (systrayIsRunningFile.exists()) { + try { + logger.info("Adding icon to systray"); + tray.add(icon); + } catch (AWTException e) { + logger.warning(e.toString()); + } + } + } + protected void shutdownSystray() { + tray.remove(icon); + File systrayIsRunningFile = + new File(runtimeDirectory(""), "systray.running"); + if (systrayIsRunningFile.exists()) + systrayIsRunningFile.delete(); + } + public boolean systray() throws Exception { if (tray == null) throw new Exception("System Tray is Null Exception"); - tray.add(icon); launchRegularBrowserStrict.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { - ArrayList argsList = new ArrayList(); - argsList.addAll(Arrays.asList(args)); - argsList.add("-strict"); - main(argsList.toArray(args)); + String[] args = {"-strict"}; + main(args); } }); submenuStrict.add(launchRegularBrowserStrict); logger.info("Added strict mode browser"); launchPrivateBrowserStrict.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { - ArrayList argsList = - new ArrayList(Arrays.asList(new String[] {"-private"})); - argsList.addAll(Arrays.asList(args)); - argsList.add("-strict"); - main(argsList.toArray(args)); + String[] args = {"-private", "-strict"}; + main(args); } }); submenuStrict.add(launchPrivateBrowserStrict); @@ -384,32 +401,24 @@ public class I2PBrowser extends I2PCommonBrowser { logger.info("Added strict mode submenu"); launchRegularBrowserUsability.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { - ArrayList argsList = new ArrayList(); - argsList.addAll(Arrays.asList(args)); - argsList.add("-usability"); - main(argsList.toArray(args)); + String[] args = {"-usability"}; + main(args); } }); submenuUsability.add(launchRegularBrowserUsability); logger.info("Added usability mode browser"); launchPrivateBrowserUsability.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { - ArrayList argsList = - new ArrayList(Arrays.asList(new String[] {"-private"})); - argsList.addAll(Arrays.asList(args)); - argsList.add("-usability"); - main(argsList.toArray(args)); + String[] args = {"-private", "-strict"}; + main(args); } }); submenuUsability.add(launchPrivateBrowserUsability); logger.info("Added usability+private mode browser"); launchConfigBrowserUsability.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { - ArrayList argsList = new ArrayList( - Arrays.asList(new String[] {"-app", "http://127.0.0.1:7657"})); - argsList.addAll(Arrays.asList(args)); - argsList.add("-usability"); - main(argsList.toArray(args)); + String[] args = {"-usability", "-app", "http://127.0.0.1:7657"}; + main(args); } }); submenuUsability.add(launchConfigBrowserUsability); diff --git a/src/java/net/i2p/i2pfirefox/I2PFirefox.java b/src/java/net/i2p/i2pfirefox/I2PFirefox.java index 4665edb..22b7530 100644 --- a/src/java/net/i2p/i2pfirefox/I2PFirefox.java +++ b/src/java/net/i2p/i2pfirefox/I2PFirefox.java @@ -29,7 +29,7 @@ import java.util.stream.Stream; */ public class I2PFirefox extends I2PCommonBrowser { private final String[] FIREFOX_SEARCH_PATHS = FIREFOX_FINDER(); - private Process p = null; + private Process process = null; public static boolean usability = false; private static String baseMode() { @@ -696,10 +696,10 @@ public class I2PFirefox extends I2PCommonBrowser { } try { logger.info(pb.command().toString()); - p = pb.start(); + process = pb.start(); logger.info("I2PFirefox"); sleep(2000); - return p; + return process; } catch (Throwable e) { logger.info(e.toString()); } @@ -725,12 +725,12 @@ public class I2PFirefox extends I2PCommonBrowser { } public void launch(int privateWindow, String[] url) { if (waitForProxy()) { - p = launchAndDetatch(privateWindow, url); - if (p == null) + process = launchAndDetatch(privateWindow, url); + if (process == null) return; try { logger.info("Waiting for I2PFirefox to close..."); - int exit = p.waitFor(); + int exit = process.waitFor(); logger.info("I2PFirefox exited with value: " + exit); if (isOSX()) System.exit(exit);