📄 configurationchecker.java
字号:
if( !COConfigurationManager.doesParameterNonDefaultExist( "UDP.Listen.Port" ) ){
COConfigurationManager.setParameter( "UDP.Listen.Port", COConfigurationManager.getIntParameter( "TCP.Listen.Port" ));
changed = true;
}
// remove separate DHT udp port config and migrate to main UDP port above
if ( !COConfigurationManager.getBooleanParameter( "Plugin.DHT.dht.portdefault", true )){
COConfigurationManager.removeParameter( "Plugin.DHT.dht.portdefault" );
int tcp_port = COConfigurationManager.getIntParameter( "TCP.Listen.Port" );
int udp_port = COConfigurationManager.getIntParameter( "UDP.Listen.Port" );
int dht_port = COConfigurationManager.getIntParameter( "Plugin.DHT.dht.port", udp_port );
if ( dht_port != udp_port ){
// if tcp + udp are currently different then we leave them as is and migrate
// dht to the udp one. Otherwise we change the core udp to be that of the dht
if ( tcp_port == udp_port ){
COConfigurationManager.setParameter( "UDP.Listen.Port", dht_port );
}
}
changed = true;
}
// reintroduce separate non-data UDP port yto separtate data from dht/UDP tracker
if( !COConfigurationManager.doesParameterNonDefaultExist( "UDP.NonData.Listen.Port" ) ){
COConfigurationManager.setParameter( "UDP.NonData.Listen.Port", COConfigurationManager.getIntParameter( "UDP.Listen.Port" ));
changed = true;
}
// fix up broken config when multi-udp not enabled but values differ
if ( !COConfigurationManager.ENABLE_MULTIPLE_UDP_PORTS ){
int udp1 = COConfigurationManager.getIntParameter( "UDP.Listen.Port" );
int udp2 = COConfigurationManager.getIntParameter( "UDP.NonData.Listen.Port" );
if ( udp1 != udp2 ){
COConfigurationManager.setParameter( "UDP.NonData.Listen.Port", udp1 );
changed = true;
}
}
int tcp_port = COConfigurationManager.getIntParameter( "TCP.Listen.Port" );
// reset invalid ports - single-instance socket port and (small) magnet uri listener port range
if ( tcp_port == 6880 || ( tcp_port >= 45100 && tcp_port <= 45103 )){
int new_tcp_port = RandomUtils.generateRandomNetworkListenPort();
COConfigurationManager.setParameter( "TCP.Listen.Port", new_tcp_port );
if ( COConfigurationManager.getIntParameter( "UDP.Listen.Port" ) == tcp_port ){
COConfigurationManager.setParameter( "UDP.Listen.Port", new_tcp_port );
}
if ( COConfigurationManager.getIntParameter( "UDP.NonData.Listen.Port" ) == tcp_port ){
COConfigurationManager.setParameter( "UDP.NonData.Listen.Port", new_tcp_port );
}
changed = true;
}
// migrate to split tracker client/server key config
if ( !COConfigurationManager.doesParameterDefaultExist( "Tracker Key Enable Client")){
boolean old_value = COConfigurationManager.getBooleanParameter("Tracker Key Enable");
COConfigurationManager.setParameter("Tracker Key Enable Client", old_value);
COConfigurationManager.setParameter("Tracker Key Enable Server", old_value);
changed = true;
}
int maxUpSpeed = COConfigurationManager.getIntParameter("Max Upload Speed KBs",0);
int maxDownSpeed = COConfigurationManager.getIntParameter("Max Download Speed KBs",0);
if( maxUpSpeed > 0 &&
maxUpSpeed < COConfigurationManager.CONFIG_DEFAULT_MIN_MAX_UPLOAD_SPEED &&
( maxDownSpeed == 0 || maxDownSpeed > (2*maxUpSpeed ))){
changed = true;
COConfigurationManager.setParameter("Max Upload Speed KBs", COConfigurationManager.CONFIG_DEFAULT_MIN_MAX_UPLOAD_SPEED);
}
int peersRatio = COConfigurationManager.getIntParameter("Stop Peers Ratio",0);
if(peersRatio > 14) {
COConfigurationManager.setParameter("Stop Peers Ratio", 14);
changed = true;
}
int minQueueingShareRatio = COConfigurationManager.getIntParameter("StartStopManager_iFirstPriority_ShareRatio");
if (minQueueingShareRatio < 500) {
COConfigurationManager.setParameter("StartStopManager_iFirstPriority_ShareRatio", 500);
changed = true;
}
int iSeedingMin = COConfigurationManager.getIntParameter("StartStopManager_iFirstPriority_SeedingMinutes");
if (iSeedingMin < 90 && iSeedingMin != 0) {
COConfigurationManager.setParameter("StartStopManager_iFirstPriority_SeedingMinutes", 90);
changed = true;
}
int iDLMin = COConfigurationManager.getIntParameter("StartStopManager_iFirstPriority_DLMinutes");
if (iDLMin < 60*3 && iDLMin != 0) {
COConfigurationManager.setParameter("StartStopManager_iFirstPriority_DLMinutes", 60*3);
changed = true;
}
int iIgnoreSPRatio = COConfigurationManager.getIntParameter("StartStopManager_iFirstPriority_ignoreSPRatio");
if (iIgnoreSPRatio < 10 && iIgnoreSPRatio != 0) {
COConfigurationManager.setParameter("StartStopManager_iFirstPriority_ignoreSPRatio", 10);
changed = true;
}
String uniqueId = COConfigurationManager.getStringParameter("ID",null);
if(uniqueId == null || uniqueId.length() != 20) {
uniqueId = RandomUtils.generateRandomAlphanumerics( 20 );
COConfigurationManager.setParameter("ID", uniqueId);
changed = true;
}
int cache_max = COConfigurationManager.getIntParameter("diskmanager.perf.cache.size");
if (cache_max > COConfigurationManager.CONFIG_CACHE_SIZE_MAX_MB ) {
COConfigurationManager.setParameter("diskmanager.perf.cache.size", COConfigurationManager.CONFIG_CACHE_SIZE_MAX_MB );
changed = true;
}
if( cache_max < 1 ) { //oops
COConfigurationManager.setParameter("diskmanager.perf.cache.size", 4 );
changed = true;
}
/**
* Special Patch for OSX users
*/
if (Constants.isOSX) {
boolean sound = COConfigurationManager.getBooleanParameter("Play Download Finished",true);
// Command + Q destroys the window, then notifies SWT, making it
// hard to do a confirmation exit.
boolean confirmExit = COConfigurationManager.getBooleanParameter("confirmationOnExit",false);
if ( sound || confirmExit ) {
COConfigurationManager.setParameter("Play Download Finished",false);
COConfigurationManager.setParameter("confirmationOnExit",false);
changed = true;
}
}
if( Constants.isOSX ) {
if( COConfigurationManager.getBooleanParameter( "enable_small_osx_fonts" ) ) {
System.setProperty( "org.eclipse.swt.internal.carbon.smallFonts", "1" );
}
else {
System.getProperties().remove( "org.eclipse.swt.internal.carbon.smallFonts" );
}
}
//remove a trailing slash, due to user manually entering the path in config
String[] path_params = { "Default save path",
"General_sDefaultTorrent_Directory",
"Watch Torrent Folder Path",
"Completed Files Directory" };
for( int i=0; i < path_params.length; i++ ) {
if( path_params[i].endsWith( SystemProperties.SEP ) ) {
String new_path = path_params[i].substring( 0, path_params[i].length() - 1 );
COConfigurationManager.setParameter( path_params[i], new_path );
changed = true;
}
}
//2105 removed the language file web-update functionality,
//but old left-over MessagesBundle.properties files in the user dir
//cause display text problems, so let's delete them.
if( ConfigurationManager.getInstance().doesParameterNonDefaultExist( "General_bEnableLanguageUpdate" ) ) {
File user_dir = new File( SystemProperties.getUserPath() );
File[] files = user_dir.listFiles( new FilenameFilter() {
public boolean accept(File dir, String name) {
if( name.startsWith( "MessagesBundle" ) && name.endsWith( ".properties" ) ) {
return true;
}
return false;
}
});
for( int i=0; i < files.length; i++ ) {
File file = files[ i ];
if( file.exists() ) {
if (Logger.isEnabled())
Logger.log(new LogEvent(LOGID, LogEvent.LT_WARNING,
"ConfigurationChecker:: removing old language file: "
+ file.getAbsolutePath()));
file.renameTo( new File( file.getParentFile(), "delme" + file.getName() ) );
}
}
ConfigurationManager.getInstance().removeParameter( "General_bEnableLanguageUpdate" );
changed = true;
}
if(changed) {
COConfigurationManager.save();
}
}finally{
class_mon.exit();
}
ConfigurationDefaults.getInstance().runVerifiers();
}
public static final boolean
isNewInstall()
{
return( new_install );
}
public static void main(String args[]) {
Integer obj = new Integer(1);
HashMap test = new HashMap();
int collisions = 0;
for(int i = 0 ; i < 1000000 ; i++) {
String id = RandomUtils.generateRandomAlphanumerics( 20 );
if(test.containsKey(id)) {
collisions++;
} else {
test.put(id,obj);
}
if(i%1000 == 0) {
System.out.println(i + " : " + id + " : " + collisions);
}
}
System.out.println("\n" + collisions);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -