بهرهبرداری و عیبیابی¶
این فصل عملیات روز دوم، حالتهای شکست رایج و نکات امنیتی برای تیمهایی که پنل را داخلی میزبانی میکنند را پوشش میدهد.
لاگ سرور Express اولین منبع برای خطای NVD، RSS یا ترجمه است؛ مرورگر فقط وضعیت UI و cache محلی را نشان میدهد.
کارایی¶
اسکن کامل روی پشتهٔ بزرگ بدون NVD_API_KEY ممکن است چند دقیقه طول بکشد. در پنجرهٔ نگهداری اجرا کنید. حالت نظارت باید سبک بماند چون NVD را حذف میکند.
مشکلات رایج¶
| علامت | علت محتمل | اقدام |
|---|---|---|
Too many scan requests / RATE_LIMITED |
middleware اپ (سطل scan یا watch) | retryAfterSec صبر کنید؛ تبهای اضافه را ببندید؛ RATE_LIMIT_* را در .env بالا ببرید؛ سرور را راهاندازی مجدد کنید |
| نتیجهٔ خالی NVD | محدودیت نرخ upstream NVD | NVD_API_KEY، کوچککردن پشته، تکرار |
| زمان منبع کهنه | خطای fetch | شبکه؛ لاگ سرور |
| ترجمه گیر کرده | ارائهدهنده down | موقتاً ترجمه خودکار را خاموش کنید |
| تطبیق مثبت کاذب | نام ابزار تقریبی | نامگذاری پشته؛ بررسی دستی |
| آیتم جدید watch نیست | CVE در knownIds |
طبیعی؛ اسکن کامل برای تطبیق |
امنیت¶
- API را بدون احراز هویت در اینترنت عمومی در دسترس نگذارید.
GITHUB_TOKENوNVD_API_KEYفقط در env سرور بمانند.- RSS و JSON خارجی ورودی غیرقابلاعتماداند — پارس دفاعی در سرور انجام میشود.
ارتقا¶
پس از git pull، npm install، make build و راهاندازی مجدد. اگر کلیدهای i18n عوض شد، cache مرورگر را پاک کنید. v1.1.0 ویزارد راهاندازی و کش اسکن کلیدشده با پشته را اضافه میکند — پشتههای موجود خودکار مهاجرت میشوند؛ نصبهای تازه یکبار ویزارد را طی میکنند.
تست خودکار¶
| مجموعه | دستور | دامنه |
|---|---|---|
| واحد + API | make test |
tests/server/، tests/client/، tests/integration/ |
| پوشش (CI) | npm run test:ci |
همان + lcov برای Codecov/Sonar |
| E2E (Playwright) | یکبار npm run test:e2e:install، سپس npm run test:e2e |
tests/e2e/ روی dev server Vite (جریان export CSV) |
تستهای یکپارچگی در tests/integration/ فعلاً pagination NVD را با mirror محلی و AIRGAPPED=true (nvd-pagination.test.ts) پوشش میدهند. specهای بیشتر در #78. CONTRIBUTING.md.
پوشش تست (خط پایه CI)¶
اجرای npm test در حال حاضر ۲۵۷ مورد تست را در واحد سرور، helperهای کلاینت و mirrorهای یکپارچگی پوشش میدهد. پوشش CI (npm run test:ci) حدود ۹۴٪ خطوط، ۸۲٪ شاخهها و ۹۴٪ توابع گزارش میکند (V8 lcov → Codecov/SonarCloud).
| حوزه | نمونه فایلها |
|---|---|
| اعلانها | tests/server/notifications.test.ts، notificationEmail.test.ts، notificationTelegram.test.ts |
| Middleware | tenantContext.test.ts، scanTimeout.test.ts، securityHeaders.test.ts |
| لایه داده | pool.test.ts، tenants.test.ts، tenantsDb.integration.test.ts |
| helper کلاینت | exportVulns.test.ts، iconAssets.test.ts، scanCache.test.ts |
| یکپارچگی | tests/integration/nvd-pagination.test.ts |
E2E (tests/e2e/export.spec.ts) به Chromium Playwright نیاز دارد — یکبار npm run test:e2e:install را اجرا کنید.
نگهداری مستندات¶
تغییرات محصول باید هر شش درخت extended-docs/docs/content/{locale}/، src/i18n/messages/*.ts و در صورت نیاز docs/ legacy را بهروز کند. قانون agent code-to-docs-sync (agent/rules/code-to-docs-sync.mdc) — نگاشت مسیر→مستند، واژهنامه و scripts/check-extended-docs-locale-sync.sh.
برای audit، RBAC، tenant، متریک، airgap و Kubernetes به ۱۱ self-host مراجعه کنید.