Class Utils


  • public class Utils
    extends Object
    • Constructor Detail

      • Utils

        public Utils()
    • Method Detail

      • standardSocket

        public static Socket standardSocket​(Options options,
                                            String host)
                                     throws IOException
        Use standard socket implementation.
        Parameters:
        options - url options
        host - host to connect
        Returns:
        socket
        Throws:
        IOException - in case of error establishing socket.
      • escapeString

        public static String escapeString​(String value,
                                          boolean noBackslashEscapes)
        Escape String.
        Parameters:
        value - value to escape
        noBackslashEscapes - must backslash be escaped
        Returns:
        escaped string.
      • encryptPassword

        public static byte[] encryptPassword​(String password,
                                             byte[] seed,
                                             String passwordCharacterEncoding)
                                      throws NoSuchAlgorithmException,
                                             UnsupportedEncodingException
        Encrypts a password.

        protocol for authentication is like this: 1. Server sends a random array of bytes (the seed) 2. client makes a sha1 digest of the password 3. client hashes the output of 2 4. client digests the seed 5. client updates the digest with the output from 3 6. an xor of the output of 5 and 2 is sent to server 7. server does the same thing and verifies that the scrambled passwords match

        Parameters:
        password - the password to encrypt
        seed - the seed to use
        passwordCharacterEncoding - password character encoding
        Returns:
        a scrambled password
        Throws:
        NoSuchAlgorithmException - if SHA1 is not available on the platform we are using
        UnsupportedEncodingException - if passwordCharacterEncoding is not a valid charset name
      • copyWithLength

        public static byte[] copyWithLength​(byte[] orig,
                                            int length)
        Copies the original byte array content to a new byte array. The resulting byte array is always "length" size. If length is smaller than the original byte array, the resulting byte array is truncated. If length is bigger than the original byte array, the resulting byte array is filled with zero bytes.
        Parameters:
        orig - the original byte array
        length - how big the resulting byte array will be
        Returns:
        the copied byte array
      • copyRange

        public static byte[] copyRange​(byte[] orig,
                                       int from,
                                       int to)
        Copies from original byte array to a new byte array. The resulting byte array is always "to-from" size.
        Parameters:
        orig - the original byte array
        from - index of first byte in original byte array which will be copied
        to - index of last byte in original byte array which will be copied. This can be outside of the original byte array
        Returns:
        resulting array
      • nativeSql

        public static String nativeSql​(String sql,
                                       Protocol protocol)
                                throws SQLException
        Escape sql String.
        Parameters:
        sql - initial sql
        protocol - protocol
        Returns:
        escaped sql string
        Throws:
        SQLException - if escape sequence is incorrect.
      • retrieveProxy

        public static Protocol retrieveProxy​(UrlParser urlParser,
                                             GlobalStateInfo globalInfo)
                                      throws SQLException
        Retrieve protocol corresponding to the failover options. if no failover option, protocol will not be proxied. if a failover option is precised, protocol will be proxied so that any connection error will be handle directly.
        Parameters:
        urlParser - urlParser corresponding to connection url string.
        globalInfo - global variable information
        Returns:
        protocol
        Throws:
        SQLException - if any error occur during connection
      • getTimeZone

        public static TimeZone getTimeZone​(String id)
                                    throws SQLException
        Get timezone from Id. This differ from java implementation : by default, if timezone Id is unknown, java return GMT timezone. GMT will be return only if explicitly asked.
        Parameters:
        id - timezone id
        Returns:
        timezone.
        Throws:
        SQLException - if no timezone is found for this Id
      • createSocket

        public static Socket createSocket​(Options options,
                                          String host)
                                   throws IOException
        Create socket accordingly to options.
        Parameters:
        options - Url options
        host - hostName ( mandatory only for named pipe)
        Returns:
        a nex socket
        Throws:
        IOException - if connection error occur
      • hexdump

        public static String hexdump​(byte[]... bytes)
        Hexdump.
        Parameters:
        bytes - byte arrays
        Returns:
        String
      • hexdump

        public static String hexdump​(int maxQuerySizeToLog,
                                     int offset,
                                     int length,
                                     byte[]... byteArr)
        Hexdump. Multiple byte arrays will be combined

        String output example :

        
         +--------------------------------------------------+
         |  0  1  2  3  4  5  6  7   8  9  a  b  c  d  e  f |
         +--------------------------------------------------+------------------+
         | 11 00 00 02 00 00 00 02  40 00 00 00 08 01 06 05 | ........@....... |
         | 74 65 73 74 6A                                   | testj            |
         +--------------------------------------------------+------------------+
         
        Parameters:
        maxQuerySizeToLog - max log size
        offset - offset of last byte array
        length - length of last byte array
        byteArr - byte arrays. if many, only the last may have offset and size limitation others will be displayed completely.
        Returns:
        String
      • byteArrayToHexString

        public static String byteArrayToHexString​(byte[] bytes)
      • parseSessionVariables

        public static String parseSessionVariables​(String sessionVariable)
        Parse the option "sessionVariable" to ensure having no injection. semi-column not in string will be replaced by comma.
        Parameters:
        sessionVariable - option value
        Returns:
        parsed String
      • isIPv4

        public static boolean isIPv4​(String ip)
      • isIPv6

        public static boolean isIPv6​(String ip)
      • transactionFromString

        public static int transactionFromString​(String txIsolation)
                                         throws SQLException
        Traduce a String value of transaction isolation to corresponding java value.
        Parameters:
        txIsolation - String value
        Returns:
        java corresponding value (Connection.TRANSACTION_READ_UNCOMMITTED, Connection.TRANSACTION_READ_COMMITTED, Connection.TRANSACTION_REPEATABLE_READ or Connection.TRANSACTION_SERIALIZABLE)
        Throws:
        SQLException - if String value doesn't correspond to @@tx_isolation/@@transaction_isolation possible value
      • validateFileName

        public static boolean validateFileName​(String sql,
                                               ParameterHolder[] parameters,
                                               String fileName)
        Validate that file name correspond to send query.
        Parameters:
        sql - sql command
        parameters - sql parameter
        fileName - server file name
        Returns:
        true if correspond