⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 coreupdatechecker.java

📁 java 文件下载器。可自定义
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
// Decompiled by Jad v1.5.8e2. Copyright 2001 Pavel Kouznetsov.
// Jad home page: http://kpdus.tripod.com/jad.html
// Decompiler options: packimports(3) fieldsfirst ansi space 
// Source File Name:   CoreUpdateChecker.java

package org.gudy.azureus2.update;

import com.aelitis.azureus.core.versioncheck.VersionCheckClient;
import com.aelitis.azureus.ui.UIFunctions;
import com.aelitis.azureus.ui.UIFunctionsManager;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.InputStream;
import java.io.PrintStream;
import java.net.URL;
import java.net.URLClassLoader;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
import org.gudy.azureus2.core3.config.COConfigurationManager;
import org.gudy.azureus2.core3.html.HTMLPage;
import org.gudy.azureus2.core3.html.HTMLPageFactory;
import org.gudy.azureus2.core3.logging.LogAlert;
import org.gudy.azureus2.core3.logging.LogEvent;
import org.gudy.azureus2.core3.logging.LogIDs;
import org.gudy.azureus2.core3.logging.Logger;
import org.gudy.azureus2.core3.util.AETemporaryFileHandler;
import org.gudy.azureus2.core3.util.AEVerifier;
import org.gudy.azureus2.core3.util.BDecoder;
import org.gudy.azureus2.core3.util.Constants;
import org.gudy.azureus2.core3.util.Debug;
import org.gudy.azureus2.core3.util.FileUtil;
import org.gudy.azureus2.core3.util.SystemProperties;
import org.gudy.azureus2.plugins.Plugin;
import org.gudy.azureus2.plugins.PluginInterface;
import org.gudy.azureus2.plugins.logging.LoggerChannel;
import org.gudy.azureus2.plugins.update.UpdatableComponent;
import org.gudy.azureus2.plugins.update.Update;
import org.gudy.azureus2.plugins.update.UpdateChecker;
import org.gudy.azureus2.plugins.update.UpdateInstaller;
import org.gudy.azureus2.plugins.update.UpdateManager;
import org.gudy.azureus2.plugins.utils.Utilities;
import org.gudy.azureus2.plugins.utils.resourcedownloader.ResourceDownloader;
import org.gudy.azureus2.plugins.utils.resourcedownloader.ResourceDownloaderAdapter;
import org.gudy.azureus2.plugins.utils.resourcedownloader.ResourceDownloaderDelayedFactory;
import org.gudy.azureus2.plugins.utils.resourcedownloader.ResourceDownloaderFactory;
import org.gudy.azureus2.plugins.utils.resourcedownloader.ResourceDownloaderListener;

