Package com.biglybt.core.versioncheck
Class VersionCheckClient
- java.lang.Object
-
- com.biglybt.core.versioncheck.VersionCheckClient
-
public class VersionCheckClient extends java.lang.Object
Client for checking version information from a remote server.
-
-
Field Summary
Fields Modifier and Type Field Description private static int
AT_EITHER
private static int
AT_V4
private static int
AT_V6
private static long
CACHE_PERIOD
private boolean
check_has_worked
private AEMonitor
check_mon
private boolean
enable_v6
static java.lang.String
HTTP_SERVER_ADDRESS_V4
static java.lang.String
HTTP_SERVER_ADDRESS_V6
static int
HTTP_SERVER_PORT
private static VersionCheckClient
instance
private java.util.Map
last_check_data_v4
private java.util.Map
last_check_data_v6
private long
last_check_time_v4
private long
last_check_time_v6
private java.lang.Throwable
last_error_v4
private java.lang.Throwable
last_error_v6
private long
last_feature_flag_cache
private long
last_feature_flag_cache_time
private CopyOnWriteList<VersionCheckClientListener>
listeners
private static LogIDs
LOGID
private boolean
prefer_v6
static java.lang.String
REASON_CHECK_SWT
static java.lang.String
REASON_DHT_BOOTSTRAP
static java.lang.String
REASON_DHT_ENABLE_ALLOWED
static java.lang.String
REASON_DHT_EXTENDED_ALLOWED
static java.lang.String
REASON_DHT_FLAGS
static java.lang.String
REASON_EXTERNAL_IP
static java.lang.String
REASON_PLUGIN_UPDATE
static java.lang.String
REASON_RECOMMENDED_PLUGINS
static java.lang.String
REASON_SECONDARY_CHECK
static java.lang.String
REASON_UPDATE_CHECK_PERIODIC
static java.lang.String
REASON_UPDATE_CHECK_START
private static boolean
secondary_check_done
static java.lang.String
TCP_SERVER_ADDRESS_V4
static java.lang.String
TCP_SERVER_ADDRESS_V6
static int
TCP_SERVER_PORT
static java.lang.String
UDP_SERVER_ADDRESS_V4
static java.lang.String
UDP_SERVER_ADDRESS_V6
static int
UDP_SERVER_PORT
-
Constructor Summary
Constructors Modifier Constructor Description private
VersionCheckClient()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addVersionCheckClientListener(VersionCheckClientListener l)
void
clearCache()
static java.util.Map<java.lang.String,java.lang.Object>
constructVersionCheckMessage(java.lang.String reason)
Construct the default version check message.boolean
DHTEnableAllowed()
Is the DHT plugin allowed to be enabled.boolean
DHTExtendedUseAllowed()
Is the DHT allowed to be used by external plugins.private java.util.Map
executeHTTP(java.util.Map data_to_send, boolean v6)
private java.util.Map
executeTCP(java.util.Map data_to_send, java.net.InetAddress bind_ip, int bind_port, boolean v6)
private java.util.Map
executeUDP(java.util.Map data_to_send, java.net.InetAddress bind_ip, int bind_port, boolean v6)
java.util.Set<java.lang.String>
getAutoInstallPluginIDs()
long
getCacheTime(boolean v6)
java.util.Map<java.lang.String,java.lang.Object>
getCountryInfo()
java.util.List<java.net.InetSocketAddress>
getDHTBootstrap(boolean ipv4)
byte
getDHTFlags()
java.util.Set<java.lang.String>
getDisabledPluginIDs()
java.lang.Throwable
getError()
java.lang.String
getExternalIpAddress(boolean only_if_cached, boolean v6)
Get the ip address seen by the version check server.java.lang.String
getExternalIpAddress(boolean only_if_cached, boolean v6, boolean force)
java.net.InetAddress
getExternalIpAddressHTTP(boolean v6)
java.net.InetAddress
getExternalIpAddressTCP(java.net.InetAddress bind_ip, int bind_port, boolean v6)
java.net.InetAddress
getExternalIpAddressUDP(java.net.InetAddress bind_ip, int bind_port, boolean v6)
long
getFeatureFlags()
protected java.lang.String
getHost(boolean v6, java.lang.String v6_address, java.lang.String v4_address)
java.lang.String
getHTTPGetString(boolean for_proxy, boolean v6)
private java.lang.String
getHTTPGetString(java.util.Map content, boolean for_proxy, boolean v6)
java.util.Map
getMostRecentVersionCheckData()
java.lang.String[]
getRecommendedPlugins()
static VersionCheckClient
getSingleton()
Get the singleton instance of the version check client.private java.lang.String
getTestAddress(boolean v6, java.lang.String address)
java.util.Map
getVersionCheckInfo(java.lang.String reason)
Get the version check reply info.java.util.Map
getVersionCheckInfo(java.lang.String reason, int address_type)
protected java.util.Map
getVersionCheckInfoSupport(java.lang.String reason, boolean only_if_cached, boolean force, boolean v6)
void
initialise()
private boolean
isVersionCheckDataValid(int address_type)
static void
main(java.lang.String[] args)
private java.util.Map
performVersionCheck(java.util.Map data_to_send, boolean use_az_message, boolean use_http, boolean v6)
Perform the actual version check by connecting to the version server.protected void
preProcessReply(java.util.Map reply, boolean v6)
private static void
printDataMap(java.util.Map map)
void
removeVersionCheckClientListener(VersionCheckClientListener l)
-
-
-
Field Detail
-
LOGID
private static final LogIDs LOGID
-
REASON_UPDATE_CHECK_START
public static final java.lang.String REASON_UPDATE_CHECK_START
- See Also:
- Constant Field Values
-
REASON_UPDATE_CHECK_PERIODIC
public static final java.lang.String REASON_UPDATE_CHECK_PERIODIC
- See Also:
- Constant Field Values
-
REASON_CHECK_SWT
public static final java.lang.String REASON_CHECK_SWT
- See Also:
- Constant Field Values
-
REASON_DHT_FLAGS
public static final java.lang.String REASON_DHT_FLAGS
- See Also:
- Constant Field Values
-
REASON_DHT_EXTENDED_ALLOWED
public static final java.lang.String REASON_DHT_EXTENDED_ALLOWED
- See Also:
- Constant Field Values
-
REASON_DHT_ENABLE_ALLOWED
public static final java.lang.String REASON_DHT_ENABLE_ALLOWED
- See Also:
- Constant Field Values
-
REASON_EXTERNAL_IP
public static final java.lang.String REASON_EXTERNAL_IP
- See Also:
- Constant Field Values
-
REASON_RECOMMENDED_PLUGINS
public static final java.lang.String REASON_RECOMMENDED_PLUGINS
- See Also:
- Constant Field Values
-
REASON_SECONDARY_CHECK
public static final java.lang.String REASON_SECONDARY_CHECK
- See Also:
- Constant Field Values
-
REASON_PLUGIN_UPDATE
public static final java.lang.String REASON_PLUGIN_UPDATE
- See Also:
- Constant Field Values
-
REASON_DHT_BOOTSTRAP
public static final java.lang.String REASON_DHT_BOOTSTRAP
- See Also:
- Constant Field Values
-
HTTP_SERVER_ADDRESS_V4
public static final java.lang.String HTTP_SERVER_ADDRESS_V4
- See Also:
- Constant Field Values
-
HTTP_SERVER_PORT
public static final int HTTP_SERVER_PORT
- See Also:
- Constant Field Values
-
TCP_SERVER_ADDRESS_V4
public static final java.lang.String TCP_SERVER_ADDRESS_V4
- See Also:
- Constant Field Values
-
TCP_SERVER_PORT
public static final int TCP_SERVER_PORT
- See Also:
- Constant Field Values
-
UDP_SERVER_ADDRESS_V4
public static final java.lang.String UDP_SERVER_ADDRESS_V4
- See Also:
- Constant Field Values
-
UDP_SERVER_PORT
public static final int UDP_SERVER_PORT
- See Also:
- Constant Field Values
-
HTTP_SERVER_ADDRESS_V6
public static final java.lang.String HTTP_SERVER_ADDRESS_V6
- See Also:
- Constant Field Values
-
TCP_SERVER_ADDRESS_V6
public static final java.lang.String TCP_SERVER_ADDRESS_V6
- See Also:
- Constant Field Values
-
UDP_SERVER_ADDRESS_V6
public static final java.lang.String UDP_SERVER_ADDRESS_V6
- See Also:
- Constant Field Values
-
CACHE_PERIOD
private static final long CACHE_PERIOD
- See Also:
- Constant Field Values
-
secondary_check_done
private static boolean secondary_check_done
-
listeners
private final CopyOnWriteList<VersionCheckClientListener> listeners
-
AT_V4
private static final int AT_V4
- See Also:
- Constant Field Values
-
AT_V6
private static final int AT_V6
- See Also:
- Constant Field Values
-
AT_EITHER
private static final int AT_EITHER
- See Also:
- Constant Field Values
-
instance
private static VersionCheckClient instance
-
enable_v6
private boolean enable_v6
-
prefer_v6
private boolean prefer_v6
-
last_check_data_v4
private java.util.Map last_check_data_v4
-
last_check_data_v6
private java.util.Map last_check_data_v6
-
last_error_v4
private volatile java.lang.Throwable last_error_v4
-
last_error_v6
private volatile java.lang.Throwable last_error_v6
-
check_mon
private final AEMonitor check_mon
-
last_check_time_v4
private long last_check_time_v4
-
last_check_time_v6
private long last_check_time_v6
-
last_feature_flag_cache
private long last_feature_flag_cache
-
last_feature_flag_cache_time
private long last_feature_flag_cache_time
-
check_has_worked
private volatile boolean check_has_worked
-
-
Method Detail
-
getSingleton
public static VersionCheckClient getSingleton()
Get the singleton instance of the version check client.- Returns:
- version check client
-
initialise
public void initialise()
-
getVersionCheckInfo
public java.util.Map getVersionCheckInfo(java.lang.String reason)
Get the version check reply info.- Returns:
- reply data, possibly cached, if the server was already checked within the last minute
-
getVersionCheckInfo
public java.util.Map getVersionCheckInfo(java.lang.String reason, int address_type)
-
getVersionCheckInfoSupport
protected java.util.Map getVersionCheckInfoSupport(java.lang.String reason, boolean only_if_cached, boolean force, boolean v6)
-
getMostRecentVersionCheckData
public java.util.Map getMostRecentVersionCheckData()
-
isVersionCheckDataValid
private boolean isVersionCheckDataValid(int address_type)
-
getCacheTime
public long getCacheTime(boolean v6)
-
clearCache
public void clearCache()
-
getError
public java.lang.Throwable getError()
-
getFeatureFlags
public long getFeatureFlags()
-
getDisabledPluginIDs
public java.util.Set<java.lang.String> getDisabledPluginIDs()
-
getAutoInstallPluginIDs
public java.util.Set<java.lang.String> getAutoInstallPluginIDs()
-
getExternalIpAddress
public java.lang.String getExternalIpAddress(boolean only_if_cached, boolean v6)
Get the ip address seen by the version check server. NOTE: This information may be cached, see getVersionCheckInfo().- Returns:
- external ip address, or empty string if no address information found
-
getExternalIpAddress
public java.lang.String getExternalIpAddress(boolean only_if_cached, boolean v6, boolean force)
-
DHTEnableAllowed
public boolean DHTEnableAllowed()
Is the DHT plugin allowed to be enabled.- Returns:
- true if DHT can be enabled, false if it should not be enabled
-
DHTExtendedUseAllowed
public boolean DHTExtendedUseAllowed()
Is the DHT allowed to be used by external plugins.- Returns:
- true if extended DHT use is allowed, false if not allowed
-
getDHTFlags
public byte getDHTFlags()
-
getRecommendedPlugins
public java.lang.String[] getRecommendedPlugins()
-
getDHTBootstrap
public java.util.List<java.net.InetSocketAddress> getDHTBootstrap(boolean ipv4)
-
getCountryInfo
public java.util.Map<java.lang.String,java.lang.Object> getCountryInfo()
-
performVersionCheck
private java.util.Map performVersionCheck(java.util.Map data_to_send, boolean use_az_message, boolean use_http, boolean v6) throws java.lang.Exception
Perform the actual version check by connecting to the version server.- Parameters:
data_to_send
- version message- Returns:
- version reply
- Throws:
java.lang.Exception
- if the server check connection fails
-
executeHTTP
private java.util.Map executeHTTP(java.util.Map data_to_send, boolean v6) throws java.lang.Exception
- Throws:
java.lang.Exception
-
getHTTPGetString
public java.lang.String getHTTPGetString(boolean for_proxy, boolean v6)
-
getHTTPGetString
private java.lang.String getHTTPGetString(java.util.Map content, boolean for_proxy, boolean v6)
-
executeTCP
private java.util.Map executeTCP(java.util.Map data_to_send, java.net.InetAddress bind_ip, int bind_port, boolean v6) throws java.lang.Exception
- Throws:
java.lang.Exception
-
executeUDP
private java.util.Map executeUDP(java.util.Map data_to_send, java.net.InetAddress bind_ip, int bind_port, boolean v6) throws java.lang.Exception
- Throws:
java.lang.Exception
-
preProcessReply
protected void preProcessReply(java.util.Map reply, boolean v6)
-
getExternalIpAddressHTTP
public java.net.InetAddress getExternalIpAddressHTTP(boolean v6) throws java.lang.Exception
- Throws:
java.lang.Exception
-
getExternalIpAddressTCP
public java.net.InetAddress getExternalIpAddressTCP(java.net.InetAddress bind_ip, int bind_port, boolean v6) throws java.lang.Exception
- Throws:
java.lang.Exception
-
getExternalIpAddressUDP
public java.net.InetAddress getExternalIpAddressUDP(java.net.InetAddress bind_ip, int bind_port, boolean v6) throws java.lang.Exception
- Throws:
java.lang.Exception
-
getHost
protected java.lang.String getHost(boolean v6, java.lang.String v6_address, java.lang.String v4_address)
-
getTestAddress
private java.lang.String getTestAddress(boolean v6, java.lang.String address)
-
constructVersionCheckMessage
public static java.util.Map<java.lang.String,java.lang.Object> constructVersionCheckMessage(java.lang.String reason)
Construct the default version check message.- Returns:
- message to send
-
addVersionCheckClientListener
public void addVersionCheckClientListener(VersionCheckClientListener l)
-
removeVersionCheckClientListener
public void removeVersionCheckClientListener(VersionCheckClientListener l)
-
main
public static void main(java.lang.String[] args)
-
printDataMap
private static void printDataMap(java.util.Map map) throws java.lang.Exception
- Throws:
java.lang.Exception
-
-