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.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 ``;
}
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 ` `;
}
function home() {
return layout("شرکت آریا شبکه پیشرو | فروش تجهیزات سرور HP", `
آریا شبکه پیشرو، فروش تجهیزات سرور HP و شبکه ${sliderImages.map((slide, index) => slide.href ? `
` : `
`).join("")}
${belowSliderBanners.map((banner, index) => linkedImageTag(banner, "promo-banner", "tel:02177133934", `بنر فروش تجهیزات سرور ${index + 1}`)).join("")}
${sectionTitle("فروش ویژه", "SPECIAL SALE", "right")}${countdownMarkup()}
${sectionTitle("سرور (Server) چیست؟", "SERVER", "right")}
در ویکی پدیا نیز معنی سرور، سرویس دهنده ذکر شده است. به بیان ساده معنی سرور یا در پاسخ سوال server به چه معناست باید گفت، کامپیوتری همیشه روشن و قدرتمند است که کاربران در زمانهای متفاوت، از آن انتظار پاسخ به درخواستها را دارند.
درباره سرور بیشتر بدانید
${sectionTitle("خدمات آریا شبکه پیشرو", "SERVICES")}
${[...services].reverse().map((s) => `
${s.title} ${s.body}
`).join("")}
${sectionTitle("آریا شبکه پیشرو", "ARYA SHABAKE PISHRO", "right")}
شرکتی جوان خلاق، با انگیزه و دانش بنیان انضباط، مشتری مداری، ارائه محصولات با کیفیت و تضمین شده می باشد. برای مشاوره و خرید در زمینه تجهیزات شبکه با مشاوران ما در آریا شبکه پیشرو تماس بگیرید.
تماس با ما
${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("طرح یک پروژه", "PROJECT A DESIGN", "light")}
${projectSteps.map((s) => `
${s.number} ${s.title} ${s.body}
`).join("")}
مشاوره خرید تجهیزات شبکه برای انتخاب سرور، رم، هارد و تجهیزات شبکه با مشاوران آریا شبکه پیشرو تماس بگیرید؛ بهترین راهکارها با مناسب ترین قیمت ها در اختیار شما قرار می گیرد.
با کارشناسان ما تماس بگیرید ۰۲۱۷۷۱۳۳۹۳۴
${sectionTitle("مقــــالــات", "ARTICLES")}
${articles.map((a) => `
${a.date} ${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.latitude} | طول جغرافیایی: ${contact.longitude}
`);
}
function fallbackStoreItems() {
return products.map((p, index) => ({ ...p, id: `local-${index + 1}`, description: "برای قیمت، موجودی و کانفیگ اختصاصی این محصول با کارشناسان فروش تماس بگیرید." }));
}
function storePage() {
const cards = fallbackStoreItems().map((p) => `${p.category} ${p.title} تماس با فروشگاه `).join("");
return layout("فروشگاه تجهیزات سرور", `STORE ITEMS فروشگاه تجهیزات سرور این صفحه به API Store Items متصل شده و در پیش نمایش از محصولات نمونه استفاده می کند.
`);
}
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.category} ${p.title} تماس با فروشگاه `).join("");
return layout(item.title, `${item.category} ${item.title} ${item.description}
تماس با فروشگاه تعداد1 2 3 افزودن به سبد خرید
توضیحات اطلاعات فنی دسته بندی ${item.category}
وضعیت قیمت تماس با فروشگاه
نظرات ${sectionTitle("محصولات مشابه", "RELATED")}
${related}
`);
}
function blogPage() {
const cards = articles.map((a, index) => `${a.date} ${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.date} ${article.title} ${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}`);
});
برای ثبت نظر درباره این محصول وارد حساب کاربری شوید.
ورود به حساب کاربری