import type { Metadata } from "next" import { getTranslations, getMessages, setRequestLocale } from "next-intl/server" import { Link } from "@/i18n/navigation" import { DocHeader } from "@/components/ui/doc-header" import { Callout } from "@/components/ui/callout" export async function generateMetadata({ params, }: { params: Promise<{ locale: string }> }): Promise { const { locale } = await params const t = await getTranslations({ locale, namespace: "docs.settings.showVersionInformation.meta" }) return { title: t("title"), description: t("description"), openGraph: { title: t("ogTitle"), description: t("ogDescription"), type: "article", url: "https://macrimi.github.io/ProxMenux/docs/settings/show-version-information", }, } } type ReportRow = { section: string; source: string; content?: string; contentRich?: string } type RelatedItem = { href: string; label: string; tail?: string } export default async function ShowVersionInformationPage({ params, }: { params: Promise<{ locale: string }> }) { const { locale } = await params setRequestLocale(locale) const t = await getTranslations({ locale, namespace: "docs.settings.showVersionInformation" }) const messages = (await getMessages({ locale })) as unknown as { docs: { settings: { showVersionInformation: { reports: { rows: ReportRow[] } related: { items: RelatedItem[] } } } } } const reportRows = messages.docs.settings.showVersionInformation.reports.rows const relatedItems = messages.docs.settings.showVersionInformation.related.items const code = (chunks: React.ReactNode) => {chunks} return (
{t("intro.body")}

{t("reports.heading")}

{reportRows.map((row, idx) => ( ))}
{t("reports.headerSection")} {t("reports.headerSource")} {t("reports.headerContent")}
{row.section} {row.source} {row.contentRich ? t.rich(`reports.rows.${idx}.contentRich`, { code }) : row.content}

{t("sampleHeading")}

{`Current ProxMenux version: 1.2.3

Installation type:
✓ Translation Version (Multi-language support)

Installed components:
✓ post_install_settings: installed
✓ post_install_system: installed
✓ post_install_security: installed
✓ proxmenux_monitor: installed
✓ fail2ban: installed
✗ lynis: removed

ProxMenux files:
✓ menu → /usr/local/bin/menu
✓ utils.sh → /usr/local/share/proxmenux/utils.sh
✓ config.json → /usr/local/share/proxmenux/config.json
✓ version.txt → /usr/local/share/proxmenux/version.txt
✓ cache.json → /usr/local/share/proxmenux/cache.json

Virtual Environment:
✓ Installed → /opt/googletrans-env
✓ pip: Installed → /opt/googletrans-env/bin/pip

Current language:
es`}

{t("manualHeading")}

{`# Version
cat /usr/local/share/proxmenux/version.txt

# Install type detection (replicates the script's logic)
[[ -d /opt/googletrans-env ]] && echo "venv: yes" || echo "venv: no"
jq -r '.language // "missing"' /usr/local/share/proxmenux/config.json

# All component statuses
jq 'to_entries[] | "\\(.key): \\(.value)"' /usr/local/share/proxmenux/config.json

# Current language
jq -r '.language' /usr/local/share/proxmenux/config.json`}

{t("troubleshoot.heading")}

{t.rich("troubleshoot.unknownBody", { code })} {t.rich("troubleshoot.noConfigBody", { code })} {t.rich("troubleshoot.wrongStatusBody", { code })}

{t("related.heading")}

    {relatedItems.map((item) => (
  • {item.label} {item.tail}
  • ))}
) }