Re added mask command

Prune confirms completion
Findall display previous name
confirmation message sent after kick
tempban/ban confirmation wording changes
players page is now paginated
This commit is contained in:
RaidMax 2017-11-18 00:59:37 -06:00
parent cdeb7e8eaf
commit 9a85b9c4c2
10 changed files with 54 additions and 29 deletions

View File

@ -53,6 +53,7 @@ namespace IW4MAdmin
try try
{ {
request.Path = String.IsNullOrEmpty(request.Path) ? "/" : request.Path;
SharedLibrary.HttpResponse requestedPage = WebService.GetPage(request.Path, querySet, request.Headers); SharedLibrary.HttpResponse requestedPage = WebService.GetPage(request.Path, querySet, request.Headers);
bool binaryContent = requestedPage.BinaryContent != null; bool binaryContent = requestedPage.BinaryContent != null;
@ -87,7 +88,6 @@ namespace IW4MAdmin
ApplicationManager.GetInstance().Logger.WriteWarning("Request parameter data format was incorrect"); ApplicationManager.GetInstance().Logger.WriteWarning("Request parameter data format was incorrect");
ApplicationManager.GetInstance().Logger.WriteDebug($"Request Path {request.Path}"); ApplicationManager.GetInstance().Logger.WriteDebug($"Request Path {request.Path}");
ApplicationManager.GetInstance().Logger.WriteDebug($"Request Query String {request.QueryString}"); ApplicationManager.GetInstance().Logger.WriteDebug($"Request Query String {request.QueryString}");
response.OnResponse(new HttpResponseHead() response.OnResponse(new HttpResponseHead()
{ {
Status = "400 Bad Request", Status = "400 Bad Request",

View File

@ -179,6 +179,7 @@ namespace IW4MAdmin
Commands.Add(new CFindAllPlayers()); Commands.Add(new CFindAllPlayers());
Commands.Add(new CPlugins()); Commands.Add(new CPlugins());
Commands.Add(new CIP()); Commands.Add(new CIP());
Commands.Add(new CMask());
foreach (Command C in SharedLibrary.Plugins.PluginImporter.ActiveCommands) foreach (Command C in SharedLibrary.Plugins.PluginImporter.ActiveCommands)
Commands.Add(C); Commands.Add(C);

View File

@ -776,7 +776,13 @@ namespace IW4MAdmin
else if (querySet["recent"] != null) else if (querySet["recent"] != null)
{ {
matchedPlayers = ApplicationManager.GetInstance().GetClientDatabase().GetRecentPlayers(); int offset = 0;
if (querySet["offset"] != null)
offset = Int32.Parse(querySet["offset"]);
if (offset < 0)
throw new FormatException("Invalid offset");
matchedPlayers = ApplicationManager.GetInstance().GetClientDatabase().GetRecentPlayers(15, offset);
recent = true; recent = true;
} }

Binary file not shown.

View File

@ -6,6 +6,8 @@ CHANGELOG:
-If multiple matches are found when finding a player, a list of matches is shown -If multiple matches are found when finding a player, a list of matches is shown
-"special" characters are allowed in names and messages -"special" characters are allowed in names and messages
-prune command demotes inactive admins (defaults to 30 days if no days are specified) -prune command demotes inactive admins (defaults to 30 days if no days are specified)
-confirmation message sent after kick
-paginated players page
Version 1.5 Version 1.5
CHANGELOG: CHANGELOG:

View File

@ -65,13 +65,24 @@
}).done(function (data) { $(".loader").fadeOut(); }); }).done(function (data) { $(".loader").fadeOut(); });
} }
function getRecentPlayers(offset) {
$("#playersTable").html("");
$(".loader").fadeIn();
$.getJSON("/getplayer?recent=1&offset=" + offset, function (result) {
$.each(result, function (i, player) {
printPlayer(player, i);
});
}).done(function (data) { $(".loader").fadeOut(); });
}
$(document).ready(function () { $(document).ready(function () {
if (parseGet('id') != "undefined") if (parseGet('id') != "undefined")
getPlayer('id', parseGet('id')); getPlayer('id', parseGet('id'));
else if (parseGet('name') != "undefined") else if (parseGet('name') != "undefined")
getPlayer('name', parseGet('name')); getPlayer('name', parseGet('name'));
else { else {
getPlayer('recent', '1'); getRecentPlayers(0);
} }
}); });
@ -99,6 +110,11 @@
</div> </div>
<hr /> <hr />
<div id="paginationButtons" class="table">
<div id="previousPage" class="tableCell"><a href=# onclick="getRecentPlayers(getPrevPage())"><<</a></div>
<div id="nextPage" class="tableCell"><a href=# onclick="getRecentPlayers(getNextPage())">>></a></div>
</div>
<script> <script>
$('.searchButton').click(function () { $('.searchButton').click(function () {
if ($('.search').val().length > 0) if ($('.search').val().length > 0)

View File

@ -117,18 +117,23 @@ namespace StatsPlugin
int inactiveDays = 30; int inactiveDays = 30;
try try
{
if (E.Data.Length > 0)
{ {
inactiveDays = Int32.Parse(E.Data); inactiveDays = Int32.Parse(E.Data);
if (inactiveDays < 1) if (inactiveDays < 1)
throw new FormatException(); throw new FormatException();
} }
}
catch (FormatException) catch (FormatException)
{ {
await E.Origin.Tell("Invalid number of inactive days"); await E.Origin.Tell("Invalid number of inactive days");
return;
} }
E.Owner.Manager.GetClientDatabase().PruneAdmins(inactiveDays); E.Owner.Manager.GetClientDatabase().PruneAdmins(inactiveDays);
await E.Origin.Tell("Pruned inactive privileged users");
} }
} }

View File

@ -54,6 +54,7 @@ ___
|findall|fa|find a player by their aliase(s)|False|!fa \<player\>|Administrator| |findall|fa|find a player by their aliase(s)|False|!fa \<player\>|Administrator|
|map|m|change to specified map|False|!m \<map\>|Administrator| |map|m|change to specified map|False|!m \<map\>|Administrator|
|maprotate|mr|cycle to the next map in rotation|False|!mr |Administrator| |maprotate|mr|cycle to the next map in rotation|False|!mr |Administrator|
|mask|hide|hide your online presence from online admin list|False|!hide |Administrator|
|plugins|p|view all loaded plugins|False|!p |Administrator| |plugins|p|view all loaded plugins|False|!p |Administrator|
|alias|known|get past aliases and ips of a player|True|!known \<player\>|Moderator| |alias|known|get past aliases and ips of a player|True|!known \<player\>|Moderator|
|baninfo|bi|get information about a ban for a player|True|!bi \<player\>|Moderator| |baninfo|bi|get information about a ban for a player|True|!bi \<player\>|Moderator|

View File

@ -114,6 +114,7 @@ namespace SharedLibrary.Commands
{ {
await E.Owner.ExecuteEvent(new Event(Event.GType.Kick, E.Data, E.Origin, E.Target, E.Owner)); await E.Owner.ExecuteEvent(new Event(Event.GType.Kick, E.Data, E.Origin, E.Target, E.Owner));
await E.Target.Kick(E.Target.lastOffense, E.Origin); await E.Target.Kick(E.Target.lastOffense, E.Origin);
await E.Origin.Tell($"^5{E.Target} ^7has been kicked");
} }
else 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}");
@ -174,7 +175,7 @@ namespace SharedLibrary.Commands
if (E.Origin.Level > E.Target.Level) if (E.Origin.Level > E.Target.Level)
{ {
await E.Target.TempBan(Message, length, E.Origin); await E.Target.TempBan(Message, length, E.Origin);
await E.Origin.Tell($"Successfully temp banned ^5{E.Target.Name} ^7for ^5{length.TimeSpanText()}"); await E.Origin.Tell($"^5{E.Target} ^7has been temporarily banned for ^5{length.TimeSpanText()}");
} }
else else
await E.Origin.Tell("You cannot temp ban " + E.Target.Name); await E.Origin.Tell("You cannot temp ban " + E.Target.Name);
@ -212,7 +213,7 @@ namespace SharedLibrary.Commands
{ {
await E.Owner.ExecuteEvent(new Event(Event.GType.Ban, E.Data, E.Origin, E.Target, E.Owner)); await E.Owner.ExecuteEvent(new Event(Event.GType.Ban, E.Data, E.Origin, E.Target, E.Owner));
await E.Target.Ban(Message, E.Origin); await E.Target.Ban(Message, E.Origin);
await E.Origin.Tell(String.Format("Sucessfully banned ^5{0} ^7({1})", E.Target.Name, E.Target.NetworkID)); await E.Origin.Tell($"^5{E.Target} ^7has been permanently banned");
} }
else else
await E.Origin.Tell("You cannot ban " + E.Target.Name); await E.Origin.Tell("You cannot ban " + E.Target.Name);
@ -235,7 +236,7 @@ namespace SharedLibrary.Commands
public override async Task ExecuteAsync(Event E) public override async Task ExecuteAsync(Event E)
{ {
await E.Owner.Unban(E.Target); await E.Owner.Unban(E.Target);
await E.Origin.Tell($"Successfully unbanned {E.Target.Name}::{E.Target.NetworkID}"); await E.Origin.Tell($"Successfully unbanned {E.Target}");
} }
} }
@ -568,9 +569,9 @@ namespace SharedLibrary.Commands
{ {
E.Data = E.Data.Trim(); E.Data = E.Data.Trim();
if (E.Data.Length < 4) if (E.Data.Length < 3)
{ {
await E.Origin.Tell("You must enter at least 4 letters"); await E.Origin.Tell("You must enter at least 3 characters");
return; return;
} }
@ -587,14 +588,16 @@ namespace SharedLibrary.Commands
if (P == null) if (P == null)
continue; continue;
String lookingFor = String.Empty; String lookingFor = null;
foreach (String S in P.Names) foreach (String S in P.Names)
{ {
if (S.Contains(E.Data)) if (S.ToLower().Contains(E.Data.ToLower()))
lookingFor = S; lookingFor = S;
} }
lookingFor = lookingFor ?? P.Names.First();
Player Current = E.Owner.Manager.GetClientDatabase().GetPlayer(P.Number); Player Current = E.Owner.Manager.GetClientDatabase().GetPlayer(P.Number);
if (Current != null && Current.Name != lookingFor) if (Current != null && Current.Name != lookingFor)
@ -763,7 +766,7 @@ namespace SharedLibrary.Commands
E.Data = E.Data.RemoveWords(1); E.Data = E.Data.RemoveWords(1);
E.Owner.Reports.Add(new Report(E.Target, E.Origin, E.Data)); E.Owner.Reports.Add(new Report(E.Target, E.Origin, E.Data));
await E.Origin.Tell($"Successfully reported {E.Target.Name}"); await E.Origin.Tell($"Thank you for your report, and administrator has been notified");
await E.Owner.ExecuteEvent(new Event(Event.GType.Report, E.Data, E.Origin, E.Target, E.Owner)); await E.Owner.ExecuteEvent(new Event(Event.GType.Report, E.Data, E.Origin, E.Target, E.Owner));
await E.Owner.ToAdmins(String.Format("^5{0}^7->^1{1}^7: {2}", E.Origin.Name, E.Target.Name, E.Data)); await E.Owner.ToAdmins(String.Format("^5{0}^7->^1{1}^7: {2}", E.Origin.Name, E.Target.Name, E.Data));
} }
@ -840,12 +843,6 @@ namespace SharedLibrary.Commands
public override async Task ExecuteAsync(Event E) public override async Task ExecuteAsync(Event E)
{ {
if (E.Target == null)
{
await E.Origin.Tell("No bans for that player.");
return;
}
var B = E.Owner.Manager.GetClientPenalties().FindPenalties(E.Target); var B = E.Owner.Manager.GetClientPenalties().FindPenalties(E.Target);
var BannedPenalty = B.Find(b => b.BType > Penalty.Type.Kick && b.Expires > DateTime.Now); var BannedPenalty = B.Find(b => b.BType > Penalty.Type.Kick && b.Expires > DateTime.Now);
@ -880,7 +877,7 @@ namespace SharedLibrary.Commands
if (E.Target.Alias == null) if (E.Target.Alias == null)
{ {
await E.Target.Tell("Could not find alias info for that player."); await E.Target.Tell("Could not find alias info for that player");
return; return;
} }
@ -962,4 +959,3 @@ namespace SharedLibrary.Commands
} }
} }
} }

View File

@ -292,12 +292,10 @@ namespace SharedLibrary
} }
public List<Player> GetRecentPlayers() public List<Player> GetRecentPlayers(int count = 15, int offset = 0)
{ {
List<Player> returnssss = new List<Player>(); List<Player> returnssss = new List<Player>();
//String Query = String.Format($"SELECT * FROM CLIENTS LIMIT 15 OFFSET (SELECT COUNT(*) FROM CLIENTS)-15"); var Result = GetDataTable($"SELECT * FROM CLIENTS LIMIT {count} OFFSET (SELECT COUNT(*) FROM CLIENTS)-{offset + count}");
String Query = "SELECT * FROM CLIENTS ORDER BY LastConnection DESC LIMIT 25";
DataTable Result = GetDataTable(Query);
if (Result != null && Result.Rows.Count > 0) if (Result != null && Result.Rows.Count > 0)
{ {