2013-07-28 20:37:59 -04:00
|
|
|
-- Use a table for fast concatenation of strings
|
|
|
|
local SiteContent = {}
|
|
|
|
function Output(String)
|
|
|
|
table.insert(SiteContent, String)
|
|
|
|
end
|
|
|
|
|
2013-08-06 13:28:09 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2013-07-28 20:37:59 -04:00
|
|
|
function GetTableSize(Table)
|
|
|
|
local Size = 0
|
|
|
|
for key,value in pairs(Table) do
|
|
|
|
Size = Size + 1
|
|
|
|
end
|
|
|
|
return Size
|
|
|
|
end
|
|
|
|
|
2013-08-06 13:28:09 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2013-07-28 20:37:59 -04:00
|
|
|
function GetDefaultPage()
|
|
|
|
local PM = cRoot:Get():GetPluginManager()
|
|
|
|
|
|
|
|
local SubTitle = "Current Game"
|
|
|
|
local Content = ""
|
|
|
|
|
|
|
|
Content = Content .. "<h4>Server Name:</h4>"
|
|
|
|
Content = Content .. "<p>" .. cRoot:Get():GetServer():GetServerID() .. "</p>"
|
|
|
|
|
|
|
|
Content = Content .. "<h4>Plugins:</h4><ul>"
|
|
|
|
local AllPlugins = PM:GetAllPlugins()
|
|
|
|
for key,value in pairs(AllPlugins) do
|
|
|
|
if( value ~= nil and value ~= false ) then
|
|
|
|
Content = Content .. "<li>" .. key .. " V." .. value:GetVersion() .. "</li>"
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
Content = Content .. "</ul>"
|
|
|
|
Content = Content .. "<h4>Players:</h4><ul>"
|
|
|
|
|
|
|
|
local AddPlayerToTable = function( Player )
|
|
|
|
Content = Content .. "<li>" .. Player:GetName() .. "</li>"
|
|
|
|
end
|
|
|
|
cRoot:Get():ForEachPlayer( AddPlayerToTable )
|
|
|
|
|
|
|
|
Content = Content .. "</ul><br>";
|
|
|
|
|
|
|
|
return Content, SubTitle
|
|
|
|
end
|
|
|
|
|
2013-08-06 13:28:09 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2013-07-28 20:37:59 -04:00
|
|
|
function ShowPage(WebAdmin, TemplateRequest)
|
|
|
|
SiteContent = {}
|
|
|
|
local BaseURL = WebAdmin:GetBaseURL(TemplateRequest.Request.Path)
|
2014-08-31 08:39:58 -04:00
|
|
|
local Title = "MCServer WebAdmin"
|
2013-10-08 14:24:35 -04:00
|
|
|
local MemoryUsageKiB = cRoot:GetPhysicalRAMUsage()
|
2013-07-28 20:37:59 -04:00
|
|
|
local NumChunks = cRoot:Get():GetTotalChunkCount()
|
|
|
|
local PluginPage = WebAdmin:GetPage(TemplateRequest.Request)
|
|
|
|
local PageContent = PluginPage.Content
|
|
|
|
local SubTitle = PluginPage.PluginName
|
|
|
|
if (PluginPage.TabName ~= "") then
|
|
|
|
SubTitle = PluginPage.PluginName .. " - " .. PluginPage.TabName
|
|
|
|
end
|
|
|
|
if (PageContent == "") then
|
|
|
|
PageContent, SubTitle = GetDefaultPage()
|
|
|
|
end
|
|
|
|
|
|
|
|
Output([[
|
|
|
|
<!DOCTYPE html>
|
|
|
|
<head>
|
|
|
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
|
|
|
<link rel="icon" href="data:application/octet-stream;base64,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
|
|
|
|
<title>]] .. Title .. [[</title>
|
2014-08-31 08:39:58 -04:00
|
|
|
<link rel="stylesheet" type="text/css" media="screen" href="/style.css">
|
2013-07-28 20:37:59 -04:00
|
|
|
</head>
|
|
|
|
|
|
|
|
<body>
|
|
|
|
<div id="wrapper">
|
|
|
|
<!-- h1 tag stays for the logo, you can use the a tag for linking the index page -->
|
|
|
|
<h1>
|
|
|
|
<a href="]] .. BaseURL .. [["><span>MCServer</span></a>
|
|
|
|
</h1>
|
|
|
|
<div id="containerHolder">
|
|
|
|
<div id="container">
|
|
|
|
<div id="sidebar">
|
|
|
|
<ul class="sideNav">
|
|
|
|
]])
|
2013-08-06 13:28:09 -04:00
|
|
|
|
2013-07-28 20:37:59 -04:00
|
|
|
|
|
|
|
local AllPlugins = WebAdmin:GetPlugins()
|
|
|
|
for key,value in pairs(AllPlugins) do
|
|
|
|
local PluginWebTitle = value:GetWebTitle()
|
|
|
|
local TabNames = value:GetTabNames()
|
|
|
|
if (GetTableSize(TabNames) > 0) then
|
|
|
|
Output("<li>"..PluginWebTitle.."</li>");
|
|
|
|
|
|
|
|
for webname,prettyname in pairs(TabNames) do
|
|
|
|
Output("<li><a href='" .. BaseURL .. PluginWebTitle .. "/" .. webname .. "'>" .. prettyname .. "</a></li>")
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
2013-08-06 13:28:09 -04:00
|
|
|
|
2013-07-28 20:37:59 -04:00
|
|
|
|
|
|
|
Output([[
|
|
|
|
</ul>
|
|
|
|
<!-- // .sideNav -->
|
|
|
|
</div>
|
|
|
|
<!-- // #sidebar -->
|
|
|
|
<!-- h2 stays for breadcrumbs -->
|
|
|
|
<h2>Welcome ]] .. TemplateRequest.Request.Username .. [[</h2>
|
|
|
|
<div id="main">
|
|
|
|
<h3>]] .. SubTitle .. [[</h3>
|
|
|
|
]] .. PageContent .. [[
|
|
|
|
</div>
|
|
|
|
<!-- // #main -->
|
|
|
|
|
|
|
|
<div class="clear"></div>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
<!-- // #container -->
|
|
|
|
</div>
|
|
|
|
<!-- // #containerHolder -->
|
|
|
|
|
2013-09-21 13:00:01 -04:00
|
|
|
<p id="footer">MCServer is using: ]] .. MemoryUsageKiB / 1024 .. [[ MiB of memory; Current chunk count: ]] .. NumChunks .. [[ </p>
|
2013-07-28 20:37:59 -04:00
|
|
|
</div>
|
|
|
|
<!-- // #wrapper -->
|
|
|
|
</body>
|
|
|
|
</html>
|
|
|
|
]])
|
|
|
|
|
|
|
|
return table.concat(SiteContent)
|
2014-08-31 08:39:58 -04:00
|
|
|
end
|