Class VersionCheckClient


  • public class VersionCheckClient
    extends java.lang.Object
    Client for checking version information from a remote server.
    • 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
      • TCP_SERVER_ADDRESS_V4

        public static final java.lang.String TCP_SERVER_ADDRESS_V4
        See Also:
        Constant Field Values
      • UDP_SERVER_ADDRESS_V4

        public static final java.lang.String UDP_SERVER_ADDRESS_V4
        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
      • secondary_check_done

        private static boolean secondary_check_done
      • 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
    • Constructor Detail

      • VersionCheckClient

        private VersionCheckClient()
    • 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
      • 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