mirror of
https://github.com/RaidMax/IW4M-Admin.git
synced 2025-06-10 15:20:48 -05:00
-added !ip command (prints a client's external IP)
-fixed up the findall command -moved aliases to the manager -added admins page to view privileged users -fixed refactoring mistake with messages
This commit is contained in:
@ -18,7 +18,7 @@ namespace SharedLibrary.Commands
|
||||
}
|
||||
|
||||
public class COwner : Command
|
||||
{
|
||||
{
|
||||
public COwner(String N, String D, String U, Player.Permission P, int args, bool nT) : base(N, D, U, P, args, nT) { }
|
||||
|
||||
public override async Task ExecuteAsync(Event E)
|
||||
@ -44,7 +44,7 @@ namespace SharedLibrary.Commands
|
||||
if (E.Origin.Level <= E.Target.Level)
|
||||
await E.Origin.Tell($"You do not have the required privileges to warn {E.Target.Name}");
|
||||
else
|
||||
await E.Target.Warn(E.Target.lastOffense, E.Origin);
|
||||
await E.Target.Warn(E.Target.lastOffense, E.Origin);
|
||||
}
|
||||
}
|
||||
|
||||
@ -74,7 +74,7 @@ namespace SharedLibrary.Commands
|
||||
await E.Target.Kick(E.Target.lastOffense, E.Origin);
|
||||
}
|
||||
else
|
||||
await E.Origin.Tell($"You do not have the required privileges to kick {E.Target.Name}");
|
||||
await E.Origin.Tell($"You do not have the required privileges to kick {E.Target.Name}");
|
||||
}
|
||||
}
|
||||
|
||||
@ -216,7 +216,7 @@ namespace SharedLibrary.Commands
|
||||
List<Command> CommandList = E.Owner.Manager.GetCommands();
|
||||
|
||||
foreach (Command C in CommandList)
|
||||
{
|
||||
{
|
||||
if (E.Origin.Level >= C.Permission)
|
||||
{
|
||||
helpResponse.Append(" [^3" + C.Name + "^7] ");
|
||||
@ -390,7 +390,7 @@ namespace SharedLibrary.Commands
|
||||
}
|
||||
|
||||
foreach (Player P in db_players)
|
||||
{
|
||||
{
|
||||
String mesg = String.Format("[^3{0}^7] [^3@{1}^7] - [{2}^7] - {3} | last seen {4} ago", P.Name, P.DatabaseID, Utilities.ConvertLevelToColor(P.Level), P.IP, P.GetLastConnection());
|
||||
await E.Origin.Tell(mesg);
|
||||
}
|
||||
@ -426,7 +426,7 @@ namespace SharedLibrary.Commands
|
||||
|
||||
String lookingFor = String.Empty;
|
||||
|
||||
foreach(String S in P.Names)
|
||||
foreach (String S in P.Names)
|
||||
{
|
||||
if (S.Contains(E.Data))
|
||||
lookingFor = S;
|
||||
@ -434,7 +434,7 @@ namespace SharedLibrary.Commands
|
||||
|
||||
Player Current = E.Owner.Manager.GetClientDatabase().GetPlayer(P.Number);
|
||||
|
||||
if (Current != null)
|
||||
if (Current != null && Current.Name != lookingFor)
|
||||
{
|
||||
String mesg = String.Format("^1{0} ^7now goes by ^5{1}^7 [^3{2}^7]", lookingFor, Current.Name, Current.DatabaseID);
|
||||
await E.Origin.Tell(mesg);
|
||||
@ -487,7 +487,7 @@ namespace SharedLibrary.Commands
|
||||
public CReload(String N, String D, String U, Player.Permission P, int args, bool nT) : base(N, D, U, P, args, nT) { }
|
||||
|
||||
public override async Task ExecuteAsync(Event E)
|
||||
{
|
||||
{
|
||||
if (E.Owner.Reload())
|
||||
await E.Origin.Tell("Sucessfully reloaded configuration files");
|
||||
else
|
||||
@ -655,7 +655,7 @@ namespace SharedLibrary.Commands
|
||||
StringBuilder message = new StringBuilder();
|
||||
|
||||
var playerAliases = E.Owner.GetAliases(E.Target);
|
||||
|
||||
|
||||
message.Append("Aliases: ");
|
||||
|
||||
var names = new List<string>();
|
||||
@ -705,5 +705,16 @@ namespace SharedLibrary.Commands
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public class CIP : Command
|
||||
{
|
||||
public CIP(String N, String D, String U, Player.Permission P, int args, bool nT) : base(N, D, U, P, args, nT) { }
|
||||
|
||||
public override async Task ExecuteAsync(Event E)
|
||||
{
|
||||
await E.Origin.Tell($"Your external IP is ^5{E.Origin.IP}");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -485,11 +485,11 @@ namespace SharedLibrary
|
||||
public List<Player> GetAdmins()
|
||||
{
|
||||
List<Player> Admins = new List<Player>();
|
||||
String Query = String.Format("SELECT * FROM CLIENTS WHERE Level >= '{0}'", (int)Player.Permission.Moderator);
|
||||
String Query = String.Format("SELECT * FROM CLIENTS WHERE Level >= '{0}' ORDER BY Name", (int)Player.Permission.Trusted);
|
||||
DataTable Result = GetDataTable(Query);
|
||||
|
||||
foreach (DataRow P in Result.Rows)
|
||||
Admins.Add(new Player(P["Name"].ToString(), P["npID"].ToString(), (Player.Permission)P["Level"], P["IP"].ToString(), P["UID"].ToString()));
|
||||
Admins.Add(new Player(P["Name"].ToString(), P["npID"].ToString(), (Player.Permission)P["Level"], P["IP"].ToString(), P["UID"].ToString(), Convert.ToInt32(P["Number"].ToString())));
|
||||
|
||||
return Admins;
|
||||
}
|
||||
@ -634,8 +634,8 @@ namespace SharedLibrary
|
||||
{
|
||||
CommandText = "SELECT * FROM ALIASES WHERE NAMES LIKE @name OR IPS LIKE @ip LIMIT 15"
|
||||
};
|
||||
cmd.Parameters.AddWithValue("@name", name);
|
||||
cmd.Parameters.AddWithValue("@ip", DefaultIP);
|
||||
cmd.Parameters.AddWithValue("@name", '%' + name + '%');
|
||||
cmd.Parameters.AddWithValue("@ip", '%' + DefaultIP + '%');
|
||||
|
||||
var Result = GetDataTable(cmd);
|
||||
|
||||
|
@ -15,5 +15,7 @@ namespace SharedLibrary.Interfaces
|
||||
AliasesDB GetAliasesDatabase();
|
||||
IList<Helpers.MessageToken> GetMessageTokens();
|
||||
IList<Player> GetActiveClients();
|
||||
IList<Player> GetAliasClients(Player player);
|
||||
IList<Aliases> GetAliases(Player player);
|
||||
}
|
||||
}
|
||||
|
@ -69,7 +69,7 @@ namespace SharedLibrary
|
||||
LastConnection = DateTime.Now;
|
||||
}
|
||||
|
||||
public Player(String n, String id, Player.Permission P, String I, String UID)
|
||||
public Player(String n, String id, Player.Permission P, String I, String UID, int dbid)
|
||||
{
|
||||
Name = n;
|
||||
NetworkID = id;
|
||||
@ -77,6 +77,7 @@ namespace SharedLibrary
|
||||
IP = I;
|
||||
ClientID = -1;
|
||||
this.UID = UID;
|
||||
DatabaseID = dbid;
|
||||
}
|
||||
|
||||
public Player(string n, string id, int num, Player.Permission l, int cind, String lo, int con, String IP2)
|
||||
|
@ -22,9 +22,6 @@ namespace SharedLibrary.Network
|
||||
|
||||
static string[] SendQuery(QueryType Type, Server QueryServer, string Parameters = "")
|
||||
{
|
||||
if (QueryServer.Throttled)
|
||||
throw new Exceptions.DvarException("Server is RCON throttled");
|
||||
|
||||
var ServerOOBConnection = new UdpClient();
|
||||
ServerOOBConnection.Client.SendTimeout = 1000;
|
||||
ServerOOBConnection.Client.ReceiveTimeout = 1000;
|
||||
@ -97,9 +94,6 @@ namespace SharedLibrary.Network
|
||||
|
||||
public static async Task<DVAR<T>> GetDvarAsync<T>(this Server server, string dvarName)
|
||||
{
|
||||
if (server.Throttled)
|
||||
throw new Exceptions.DvarException("Server is RCON throttled");
|
||||
|
||||
string[] LineSplit = await Task.FromResult(SendQuery(QueryType.DVAR, server, dvarName));
|
||||
|
||||
if (LineSplit.Length != 3)
|
||||
@ -113,7 +107,7 @@ namespace SharedLibrary.Network
|
||||
|
||||
if (ValueSplit.Length != 5)
|
||||
{
|
||||
var e = new Exceptions.DvarException("DVAR does not exist");
|
||||
var e = new Exceptions.DvarException($"DVAR \"{dvarName}\" does not exist");
|
||||
e.Data["dvar_name"] = dvarName;
|
||||
throw e;
|
||||
}
|
||||
@ -127,25 +121,16 @@ namespace SharedLibrary.Network
|
||||
|
||||
public static async Task SetDvarAsync(this Server server, string dvarName, object dvarValue)
|
||||
{
|
||||
if (server.Throttled)
|
||||
throw new Exceptions.DvarException("Server is RCON throttled");
|
||||
|
||||
await Task.FromResult(SendQuery(QueryType.DVAR, server, $"set {dvarName} {dvarValue}"));
|
||||
}
|
||||
|
||||
public static async Task<string[]> ExecuteCommandAsync(this Server server, string commandName)
|
||||
{
|
||||
if (server.Throttled)
|
||||
throw new Exceptions.DvarException("Server is RCON throttled");
|
||||
|
||||
return await Task.FromResult(SendQuery(QueryType.COMMAND, server, commandName).Skip(1).ToArray());
|
||||
}
|
||||
|
||||
public static async Task<List<Player>> GetStatusAsync(this Server server)
|
||||
{
|
||||
if (server.Throttled)
|
||||
throw new Exceptions.DvarException("Server is RCON throttled");
|
||||
|
||||
string[] response = await Task.FromResult(SendQuery(QueryType.DVAR, server, "status"));
|
||||
return Utilities.PlayersFromStatus(response);
|
||||
}
|
||||
|
@ -63,23 +63,6 @@ namespace SharedLibrary
|
||||
return Players.FindAll(x => x != null);
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Get any know aliases ( name or ip based ) from the database
|
||||
/// </summary>
|
||||
/// <param name="Origin">Player to scan for aliases</param>
|
||||
abstract public List<Aliases> GetAliases(Player Origin);
|
||||
|
||||
public List<Player> GetPlayerAliases(Player Origin)
|
||||
{
|
||||
List<int> databaseIDs = new List<int>();
|
||||
|
||||
foreach (Aliases A in GetAliases(Origin))
|
||||
databaseIDs.Add(A.Number);
|
||||
|
||||
return Manager.GetClientDatabase().GetPlayers(databaseIDs);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Add a player to the server's player list
|
||||
/// </summary>
|
||||
@ -134,6 +117,16 @@ namespace SharedLibrary
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Legacy method for the alias command
|
||||
/// </summary>
|
||||
/// <param name="P"></param>
|
||||
/// <returns></returns>
|
||||
public IList<Aliases> GetAliases(Player P)
|
||||
{
|
||||
return Manager.GetAliases(P);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Process any server event
|
||||
|
Reference in New Issue
Block a user