Advertisement
Guest User

Untitled

a guest
Jul 29th, 2018
117
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.09 KB | None | 0 0
  1. package ru.yooxa.bungee.auth;
  2.  
  3. import java.net.InetAddress;
  4. import java.net.InetSocketAddress;
  5. import java.sql.Connection;
  6. import java.sql.DriverManager;
  7. import java.sql.ResultSet;
  8. import java.sql.SQLException;
  9. import java.sql.Statement;
  10. import java.util.logging.Logger;
  11. import net.md_5.bungee.api.ProxyServer;
  12. import net.md_5.bungee.api.config.ServerInfo;
  13. import net.md_5.bungee.api.connection.ProxiedPlayer;
  14. import net.md_5.bungee.api.connection.Server;
  15. import net.md_5.bungee.api.plugin.Plugin;
  16. import net.md_5.bungee.api.scheduler.ScheduledTask;
  17. import net.md_5.bungee.api.scheduler.TaskScheduler;
  18. import net.md_5.bungee.config.Configuration;
  19. import ru.yooxa.bungee.auth.AuthManager;
  20. import ru.yooxa.bungee.auth.AuthPlayer;
  21. import ru.yooxa.bungee.auth.Main;
  22.  
  23. public class Database {
  24. private AuthManager manager;
  25. private Connection connection;
  26.  
  27. public Database(AuthManager manager) {
  28. this.manager = manager;
  29. this.connect();
  30. }
  31.  
  32. private String getString(String name) {
  33. return this.manager.getConfig().getString("Table." + name);
  34. }
  35.  
  36. public void connect() {
  37. Configuration config = this.manager.getConfig();
  38. try {
  39. 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"));
  40. Statement ex = this.connection.createStatement();
  41. 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 '')");
  42. try {
  43. ex.executeUpdate("ALTER TABLE `" + this.getString("tablename") + "` ADD `server` VARCHAR(50) default ''");
  44. ex.executeUpdate("ALTER TABLE `" + this.getString("tablename") + "` ALTER COLUMN `" + this.getString("email") + "` SET DEFAULT ''");
  45. }
  46. catch (SQLException sQLException) {
  47. // empty catch block
  48. }
  49. ex.close();
  50. 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");
  51. }
  52. catch (SQLException var5) {
  53. var5.printStackTrace();
  54. 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());
  55. }
  56. }
  57.  
  58. private Connection getConnection() throws SQLException {
  59. if (this.connection == null || this.connection.isClosed()) {
  60. this.connect();
  61. }
  62. return this.connection;
  63. }
  64.  
  65. public Object[] loadData(String name) throws SQLException {
  66. long start = System.currentTimeMillis();
  67. Object[] data = new Object[]{null, 0, null, null};
  68. Statement statement = this.getConnection().createStatement();
  69. ResultSet rs = statement.executeQuery("SELECT * FROM `" + this.getString("tablename") + "` WHERE `" + this.getString("username") + "`='" + name.toLowerCase() + "'");
  70. if (rs.next()) {
  71. data[0] = rs.getString(this.getString("password"));
  72. data[1] = rs.getLong(this.getString("session"));
  73. data[2] = rs.getString(this.getString("ip"));
  74. data[3] = rs.getString(this.getString("email"));
  75. }
  76. rs.close();
  77. statement.close();
  78. Main.getInstance().getLogger().info("#Auth | Player '" + name + "' loaded (" + (System.currentTimeMillis() - start) + ") ms");
  79. return data;
  80. }
  81.  
  82. public Object[] loadData(ProxiedPlayer player) throws SQLException {
  83. return this.loadData(player.getName());
  84. }
  85.  
  86. public void execute(String sql) throws SQLException {
  87. Statement statement = this.getConnection().createStatement();
  88. Throwable throwable = null;
  89. try {
  90. statement.executeUpdate(sql);
  91. }
  92. catch (Throwable var4_5) {
  93. throwable = var4_5;
  94. throw var4_5;
  95. }
  96. finally {
  97. if (statement != null) {
  98. if (throwable != null) {
  99. try {
  100. statement.close();
  101. }
  102. catch (Throwable var4_4) {
  103. throwable.addSuppressed(var4_4);
  104. }
  105. } else {
  106. statement.close();
  107. }
  108. }
  109. }
  110. }
  111.  
  112. public void saveData(final AuthPlayer player, boolean saveSession) {
  113. Object[] arrobject = new Object[13];
  114. arrobject[0] = this.getString("tablename");
  115. arrobject[1] = this.getString("username");
  116. arrobject[2] = this.getString("password");
  117. arrobject[3] = this.getString("session");
  118. arrobject[4] = this.getString("ip");
  119. arrobject[5] = this.getString("server");
  120. arrobject[6] = this.getString("email");
  121. arrobject[7] = player.getName().toLowerCase();
  122. arrobject[8] = player.getHash();
  123. arrobject[9] = String.valueOf(player.getSession() == -1 || !saveSession ? 0 : System.currentTimeMillis() / 1000);
  124. arrobject[10] = player.getPlayer().getAddress().getAddress().getHostAddress();
  125. arrobject[11] = player.getPlayer().getServer() == null ? "" : player.getPlayer().getServer().getInfo().getName();
  126. arrobject[12] = player.mail;
  127. 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);
  128. Main.getInstance().getProxy().getScheduler().runAsync((Plugin)Main.getInstance(), new Runnable(){
  129.  
  130. @Override
  131. public void run() {
  132. try {
  133. Statement statement = Database.this.getConnection().createStatement();
  134. statement.executeUpdate(query);
  135. statement.close();
  136. }
  137. catch (SQLException e) {
  138. e.printStackTrace();
  139. 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()));
  140. }
  141. }
  142. });
  143. }
  144.  
  145. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement