1
0
mirror of https://github.com/RaidMax/IW4M-Admin.git synced 2025-06-10 15:20:48 -05:00

Moved client database into manager, as it should be.. Some more transitional things and a few fixes.

This commit is contained in:
RaidMax
2017-05-27 17:08:04 -05:00
parent c151bcbdae
commit c1faf8a02e
26 changed files with 215 additions and 186 deletions

View File

@ -24,12 +24,12 @@ namespace SharedLibrary.Commands
public override async Task ExecuteAsync(Event E)
{
if (E.Owner.clientDB.getOwner() == null)
if (E.Owner.Manager.GetClientDatabase().getOwner() == null)
{
E.Origin.setLevel(Player.Permission.Owner);
await E.Origin.Tell("Congratulations, you have claimed ownership of this server!");
E.Owner.owner = E.Origin;
E.Owner.clientDB.updatePlayer(E.Origin);
E.Owner.Manager.GetClientDatabase().updatePlayer(E.Origin);
}
else
await E.Origin.Tell("This server already has an owner!");
@ -131,7 +131,7 @@ namespace SharedLibrary.Commands
public override async Task ExecuteAsync(Event E)
{
await E.Owner.Unban(E.Data.Trim(), E.Target);
await E.Owner.Unban(E.Target);
await E.Origin.Tell($"Successfully unbanned {E.Target.Name}::{E.Target.npID}");
}
}
@ -236,7 +236,7 @@ namespace SharedLibrary.Commands
public override async Task ExecuteAsync(Event E)
{
await E.Owner.Broadcast("Performing fast restart...");
await E.Owner.Broadcast($"Fast restarting in ^53 ^7seconds [^5{E.Origin.Name}]");
await Task.Delay(3000);
await E.Owner.ExecuteCommandAsync("fast_restart");
}
@ -248,8 +248,8 @@ namespace SharedLibrary.Commands
public override async Task ExecuteAsync(Event E)
{
await E.Owner.Broadcast("Performing map rotate...");
await Task.Delay(3000);
await E.Owner.Broadcast($"Map rotating in ^55 ^7seconds [^5{E.Origin.Name}]");
await Task.Delay(5000);
await E.Owner.ExecuteCommandAsync("map_rotate");
}
}
@ -296,7 +296,7 @@ namespace SharedLibrary.Commands
await E.Origin.Tell(E.Target.Name + " was successfully promoted!");
//NEEED TO MOVE
E.Owner.clientDB.updatePlayer(E.Target);
E.Owner.Manager.GetClientDatabase().updatePlayer(E.Target);
}
else
@ -370,7 +370,7 @@ namespace SharedLibrary.Commands
public override async Task ExecuteAsync(Event E)
{
var db_players = E.Owner.clientDB.findPlayers(E.Data.Trim());
var db_players = E.Owner.Manager.GetClientDatabase().findPlayers(E.Data.Trim());
if (db_players == null)
{
@ -400,7 +400,7 @@ namespace SharedLibrary.Commands
return;
}
//var db_players = E.Owner.clientDB.findPlayers(E.Data.Trim());
//var db_players = E.Owner.Manager.GetClientDatabase().findPlayers(E.Data.Trim());
var db_aliases = E.Owner.aliasDB.findPlayers(E.Data);
if (db_aliases == null)
@ -422,7 +422,7 @@ namespace SharedLibrary.Commands
lookingFor = S;
}
Player Current = E.Owner.clientDB.getPlayer(P.Number);
Player Current = E.Owner.Manager.GetClientDatabase().getPlayer(P.Number);
if (Current != null)
{
@ -498,7 +498,7 @@ namespace SharedLibrary.Commands
await E.Origin.Tell("You have ^5flagged ^7" + E.Target.Name);
}
E.Owner.clientDB.updatePlayer(E.Target);
E.Owner.Manager.GetClientDatabase().updatePlayer(E.Target);
}
}
@ -591,15 +591,17 @@ namespace SharedLibrary.Commands
return;
}
Penalty B = E.Owner.Bans.Find(b => b.npID.Equals(E.Target.npID));
if (B == null)
var B = E.Owner.Manager.GetClientPenalties().FindPenalties(E.Target);
var BannedPenalty = B.Find(b => b.BType == Penalty.Type.Ban);
if (BannedPenalty == null)
{
await E.Origin.Tell("No active ban was found for that player.");
return;
}
Player Banner = E.Owner.clientDB.getPlayer(B.bannedByID, -1);
Player Banner = E.Owner.Manager.GetClientDatabase().getPlayer(BannedPenalty.bannedByID, -1);
if (Banner == null)
{
@ -607,7 +609,7 @@ namespace SharedLibrary.Commands
return;
}
await E.Origin.Tell(String.Format("^1{0} ^7was banned by ^5{1} ^7for: {2}", E.Target.Name, Banner.Name, B.Reason));
await E.Origin.Tell(String.Format("^1{0} ^7was banned by ^5{1} ^7for: {2}", E.Target.Name, Banner.Name, BannedPenalty.Reason));
}
}

View File

@ -157,7 +157,7 @@ namespace SharedLibrary
catch (Exception e)
{
//LOGME
Console.Write("Could not execute");
Console.WriteLine($"Line 160: {e.Message}");
}
return dt;
@ -178,7 +178,7 @@ namespace SharedLibrary
catch (Exception e)
{
//LOGME
Console.Write("Couldnotexecute");
Console.Write($"Line 181: {e.Message}");
}
return dt;
@ -263,7 +263,7 @@ namespace SharedLibrary
public List<Player> getRecentPlayers()
{
List<Player> returnssss = new List<Player>();
String Query = String.Format("SELECT * FROM CLIENTS ORDER BY Connections desc LIMIT 25");
String Query = String.Format($"SELECT * FROM CLIENTS LIMIT 15 OFFSET (SELECT COUNT(*) FROM CLIENTS)-15");
DataTable Result = GetDataTable(Query);
if (Result != null && Result.Rows.Count > 0)
@ -277,25 +277,9 @@ namespace SharedLibrary
}
}
return returnssss;
return returnssss.OrderByDescending(p => p.LastConnection).ToList(); ;
}
public List<string> getReservedNPIDs()
{
List<string> npIDs = new List<string>();
String Query = String.Format("SELECT npID FROM CLIENTS WHERE Reserved = 1");
DataTable Result = GetDataTable(Query);
if (Result != null && Result.Rows.Count > 0)
foreach (DataRow ResponseRow in Result.Rows)
npIDs.Add(ResponseRow["npID"].ToString());
return npIDs;
}
public List<Player> getPlayers(List<String> npIDs)
{
List<Player> returnssss = new List<Player>();
@ -459,11 +443,11 @@ namespace SharedLibrary
return null;
}
//Returns list of bans in database
public List<Penalty> getBans()
public List<Penalty> GetClientPenalties(Player P)
{
List<Penalty> Bans = new List<Penalty>();
DataTable Result = GetDataTable("SELECT * FROM BANS ORDER BY TIME DESC");
List<Penalty> ClientPenalties = new List<Penalty>();
String Query = $"SELECT * FROM `BANS` WHERE `npID` = '{P.npID}' OR `IP` = '{P.IP}'";
DataTable Result = GetDataTable(Query);
foreach (DataRow Row in Result.Rows)
{
@ -474,11 +458,32 @@ namespace SharedLibrary
if (Row["TYPE"].ToString().Length != 0)
BanType = (Penalty.Type)Enum.Parse(typeof(Penalty.Type), Row["TYPE"].ToString());
Bans.Add(new Penalty(BanType, Row["Reason"].ToString().Trim(), Row["npID"].ToString(), Row["bannedByID"].ToString(), DateTime.Parse(Row["TIME"].ToString()), Row["IP"].ToString()));
ClientPenalties.Add(new Penalty(BanType, Row["Reason"].ToString().Trim(), Row["npID"].ToString(), Row["bannedByID"].ToString(), DateTime.Parse(Row["TIME"].ToString()), Row["IP"].ToString()));
}
return Bans;
return ClientPenalties;
}
public List<Penalty> GetPenaltiesChronologically(int offset, int count)
{
List<Penalty> ClientPenalties = new List<Penalty>();
DataTable Result = GetDataTable($"SELECT * FROM BANS LIMIT {count} OFFSET (SELECT COUNT(*) FROM BANS)-{offset + 10}");
foreach (DataRow Row in Result.Rows)
{
if (Row["TIME"].ToString().Length < 2) //compatibility with my old database
Row["TIME"] = DateTime.Now.ToString();
SharedLibrary.Penalty.Type BanType = Penalty.Type.Ban;
if (Row["TYPE"].ToString().Length != 0)
BanType = (Penalty.Type)Enum.Parse(typeof(Penalty.Type), Row["TYPE"].ToString());
ClientPenalties.Add(new Penalty(BanType, Row["Reason"].ToString().Trim(), Row["npID"].ToString(), Row["bannedByID"].ToString(), DateTime.Parse(Row["TIME"].ToString()), Row["IP"].ToString()));
}
return ClientPenalties;
}
//Returns all players with level > Flagged

