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:
@ -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));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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
|
||||
|
@ -13,5 +13,7 @@ namespace SharedLibrary.Interfaces
|
||||
void Stop();
|
||||
List<Server> GetServers();
|
||||
List<Command> GetCommands();
|
||||
IPenaltyList GetClientPenalties();
|
||||
ClientsDB GetClientDatabase();
|
||||
}
|
||||
}
|
||||
|
15
SharedLibrary/Interfaces/IPenaltyList.cs
Normal file
15
SharedLibrary/Interfaces/IPenaltyList.cs
Normal 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);
|
||||
}
|
||||
}
|
@ -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; }
|
||||
|
@ -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
|
||||
|
@ -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" />
|
||||
|
Reference in New Issue
Block a user