package handling.login.handler;
import client.LoginCrypto;
import database.DatabaseConnection;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class AutoRegister {
private static final int ACCOUNTS_PER_IP = 3;
public static boolean autoRegister = false;
public static boolean success = false;
public static boolean getAccountExists(String login) {
boolean accountExists = false;
Connection con = DatabaseConnection.getConnection();
try {
PreparedStatement ps = con.prepareStatement("SELECT name FROM accounts WHERE name = ?");
ps.setString(1, login);
ResultSet rs = ps.executeQuery();
if (rs.first()) {
accountExists = true;
}
} catch (SQLException ex) {
System.out.println(ex);
}
return accountExists;
}
public static void createAccount(String login, String pwd, String eip) {
String sockAddr = eip;
Connection con;
try {
con = DatabaseConnection.getConnection();
} catch (Exception ex) {
System.out.println(ex);
return;
}
try {
ResultSet rs;
try (PreparedStatement ipc = con.prepareStatement("SELECT SessionIP FROM accounts WHERE SessionIP = ?")) {
ipc.setString(1, sockAddr.substring(1, sockAddr.lastIndexOf(':')));
rs = ipc.executeQuery();
if (rs.first() == false || rs.last() == true && rs.getRow() < ACCOUNTS_PER_IP) {
try {
try (PreparedStatement ps = con.prepareStatement("INSERT INTO accounts (name, password, email, birthday, macs, SessionIP) VALUES (?, ?, ?, ?, ?, ?)")) {
ps.setString(1, login);
ps.setString(2, LoginCrypto.hexSha1(pwd));
ps.setString(3, "autoregister@mail.com");
ps.setString(4, "2008-04-07");
ps.setString(5, "00-00-00-00-00-00");
ps.setString(6, sockAddr.substring(1, sockAddr.lastIndexOf(':')));
ps.executeUpdate();
}
success = true;
} catch (SQLException ex) {
System.out.println(ex);
return;
}
}
}
rs.close();
} catch (SQLException ex) {
System.out.println(ex);
}
}
}