public class Utils extends Object
Constructor and Description |
---|
Utils() |
Modifier and Type | Method and Description |
---|---|
static String |
byteArrayToHexString(byte[] bytes) |
static byte[] |
copyRange(byte[] orig,
int from,
int to)
Copies from original byte array to a new byte array.
|
static byte[] |
copyWithLength(byte[] orig,
int length)
Copies the original byte array content to a new byte array.
|
static Socket |
createSocket(UrlParser urlParser,
String host)
Create socket accordingly to options.
|
static byte[] |
encryptPassword(String password,
byte[] seed,
String passwordCharacterEncoding)
encrypts a password
protocol for authentication is like this: 1. mysql 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
|
static String |
escapeString(String value,
boolean noBackslashEscapes)
Escape String.
|
static TimeZone |
getTimeZone(String id)
Get timezone from Id.
|
static String |
hexdump(byte[]... bytes)
Hexdump.
|
static String |
hexdump(int maxQuerySizeToLog,
int offset,
int length,
byte[]... byteArr)
Hexdump.
|
static boolean |
isIPv4(String ip) |
static boolean |
isIPv6(String ip) |
static String |
nativeSql(String sql,
boolean noBackslashEscapes)
Escape sql String
|
static String |
parseSessionVariables(String sessionVariable)
Parse the option "sessionVariable" to ensure having no injection.
|
static Protocol |
retrieveProxy(UrlParser urlParser,
GlobalStateInfo globalInfo)
Retrieve protocol corresponding to the failover options.
|
static int |
transactionFromString(String txIsolation)
Traduce a String value of @@tx_isolation to corresponding java value.
|
public static String escapeString(String value, boolean noBackslashEscapes)
value
- value to escapenoBackslashEscapes
- must backslash be escapedpublic static byte[] encryptPassword(String password, byte[] seed, String passwordCharacterEncoding) throws NoSuchAlgorithmException, UnsupportedEncodingException
protocol for authentication is like this: 1. mysql 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
password
- the password to encryptseed
- the seed to usepasswordCharacterEncoding
- password character encodingNoSuchAlgorithmException
- if SHA1 is not available on the platform we are usingUnsupportedEncodingException
- if passwordCharacterEncoding is not a valid charset namepublic static byte[] copyWithLength(byte[] orig, int length)
orig
- the original byte arraylength
- how big the resulting byte array will bepublic static byte[] copyRange(byte[] orig, int from, int to)
orig
- the original byte arrayfrom
- index of first byte in original byte array which will be copiedto
- index of last byte in original byte array which will be copied. This can be
outside of the original byte arraypublic static String nativeSql(String sql, boolean noBackslashEscapes) throws SQLException
sql
- initial sqlnoBackslashEscapes
- must backslash be escapeSQLException
- if escape sequence is incorrect.public static Protocol retrieveProxy(UrlParser urlParser, GlobalStateInfo globalInfo) throws SQLException
urlParser
- urlParser corresponding to connection url string.globalInfo
- global variable informationSQLException
- if any error occur during connectionpublic static TimeZone getTimeZone(String id) throws SQLException
id
- timezone idSQLException
- if no timezone is found for this Idpublic static Socket createSocket(UrlParser urlParser, String host) throws IOException
urlParser
- urlParserhost
- hostName ( mandatory only for named pipe)IOException
- if connection error occurpublic static String hexdump(byte[]... bytes)
bytes
- byte arrayspublic static String hexdump(int maxQuerySizeToLog, int offset, int length, byte[]... byteArr)
String output example :
7D 00 00 01 C5 00 00
...... <- first byte array
01 00 00 01 02 33 00 00 02 03 64 65 66 05 74 65 .....3....def.te <- second byte array
73 74 6A 0A 74 65 73 74 5F 62 61 74 63 68 0A 74 stj.test_batch.t
65 73 74 5F 62 61 74 63 68 02 69 64 02 69 64 0C est_batch.id.id.
3F 00 0B 00 00 00 03 03 42 00 00 00 37 00 00 03 ?.......B...7...
03 64 65 66 05 74 65 73 74 6A 0A 74 65 73 74 5F .def.testj.test_
62 61 74 63 68 0A 74 65 73 74 5F 62 61 74 63 68 batch.test_batch
04 74 65 73 74 04 74 65 73 74 0C 21 00 1E 00 00 .test.test.!....
00 FD 00 00 00 00 00 05 00 00 04 FE 00 00 22 00 ..............".
06 00 00 05 01 31 03 61 61 61 06 00 00 06 01 32 .....1.aaa.....2
03 62 62 62 06 00 00 07 01 33 03 63 63 63 06 00 .bbb.....3.ccc..
00 08 01 34 03 61 61 61 06 00 00 09 01 35 03 62 ...4.aaa.....5.b
62 62 06 00 00 0A 01 36 03 63 63 63 05 00 00 0B bb.....6.ccc....
FE 00 00 22 00 ...".
}
maxQuerySizeToLog
- max log sizeoffset
- offset of last byte arraylength
- length of last byte arraybyteArr
- byte arrays. if many, only the last may have offset and size limitation
others will be displayed completely.public static String byteArrayToHexString(byte[] bytes)
public static String parseSessionVariables(String sessionVariable)
sessionVariable
- option valuepublic static boolean isIPv4(String ip)
public static boolean isIPv6(String ip)
public static int transactionFromString(String txIsolation) throws SQLException
txIsolation
- String valueSQLException
- if String value doesn't correspond to @tx_isolation possible valueCopyright © 2017. All rights reserved.