This extracts a plugin name from the server and exposes this as connection.get_plugin_name(). The client side here adds capabilities PLUGIN_AUTH and PLUGIN_AUTH_LENENC_CLIENT_DATA. Because of this the HandshakeResponse response has been altered to use the server_capabilities a bit mroe strictly. The immediate upshot is that plugins like unix_socket are immediately supported where they previously would of returned and error as without PLUGIN_AUTH being advertised on the client side, the server only accepts mysql_native_password and mysql_old_password. To support other plugins some more work is needed to implement these.
30 lines
846 B
Python
30 lines
846 B
Python
# https://dev.mysql.com/doc/internals/en/capability-flags.html#packet-Protocol::CapabilityFlags
|
|
LONG_PASSWORD = 1
|
|
FOUND_ROWS = 1 << 1
|
|
LONG_FLAG = 1 << 2
|
|
CONNECT_WITH_DB = 1 << 3
|
|
NO_SCHEMA = 1 << 4
|
|
COMPRESS = 1 << 5
|
|
ODBC = 1 << 6
|
|
LOCAL_FILES = 1 << 7
|
|
IGNORE_SPACE = 1 << 8
|
|
PROTOCOL_41 = 1 << 9
|
|
INTERACTIVE = 1 << 10
|
|
SSL = 1 << 11
|
|
IGNORE_SIGPIPE = 1 << 12
|
|
TRANSACTIONS = 1 << 13
|
|
SECURE_CONNECTION = 1 << 15
|
|
MULTI_STATEMENTS = 1 << 16
|
|
MULTI_RESULTS = 1 << 17
|
|
PS_MULTI_RESULTS = 1 << 18
|
|
PLUGIN_AUTH = 1 << 19
|
|
PLUGIN_AUTH_LENENC_CLIENT_DATA = 1 << 21
|
|
CAPABILITIES = (LONG_PASSWORD | LONG_FLAG | TRANSACTIONS |
|
|
PROTOCOL_41 | SECURE_CONNECTION | PLUGIN_AUTH |
|
|
PLUGIN_AUTH_LENENC_CLIENT_DATA)
|
|
# Not done yet
|
|
CONNECT_ATTRS = 1 << 20
|
|
HANDLE_EXPIRED_PASSWORDS = 1 << 22
|
|
SESSION_TRACK = 1 << 23
|
|
CLIENT_DEPRECATE_EOF = 1 << 24
|