Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package org.dementhium.mysql.impl;
- import java.sql.ResultSet;
- import java.sql.SQLException;
- import org.dementhium.RS2ServerBootstrap;
- import org.dementhium.content.misc.PunishHandler;
- import org.dementhium.model.World;
- import org.dementhium.model.definition.PlayerDefinition;
- import org.dementhium.model.player.Player;
- import org.dementhium.mysql.DatabaseManager;
- import org.dementhium.mysql.MD5Encryption;
- import org.dementhium.net.GameSession;
- import org.dementhium.util.Constants;
- import org.dementhium.util.Misc;
- /**
- *
- * @author 'Mystic Flow <Steven@rune-server.org>
- */
- public class PlayerLoader {
- public class PlayerLoadResult {
- private final Player player;
- private final int returnCode;
- private PlayerLoadResult(Player player, int returnCode) {
- this.returnCode = returnCode;
- this.player = player;
- }
- public Player getPlayer() {
- return player;
- }
- public int getReturnCode() {
- return returnCode;
- }
- }
- public static final String PLAYER_TABLE = "users";
- private DatabaseManager database;
- public PlayerLoader() {
- try {
- database = DatabaseManager.create("*,*,*,*");
- database.establishConnection();
- } catch (SQLException e) {
- if (Misc.isWindows()) {
- RS2ServerBootstrap.sqlDisabled = true;
- }
- e.printStackTrace();
- }
- }
- public PlayerLoadResult load(GameSession connection, PlayerDefinition def) {
- int code = 2;
- Player player = null;
- if (!passwordMatch(def.getName(), def.getPassword())) {
- code = Constants.INVALID_PASSWORD;
- }
- if(code == 2) {
- Player lobbyPlayer = World.getWorld().getPlayerOutOfLobby(def.getName());
- if (World.getWorld().isOnList(def.getName()) && lobbyPlayer == null) {
- code = Constants.ALREADY_ONLINE;
- }
- int count = 2;
- String ip = PunishHandler.formatIp(connection.getChannel().getRemoteAddress().toString());
- for (Player pl : World.getWorld().getPlayers()) {
- if (pl != null && pl.getLastConnectIp().equals(ip)) {
- if (--count == 0) {
- code = 9;
- }
- }
- }
- }
- if (code == 2) {
- player = new Player(connection, def);
- if (player.getRights() != 2 && World.getWorld().getPunishHandler().isBanned(player)) {
- code = Constants.BANNED;
- }
- acquireRights(def);
- }
- return new PlayerLoadResult(player, code);
- }
- private void acquireRights(PlayerDefinition def) {
- if (RS2ServerBootstrap.sqlDisabled) {
- def.setRights(2);
- return;
- }
- ResultSet sql = null;
- try {
- sql = database.executeQuery("SELECT usergroup FROM " + PLAYER_TABLE + " WHERE username='" + def.getName() + "' LIMIT 1");
- if (sql.next()) {
- int usergroup = sql.getInt("usergroup");
- switch (usergroup) {
- case 6:
- def.setRights(2);
- break;
- case 5:
- case 19:
- def.setRights(1);
- break;
- case 16://Respected Donor
- def.setDonor(1);
- break;
- case 17://Grand Donor
- def.setDonor(2);
- break;
- case 18://Elite Donor
- def.setDonor(3);
- break;
- }
- }
- } catch (SQLException e) {
- e.printStackTrace();
- } finally {
- if (sql != null) {
- close(sql);
- }
- sql = null;
- }
- }
- public boolean load(Player player) {
- ResultSet resultSet = null;
- try {
- resultSet = database.executeQuery("SELECT * FROM " + PLAYER_TABLE + " WHERE username='" + player.getUsername() + "' LIMIT 1");
- if (resultSet.next()) {
- player.loadSQL(resultSet);
- return true;
- }
- } catch (Exception e) {
- e.printStackTrace();
- } finally {
- if (resultSet != null) {
- close(resultSet);
- }
- resultSet = null;
- }
- return false;
- }
- public boolean save(Player player) {
- if (RS2ServerBootstrap.sqlDisabled) {
- return true;
- }
- if (player.getAttribute("dontSave") == Boolean.TRUE) {
- return true;
- }
- StringBuilder sb = player.saveSQL(PLAYER_TABLE);
- String completeQuery = sb.toString();
- try {
- database.executeUpdate(completeQuery);
- return true;
- } catch (Exception e) {
- e.printStackTrace();
- }
- return false;
- }
- public boolean passwordMatch(String name, String password) {
- if (RS2ServerBootstrap.sqlDisabled) {
- return true;
- }
- try {
- ResultSet result = database.executeQuery("SELECT password FROM " + PLAYER_TABLE+ " WHERE username='" + name +"'");
- if (result.next()) {
- String passwordResult = result.getString("password");
- String encryptedPassword = MD5Encryption.encrypt(password);
- if (encryptedPassword.equals(passwordResult)) {
- return true;
- }
- }
- } catch (SQLException e) {
- //ignore
- }
- return false;
- }
- public void close(ResultSet resultSet) {
- try {
- resultSet.close();
- } catch (SQLException e) {
- e.printStackTrace();
- }
- }
- }
Add Comment
Please, Sign In to add comment