/** * Maps old reconnect panel, to new one. can be removed after 2.* * * @return */ private String convertFromOldSystem() { final int id = JDUtilities.getConfiguration().getIntegerProperty("RECONNECT_TYPE", 0); String[] ret; switch (id) { case 0: return LiveHeaderReconnect.ID; case 1: return ExternReconnectPlugin.ID; case 2: return ExternBatchReconnectPlugin.ID; case 3: // we need to convert clr script final String clr = JDUtilities.getConfiguration() .getStringProperty(Configuration.PARAM_HTTPSEND_REQUESTS_CLR); ret = CLRConverter.createLiveHeader(clr); if (ret != null) { JDUtilities.getConfiguration().setProperty(Configuration.PARAM_HTTPSEND_REQUESTS, ret[1]); } return LiveHeaderReconnect.ID; } return DummyRouterPlugin.getInstance().getID(); }
/** * returns the currently active routerplugin. Only one plugin may be active * * @return */ public RouterPlugin getActivePlugin() { // convert only once String id = storage.getActivePluginID(); if (id == null) { id = this.convertFromOldSystem(); this.storage.setActivePluginID(id); } RouterPlugin active = ReconnectPluginController.getInstance().getPluginByID(id); if (active == null) { active = DummyRouterPlugin.getInstance(); this.storage.setActivePluginID(active.getID()); } return active; }
/** Scans for reconnection plugins */ private void scan() { try { final File[] files = JDUtilities.getResourceFile("reconnect") .listFiles(new JDFileFilter(null, ".reconnect", false)); this.plugins = new ArrayList<RouterPlugin>(); this.plugins.add(DummyRouterPlugin.getInstance()); plugins.add(new ExternBatchReconnectPlugin()); plugins.add(new ExternReconnectPlugin()); plugins.add(new UPNPRouterPlugin()); plugins.add(new LiveHeaderReconnect()); plugins.add(new SpeedPortHybrid()); plugins.add(new EasyBox804()); final java.util.List<URL> urls = new ArrayList<URL>(); if (files != null) { final int length = files.length; for (int i = 0; i < length; i++) { try { urls.add(files[i].toURI().toURL()); Application.addUrlToClassPath(files[i].toURI().toURL(), getClass().getClassLoader()); } catch (final Throwable e) { LogController.CL().log(e); } } } Enumeration<URL> found = getClass() .getClassLoader() .getResources(ReconnectPluginController.JD_CONTROLLING_RECONNECT_PLUGINS); Pattern pattern = Pattern.compile(Pattern.quote(JD_CONTROLLING_RECONNECT_PLUGINS) + "(\\w+)/"); while (found.hasMoreElements()) { URL url = found.nextElement(); if (url.getProtocol().equalsIgnoreCase("jar")) { // // jarred addon (JAR) String path = url.getPath(); File jarFile = new File(new URL(path.substring(0, path.lastIndexOf('!'))).toURI()); JarInputStream jis = null; try { jis = new JarInputStream(new FileInputStream(jarFile)); JarEntry e; while ((e = jis.getNextJarEntry()) != null) { // try { Matcher matcher = pattern.matcher(e.getName()); while (matcher.find()) { try { String pkg = matcher.group(1); load(pkg); System.out.println(pkg); } catch (Exception e1) { e1.printStackTrace(); } } } } finally { try { jis.close(); } catch (final Throwable e) { } } } else { for (File dir : new File(url.toURI()) .listFiles( new FileFilter() { public boolean accept(File pathname) { return pathname.isDirectory(); } })) { File file = new File(dir, "info.json"); if (file.exists()) { load(dir.getName()); } } // } } } catch (Throwable e) { LogController.CL().log(e); } }