public class CoreUpdateChecker
	implements Plugin, UpdatableComponent
{

	public static final String LATEST_VERSION_PROPERTY = "latest_version";
	public static final String MESSAGE_PROPERTY = "message";
	public static final int RD_GET_DETAILS_RETRIES = 3;
	public static final int RD_GET_MIRRORS_RETRIES = 3;
	public static final int RD_SIZE_RETRIES = 3;
	public static final int RD_SIZE_TIMEOUT = 10000;
	protected static CoreUpdateChecker singleton;
	protected PluginInterface plugin_interface;
	protected ResourceDownloaderFactory rdf;
	protected LoggerChannel log;
	protected ResourceDownloaderListener rd_logger;
	protected boolean first_check;

	public static void doUsageStats()
	{
		singleton.doUsageStatsSupport();
	}

	public CoreUpdateChecker()
	{
		first_check = true;
		singleton = this;
	}

	protected void doUsageStatsSupport()
	{
		Map decoded = VersionCheckClient.getSingleton().getVersionCheckInfo(first_check ? "us" : "up");
		displayUserMessage(decoded);
		first_check = false;
		break MISSING_BLOCK_LABEL_42;
		Exception exception;
		exception;
		first_check = false;
		throw exception;
	}

	public void initialize(PluginInterface _plugin_interface)
	{
		plugin_interface = _plugin_interface;
		plugin_interface.getPluginProperties().setProperty("plugin.name", "Core Updater");
		log = plugin_interface.getLogger().getChannel("CoreUpdater");
		rd_logger = new ResourceDownloaderAdapter() {

			final CoreUpdateChecker this$0;

			public void reportActivity(ResourceDownloader downloader, String activity)
			{
				log.log(activity);
			}

			
			{
				this$0 = CoreUpdateChecker.this;
				super();
			}
		};
		Properties props = plugin_interface.getPluginProperties();
		props.setProperty("plugin.version", plugin_interface.getAzureusVersion());
		rdf = plugin_interface.getUtilities().getResourceDownloaderFactory();
		plugin_interface.getUpdateManager().registerUpdatableComponent(this, true);
	}

	public String getName()
	{
		return "Azureus Core";
	}

	public int getMaximumCheckTime()
	{
		return 30;
	}

	public void checkForUpdate(final UpdateChecker checker)
	{
		String current_version;
		Map decoded;
		current_version = plugin_interface.getAzureusVersion();
		log.log((new StringBuilder()).append("Update check starts: current = ").append(current_version).toString());
		decoded = VersionCheckClient.getSingleton().getVersionCheckInfo(first_check ? "us" : "up");
		displayUserMessage(decoded);
		if (decoded.isEmpty())
		{
			checker.completed();
			first_check = false;
			return;
		}
		String latest_version;
		String latest_file_name;
		URL full_download_url;
		byte b_version[] = (byte[])(byte[])decoded.get("version");
		if (b_version != null)
		{
			latest_version = new String(b_version);
			plugin_interface.getPluginProperties().setProperty("latest_version", latest_version);
		} else
		{
			throw new Exception("No version found in reply");
		}
		byte b_filename[] = (byte[])(byte[])decoded.get("filename");
		if (b_filename != null)
			latest_file_name = new String(b_filename);
		else
			throw new Exception("No update file details in reply");
		String msg = (new StringBuilder()).append("Core: latest_version = '").append(latest_version).append("', file = '").append(latest_file_name).append("'").toString();
		if (latest_file_name.startsWith("http"))
		{
			try
			{
				full_download_url = new URL(latest_file_name);
			}
			catch (Throwable e)
			{
				full_download_url = null;
				log.log(e);
			}
			int pos = latest_file_name.lastIndexOf('/');
			latest_file_name = latest_file_name.substring(pos + 1);
		} else
		{
			full_download_url = null;
		}
		checker.reportProgress(msg);
		log.log(msg);
		if (!shouldUpdate(current_version, latest_version))
		{
			checker.completed();
			first_check = false;
			return;
		}
		final String f_latest_version = latest_version;
		final String f_latest_file_name = latest_file_name;
		ResourceDownloader top_downloader;
		if (full_download_url == null)
		{
			ResourceDownloader primary_mirrors[] = getPrimaryDownloaders(latest_file_name);
			ResourceDownloader random_primary_mirrors = rdf.getRandomDownloader(primary_mirrors);
			ResourceDownloader backup_downloader = rdf.create(new ResourceDownloaderDelayedFactory() {

				final String val$f_latest_file_name;
				final CoreUpdateChecker this$0;

				public ResourceDownloader create()
				{
					ResourceDownloader backup_mirrors[] = getBackupDownloaders(f_latest_file_name);
					return rdf.getRandomDownloader(backup_mirrors);
				}

			
			{
				this$0 = CoreUpdateChecker.this;
				f_latest_file_name = s;
				super();
			}
			});
			top_downloader = rdf.getAlternateDownloader(new ResourceDownloader[] {
				random_primary_mirrors, backup_downloader
			});
		} else
		{
			ResourceDownloader full_rd = rdf.create(full_download_url);
			full_rd = rdf.getSuffixBasedDownloader(full_rd);
			ResourceDownloader primary_downloader = rdf.create(new ResourceDownloaderDelayedFactory() {

				final String val$f_latest_file_name;
				final CoreUpdateChecker this$0;

				public ResourceDownloader create()
				{
					ResourceDownloader primary_mirrors[] = getPrimaryDownloaders(f_latest_file_name);
					return rdf.getRandomDownloader(primary_mirrors);
				}

			
			{
				this$0 = CoreUpdateChecker.this;
				f_latest_file_name = s;
				super();
			}
			});
			ResourceDownloader backup_downloader = rdf.create(new ResourceDownloaderDelayedFactory() {

				final String val$f_latest_file_name;
				final CoreUpdateChecker this$0;

				public ResourceDownloader create()
				{
					ResourceDownloader backup_mirrors[] = getBackupDownloaders(f_latest_file_name);
					return rdf.getRandomDownloader(backup_mirrors);
				}

			
			{
				this$0 = CoreUpdateChecker.this;
				f_latest_file_name = s;
				super();
			}
			});
			top_downloader = rdf.getAlternateDownloader(new ResourceDownloader[] {
				full_rd, primary_downloader, backup_downloader
			});
		}
		top_downloader.addListener(rd_logger);
		top_downloader.getSize();
		byte info_b[] = (byte[])(byte[])decoded.get("info");
		String info = null;
		if (info_b != null)
			try
			{
				info = new String(info_b, "UTF-8");
			}
			catch (Throwable e)
			{
				Debug.printStackTrace(e);
			}
		byte info_url_bytes[] = (byte[])(byte[])decoded.get("info_url");
		String info_url = null;
		if (info_url_bytes != null)
			try
			{
				info_url = new String(info_url_bytes);
			}
			catch (Exception e)
			{
				Debug.out(e);
			}
		if (info != null || info_url != null)
		{
			String check;
			if (info == null)
				check = info_url;
			else
			if (info_url == null)
				check = info;
			else
				check = (new StringBuilder()).append(info).append("|").append(info_url).toString();
			byte sig[] = (byte[])(byte[])decoded.get("info_sig");
			boolean ok = false;
			if (sig == null)
				Logger.log(new LogEvent(LogIDs.LOGGER, "info signature check failed - missing signature"));
			else
				try
				{
					AEVerifier.verifyData(check, sig);
					ok = true;
				}
				catch (Throwable e)
				{
					Logger.log(new LogEvent(LogIDs.LOGGER, "info signature check failed", e));
				}
			if (!ok)
			{
				info = null;
				info_url = null;
			}
		}
		String desc[];
		if (info == null)
			desc = (new String[] {
				"Core Azureus Version"
			});
		else
			desc = (new String[] {
				"Core Azureus Version", info
			});
		final Update update = checker.addUpdate("Core Azureus Version", desc, latest_version, top_downloader, 2);
		if (info_url != null)
			update.setDescriptionURL(info_url);
		top_downloader.addListener(new ResourceDownloaderAdapter() {

			final UpdateChecker val$checker;
			final Update val$update;
			final String val$f_latest_version;
			final CoreUpdateChecker this$0;

			public boolean completed(ResourceDownloader downloader, InputStream data)
			{
				installUpdate(checker, update, downloader, f_latest_version, data);
				return true;
			}

			
			{
				this$0 = CoreUpdateChecker.this;
				checker = updatechecker;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -