mirror of
https://github.com/RaidMax/IW4M-Admin.git
synced 2025-06-10 23:31:13 -05:00
Massive refactoring and rudimentary plugin support.
This commit is contained in:
@ -8,6 +8,8 @@ using System.Web;
|
||||
using Kayak;
|
||||
using Kayak.Http;
|
||||
using System.Net;
|
||||
using SharedLibrary;
|
||||
using IW4MAdmin;
|
||||
|
||||
|
||||
#if ENABLED_CRAP_CODE_THAT_NEEDS_TO_BE_REWRITTEN
|
||||
@ -15,7 +17,7 @@ namespace IW4MAdmin_Web
|
||||
{
|
||||
class Client
|
||||
{
|
||||
public Client ( WebFront.Page req, int cur, IDictionary<String, String> inc, String D, IW4MAdmin.Player P)
|
||||
public Client ( WebFront.Page req, int cur, IDictionary<String, String> inc, String D, Player P)
|
||||
{
|
||||
requestedPage = req;
|
||||
requestedPageNumber = cur;
|
||||
@ -28,13 +30,13 @@ namespace IW4MAdmin_Web
|
||||
public int requestedPageNumber { get; private set; }
|
||||
public IDictionary<String, String> requestOrigin { get; private set; }
|
||||
public String requestData { get; private set; }
|
||||
public IW4MAdmin.Player playerRequesting { get; private set; }
|
||||
public Player playerRequesting { get; private set; }
|
||||
|
||||
}
|
||||
|
||||
class WebFront
|
||||
{
|
||||
private IW4MAdmin.Server[] Servers;
|
||||
private Server[] Servers;
|
||||
|
||||
public enum Page
|
||||
{
|
||||
@ -46,7 +48,7 @@ namespace IW4MAdmin_Web
|
||||
|
||||
public WebFront()
|
||||
{
|
||||
Servers = IW4MAdmin.Program.getServers();
|
||||
Servers = Program.getServers();
|
||||
}
|
||||
|
||||
public void Init()
|
||||
@ -62,7 +64,7 @@ namespace IW4MAdmin_Web
|
||||
}
|
||||
}
|
||||
|
||||
private IScheduler webSchedule;
|
||||
public IScheduler webSchedule;
|
||||
private IServer webServer;
|
||||
}
|
||||
|
||||
@ -88,14 +90,14 @@ namespace IW4MAdmin_Web
|
||||
static public String parseMacros(String input, WebFront.Page Page, int server, int Pagination, bool logged, String Data)
|
||||
{
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
IW4MAdmin.Server[] Servers= IW4MAdmin.Program.getServers();
|
||||
Server[] Servers= Program.getServers();
|
||||
switch (input)
|
||||
{
|
||||
case "SERVERS":
|
||||
int cycleFix = 0;
|
||||
for (int i = 0; i < Servers.Count(); i++)
|
||||
{
|
||||
if (IW4MAdmin.Program.getServers()[i] == null)
|
||||
if (Program.getServers()[i] == null)
|
||||
continue;
|
||||
|
||||
StringBuilder players = new StringBuilder();
|
||||
@ -106,7 +108,7 @@ namespace IW4MAdmin_Web
|
||||
int count = 0;
|
||||
double currentPlayers = Servers[i].statusPlayers.Count;
|
||||
|
||||
foreach (IW4MAdmin.Player P in Servers[i].getPlayers())
|
||||
foreach (Player P in Servers[i].getPlayers())
|
||||
{
|
||||
if (P == null)
|
||||
continue;
|
||||
@ -126,7 +128,7 @@ namespace IW4MAdmin_Web
|
||||
}
|
||||
}
|
||||
|
||||
players.AppendFormat("<td><a href='/{0}/{1}/userip/?player'>{2}</a></td>", i, P.getDBID(), IW4MAdmin.Utilities.nameHTMLFormatted(P));
|
||||
players.AppendFormat("<td><a href='/{0}/{1}/userip/?player'>{2}</a></td>", i, P.databaseID, Utilities.nameHTMLFormatted(P));
|
||||
|
||||
if (count % 2 != 0)
|
||||
{
|
||||
@ -151,7 +153,7 @@ namespace IW4MAdmin_Web
|
||||
<table cellpadding='0' cellspacing='0' class='players'>
|
||||
{5}
|
||||
</table>",
|
||||
Servers[i].getName(), Servers[i].getMap(), Servers[i].getClientNum() + "/" + Servers[i].getMaxClients(), IW4MAdmin.Utilities.gametypeLocalized(Servers[i].getGametype()), i, players.ToString());
|
||||
Servers[i].getName(), Servers[i].getMap(), Servers[i].getClientNum() + "/" + Servers[i].getMaxClients(), Utilities.gametypeLocalized(Servers[i].getGametype()), i, players.ToString());
|
||||
buffer.AppendFormat("<div class='chatHistory' id='chatHistory_{0}'></div><script type='text/javascript'>$( document ).ready(function() {{ setInterval({1}loadChatMessages({0}, '#chatHistory_{0}'){1}, 2500); }});</script><div class='null' style='clear:both;'></div>", i, '\"');
|
||||
if (Servers[i].getClientNum() > 0)
|
||||
buffer.AppendFormat("<form class='chatOutFormat' action={1}javascript:chatRequest({0}, 'chatEntry_{0}'){1}><input class='chatFormat_text' type='text' placeholder='Enter a message...' id='chatEntry_{0}'/><input class='chatFormat_submit' type='submit'/></form>", i, '\"');
|
||||
@ -162,7 +164,7 @@ namespace IW4MAdmin_Web
|
||||
return "IW4M Administration";
|
||||
case "BANS":
|
||||
buffer.Append("<table cellspacing=0 class=bans>");
|
||||
int totalBans = IW4MAdmin.Program.getServers()[0].Bans.Count;
|
||||
int totalBans = Program.getServers()[0].Bans.Count;
|
||||
int range;
|
||||
int start = Pagination*30;
|
||||
cycleFix = 0;
|
||||
@ -174,38 +176,38 @@ namespace IW4MAdmin_Web
|
||||
else
|
||||
range = 30;
|
||||
|
||||
List<IW4MAdmin.Ban> Bans = new List<IW4MAdmin.Ban>();
|
||||
List<Ban> Bans = new List<Ban>();
|
||||
|
||||
if (totalBans > 0)
|
||||
Bans = IW4MAdmin.Program.getServers()[0].Bans.GetRange(start, range).OrderByDescending(x => x.getTime()).ToList();
|
||||
Bans = Program.getServers()[0].Bans.GetRange(start, range).OrderByDescending(x => x.When).ToList();
|
||||
else
|
||||
Bans.Add(new IW4MAdmin.Ban("No Bans", "0", "0", DateTime.Now, ""));
|
||||
Bans.Add(new Ban("No Bans", "0", "0", DateTime.Now, ""));
|
||||
|
||||
|
||||
buffer.Append("<h1 style=margin-top: 0;>{{TIME}}</h1><hr /><tr><th>Name</th><th style=text-align:left;>Offense</th><th style=text-align:left;>Banned By</th><th style='width: 175px; text-align:right;padding-right: 80px;'>Time</th></tr>");
|
||||
|
||||
if (Bans[0] != null)
|
||||
buffer = buffer.Replace("{{TIME}}", "From " + IW4MAdmin.Utilities.timePassed(Bans[0].getTime()) + " ago" + " — " + totalBans + " total");
|
||||
buffer = buffer.Replace("{{TIME}}", "From " + Utilities.timePassed(Bans[0].When) + " ago" + " — " + totalBans + " total");
|
||||
|
||||
for (int i = 0; i < Bans.Count; i++)
|
||||
{
|
||||
if (Bans[i] == null)
|
||||
continue;
|
||||
|
||||
IW4MAdmin.Player P = IW4MAdmin.Program.getServers()[0].clientDB.getPlayer(Bans[i].getID(), -1);
|
||||
IW4MAdmin.Player B = IW4MAdmin.Program.getServers()[0].clientDB.getPlayer(Bans[i].getBanner(), -1);
|
||||
Player P = Program.getServers()[0].clientDB.getPlayer(Bans[i].npID, -1);
|
||||
Player B = Program.getServers()[0].clientDB.getPlayer(Bans[i].bannedByID, -1);
|
||||
|
||||
if (P == null)
|
||||
P = new IW4MAdmin.Player("Unknown", "n/a", 0, 0, 0, "Unknown", 0, "");
|
||||
P = new Player("Unknown", "n/a", 0, 0, 0, "Unknown", 0, "");
|
||||
if (B == null)
|
||||
B = new IW4MAdmin.Player("Unknown", "n/a", 0, 0, 0, "Unknown", 0, "");
|
||||
B = new Player("Unknown", "n/a", 0, 0, 0, "Unknown", 0, "");
|
||||
|
||||
if (P.getLastO() == String.Empty)
|
||||
P.LastOffense = "Evade";
|
||||
if (P.lastOffense == String.Empty)
|
||||
P.lastOffense = "Evade";
|
||||
|
||||
if (P != null && B != null)
|
||||
{
|
||||
if (B.getID() == P.getID())
|
||||
if (B.npID == P.npID)
|
||||
B.updateName("IW4MAdmin"); // shh it will all be over soon
|
||||
|
||||
String Prefix;
|
||||
@ -213,8 +215,8 @@ namespace IW4MAdmin_Web
|
||||
Prefix = "class=row-grey";
|
||||
else
|
||||
Prefix = "class=row-white";
|
||||
String Link = "/" + server + "/" + P.getDBID() + "/userip/?player";
|
||||
buffer.AppendFormat("<tr {4}><td><a href='{5}'>{0}</a></th><td style='border-left: 3px solid #bbb; text-align:left;'>{1}</td><td style='border-left: 3px solid #bbb;text-align:left;'>{2}</td><td style='width: 175px; text-align:right;'>{3}</td></tr></div>", P.getName(), P.getLastO(), IW4MAdmin.Utilities.nameHTMLFormatted(B), Bans[i].getWhen(), Prefix, Link);
|
||||
String Link = "/" + server + "/" + P.databaseID + "/userip/?player";
|
||||
buffer.AppendFormat("<tr {4}><td><a href='{5}'>{0}</a></th><td style='border-left: 3px solid #bbb; text-align:left;'>{1}</td><td style='border-left: 3px solid #bbb;text-align:left;'>{2}</td><td style='width: 175px; text-align:right;'>{3}</td></tr></div>", P.Name, P.lastOffense, Utilities.nameHTMLFormatted(B), Bans[i].getWhen(), Prefix, Link);
|
||||
cycleFix++;
|
||||
}
|
||||
}
|
||||
@ -237,7 +239,7 @@ namespace IW4MAdmin_Web
|
||||
range = (totalStats - start);
|
||||
else
|
||||
range = 30;
|
||||
List<IW4MAdmin.Stats> Stats = Servers[server].statDB.getMultipleStats(start, range).OrderByDescending(x => x.Skill).ToList();
|
||||
List<Stats> Stats = Servers[server].statDB.getMultipleStats(start, range).OrderByDescending(x => x.Skill).ToList();
|
||||
buffer.Append("<tr><th style=text-align:left;>Name</th><th style=text-align:left;>Kills</th><th style=text-align:left;>Deaths</th><th style=text-align:left;>KDR</th><th style='width: 175px; text-align:right;'>Rating</th></tr>");
|
||||
cycleFix = 0;
|
||||
for (int i = 0; i < totalStats; i++)
|
||||
@ -245,7 +247,7 @@ namespace IW4MAdmin_Web
|
||||
if (i >= Stats.Count -1 || Stats[i] == null )
|
||||
continue;
|
||||
|
||||
IW4MAdmin.Player P = Servers[server].clientDB.getPlayer(Stats[i].statIndex);
|
||||
Player P = Servers[server].clientDB.getPlayer(Stats[i].statIndex);
|
||||
|
||||
if (P == null)
|
||||
continue;
|
||||
@ -261,8 +263,8 @@ namespace IW4MAdmin_Web
|
||||
else
|
||||
Prefix = "class=row-white";
|
||||
|
||||
String Link = "/" + server + "/" + P.getDBID() + "/userip/?player";
|
||||
buffer.AppendFormat("<tr {5}><td><a href='{6}'>{0}</a></td><td style='border-left: 3px solid #bbb; text-align:left;'>{1}</td><td style='border-left: 3px solid #bbb;text-align:left;'>{2}</td><td style='border-left: 3px solid #bbb;text-align:left;'>{3}</td><td style='width: 175px; text-align:right;'>{4}</td></tr></div>", P.getName(), P.stats.Kills, P.stats.Deaths, P.stats.KDR, P.stats.Skill, Prefix, Link);
|
||||
String Link = "/" + server + "/" + P.databaseID + "/userip/?player";
|
||||
buffer.AppendFormat("<tr {5}><td><a href='{6}'>{0}</a></td><td style='border-left: 3px solid #bbb; text-align:left;'>{1}</td><td style='border-left: 3px solid #bbb;text-align:left;'>{2}</td><td style='border-left: 3px solid #bbb;text-align:left;'>{3}</td><td style='width: 175px; text-align:right;'>{4}</td></tr></div>", P.Name, P.stats.Kills, P.stats.Deaths, P.stats.KDR, P.stats.Skill, Prefix, Link);
|
||||
cycleFix++;
|
||||
}
|
||||
}
|
||||
@ -271,7 +273,7 @@ namespace IW4MAdmin_Web
|
||||
return buffer.ToString().Replace("{{TOP}}", (start + 1).ToString());
|
||||
case "PLAYER":
|
||||
buffer.Append("<table class='player_info'><tr><th>Name</th><th>Aliases</th><th>IP</th><th>Rating</th><th>Level</th><th>Connections</th><th>Last Seen</th><th>Profile</th>");
|
||||
List<IW4MAdmin.Player> matchingPlayers = new List<IW4MAdmin.Player>();
|
||||
List<Player> matchingPlayers = new List<Player>();
|
||||
|
||||
if (Data == null)
|
||||
matchingPlayers.Add(Servers[server].clientDB.getPlayer(Pagination));
|
||||
@ -284,12 +286,12 @@ namespace IW4MAdmin_Web
|
||||
var p = Servers[server].clientDB.getPlayer(a.getNumber());
|
||||
if (p != null)
|
||||
{
|
||||
List<IW4MAdmin.Player> aliases = new List<IW4MAdmin.Player>();
|
||||
List<Player> aliases = new List<Player>();
|
||||
Servers[server].getAliases(aliases, p);
|
||||
|
||||
foreach (var pa in aliases)
|
||||
{
|
||||
if (!matchingPlayers.Exists(x => x.getDBID() == pa.getDBID()))
|
||||
if (!matchingPlayers.Exists(x => x.databaseID == pa.databaseID))
|
||||
matchingPlayers.Add(pa);
|
||||
}
|
||||
}
|
||||
@ -301,31 +303,31 @@ namespace IW4MAdmin_Web
|
||||
|
||||
else
|
||||
{
|
||||
foreach (IW4MAdmin.Player Player in matchingPlayers)
|
||||
foreach (Player Player in matchingPlayers)
|
||||
{
|
||||
if (Player == null)
|
||||
continue;
|
||||
|
||||
buffer.Append("<tr>");
|
||||
StringBuilder str = new StringBuilder();
|
||||
List<IW4MAdmin.Player> aliases = new List<IW4MAdmin.Player>();
|
||||
List<Player> aliases = new List<Player>();
|
||||
Servers[server].getAliases(aliases, Player);
|
||||
|
||||
foreach (IW4MAdmin.Player a in aliases)
|
||||
foreach (Player a in aliases)
|
||||
{
|
||||
if (Data != null)
|
||||
{
|
||||
if (a.Alias.getNames().Exists(p => p.ToLower().Contains(Data.ToLower())) && a.getDBID() != Player.getDBID())
|
||||
if (a.Alias.getNames().Exists(p => p.ToLower().Contains(Data.ToLower())) && a.databaseID != Player.databaseID)
|
||||
{
|
||||
str.AppendFormat("<span>{0}</span><br/>", a.getName());
|
||||
str.AppendFormat("<span>{0}</span><br/>", a.Name);
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
str.AppendFormat("<span>{0}</span><br/>", a.getName());
|
||||
str.AppendFormat("<span>{0}</span><br/>", a.Name);
|
||||
}
|
||||
|
||||
Player.stats = Servers[server].statDB.getStats(Player.getDBID());
|
||||
Player.stats = Servers[server].statDB.getStats(Player.databaseID);
|
||||
String Rating = String.Empty;
|
||||
|
||||
if (Player.stats == null)
|
||||
@ -337,7 +339,7 @@ namespace IW4MAdmin_Web
|
||||
|
||||
if (logged)
|
||||
{
|
||||
foreach (IW4MAdmin.Player a in aliases)
|
||||
foreach (Player a in aliases)
|
||||
{
|
||||
foreach (String ip in a.Alias.getIPS())
|
||||
{
|
||||
@ -351,18 +353,18 @@ namespace IW4MAdmin_Web
|
||||
IPs.Append("XXX.XXX.XXX.XXX");
|
||||
|
||||
Int64 forumID = 0;
|
||||
if (Player.getID().Length == 16)
|
||||
if (Player.npID.Length == 16)
|
||||
{
|
||||
forumID = Int64.Parse(Player.getID().Substring(0, 16), NumberStyles.AllowHexSpecifier);
|
||||
forumID = Int64.Parse(Player.npID.Substring(0, 16), NumberStyles.AllowHexSpecifier);
|
||||
forumID = forumID - 76561197960265728;
|
||||
}
|
||||
|
||||
String Screenshot = String.Empty;
|
||||
|
||||
if (logged)
|
||||
Screenshot = String.Format("<a href='http://server.nbsclan.org/screen.php?id={0}&name={1}'><div style='background-image:url(http://server.nbsclan.org/shutter.png); width: 20px; height: 20px;float: right; position:relative; right: 21%; background-size: contain;'></div></a>", forumID, Player.getName());
|
||||
Screenshot = String.Format("<a href='http://server.nbsclan.org/screen.php?id={0}&name={1}'><div style='background-image:url(http://server.nbsclan.org/shutter.png); width: 20px; height: 20px;float: right; position:relative; right: 21%; background-size: contain;'></div></a>", forumID, Player.Name);
|
||||
|
||||
buffer.AppendFormat("<td><a style='float: left;' href='{9}'>{0}</a>{10}</td><td>{1}</td><td>{2}</td><td>{3}</td><td>{4}</td><td>{5}</td><td>{6} ago</td><td><a href='https://repziw4.de/memberlist.php?mode=viewprofile&u={7}'>{8}</a></td>", Player.getName(), str, IPs, Rating, IW4MAdmin.Utilities.nameHTMLFormatted(Player.getLevel()), Player.getConnections(), Player.getLastConnection(), forumID, Player.getName(), "/0/" + Player.getDBID() + "/userip/?player", Screenshot);
|
||||
buffer.AppendFormat("<td><a style='float: left;' href='{9}'>{0}</a>{10}</td><td>{1}</td><td>{2}</td><td>{3}</td><td>{4}</td><td>{5}</td><td>{6} ago</td><td><a href='https://repziw4.de/memberlist.php?mode=viewprofile&u={7}'>{8}</a></td>", Player.Name, str, IPs, Rating, Utilities.nameHTMLFormatted(Player.Level), Player.Connections, Player.getLastConnection(), forumID, Player.Name, "/0/" + Player.databaseID + "/userip/?player", Screenshot);
|
||||
buffer.Append("</tr>");
|
||||
}
|
||||
|
||||
@ -379,7 +381,7 @@ namespace IW4MAdmin_Web
|
||||
{
|
||||
String output = input;
|
||||
|
||||
bool logged = IW4MAdmin.Program.getServers()[server].clientDB.getAdmins().Exists(player => player.getIP() == C.requestOrigin["Host"].Split(':')[0]);
|
||||
bool logged = Program.getServers()[server].clientDB.getAdmins().Exists(player => player.IP == C.requestOrigin["Host"].Split(':')[0]);
|
||||
|
||||
switch (C.requestedPage)
|
||||
{
|
||||
@ -393,12 +395,12 @@ namespace IW4MAdmin_Web
|
||||
output = output.Replace("{{STATS}}", parseMacros("STATS", C.requestedPage, server, C.requestedPageNumber, logged, C.requestData));
|
||||
break;
|
||||
case WebFront.Page.player:
|
||||
output = output.Replace("{{PLAYER}}", parseMacros("PLAYER", C.requestedPage, server, C.requestedPageNumber, (C.playerRequesting.getLevel() > IW4MAdmin.Player.Permission.Flagged), C.requestData));
|
||||
output = output.Replace("{{PLAYER}}", parseMacros("PLAYER", C.requestedPage, server, C.requestedPageNumber, (C.playerRequesting.Level > Player.Permission.Flagged), C.requestData));
|
||||
break;
|
||||
}
|
||||
|
||||
output = output.Replace("{{TITLE}}", "IW4M Administration");
|
||||
output = output.Replace("{{VERSION}}", IW4MAdmin.Program.Version.ToString());
|
||||
output = output.Replace("{{VERSION}}", Program.Version.ToString());
|
||||
|
||||
return output;
|
||||
}
|
||||
@ -411,7 +413,7 @@ namespace IW4MAdmin_Web
|
||||
//Program.getManager().mainLog.Write(e.InnerException.Message);
|
||||
//Console.Write(e.InnerException);
|
||||
// e.DebugStackTrace();
|
||||
IW4MAdmin.Program.getManager().mainLog.Write("Web front encountered an error!");
|
||||
Program.getManager().mainLog.Write("Web front encountered an error!");
|
||||
}
|
||||
|
||||
public void OnStop(IScheduler scheduler)
|
||||
@ -432,11 +434,11 @@ namespace IW4MAdmin_Web
|
||||
|
||||
if (request.Uri.StartsWith("/"))
|
||||
{
|
||||
IW4MAdmin.file Header = new IW4MAdmin.file("webfront\\header.html");
|
||||
IFile Header = new IFile("webfront\\header.html");
|
||||
var header = Header.getLines();
|
||||
Header.Close();
|
||||
|
||||
IW4MAdmin.file Footer = new IW4MAdmin.file("webfront\\footer.html");
|
||||
IFile Footer = new IFile("webfront\\footer.html");
|
||||
var footer = Footer.getLines();
|
||||
Footer.Close();
|
||||
|
||||
@ -451,14 +453,14 @@ namespace IW4MAdmin_Web
|
||||
Int32.TryParse(req[1], out page);
|
||||
}
|
||||
|
||||
if (IW4MAdmin.Program.getServers().Length < 1)
|
||||
if (Program.getServers().Length < 1)
|
||||
{
|
||||
body = "<h1 style='font-family: Segoe UI;'>IT SEEMS LIKE THERE ARE NO LONGER ANY SERVERS BEING MONITORED!</h1>";
|
||||
}
|
||||
|
||||
else if (request.QueryString == "bans")
|
||||
{
|
||||
IW4MAdmin.file Bans = new IW4MAdmin.file("webfront\\bans.html");
|
||||
IFile Bans = new IFile("webfront\\bans.html");
|
||||
var bans = Bans.getLines();
|
||||
Bans.Close();
|
||||
Client toSend = new Client(WebFront.Page.bans, page, request.Headers, null, null);
|
||||
@ -467,7 +469,7 @@ namespace IW4MAdmin_Web
|
||||
|
||||
else if (request.QueryString == "stats")
|
||||
{
|
||||
IW4MAdmin.file Stats = new IW4MAdmin.file("webfront\\stats.html");
|
||||
IFile Stats = new IFile("webfront\\stats.html");
|
||||
var stats = Stats.getLines();
|
||||
Stats.Close();
|
||||
Client toSend = new Client(WebFront.Page.stats, page, request.Headers, null, null);
|
||||
@ -477,24 +479,25 @@ namespace IW4MAdmin_Web
|
||||
else if (request.QueryString == "playerhistory")
|
||||
{
|
||||
//type = "text/plain";
|
||||
if (IW4MAdmin.Program.getServers().Length < server)
|
||||
if (Program.getServers().Length < server)
|
||||
return;
|
||||
|
||||
StringBuilder test = new StringBuilder();
|
||||
test.Append("<script type='text/javascript' src='//www.google.com/jsapi'></script><div id='chart_div'></div>");
|
||||
test.Append("<script> var players = [");
|
||||
int count = 1;
|
||||
List<IW4MAdmin.pHistory> run = IW4MAdmin.Program.getServers()[server].playerHistory.ToList();
|
||||
foreach (IW4MAdmin.pHistory i in run) //need to reverse for proper timeline
|
||||
IW4MServer castServer = (IW4MServer)Program.getServers()[server];
|
||||
List<pHistory> run = castServer.playerHistory.ToList();
|
||||
foreach (pHistory i in run) //need to reverse for proper timeline
|
||||
{
|
||||
test.AppendFormat("[new Date({0}, {1}, {2}, {3}, {4}), {5}]", i.When.Year, i.When.Month - 1, i.When.Day, i.When.Hour, i.When.Minute, i.Players);
|
||||
if (count < IW4MAdmin.Program.getServers()[server].playerHistory.Count)
|
||||
if (count < run.Count)
|
||||
test.Append(",\n");
|
||||
count++;
|
||||
}
|
||||
test.Append("];\n");
|
||||
test.Append("</script>");
|
||||
IW4MAdmin.file Graph = new IW4MAdmin.file("webfront\\graph.html");
|
||||
IFile Graph = new IFile("webfront\\graph.html");
|
||||
var graph = Graph.getLines();
|
||||
Graph.Close();
|
||||
body = test.ToString() + graph ;
|
||||
@ -502,7 +505,7 @@ namespace IW4MAdmin_Web
|
||||
|
||||
else if (request.QueryString == "player")
|
||||
{
|
||||
IW4MAdmin.file Player = new IW4MAdmin.file("webfront\\player.html");
|
||||
IFile Player = new IFile("webfront\\player.html");
|
||||
var player = Player.getLines();
|
||||
Player.Close();
|
||||
String Data = null, IP = null, ID = null;
|
||||
@ -519,12 +522,12 @@ namespace IW4MAdmin_Web
|
||||
IP = req[2];
|
||||
}
|
||||
|
||||
if (IW4MAdmin.Program.getServers().Length < server)
|
||||
if (Program.getServers().Length < server)
|
||||
return;
|
||||
|
||||
IW4MAdmin.Player P = IW4MAdmin.Program.getServers()[server].clientDB.getPlayer(IP);
|
||||
Player P = Program.getServers()[server].clientDB.getPlayer(IP);
|
||||
if (P == null)
|
||||
P = new IW4MAdmin.Player("Guest", "Guest", 0, 0);
|
||||
P = new Player("Guest", "Guest", 0, 0);
|
||||
|
||||
Client toSend = new Client(WebFront.Page.player, page, request.Headers, Data, P);
|
||||
body = Macro.findMacros(header + player + footer, toSend, server);
|
||||
@ -534,17 +537,17 @@ namespace IW4MAdmin_Web
|
||||
{
|
||||
StringBuilder chatMessages = new StringBuilder();
|
||||
#if DEBUG
|
||||
// if (IW4MAdmin.Program.Servers[server].chatHistory.Count < 8)
|
||||
// IW4MAdmin.Program.Servers[server].chatHistory.Add(new IW4MAdmin.Chat(new IW4MAdmin.Player("TEST", "xuid", 0, 0), "TEST MESSAGE", DateTime.Now));
|
||||
// if (Program.Servers[server].chatHistory.Count < 8)
|
||||
// Program.Servers[server].chatHistory.Add(new Chat(new Player("TEST", "xuid", 0, 0), "TEST MESSAGE", DateTime.Now));
|
||||
#endif
|
||||
if (IW4MAdmin.Program.getServers().Length < server)
|
||||
if (Program.getServers().Length < server)
|
||||
return;
|
||||
|
||||
String IP, Text;
|
||||
if (req.Length > 3)
|
||||
{
|
||||
IP = req[2];
|
||||
Text = IW4MAdmin.Utilities.cleanChars(HttpUtility.UrlDecode(req[3]));
|
||||
Text = Utilities.cleanChars(HttpUtility.UrlDecode(req[3]));
|
||||
}
|
||||
|
||||
else
|
||||
@ -553,21 +556,21 @@ namespace IW4MAdmin_Web
|
||||
Text = null;
|
||||
}
|
||||
|
||||
if (IP == null && IW4MAdmin.Program.getServers()[server].getClientNum() > 0)
|
||||
if (IP == null && Program.getServers()[server].getClientNum() > 0)
|
||||
{
|
||||
chatMessages.Append("<table id='table_chatHistory'>");
|
||||
foreach (IW4MAdmin.Chat Message in IW4MAdmin.Program.getServers()[server].chatHistory)
|
||||
chatMessages.AppendFormat("<tr><td class='chat_name' style='text-align: left;'>{0}</td><td class='chat_message'>{1}</td><td class='chat_time' style='text-align: right;'>{2}</td></tr>", IW4MAdmin.Utilities.nameHTMLFormatted(Message.Origin), Message.Message, Message.timeString());
|
||||
foreach (Chat Message in Program.getServers()[server].chatHistory)
|
||||
chatMessages.AppendFormat("<tr><td class='chat_name' style='text-align: left;'>{0}</td><td class='chat_message'>{1}</td><td class='chat_time' style='text-align: right;'>{2}</td></tr>", Utilities.nameHTMLFormatted(Message.Origin), Message.Message, Message.timeString());
|
||||
chatMessages.Append("</table>");
|
||||
body = chatMessages.ToString();
|
||||
}
|
||||
|
||||
else if (Text != null && Text.Length > 4)
|
||||
{
|
||||
IW4MAdmin.Player requestPlayer = IW4MAdmin.Program.getServers()[server].clientDB.getPlayer(IP);
|
||||
Player requestPlayer = Program.getServers()[server].clientDB.getPlayer(IP);
|
||||
|
||||
if (requestPlayer != null)
|
||||
IW4MAdmin.Program.getServers()[server].webChat(requestPlayer, Text);
|
||||
Program.getServers()[server].webChat(requestPlayer, Text);
|
||||
}
|
||||
}
|
||||
|
||||
@ -576,24 +579,24 @@ namespace IW4MAdmin_Web
|
||||
type = "text/plain";
|
||||
StringBuilder banTXT = new StringBuilder();
|
||||
banTXT.AppendFormat("===========================================\nIW4M ADMIN PUBLIC BAN LIST\nGENERATED {0}\nIP---GUID---REASON---TIME\n===========================================\n", DateTime.Now.ToString());
|
||||
foreach (IW4MAdmin.Ban B in IW4MAdmin.Program.getServers()[0].Bans)
|
||||
foreach (Ban B in Program.getServers()[0].Bans)
|
||||
{
|
||||
if (B.getIP() != null && B.getIP() != String.Empty && B.getReason() != null && B.getReason() != String.Empty)
|
||||
banTXT.AppendFormat("{0}---{1}---{2}---{3}\n", B.getIP(), B.getID(), B.getReason().Trim(), Math.Round((B.getTime()-DateTime.MinValue).TotalSeconds, 0));
|
||||
if (B.IP != null && B.IP != String.Empty && B.Reason != null && B.Reason != String.Empty)
|
||||
banTXT.AppendFormat("{0}---{1}---{2}---{3}\n", B.IP, B.npID, B.Reason.Trim(), Math.Round((B.When-DateTime.MinValue).TotalSeconds, 0));
|
||||
}
|
||||
body = banTXT.ToString();
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
IW4MAdmin.file Main = new IW4MAdmin.file("webfront\\main.html");
|
||||
IFile Main = new IFile("webfront\\main.html");
|
||||
var main = Main.getLines();
|
||||
Main.Close();
|
||||
Client toSend = new Client(WebFront.Page.main, page, request.Headers, null, null);
|
||||
body = Macro.findMacros(header + main + footer, toSend, server);
|
||||
}
|
||||
|
||||
//IW4MAdmin.Program.getServers()[server].Log.Write("Webfront processed request for " + request.Uri, IW4MAdmin.Log.Level.Debug);
|
||||
//Program.getServers()[server].Log.Write("Webfront processed request for " + request.Uri, Log.Level.Debug);
|
||||
}
|
||||
|
||||
var headers = new HttpResponseHead()
|
||||
|
Reference in New Issue
Block a user