Redo mac bans - reduce amount of db queries on login

Works just like ip and hwid bans in that they are loaded on startup
This commit is contained in:
P0nk
2024-10-01 22:12:10 +02:00
parent af02f8b744
commit 5d81e05458
18 changed files with 217 additions and 49 deletions

View File

@@ -315,42 +315,6 @@ public class Client extends ChannelInboundHandlerAdapter {
return inServerTransition;
}
// TODO: load macbans on server start and query it on demand. This query should not be run on every login!
@Deprecated
public boolean hasBannedMac() {
if (macs.isEmpty()) {
return false;
}
boolean ret = false;
int i;
StringBuilder sql = new StringBuilder("SELECT COUNT(*) FROM macbans WHERE mac IN (");
for (i = 0; i < macs.size(); i++) {
sql.append("?");
if (i != macs.size() - 1) {
sql.append(", ");
}
}
sql.append(")");
try (Connection con = DatabaseConnection.getConnection();
PreparedStatement ps = con.prepareStatement(sql.toString())) {
i = 0;
for (String mac : macs) {
ps.setString(++i, mac);
}
try (ResultSet rs = ps.executeQuery()) {
rs.next();
if (rs.getInt(1) > 0) {
ret = true;
}
}
} catch (Exception e) {
e.printStackTrace();
}
return ret;
}
// TODO: Recode to close statements...
// Only used from ban command.
private void loadMacsIfNescessary() throws SQLException {