import { createReadStream } from "node:fs"; import { readFile } from "node:fs/promises"; import { createServer } from "node:http"; import { extname, join, normalize } from "node:path"; import { fileURLToPath } from "node:url"; import { articles, contact, features, heroSlides, megaCategories, products, projectSteps, services, sourceBanners } from "./app/data.js"; import { getStaticImageSlotMap, staticSlotImages } from "./app/meshkee.js"; const root = fileURLToPath(new URL(".", import.meta.url)); const hostname = process.env.HOSTNAME || "127.0.0.1"; const port = Number(process.env.PORT || 3000); const css = await readFile(join(root, "app/globals.css"), "utf8"); const customerUrl = "https://customer.asphp.ir.com"; const staticSlots = await getStaticImageSlotMap("home"); const sliderImages = staticSlotImages(staticSlots, "slider", heroSlides); const belowSliderBanners = staticSlotImages(staticSlots, "three-banner-below-slider", heroSlides.slice(1, 4)).slice(0, 3); const specialSaleBanner = staticSlotImages(staticSlots, "special-sale-banner", ["/assets/banner-2.jpg"])[0]; const serverBanner = staticSlotImages(staticSlots, "server-banner", ["/assets/server-info-1.jpg"])[0]; const aboutusBanner = staticSlotImages(staticSlots, "aboutus-banner", ["/assets/server-info-1.jpg"])[0]; const threeBanners = staticSlotImages(staticSlots, "three-banner", sourceBanners).slice(0, 3); const mime = { ".css": "text/css; charset=utf-8", ".jpg": "image/jpeg", ".jpeg": "image/jpeg", ".png": "image/png", ".ttf": "font/ttf" }; function layout(title, body) { return ` ${title} ${header()}
${body}
${footer()} `; } function header() { const mega = `
Categories

خرید بر اساس دسته

${megaCategories.map((group) => `${group.tab}`).join("")}
${megaCategories.map((group) => `

${group.title}

${group.items.map((item) => `${item}`).join("")}
`).join("")}
`; const phoneIcon = ``; const instagramIcon = ``; const searchIcon = ``; const cartIcon = ``; const userIcon = ``; return ``; } function footer() { return ``; } function sectionTitle(fa, en, extra = "") { return `
${en}

${fa}

`; } function countdownMarkup() { const unit = (name, label, value) => `${value}${label}`; return `
پایان فروش ویژه${unit("seconds", "ثانیه", "00")}${unit("minutes", "دقیقه", "00")}${unit("hours", "ساعت", "00")}${unit("days", "روز", "03")}
`; } function countdownScript() { return ``; } function slotStyle(image) { return image?.aspectRatio ? ` style="aspect-ratio:${image.aspectRatio}"` : ""; } function linkedImageTag(item, className, fallbackHref, sizesAlt = "") { const href = item?.href || fallbackHref || "#"; const alt = item?.alt || sizesAlt; return `${alt}`; } function home() { return layout("شرکت آریا شبکه پیشرو | فروش تجهیزات سرور HP", `

آریا شبکه پیشرو، فروش تجهیزات سرور HP و شبکه

${sectionTitle("فروش ویژه", "SPECIAL SALE", "right")}${countdownMarkup()}
${linkedImageTag(specialSaleBanner, "special-banner-card", "tel:02177133934", "فروش ویژه تجهیزات سرور")}${products.map((p) => `
${p.title}
${p.category}

${p.title}

تماس با فروشگاه
`).join("")}
${sectionTitle("سرور (Server) چیست؟", "SERVER", "right")}

در ویکی پدیا نیز معنی سرور، سرویس دهنده ذکر شده است. به بیان ساده معنی سرور یا در پاسخ سوال server به چه معناست باید گفت، کامپیوتری همیشه روشن و قدرتمند است که کاربران در زمان‌های متفاوت، از آن انتظار پاسخ به درخواست‌ها را دارند.

درباره سرور بیشتر بدانید
${serverBanner.alt ||
${sectionTitle("خدمات آریا شبکه پیشرو", "SERVICES")}
${[...services].reverse().map((s) => `

${s.title}

${s.body}

`).join("")}
${sectionTitle("آریا شبکه پیشرو", "ARYA SHABAKE PISHRO", "right")}

شرکتی جوان خلاق، با انگیزه و دانش بنیان

انضباط، مشتری مداری، ارائه محصولات با کیفیت و تضمین شده می باشد. برای مشاوره و خرید در زمینه تجهیزات شبکه با مشاوران ما در آریا شبکه پیشرو تماس بگیرید.

تماس با ما
${aboutusBanner.alt ||
${sectionTitle("ویژگـــی مــــا", "PROCESS", "right")}

انضباط، مشتری مداری، ارائه محصولات با کیفیت و تضمین شده می باشد.

${features.map((f) => `

${f.body}

`).join("")}
${linkedImageTag(threeBanners[0], "source-banner source-banner-large", sourceBanners[0].href, sourceBanners[0].alt)}
${threeBanners.slice(1).map((b, index) => linkedImageTag(b, "source-banner", sourceBanners[index + 1]?.href, sourceBanners[index + 1]?.alt)).join("")}
مشاوره خرید تجهیزات شبکه

برای انتخاب سرور، رم، هارد و تجهیزات شبکه با مشاوران آریا شبکه پیشرو تماس بگیرید؛ بهترین راهکارها با مناسب ترین قیمت ها در اختیار شما قرار می گیرد.

با کارشناسان ما تماس بگیرید۰۲۱۷۷۱۳۳۹۳۴
${sectionTitle("مقــــالــات", "ARTICLES")}
${articles.map((a) => `
${a.title}

${a.title}

${a.abstract}

`).join("")}
تلگرام${countdownScript()}`); } function sitemapConfig() { return { domain: "asphp.ir", origin: "https://www.asphp.ir", generatedAt: new Date().toISOString(), sitemapIndex: { enabled: true, url: "https://www.asphp.ir/sitemap.xml", children: [ "https://www.asphp.ir/sitemap-main.xml", "https://www.asphp.ir/sitemap-products.xml" ] }, staticRoutes: [ { path: "/", url: "https://www.asphp.ir/", priority: 1, changeFrequency: "daily" }, { path: "/store", url: "https://www.asphp.ir/store", priority: 0.9, changeFrequency: "daily" }, { path: "/blog", url: "https://www.asphp.ir/blog", priority: 0.8, changeFrequency: "weekly" }, { path: "/about-us", url: "https://www.asphp.ir/about-us", priority: 0.6, changeFrequency: "monthly" }, { path: "/contact-us", url: "https://www.asphp.ir/contact-us", priority: 0.6, changeFrequency: "monthly" } ], exclude: ["/admin", "/auth", "/cart", "/checkout", "/dashboard", "/profile"], canonicalTemplates: { product: { path: "/products/{id}/{nameFaSlug}", source: "/tenants/asphp.ir/products/by-id/{id}" }, category: { path: "/products/category/{id}/{nameFaSlug}", source: "/tenants/asphp.ir/categories/by-id/{id}", listSource: "/tenants/asphp.ir/products?categoryId={id}" }, blog: { path: "/blog/{id}/{titleSlug}", source: "/tenants/asphp.ir/blogs/by-id/{id}" }, portfolio: { path: "/portfolios/{id}/{titleFaSlug}", source: "/tenants/asphp.ir/portfolios/by-id/{id}" } }, slugRules: { keepPersianLetters: true, spaces: "-", strip: "punctuation" } }; } function about() { return layout("درباره آریا شبکه پیشرو", `
ABOUT ASPHP

درباره آریا شبکه پیشرو

شرکتی دانش بنیان، جوان و خلاق در زمینه تامین تجهیزات شبکه از دو کمپانی HP و CISCO.

درباره شرکت آریا شبکه پیشرو

آریا شبکه پیشرو

آریا شبکه پیشرو شرکتی دانش بنیان، جوان و خلاق است. فعالیت مان را از سال ۱۳۹۵ با سرمایه ای اندک ولی با انگیزه سرشار و فکر و نیروی جوان آغاز کردیم.

مجموعه ما در زمینه تامین تجهیزات شبکه از دو کمپانی HP و CISCO فعالیت دارد و تمرکز اصلی آن ارائه محصولات با کیفیت، مشاوره پیش از خرید و پشتیبانی پس از فروش است.

`); } function contactPage() { return layout("تماس با آریا شبکه پیشرو", `
CONTACT ASPHP

تماس با آریا شبکه پیشرو

برای مشاوره و خرید در زمینه تجهیزات شبکه با کارشناسان ما در ارتباط باشید.

راه های ارتباطی

${contact.address}

${contact.phones.map((p) => `${p}`).join("")}

موقعیت شرکت

عرض جغرافیایی: ${contact.latitude} | طول جغرافیایی: ${contact.longitude}

`); } function fallbackStoreItems() { return products.map((p, index) => ({ ...p, id: `local-${index + 1}`, description: "برای قیمت، موجودی و کانفیگ اختصاصی این محصول با کارشناسان فروش تماس بگیرید." })); } function storePage() { const cards = fallbackStoreItems().map((p) => `
${p.title}
${p.category}

${p.title}

تماس با فروشگاه
`).join(""); return layout("فروشگاه تجهیزات سرور", `
STORE ITEMS

فروشگاه تجهیزات سرور

این صفحه به API Store Items متصل شده و در پیش نمایش از محصولات نمونه استفاده می کند.

فعلا آیتمی از API فروشگاه برنگشت؛ نمایش محصولات نمونه فعال است.

${cards}
`); } function storeDetail(id) { const item = fallbackStoreItems().find((p) => p.id === id) || fallbackStoreItems()[0]; const related = fallbackStoreItems().filter((p) => p.id !== item.id).map((p) => `
${p.title}
${p.category}

${p.title}

تماس با فروشگاه
`).join(""); return layout(item.title, `
${item.category}

${item.title}

${item.description}

تماس با فروشگاه
توضیحات

${item.description}

اطلاعات فنی

دسته بندی${item.category}

وضعیت قیمتتماس با فروشگاه

نظرات
${sectionTitle("محصولات مشابه", "RELATED")}
${related}
`); } function blogPage() { const cards = articles.map((a, index) => `
${a.title}

${a.title}

${a.abstract}

`).join(""); return layout("مقالات آریا شبکه پیشرو", `
BLOG

مقالات آریا شبکه پیشرو

این صفحه به API Blog متصل شده و در پیش نمایش از مقالات نمونه استفاده می کند.

فعلا مقاله ای از API برنگشت؛ نمایش مقالات نمونه فعال است.

${cards}
`); } function blogDetail(slug) { const index = Math.max(0, Number(slug.replace("local-blog-", "")) - 1); const article = articles[index] || articles[0]; return layout(article.title, `
${article.title}

${article.title}

${article.abstract}

${article.abstract}

`); } createServer((req, res) => { const url = new URL(req.url || "/", `http://${hostname}:${port}`); if (url.pathname.startsWith("/assets/")) { const relative = normalize(url.pathname.replace(/^\/assets\//, "")); const file = join(root, "public/assets", relative); res.setHeader("Content-Type", mime[extname(file)] || "application/octet-stream"); createReadStream(file).on("error", () => { res.writeHead(404); res.end("Not found"); }).pipe(res); return; } if (url.pathname === "/meshkee/sitemap-config.json") { res.setHeader("Content-Type", "application/json; charset=utf-8"); res.end(JSON.stringify(sitemapConfig(), null, 2)); } else if (url.pathname === "/sitemap.xml" || url.pathname === "/robots.txt") { res.writeHead(404); res.end("Not served by this preview. Production nginx proxies this to Meshkee."); } else { res.setHeader("Content-Type", "text/html; charset=utf-8"); if (url.pathname === "/" || url.pathname === "/index.html") res.end(home()); else if (url.pathname === "/about-us" || url.pathname === "/aboutus") res.end(about()); else if (url.pathname === "/contact-us" || url.pathname === "/contactus") res.end(contactPage()); else if (url.pathname === "/store") res.end(storePage()); else if (url.pathname.startsWith("/store/")) res.end(storeDetail(url.pathname.split("/").pop())); else if (url.pathname === "/blog") res.end(blogPage()); else if (url.pathname.startsWith("/blog/")) res.end(blogDetail(url.pathname.split("/").pop())); else { res.writeHead(404); res.end(layout("یافت نشد", `

404

صفحه مورد نظر پیدا نشد.

`)); } } }).listen(port, hostname, () => { console.log(`ASPHP preview ready: http://${hostname}:${port}`); });