Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package ru.yooxa.bungee.auth;
- import java.net.InetAddress;
- import java.net.InetSocketAddress;
- import java.sql.Connection;
- import java.sql.DriverManager;
- import java.sql.ResultSet;
- import java.sql.SQLException;
- import java.sql.Statement;
- import java.util.logging.Logger;
- import net.md_5.bungee.api.ProxyServer;
- import net.md_5.bungee.api.config.ServerInfo;
- import net.md_5.bungee.api.connection.ProxiedPlayer;
- import net.md_5.bungee.api.connection.Server;
- import net.md_5.bungee.api.plugin.Plugin;
- import net.md_5.bungee.api.scheduler.ScheduledTask;
- import net.md_5.bungee.api.scheduler.TaskScheduler;
- import net.md_5.bungee.config.Configuration;
- import ru.yooxa.bungee.auth.AuthManager;
- import ru.yooxa.bungee.auth.AuthPlayer;
- import ru.yooxa.bungee.auth.Main;
- public class Database {
- private AuthManager manager;
- private Connection connection;
- public Database(AuthManager manager) {
- this.manager = manager;
- this.connect();
- }
- private String getString(String name) {
- return this.manager.getConfig().getString("Table." + name);
- }
- public void connect() {
- Configuration config = this.manager.getConfig();
- try {
- this.connection = DriverManager.getConnection("JDBC:mysql://" + config.getString("Auth.host") + "/" + config.getString("Auth.database") + "?useUnicode=true&characterEncoding=utf-8", config.getString("Auth.username"), config.getString("Auth.password"));
- Statement ex = this.connection.createStatement();
- ex.executeUpdate("CREATE TABLE IF NOT EXISTS `" + this.getString("tablename") + "` (" + "`id` INTEGER AUTO_INCREMENT PRIMARY KEY, " + "`" + this.getString("username") + "` VARCHAR(50) NOT NULL UNIQUE, " + "`" + this.getString("password") + "` VARCHAR(255) NOT NULL, " + "`" + this.getString("ip") + "` VARCHAR(50), " + "`" + this.getString("session") + "` LONG, " + "`" + this.getString("email") + "` VARCHAR(50) DEFAULT '', " + "`" + this.getString("server") + "` VARCHAR(50) DEFAULT '')");
- try {
- ex.executeUpdate("ALTER TABLE `" + this.getString("tablename") + "` ADD `server` VARCHAR(50) default ''");
- ex.executeUpdate("ALTER TABLE `" + this.getString("tablename") + "` ALTER COLUMN `" + this.getString("email") + "` SET DEFAULT ''");
- }
- catch (SQLException sQLException) {
- // empty catch block
- }
- ex.close();
- Main.getInstance().getLogger().info("[Auth] \u0421\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u0441 \u0431\u0430\u0437\u043e\u0439 \u0434\u0430\u043d\u043d\u044b\u0445 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e");
- }
- catch (SQLException var5) {
- var5.printStackTrace();
- Main.getInstance().getLogger().info("\u041e\u0448\u0438\u0431\u043a\u0430 \u043f\u0440\u0438 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0438 \u0441 \u0431\u0430\u0437\u043e\u0439 \u0434\u0430\u043d\u043d\u044b\u0445. \u041e\u0448\u0438\u0431\u043a\u0430 - " + var5.getMessage());
- }
- }
- private Connection getConnection() throws SQLException {
- if (this.connection == null || this.connection.isClosed()) {
- this.connect();
- }
- return this.connection;
- }
- public Object[] loadData(String name) throws SQLException {
- long start = System.currentTimeMillis();
- Object[] data = new Object[]{null, 0, null, null};
- Statement statement = this.getConnection().createStatement();
- ResultSet rs = statement.executeQuery("SELECT * FROM `" + this.getString("tablename") + "` WHERE `" + this.getString("username") + "`='" + name.toLowerCase() + "'");
- if (rs.next()) {
- data[0] = rs.getString(this.getString("password"));
- data[1] = rs.getLong(this.getString("session"));
- data[2] = rs.getString(this.getString("ip"));
- data[3] = rs.getString(this.getString("email"));
- }
- rs.close();
- statement.close();
- Main.getInstance().getLogger().info("#Auth | Player '" + name + "' loaded (" + (System.currentTimeMillis() - start) + ") ms");
- return data;
- }
- public Object[] loadData(ProxiedPlayer player) throws SQLException {
- return this.loadData(player.getName());
- }
- public void execute(String sql) throws SQLException {
- Statement statement = this.getConnection().createStatement();
- Throwable throwable = null;
- try {
- statement.executeUpdate(sql);
- }
- catch (Throwable var4_5) {
- throwable = var4_5;
- throw var4_5;
- }
- finally {
- if (statement != null) {
- if (throwable != null) {
- try {
- statement.close();
- }
- catch (Throwable var4_4) {
- throwable.addSuppressed(var4_4);
- }
- } else {
- statement.close();
- }
- }
- }
- }
- public void saveData(final AuthPlayer player, boolean saveSession) {
- Object[] arrobject = new Object[13];
- arrobject[0] = this.getString("tablename");
- arrobject[1] = this.getString("username");
- arrobject[2] = this.getString("password");
- arrobject[3] = this.getString("session");
- arrobject[4] = this.getString("ip");
- arrobject[5] = this.getString("server");
- arrobject[6] = this.getString("email");
- arrobject[7] = player.getName().toLowerCase();
- arrobject[8] = player.getHash();
- arrobject[9] = String.valueOf(player.getSession() == -1 || !saveSession ? 0 : System.currentTimeMillis() / 1000);
- arrobject[10] = player.getPlayer().getAddress().getAddress().getHostAddress();
- arrobject[11] = player.getPlayer().getServer() == null ? "" : player.getPlayer().getServer().getInfo().getName();
- arrobject[12] = player.mail;
- final String query = String.format("INSERT INTO `%s` (`%s`, `%s`, `%s`, `%s`, `%s`, `%s`) VALUES ('%s','%s','%s','%s','%s','%s') ON DUPLICATE KEY UPDATE `%2$s`='%8$s',`%3$s`='%9$s',`%4$s`='%10$s',`%5$s`='%11$s',`%6$s`='%12$s',`%7$s`='%13$s';", arrobject);
- Main.getInstance().getProxy().getScheduler().runAsync((Plugin)Main.getInstance(), new Runnable(){
- @Override
- public void run() {
- try {
- Statement statement = Database.this.getConnection().createStatement();
- statement.executeUpdate(query);
- statement.close();
- }
- catch (SQLException e) {
- e.printStackTrace();
- Main.getInstance().getLogger().info(String.format("\u041e\u0448\u0438\u0431\u043a\u0430 \u043f\u0440\u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0433\u0440\u043e\u043a\u0430 '%s': %s", player.getName(), e.getMessage()));
- }
- }
- });
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement