mirror of
https://github.com/MacRimi/ProxMenux.git
synced 2025-12-16 17:16:25 +00:00
Update web
This commit is contained in:
@@ -7,34 +7,52 @@ import type React from "react"
|
||||
const inter = Inter({ subsets: ["latin"] })
|
||||
|
||||
export const metadata = {
|
||||
title: "ProxMenux",
|
||||
title: "ProxMenux - Menu-Driven Script for Proxmox VE Management",
|
||||
generator: "Next.js",
|
||||
applicationName: "ProxMenux",
|
||||
referrer: "origin-when-cross-origin",
|
||||
keywords: ["Proxmox VE", "VE", "ProxMenux", "MacRimi", "menu-driven", "menu", "scripts", "virtualization"],
|
||||
authors: [{ name: "MacRimi" }],
|
||||
keywords: [
|
||||
"Proxmox VE",
|
||||
"Proxmox",
|
||||
"PVE",
|
||||
"ProxMenux",
|
||||
"MacRimi",
|
||||
"menu-driven",
|
||||
"menu script",
|
||||
"scripts",
|
||||
"virtualization",
|
||||
"automation",
|
||||
"server management",
|
||||
"VM management",
|
||||
"container management",
|
||||
"LXC",
|
||||
],
|
||||
authors: [{ name: "MacRimi", url: "https://github.com/MacRimi" }],
|
||||
creator: "MacRimi",
|
||||
publisher: "MacRimi",
|
||||
description:
|
||||
"A menu-driven script for Proxmox VE management, designed to simplify and streamline the execution of commands and tasks.",
|
||||
"ProxMenux is a powerful menu-driven script for Proxmox VE management, designed to simplify and streamline the execution of commands and tasks. Manage VMs, containers, networking, storage, and more with an intuitive interface.",
|
||||
formatDetection: {
|
||||
email: false,
|
||||
address: false,
|
||||
telephone: false,
|
||||
},
|
||||
metadataBase: new URL(`https://macrimi.github.io/ProxMenux/`),
|
||||
metadataBase: new URL("https://proxmenux.com"),
|
||||
alternates: {
|
||||
canonical: "https://proxmenux.com",
|
||||
},
|
||||
openGraph: {
|
||||
title: "ProxMenux",
|
||||
title: "ProxMenux - Menu-Driven Script for Proxmox VE Management",
|
||||
description:
|
||||
"A menu-driven script for Proxmox VE management, designed to simplify and streamline the execution of commands and tasks.",
|
||||
url: "https://macrimi.github.io/ProxMenux/",
|
||||
"ProxMenux is a powerful menu-driven script for Proxmox VE management, designed to simplify and streamline the execution of commands and tasks. Manage VMs, containers, networking, storage, and more.",
|
||||
url: "https://proxmenux.com",
|
||||
siteName: "ProxMenux",
|
||||
images: [
|
||||
{
|
||||
url: "https://macrimi.github.io/ProxMenux/main.png",
|
||||
url: "https://proxmenux.com/main.png",
|
||||
width: 1363,
|
||||
height: 735,
|
||||
alt: "ProxMenux",
|
||||
alt: "ProxMenux - Proxmox VE Management Interface",
|
||||
},
|
||||
],
|
||||
locale: "en_US",
|
||||
@@ -42,17 +60,29 @@ export const metadata = {
|
||||
},
|
||||
twitter: {
|
||||
card: "summary_large_image",
|
||||
title: "ProxMenux",
|
||||
title: "ProxMenux - Menu-Driven Script for Proxmox VE",
|
||||
description:
|
||||
"A menu-driven script for Proxmox VE management, designed to simplify and streamline the execution of commands and tasks.",
|
||||
images: ["https://macrimi.github.io/ProxMenux/main.png"],
|
||||
"Powerful menu-driven script for Proxmox VE management. Simplify VM, container, networking, and storage management with an intuitive interface.",
|
||||
images: ["https://proxmenux.com/main.png"],
|
||||
creator: "@MacRimi",
|
||||
},
|
||||
robots: {
|
||||
index: true,
|
||||
follow: true,
|
||||
googleBot: {
|
||||
index: true,
|
||||
follow: true,
|
||||
"max-video-preview": -1,
|
||||
"max-image-preview": "large",
|
||||
"max-snippet": -1,
|
||||
},
|
||||
},
|
||||
icons: {
|
||||
icon: [
|
||||
{ url: "https://macrimi.github.io/ProxMenux/favicon.ico", sizes: "any" },
|
||||
{ url: "https://macrimi.github.io/ProxMenux/icon.svg", type: "image/svg+xml" },
|
||||
{ url: "/favicon.ico", sizes: "any" },
|
||||
{ url: "/icon.svg", type: "image/svg+xml" },
|
||||
],
|
||||
apple: [{ url: "https://macrimi.github.io/ProxMenux/apple-touch-icon.png", sizes: "180x180" } as const],
|
||||
apple: [{ url: "/apple-touch-icon.png", sizes: "180x180" }],
|
||||
},
|
||||
}
|
||||
|
||||
@@ -60,24 +90,32 @@ export default function RootLayout({ children }: { children: React.ReactNode })
|
||||
return (
|
||||
<html lang="en" className="dark">
|
||||
<head>
|
||||
<meta name="description" content={metadata.description} />
|
||||
<meta property="og:title" content={metadata.openGraph?.title} />
|
||||
<meta property="og:description" content={metadata.openGraph?.description} />
|
||||
<meta property="og:image" content={metadata.openGraph?.images?.[0]?.url} />
|
||||
<meta property="og:url" content={metadata.openGraph?.url} />
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta name="twitter:title" content={metadata.twitter?.title} />
|
||||
<meta name="twitter:description" content={metadata.twitter?.description} />
|
||||
<meta name="twitter:image" content={metadata.twitter?.images?.[0]} />
|
||||
<link rel="canonical" href={metadata.metadataBase.href} />
|
||||
|
||||
{/* Favicon y Apple Icons */}
|
||||
{metadata.icons.icon.map((icon, index) => (
|
||||
<link key={index} rel="icon" type={icon.type} sizes={icon.sizes} href={icon.url} />
|
||||
))}
|
||||
{metadata.icons.apple.map((icon, index) => (
|
||||
<link key={index} rel="apple-touch-icon" sizes={icon.sizes} href={icon.url} />
|
||||
))}
|
||||
<script
|
||||
type="application/ld+json"
|
||||
dangerouslySetInnerHTML={{
|
||||
__html: JSON.stringify({
|
||||
"@context": "https://schema.org",
|
||||
"@type": "SoftwareApplication",
|
||||
name: "ProxMenux",
|
||||
description:
|
||||
"A powerful menu-driven script for Proxmox VE management, designed to simplify and streamline the execution of commands and tasks.",
|
||||
applicationCategory: "DeveloperApplication",
|
||||
operatingSystem: "Linux",
|
||||
offers: {
|
||||
"@type": "Offer",
|
||||
price: "0",
|
||||
priceCurrency: "USD",
|
||||
},
|
||||
author: {
|
||||
"@type": "Person",
|
||||
name: "MacRimi",
|
||||
url: "https://github.com/MacRimi",
|
||||
},
|
||||
url: "https://proxmenux.com",
|
||||
image: "https://proxmenux.com/main.png",
|
||||
}),
|
||||
}}
|
||||
/>
|
||||
</head>
|
||||
<body className={`${inter.className} bg-background text-foreground antialiased`}>
|
||||
<Navbar />
|
||||
|
||||
@@ -10,25 +10,24 @@ interface ChangelogEntry {
|
||||
title: string
|
||||
}
|
||||
|
||||
// Function to clean and format markdown content for RSS
|
||||
function formatContentForRSS(content: string): string {
|
||||
return (
|
||||
content
|
||||
// Convert ### headers to bold text
|
||||
.replace(/^### (.+)$/gm, "**$1**")
|
||||
// Convert ** bold ** to simple bold
|
||||
.replace(/\*\*(.*?)\*\*/g, "$1")
|
||||
// Clean code blocks - remove ``` and format nicely
|
||||
// Convert ### headers to <h3> tags
|
||||
.replace(/^### (.+)$/gm, "<h3>$1</h3>")
|
||||
// Convert ** bold ** to <strong> tags
|
||||
.replace(/\*\*(.*?)\*\*/g, "<strong>$1</strong>")
|
||||
// Convert code blocks to <pre><code> tags
|
||||
.replace(/```[\s\S]*?```/g, (match) => {
|
||||
const code = match.replace(/```/g, "").trim()
|
||||
return `\n${code}\n`
|
||||
return `<pre><code>${code}</code></pre>`
|
||||
})
|
||||
// Convert - bullet points to •
|
||||
.replace(/^- /gm, "• ")
|
||||
// Clean up multiple newlines
|
||||
.replace(/\n{3,}/g, "\n\n")
|
||||
// Remove backslashes used for line breaks
|
||||
.replace(/\\\s*$/gm, "")
|
||||
// Convert - bullet points to <ul><li> tags
|
||||
.replace(/^- (.+)$/gm, "<li>$1</li>")
|
||||
// Wrap consecutive <li> tags in <ul>
|
||||
.replace(/(<li>.*?<\/li>\s*)+/g, (match) => `<ul>${match}</ul>`)
|
||||
// Convert double newlines to <br><br> for paragraphs
|
||||
.replace(/\n\n/g, "<br><br>")
|
||||
// Clean up extra spaces
|
||||
.replace(/\s+/g, " ")
|
||||
.trim()
|
||||
@@ -75,7 +74,7 @@ async function parseChangelog(): Promise<ChangelogEntry[]> {
|
||||
currentEntry = {
|
||||
version,
|
||||
date,
|
||||
url: `https://macrimi.github.io/ProxMenux/changelog#${version}`,
|
||||
url: `https://proxmenux.com/changelog#${version}`,
|
||||
title: `ProxMenux ${version}`,
|
||||
}
|
||||
} else if (dateMatch) {
|
||||
@@ -83,7 +82,7 @@ async function parseChangelog(): Promise<ChangelogEntry[]> {
|
||||
currentEntry = {
|
||||
version: date,
|
||||
date,
|
||||
url: `https://macrimi.github.io/ProxMenux/changelog#${date}`,
|
||||
url: `https://proxmenux.com/changelog#${date}`,
|
||||
title: `ProxMenux Update ${date}`,
|
||||
}
|
||||
}
|
||||
@@ -115,13 +114,13 @@ async function parseChangelog(): Promise<ChangelogEntry[]> {
|
||||
|
||||
export async function GET() {
|
||||
const entries = await parseChangelog()
|
||||
const siteUrl = "https://macrimi.github.io/ProxMenux"
|
||||
const siteUrl = "https://proxmenux.com"
|
||||
|
||||
const rssXml = `<?xml version="1.0" encoding="UTF-8"?>
|
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
|
||||
<channel>
|
||||
<title>ProxMenux Changelog</title>
|
||||
<description>Latest updates and changes in ProxMenux</description>
|
||||
<description>Latest updates and changes in ProxMenux - An Interactive Menu for Proxmox VE Management</description>
|
||||
<link>${siteUrl}/changelog</link>
|
||||
<atom:link href="${siteUrl}/rss.xml" rel="self" type="application/rss+xml"/>
|
||||
<language>en-US</language>
|
||||
@@ -134,7 +133,7 @@ export async function GET() {
|
||||
(entry) => `
|
||||
<item>
|
||||
<title>${entry.title}</title>
|
||||
<description><![CDATA[${entry.content.length > 1000 ? entry.content.substring(0, 1000) + "..." : entry.content}]]></description>
|
||||
<description><![CDATA[${entry.content}]]></description>
|
||||
<link>${entry.url}</link>
|
||||
<guid isPermaLink="true">${entry.url}</guid>
|
||||
<pubDate>${new Date(entry.date).toUTCString()}</pubDate>
|
||||
@@ -151,4 +150,4 @@ export async function GET() {
|
||||
"Cache-Control": "public, max-age=3600, s-maxage=3600",
|
||||
},
|
||||
})
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user