From 454403d4956e4040ff86edf39fbc299f7385a4de Mon Sep 17 00:00:00 2001 From: Lucas Nicodemus Date: Thu, 9 Feb 2012 22:20:36 -0700 Subject: [PATCH] Added /lists/bans REST endpoint - Returns a JSON list of bans --- TShockAPI/DB/BanManager.cs | 23 +++++++++++++++++++++++ TShockAPI/Rest/RestManager.cs | 9 +++++++++ 2 files changed, 32 insertions(+) diff --git a/TShockAPI/DB/BanManager.cs b/TShockAPI/DB/BanManager.cs index 5afa69f9..082e5a41 100644 --- a/TShockAPI/DB/BanManager.cs +++ b/TShockAPI/DB/BanManager.cs @@ -16,6 +16,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ using System; +using System.Collections.Generic; using System.Data; using System.IO; using MySql.Data.MySqlClient; @@ -67,6 +68,28 @@ throw new Exception("Could not find a database library (probably Sqlite3.dll)"); return null; } + public List GetBans() + { + List banlist = new List(); + try + { + using (var reader = database.QueryReader("SELECT * FROM Bans")) + { + while (reader.Read()) + { + banlist.Add(new Ban(reader.Get("IP"), reader.Get("Name"), reader.Get("Reason"))); + } + return banlist; + } + } + catch (Exception ex) + { + Log.Error(ex.ToString()); + Console.WriteLine(ex.StackTrace); + } + return null; + } + public Ban GetBanByName(string name, bool casesensitive = true) { if (!TShock.Config.EnableBanOnUsernames) diff --git a/TShockAPI/Rest/RestManager.cs b/TShockAPI/Rest/RestManager.cs index b5a729c0..7a28a209 100644 --- a/TShockAPI/Rest/RestManager.cs +++ b/TShockAPI/Rest/RestManager.cs @@ -48,6 +48,7 @@ namespace TShockAPI Rest.Register(new RestCommand("/v2/bans/read", BanInfoV2) { RequiresToken = true }); Rest.Register(new RestCommand("/v2/bans/destroy", BanDestroyV2) { RequiresToken = true }); + Rest.Register(new RestCommand("/lists/bans", BanListIPs) { RequiresToken = true }); Rest.Register(new RestCommand("/lists/players", PlayerList) {RequiresToken = true}); Rest.Register(new RestCommand("/world/read", WorldRead) {RequiresToken = true}); @@ -252,6 +253,14 @@ namespace TShockAPI #region RestBanMethods + private object BanListIPs(RestVerbs verbs, IParameterCollection parameters) + { + RestObject returnItem = new RestObject("200"); + returnItem.Add("bans", TShock.Bans.GetBans()); + + return returnItem; + } + private object BanCreate(RestVerbs verbs, IParameterCollection parameters) { var returnBlock = new Dictionary();