package org.limewire.core.settings; import org.limewire.setting.BooleanSetting; import org.limewire.setting.FloatSetting; import org.limewire.setting.IntSetting; import org.limewire.setting.LongSetting; import org.limewire.setting.StringArraySetting; import org.limewire.setting.StringSetting; /** * Mojito DHT related settings. */ public class DHTSettings extends LimeProps { private DHTSettings() {} /** * Setting for whether or not the DHT should be active at all. * <p> * WARNING: DO NOT MANUALLY CHANGE THIS. */ // Was DHTSettings.DisableDHT // 4.13.1 & 4.13.2 public static final BooleanSetting DISABLE_DHT_NETWORK = FACTORY.createRemoteBooleanSetting("DISABLE_DHT_NETWORK", true, "DHT.DisableNetwork"); /** * Setting for whether or not the DHT should be active at all. */ public static final BooleanSetting DISABLE_DHT_USER = FACTORY.createBooleanSetting("DISABLE_DHT_USER", false); /** * Setting to force DHT capability. * <p> * WARNING: FOR TESTING ONLY -- DO NOT CHANGE. */ // Was DHT.ForceDHTConnect public static final BooleanSetting FORCE_DHT_CONNECT = FACTORY.createRemoteBooleanSetting("FORCE_DHT_CONNECT", false, "DHT.ForceConnect"); /** * A settable list of bootstrap hosts in the host:port format. */ public static final StringArraySetting DHT_BOOTSTRAP_HOSTS = FACTORY.createRemoteStringArraySetting("DHT_BOOTSTRAP_HOSTS", new String[0], "DHT.BootstrapHosts"); /** * Version of serialized RouteTable. * <p> * WARNING: DO NOT MANUALLY CHANGE THIS. */ public static final IntSetting ACTIVE_DHT_ROUTETABLE_VERSION = FACTORY.createRemoteIntSetting("ACTIVE_DHT_ROUTETABLE_VERSION", 0, "DHT.ActiveRouteTableVersion", 0, Integer.MAX_VALUE); /** * Version of serialized RouteTable. * <p> * WARNING: DO NOT MANUALLY CHANGE THIS. */ public static final IntSetting PASSIVE_DHT_ROUTETABLE_VERSION = FACTORY.createRemoteIntSetting("PASSIVE_DHT_ROUTETABLE_VERSION", 0, "DHT.PassiveRouteTableVersion", 0, Integer.MAX_VALUE); /** * Setting for the minimum average uptime (in ms) required to join the DHT * as an ACTIVE node. * <p> * WARNING: DO NOT MANUALLY CHANGE THIS. */ // Was DHT.MinDHTAvgUptime public static final LongSetting MIN_ACTIVE_DHT_AVERAGE_UPTIME = FACTORY.createRemoteLongSetting("MIN_ACTIVE_DHT_AVERAGE_UPTIME", 2L*60L*60L*1000L, "DHT.MinActiveAverageUptime", 5L*60L*1000L, 48L*60L*60L*1000L); /** * The minimum current uptime (in ms) that a node must have to join the DHT * as an ACTIVE node. * <p> * WARNING: DO NOT MANUALLY CHANGE THIS. */ // Was DHT.MinDHTInitialUptime public static final LongSetting MIN_ACTIVE_DHT_INITIAL_UPTIME = FACTORY.createRemoteLongSetting("MIN_ACTIVE_DHT_INITIAL_UPTIME", 2L*60L*60L*1000L, "DHT.MinActiveInitialUptime", 5L*60L*1000L, 48L*60L*60L*1000L); /** * Setting for the minimum average uptime (in ms) required to join the DHT * as a PASSIVE node. * <p> * WARNING: DO NOT MANUALLY CHANGE THIS. */ public static final LongSetting MIN_PASSIVE_DHT_AVERAGE_UPTIME = FACTORY.createRemoteLongSetting("MIN_PASSIVE_DHT_AVERAGE_UPTIME", 2L*60L*60L*1000L, "DHT.MinPassiveAverageUptime", 5L*60L*1000L, 48L*60L*60L*1000L); /** * The minimum current uptime (in ms) that a node must have to join the DHT * as a PASSIVE node. * <p> * WARNING: DO NOT MANUALLY CHANGE THIS. */ public static final LongSetting MIN_PASSIVE_DHT_INITIAL_UPTIME = FACTORY.createRemoteLongSetting("MIN_PASSIVE_DHT_INITIAL_UPTIME", 2L*60L*60L*1000L, "DHT.MinPassiveInitialUptime", 5L*60L*1000L, 48L*60L*60L*1000L); /** * Setting for the minimum average uptime (in ms) required to join the DHT * as a PASSIVE_LEAF node. * <p> * WARNING: DO NOT MANUALLY CHANGE THIS. */ public static final LongSetting MIN_PASSIVE_LEAF_DHT_AVERAGE_UPTIME = FACTORY.createRemoteLongSetting("MIN_PASSIVE_LEAF_DHT_AVERAGE_UPTIME", 2L*60L*60L*1000L, "DHT.MinPassiveLeafAverageUptime", 1L, 48L*60L*60L*1000L); /** * The minimum current uptime (in ms) that a node must have to join the DHT * as a PASSIVE_LEAF node. * <p> * WARNING: DO NOT MANUALLY CHANGE THIS. */ public static final LongSetting MIN_PASSIVE_LEAF_DHT_INITIAL_UPTIME = FACTORY.createRemoteLongSetting("MIN_PASSIVE_LEAF_DHT_INITIAL_UPTIME", 2L*60L*60L*1000L, "DHT.MinPassiveLeafInitialUptime", 1L, 48L*60L*60L*1000L); /** * Setting for whether or not an Ultrapeer can join the DHT in active mode. * <p> * WARNING: DO NOT MANUALLY CHANGE THIS. */ public static final BooleanSetting EXCLUDE_ULTRAPEERS = FACTORY.createBooleanSetting("EXCLUDE_ULTRAPEERS", true); /** * Setting for the probability to switch from DHT node to Ultrapeer node. * <p> * WARNING: DO NOT MANUALLY CHANGE THIS. */ // Was DHT.DHTToUltrapeerProbability public static final FloatSetting SWITCH_TO_ULTRAPEER_PROBABILITY = FACTORY.createRemoteFloatSetting("SWITCH_TO_ULTRAPEER_PROBABILITY", 0.5F, "DHT.SwitchToUltrapeerProbability", 0F, 1F); /** * Probabilistic logic for whether or not the node should join the DHT * (used for initial bootstrapping). * <p> * WARNING: DO NOT MANUALLY CHANGE THIS. */ // Was DHT.DHTAcceptProbability public static final FloatSetting DHT_ACCEPT_PROBABILITY = FACTORY.createRemoteFloatSetting("DHT_ACCEPT_PROBABILITY", 1F, "DHT.AcceptProbability", 0F, 1F); /** * Setting for the delay between DHT node fetcher runs. */ // Was DHT.DHTNodeFetcherTime //30 minutes for now public static final LongSetting DHT_NODE_FETCHER_TIME = FACTORY.createRemoteLongSetting("DHT_NODE_FETCHER_TIME", 30L*60L*1000L, "DHT.NodeFetcherTime", 60L*1000L, 60L*60L*1000L); /** * The maximum amount of time for which we will ping the network for DHT nodes. */ // Was DHT.MaxNodeFetcherTime public static final LongSetting MAX_DHT_NODE_FETCHER_TIME = FACTORY.createRemoteLongSetting("MAX_DHT_NODE_FETCHER_TIME", 30L*1000L, "DHT.MaxNodeFetcherTime", 0L, 5L*60L*1000L); /** * Setting for the delay between DHT random node adder runs. */ // Was DHT.DHTNodeAdderDelay // 30 Minutes for now public static final LongSetting DHT_NODE_ADDER_DELAY = FACTORY.createRemoteLongSetting("DHT_NODE_ADDER_DELAY", 30L*60L*1000L, "DHT.NodeAdderDelay", 30L*1000L, 24L*60L*60L*1000L); /** * Setting for the number of persisted DHT nodes if this node is a passive DHT node * (it will not persist the entire RT). */ public static final IntSetting MAX_PERSISTED_NODES = FACTORY.createRemoteIntSetting("MAX_PERSISTED_NODES", 40, "DHT.MaxPersistedNodes", 0, 1024); /** * Setting for whether or not the RouteTable should be persisted on disk. */ public static final BooleanSetting PERSIST_ACTIVE_DHT_ROUTETABLE = FACTORY.createRemoteBooleanSetting("PERSIST_ACTIVE_DHT_ROUTETABLE", true, "DHTSettings.PersistActiveRouteTable"); /** * Setting for whether or not the RouteTable should be purged from very * old Contacts. The goal is to merge Buckets and to lower their count. * <p> * Default is Long.MAX_VALUE and means purging is turned off! */ public static final LongSetting MAX_ELAPSED_TIME_SINCE_LAST_CONTACT = FACTORY.createRemoteLongSetting("MAX_ELAPSED_TIME_SINCE_LAST_CONTACT", Long.MAX_VALUE, "DHT.MaxElapsedTimeSinceLastContact", 60L*60L*1000L, Long.MAX_VALUE); /** * Setting for whether or not the passive RouteTable should be persisted on disk. */ public static final BooleanSetting PERSIST_PASSIVE_DHT_ROUTETABLE = FACTORY.createRemoteBooleanSetting("PERSIST_PASSIVE_DHT_ROUTETABLE", true, "DHTSettings.PersistPassiveRouteTable"); /** * Setting for whether or not the Database should be persisted on disk. */ // Default value is true in LW 4.13.8 and older public static final BooleanSetting PERSIST_DHT_DATABASE = FACTORY.createRemoteBooleanSetting("PERSIST_DHT_DATABASE", false, "DHTSettings.PersistDatabase"); /** * Setting for the time at which point a file is considered rare. */ public static final LongSetting RARE_FILE_TIME = FACTORY.createRemoteLongSetting("RARE_FILE_TIME", 3L*60L*60L*1000L, "DHT.RareFileTime", 10L*60L*1000L, 7L*24L*60L*60L*1000L); /** * The minimum number of upload attempts before a file is considered * rate. This make sure we don't upload every file. */ public static final IntSetting RARE_FILE_ATTEMPTED_UPLOADS = FACTORY.createRemoteIntSetting("RARE_FILE_ATTEMPTED_UPLOADS", 1, "DHT.RareFileAttemptedUploads", 0, Integer.MAX_VALUE); /** * The number of times a file must have been uploaded before it's considered * rare. This make sure we don't upload every file. */ public static final IntSetting RARE_FILE_COMPLETED_UPLOADS = FACTORY.createRemoteIntSetting("RARE_FILE_COMPLETED_UPLOADS", 0, "DHT.RareFileCompletedUploads", 0, Integer.MAX_VALUE); /** * Definition whether a file is rare. For the list of keys look at * FileDesc.lookup(String). */ public static final StringArraySetting RARE_FILE_DEFINITION = FACTORY.createRemoteStringArraySetting("RARE_FILE_DEFINITION", new String[]{"ups","atUpSet","<","cups","cUpSet","<","OR","NOT", "lastup","rftSet",">","AND"}, "DHT.RareFileDefinition"); /** * Whether or not AlternativeLocations should be published. * <p> * WARNING: DO NOT MANUALLY CHANGE THIS */ public static final BooleanSetting PUBLISH_ALT_LOCS = FACTORY.createRemoteBooleanSetting("PUBLISH_ALT_LOCS", false, "DHT.PublishAltLocs"); /** * Whether or not DHT querying is enabled. */ public static final BooleanSetting ENABLE_DHT_ALT_LOC_QUERIES = FACTORY.createRemoteBooleanSetting("ENABLE_DHT_ALT_LOC_QUERIES", false, "DHT.EnableAltLocQueriesV2"); /** * The maximum number of DHT requery attempts. */ public static final IntSetting MAX_DHT_ALT_LOC_QUERY_ATTEMPTS = FACTORY.createRemoteIntSetting("MAX_DHT_ALT_LOC_QUERY_ATTEMPTS", 1, "DHT.MaxAltLocQueryAttempts", 1, Integer.MAX_VALUE); /** * The minimum time between two DHT requeries. */ public static final LongSetting TIME_BETWEEN_DHT_ALT_LOC_QUERIES = FACTORY.createRemoteLongSetting("TIME_BETWEEN_DHT_ALT_LOC_QUERIES", 30L*60L*1000L, "DHT.TimeBetweenAltLocQueries", 30L*1000L, 24L*60L*60L*1000L); /** * Setting for whether or not the passive DHT mode should be active at all. * <p> * WARNING: DO NOT MANUALLY CHANGE THIS */ // Was DHT.EnablePassiveMode in 4.13.12 and prior. // Deadlock! Do not turn on! See MOJITO-119! public static final BooleanSetting ENABLE_PASSIVE_DHT_MODE = FACTORY.createRemoteBooleanSetting("ENABLE_PASSIVE_DHT_MODE", false, "DHT.EnablePassiveModeV2"); /** * Setting for whether or not the passive leaf DHT mode should be active at all. * <p> * WARNING: DO NOT MANUALLY CHANGE THIS. */ public static final BooleanSetting ENABLE_PASSIVE_LEAF_DHT_MODE = FACTORY.createRemoteBooleanSetting("ENABLE_PASSIVE_LEAF_DHT_MODE", false, "DHT.EnablePassiveLeafMode"); /** * Whether or not PushProxies should be published. * <p> * WARNING: DO NOT MANUALLY CHANGE THIS. */ public static final BooleanSetting PUBLISH_PUSH_PROXIES = FACTORY.createRemoteBooleanSetting("PUBLISH_PUSH_PROXIES", false, "DHT.PublishPushProxies"); /** * Whether or not we query for PushProxies. */ public static final BooleanSetting ENABLE_PUSH_PROXY_QUERIES = FACTORY.createRemoteBooleanSetting("ENABLE_PUSH_PROXY_QUERIES", false, "DHT.EnablePushProxyQueriesV2"); /** * Time between push proxy queries. */ public static final LongSetting TIME_BETWEEN_PUSH_PROXY_QUERIES = FACTORY.createRemoteLongSetting("TIME_BETWEEN_PUSH_PROXY_QUERIES", 5L * 60L * 1000L, "DHT.TimeBetweenPushProxyQueries", 10L * 1000L, Long.MAX_VALUE); /** * The time in milliseconds push proxies have to be stable before being published. */ public static final LongSetting PUSH_PROXY_STABLE_PUBLISHING_INTERVAL = FACTORY.createRemoteLongSetting("PUSH_PROXY_STABLE_PUBLISHING_INTERVAL", 60L * 1000L, "DHT.pushProxyStablePublishingInterval", 10L * 1000L, Long.MAX_VALUE); /** * This setting is storing the most recent DHT Node ID for debugging purposes. * <p> * The setting is actually never read! */ public static final StringSetting DHT_NODE_ID = FACTORY.createStringSetting("DHT_NODE_ID", ""); /** * This setting is storing the most recent DHT mode for debugging purposes. * <p> * The setting is actually never read! */ public static final StringSetting DHT_MODE = FACTORY.createStringSetting("DHT_MODE", ""); }