view host/admin/src/private/tools/admin.html.luan @ 1995:301a6561fb6b

add host/admin
author Franklin Schmidt <fschmidt@gmail.com>
date Fri, 04 Jul 2025 10:25:38 -0600
parents
children
line wrap: on
line source

require "site:/init.luan"
local Luan = require "luan:Luan.luan"
local error = Luan.error
local Io = require "luan:Io.luan"
local uri = Io.uri or error()
local String = require "luan:String.luan"
local Http = require "luan:http/Http.luan"
require "java"
local Runtime = require "java:java.lang.Runtime"
local System = require "java:java.lang.System"
local Server = require "java:goodjava.webserver.Server"


return function()
	local action = Http.request.parameters.action
	if action == "gc" then
		System.gc()
		Http.response.send_redirect "admin.html"
		return
	end

	Io.stdout = Http.response.text_writer()

	local oneMega = 1024 * 1024;
	local free = Runtime.getRuntime().freeMemory() / oneMega;
	local total = Runtime.getRuntime().totalMemory() / oneMega;
	local used = total - free;

	local loadAverage = uri("os:uptime").read_text()
	--local loadAverage = new String(result).replaceAll(".*average:","");

	local threadPool = Server.threadPool
	local threads = threadPool.getPoolSize()
	local active_threads = threadPool.getActiveCount()
%>
<!doctype html>
<html lang="en">
	<body>

		<table>
			<tr>
				<td>Free Memory</td>
				<td>
					<%=String.format("%.2f",free)%> Mb
				</td>
			</tr>
			<tr>
				<td>Used Memory</td>
				<td><%=String.format("%.2f",used)%> Mb</td>
			</tr>
			<tr>
				<td>Total Memory</td>
				<td><%=String.format("%.2f",total)%> Mb</td>
			</tr>
			<tr>
				<td>Load Average</td>
				<td><%=loadAverage%></td>
			</tr>
			<tr>
				<td>Threads</td>
				<td><%= active_threads %> active, <%= threads - active_threads %> idle</td>
			</tr>
		<table>

		<p><a href="admin.html?action=gc">Run GC</a></p>

	</body>
</html>
<%
end