package com.tesora.dve.server.connectionmanager; /* * #%L * Tesora Inc. * Database Virtualization Engine * %% * Copyright (C) 2011 - 2014 Tesora Inc. * %% * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License, version 3, * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. * #L% */ import com.tesora.dve.db.mysql.common.MysqlHandshake; import com.tesora.dve.db.mysql.portal.protocol.ClientCapabilities; import com.tesora.dve.server.global.HostService; import com.tesora.dve.singleton.Singletons; import org.apache.commons.lang.RandomStringUtils; import com.tesora.dve.db.mysql.MysqlNativeConstants; public class SSConnectionHandshake implements MysqlHandshake { // TODO - this is Mysql specific - should be generalized // for ServerGreetingResponse in PEMyProtocolConverter private static final String MYSQL_PLUGIN_DATA = "mysql_native_password"; private int connectionID; private String salt; SSConnectionHandshake(int id) { this.salt = generateSalt(); this.connectionID = id; } String generateSalt() { return RandomStringUtils.randomAscii(20); } @Override public int getConnectionId() { return this.connectionID; } @Override public String getSalt() { return salt; } @Override public String getPluginData() { return MYSQL_PLUGIN_DATA; } @Override public byte getServerCharSet() { return MysqlNativeConstants.MYSQL_CHARSET_LATIN1; } @Override public String getServerVersion() { return Singletons.require(HostService.class).getServerVersion(); } @Override public long getServerCapabilities() { return ClientCapabilities.CLIENT_LONG_PASSWORD + ClientCapabilities.CLIENT_FOUND_ROWS + ClientCapabilities.CLIENT_LONG_FLAG + ClientCapabilities.CLIENT_CONNECT_WITH_DB + ClientCapabilities.CLIENT_NO_SCHEMA + ClientCapabilities.CLIENT_ODBC + ClientCapabilities.CLIENT_LOCAL_FILES + ClientCapabilities.CLIENT_IGNORE_SPACE + ClientCapabilities.CLIENT_PROTOCOL_41 + ClientCapabilities.CLIENT_INTERACTIVE + ClientCapabilities.CLIENT_IGNORE_SIGPIPE + ClientCapabilities.CLIENT_TRANSACTIONS + ClientCapabilities.CLIENT_RESERVED + ClientCapabilities.CLIENT_SECURE_CONNECTION + ClientCapabilities.CLIENT_MULTI_STATEMENTS + ClientCapabilities.CLIENT_MULTI_RESULTS + ClientCapabilities.CLIENT_PS_MULTI_RESULTS + ClientCapabilities.CLIENT_PLUGIN_AUTH + ClientCapabilities.CLIENT_REMEMBER_OPTIONS; } }