View File

@ -13,5 +13,7 @@ namespace SharedLibrary.Interfaces
void Stop();
List<Server> GetServers();
List<Command> GetCommands();
IPenaltyList GetClientPenalties();
ClientsDB GetClientDatabase();
}
}

View File

@ -0,0 +1,15 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace SharedLibrary.Interfaces
{
public interface IPenaltyList
{
void AddPenalty(Penalty P);
void RemovePenalty(Penalty P);
List<Penalty> FindPenalties(Player P);
}
}

View File

@ -5,10 +5,10 @@ namespace SharedLibrary.Interfaces
{
public interface IPlugin
{
Task OnLoad();
Task OnUnload();
Task OnEvent(Event E, Server S);
Task OnTick(Server S);
Task OnLoadAsync();
Task OnUnloadAsync();
Task OnEventAsync(Event E, Server S);
Task OnTickAsync(Server S);
//for logging purposes
String Name { get; }

View File

@ -27,10 +27,8 @@ namespace SharedLibrary
#else
Log = new Log(logFile, Log.Level.Production, port);
#endif
clientDB = new ClientsDB("Database/clients.rm");
aliasDB = new AliasesDB("Database/aliases.rm");
Bans = new List<Penalty>();
Players = new List<Player>(new Player[18]);
events = new Queue<Event>();
Macros = new Dictionary<String, Object>();
@ -47,7 +45,7 @@ namespace SharedLibrary
var commands = mgr.GetCommands();
owner = clientDB.getOwner();
owner = Manager.GetClientDatabase().getOwner();
if (owner == null)
commands.Add(new Owner("owner", "claim ownership of the server", "owner", Player.Permission.User, 0, false));
@ -118,11 +116,6 @@ namespace SharedLibrary
return Players.FindAll(x => x != null);
}
//Returns list of all active bans (loaded at runtime)
public List<Penalty> getBans()
{
return Bans;
}
public int pID()
{
@ -142,7 +135,7 @@ namespace SharedLibrary
foreach (Aliases A in getAliases(Origin))
databaseIDs.Add(A.Number);
return clientDB.getPlayers(databaseIDs);
return Manager.GetClientDatabase().getPlayers(databaseIDs);
}
/// <summary>
@ -303,7 +296,7 @@ namespace SharedLibrary
/// <param name="npID">npID of the player</param>
/// <param name="Target">I don't remember what this is for</param>
/// <returns></returns>
abstract public Task Unban(String npID, Player Target);
abstract public Task Unban(Player Target);
/// <summary>
/// Change the current searver map
@ -437,7 +430,6 @@ namespace SharedLibrary
//Objects
public Interfaces.IManager Manager { get; protected set; }
public Log Log { get; private set; }
public List<Penalty> Bans;
public Player owner;
public List<Map> maps;
public List<String> rules;
@ -479,7 +471,7 @@ namespace SharedLibrary
protected String Mod;
// Databases
public ClientsDB clientDB;
//public ClientsDB clientDB;
public AliasesDB aliasDB;
//Remote

View File

@ -60,6 +60,7 @@
<Compile Include="Exceptions\NetworkException.cs" />
<Compile Include="Exceptions\ServerException.cs" />
<Compile Include="Interfaces\IManager.cs" />
<Compile Include="Interfaces\IPenaltyList.cs" />
<Compile Include="Interfaces\ISerializable.cs" />
<Compile Include="Penalty.cs" />
<Compile Include="Command.cs" />