📄 configurationchecker.java
字号:
/*
* File : ConfigurationChecker.java
* Created : 8 oct. 2003 23:04:14
* By : Olivier
*
* Azureus - a Java Bittorrent client
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details ( see the LICENSE file ).
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
package org.gudy.azureus2.core3.config.impl;
import java.util.HashMap;
import java.io.*;
import org.gudy.azureus2.core3.config.*;
import org.gudy.azureus2.core3.security.*;
import org.gudy.azureus2.core3.util.*;
import org.gudy.azureus2.core3.logging.*;
import com.aelitis.azureus.core.proxy.socks.AESocksProxy;
import com.aelitis.azureus.core.proxy.socks.AESocksProxyFactory;
/**
*
* The purpose of this class is to provide a way of checking that the config file
* contains valid values when azureus is started.
*
*
* @author Olivier
*
*/
public class
ConfigurationChecker
{
private static final LogIDs LOGID = LogIDs.CORE;
private static boolean system_properties_set = false;
private static boolean checked = false;
private static boolean new_install = false;
private static AEMonitor class_mon = new AEMonitor( "ConfigChecker");
protected static void
setSystemProperties()
{
try{
class_mon.enter();
if ( system_properties_set ){
return;
}
COConfigurationManager.preInitialise();
// socket connect/read timeouts
int connect_timeout = COConfigurationManager.getIntParameter( "Tracker Client Connect Timeout");
int read_timeout = COConfigurationManager.getIntParameter( "Tracker Client Read Timeout");
if (Logger.isEnabled())
Logger.log(new LogEvent(LOGID, "TrackerClient: connect timeout = "
+ connect_timeout + ", read timeout = " + read_timeout));
System.setProperty(
"sun.net.client.defaultConnectTimeout",
String.valueOf( connect_timeout*1000 ));
System.setProperty(
"sun.net.client.defaultReadTimeout",
String.valueOf( read_timeout*1000 ));
// proxy
boolean TEST_PROXY = false;
if ( TEST_PROXY ){
// test our proxy
try{
AESocksProxy proxy =
AESocksProxyFactory.create( 16234, 0, 0 );
System.setProperty("socksProxyHost", "127.0.0.1");
System.setProperty("socksProxyPort", "" + proxy.getPort());
}catch( Throwable e ){
Debug.printStackTrace(e);
}
}else{
if ( COConfigurationManager.getBooleanParameter("Enable.Proxy", false) ) {
String host = COConfigurationManager.getStringParameter("Proxy.Host");
String port = COConfigurationManager.getStringParameter("Proxy.Port");
String user = COConfigurationManager.getStringParameter("Proxy.Username");
String pass = COConfigurationManager.getStringParameter("Proxy.Password");
if ( user.trim().equalsIgnoreCase("<none>")){
user = "";
}
if ( COConfigurationManager.getBooleanParameter("Enable.SOCKS", false) ) {
System.setProperty("socksProxyHost", host);
System.setProperty("socksProxyPort", port);
if (user.length() > 0) {
System.setProperty("java.net.socks.username", user);
System.setProperty("java.net.socks.password", pass);
}
}
else {
System.setProperty("http.proxyHost", host);
System.setProperty("http.proxyPort", port);
System.setProperty("https.proxyHost", host);
System.setProperty("https.proxyPort", port);
if (user.length() > 0) {
System.setProperty("http.proxyUser", user);
System.setProperty("http.proxyPassword", pass);
}
}
}
}
SESecurityManager.initialise();
}finally{
class_mon.exit();
}
}
public static void
checkConfiguration()
{
try{
class_mon.enter();
if(checked)
return;
checked = true;
boolean changed = false;
String last_version = COConfigurationManager.getStringParameter( "azureus.version", "" );
String this_version = Constants.AZUREUS_VERSION;
if ( !last_version.equals( this_version )){
if (!COConfigurationManager.hasParameter("First Recorded Version", true)) {
COConfigurationManager.setParameter("First Recorded Version",
last_version.length() == 0 ? this_version : last_version);
} else {
String sFirstVersion = COConfigurationManager.getStringParameter("First Recorded Version");
String sMinVersion = Constants.compareVersions(sFirstVersion,
this_version) > 0 ? this_version : sFirstVersion;
if (last_version.length() > 0) {
sMinVersion = Constants.compareVersions(sMinVersion, last_version) > 0
? last_version : sMinVersion;
}
COConfigurationManager.setParameter("First Recorded Version",
sMinVersion);
}
COConfigurationManager.setParameter( "azureus.version", this_version );
changed = true;
}
// migration from default-save-dir enable = true to false
// if the user hadn't explicitly set a value then we want to stick with true
if ( last_version.length() == 0 ){ //this is a virgin installation, i.e. first time running, called only once ever
new_install = true;
// "last version" introduced at same time as the default save dir problem
// which was the release after 2.2.0.0
// only do this on an already existing configuration. Easiest way to test
// for this is the "diagnostics.tidy_close" flag
if ( COConfigurationManager.doesParameterNonDefaultExist( "diagnostics.tidy_close" )){
if ( !COConfigurationManager.doesParameterNonDefaultExist( "Use default data dir" )){
COConfigurationManager.setParameter( "Use default data dir", true );
changed = true;
}
if ( !COConfigurationManager.doesParameterNonDefaultExist( "Tracker Port Enable" )){
COConfigurationManager.setParameter( "Tracker Port Enable", true );
changed = true;
}
}
// also, if we now have a default data dir enabled (either explicitly or by
// above migration fix), and there's no value defined for the dir, then
// set it to what it would have been before the default was changed to blank
if ( COConfigurationManager.getBooleanParameter( "Use default data dir" ) &&
!COConfigurationManager.doesParameterNonDefaultExist( "Default save path" )){
COConfigurationManager.setParameter( "Default save path", SystemProperties.getUserPath()+"downloads" );
changed = true;
}
//enable Beginner user mode for first time
if( !COConfigurationManager.doesParameterNonDefaultExist( "User Mode" ) ) {
COConfigurationManager.setParameter( "User Mode", 0 );
changed = true;
}
//make sure we set and save a random listen port
if( !COConfigurationManager.doesParameterNonDefaultExist( "TCP.Listen.Port" ) ) {
int rand_port = RandomUtils.generateRandomNetworkListenPort();
COConfigurationManager.setParameter( "TCP.Listen.Port", rand_port );
COConfigurationManager.setParameter( "UDP.Listen.Port", rand_port );
COConfigurationManager.setParameter( "UDP.NonData.Listen.Port", rand_port );
changed = true;
}
}else { //this is a pre-existing installation, called every time after first
//enable Advanced user mode for existing users by default, to ease 2304-->2306 migrations
if( !COConfigurationManager.doesParameterNonDefaultExist( "User Mode" ) ) {
COConfigurationManager.setParameter( "User Mode", 2 );
changed = true;
}
}
// initial UDP port is same as TCP
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -