#!/usr/bin/lua

local uci = require('simple-uci').cursor()
local pretty_hostname = require 'pretty_hostname'

local site = require 'gluon.site'
local sysconfig = require 'gluon.sysconfig'
local platform = require 'gluon.platform'
local util = require 'gluon.util'
local has_vpn, vpn = pcall(require, 'gluon.mesh-vpn')

local pubkey
if has_vpn and vpn.enabled() then
	local _, active_vpn = vpn.get_active_provider()

	if active_vpn ~= nil then
		pubkey = active_vpn.public_key()
	end
end

local values = {
	{ 'Hostname', pretty_hostname.get(uci) },
	{ 'MAC address', sysconfig.primary_mac },
	{ 'Hardware model', platform.get_model() },
	{ 'Gluon version' .. " / " .. 'Site version', util.trim(util.readfile('/lib/gluon/gluon-version'))
		.. " / " .. util.trim(util.readfile('/lib/gluon/site-version')) },
	{ 'Firmware release', util.trim(util.readfile('/lib/gluon/release')) },
	{ 'Site', site.site_name() },
	{ 'Public VPN key', pubkey or 'n/a' },
}

local padTo = 24

for _, info in ipairs(values) do
	local labelLen = string.len(info[1]) + 1

	print(info[1] .. ':' .. string.rep(' ', padTo - labelLen), info[2])
end