diff --git a/TShockAPI/BanManager.cs b/TShockAPI/BanManager.cs
index 04d5a945..f62883ca 100644
--- a/TShockAPI/BanManager.cs
+++ b/TShockAPI/BanManager.cs
@@ -27,14 +27,8 @@ namespace TShockAPI
{
public class BanManager
{
- private DateTime LastLoad;
private IDbConnection database;
- ///
- /// IP - Name - Reason
- ///
- private List Bans = new List();
-
public BanManager(IDbConnection db)
{
database = db;
@@ -49,19 +43,25 @@ namespace TShockAPI
public Ban GetBanByIp(string ip)
{
- using (var com = database.CreateCommand())
+ try
{
- com.CommandText = "SELECT * FROM Bans WHERE IP=@ip";
- AddParameter(com, "@ip", ip);
- using (var reader = com.ExecuteReader())
+ using (var com = database.CreateCommand())
{
- if (reader.Read())
- return new Ban((string)reader["IP"], (string)reader["Name"], (string)reader["Reason"]);
+ com.CommandText = "SELECT * FROM Bans WHERE IP=@ip";
+ AddParameter(com, "@ip", ip);
+ using (var reader = com.ExecuteReader())
+ {
+ if (reader.Read())
+ return new Ban((string)reader["IP"], (string)reader["Name"], (string)reader["Reason"]);
+ }
}
}
+ catch (SqliteExecutionException ex)
+ {
+ }
return null;
}
- IDbDataParameter AddParameter(IDbCommand command, string name, object data)
+ static IDbDataParameter AddParameter(IDbCommand command, string name, object data)
{
var parm = command.CreateParameter();
parm.ParameterName = name;
@@ -73,37 +73,64 @@ namespace TShockAPI
public Ban GetBanByName(string name, bool casesensitive = true)
{
- using (var com = database.CreateCommand())
+ try
{
- var namecol = casesensitive ? "Name" : "UPPER(Name)";
- if (!casesensitive)
- name = name.ToUpper();
- com.CommandText = "SELECT *, COUNT(*) FROM Bans WHERE " + namecol + "=@name LIMIT 5";
- AddParameter(com, "@name", name);
- using (var reader = com.ExecuteReader())
+ using (var com = database.CreateCommand())
{
- if (reader.Read())
- return new Ban((string)reader["IP"], (string)reader["Name"], (string)reader["Reason"]);
+ var namecol = casesensitive ? "Name" : "UPPER(Name)";
+ if (!casesensitive)
+ name = name.ToUpper();
+ com.CommandText = "SELECT *, COUNT(*) FROM Bans WHERE " + namecol + "=@name LIMIT 5";
+ AddParameter(com, "@name", name);
+ using (var reader = com.ExecuteReader())
+ {
+ if (reader.Read())
+ return new Ban((string)reader["IP"], (string)reader["Name"], (string)reader["Reason"]);
+ }
}
}
+ catch (SqliteExecutionException ex)
+ {
+ }
return null;
}
- public void AddBan(string ip, string name = "", string reason = "")
+ public bool AddBan(string ip, string name = "", string reason = "")
{
- using (var com = database.CreateCommand())
+ try
{
- com.CommandText = "INSERT INTO Bans (IP, Name, Reason) VALUES (@ip, @name, @reason)";
- AddParameter(com, "@ip", ip);
- AddParameter(com, "@name", name);
- AddParameter(com, "@reason", reason);
- com.ExecuteNonQuery();
+ using (var com = database.CreateCommand())
+ {
+ com.CommandText = "INSERT INTO Bans (IP, Name, Reason) VALUES (@ip, @name, @reason)";
+ AddParameter(com, "@ip", ip);
+ AddParameter(com, "@name", name);
+ AddParameter(com, "@reason", reason);
+ com.ExecuteNonQuery();
+ }
+ return true;
}
+ catch (SqliteExecutionException ex)
+ {
+ }
+ return false;
}
- public void RemoveBan(Ban ban)
+ public bool RemoveBan(string ip)
{
-
+ try
+ {
+ using (var com = database.CreateCommand())
+ {
+ com.CommandText = "DELETE FROM Bans WHERE IP=@ip";
+ AddParameter(com, "@ip", ip);
+ com.ExecuteNonQuery();
+ return true;
+ }
+ }
+ catch (SqliteExecutionException ex)
+ {
+ }
+ return false;
}
}
diff --git a/TShockAPI/Commands.cs b/TShockAPI/Commands.cs
index d5056e8a..0fa33de0 100755
--- a/TShockAPI/Commands.cs
+++ b/TShockAPI/Commands.cs
@@ -456,8 +456,10 @@ namespace TShockAPI
var ban = TShock.Bans.GetBanByName(plStr);
if (ban != null)
{
- TShock.Bans.RemoveBan(ban);
- args.Player.SendMessage(string.Format("Unbanned {0} ({1})!", ban.Name, ban.IP), Color.Red);
+ if (TShock.Bans.RemoveBan(ban.IP))
+ args.Player.SendMessage(string.Format("Unbanned {0} ({1})!", ban.Name, ban.IP), Color.Red);
+ else
+ args.Player.SendMessage(string.Format("Failed to Unbanned {0} ({1})!", ban.Name, ban.IP), Color.Red);
}
else
{
@@ -482,8 +484,10 @@ namespace TShockAPI
var ban = TShock.Bans.GetBanByIp(plStr);
if (ban != null)
{
- TShock.Bans.RemoveBan(ban);
- args.Player.SendMessage(string.Format("Unbanned {0} ({1})!", ban.Name, ban.IP), Color.Red);
+ if (TShock.Bans.RemoveBan(ban.IP))
+ args.Player.SendMessage(string.Format("Unbanned {0} ({1})!", ban.Name, ban.IP), Color.Red);
+ else
+ args.Player.SendMessage(string.Format("Failed to Unbanned {0} ({1})!", ban.Name, ban.IP), Color.Red);
}
else
{