com.tesora.dve.server.connectionmanager.SSConnectionHandshake.java Source code

Java tutorial

Introduction

Here is the source code for com.tesora.dve.server.connectionmanager.SSConnectionHandshake.java

Source

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;

    }
}