bhavitavya-isukapati/cynews

GitHub: bhavitavya-isukapati/cynews

一个实时网络安全威胁情报与新闻聚合平台,将 50 多个信源的安全资讯、漏洞公告和威胁数据汇聚到统一的 SOC 风格仪表板中,帮助安全团队高效进行态势感知。

Stars: 0 | Forks: 0

# CyNews **网络安全威胁情报与新闻聚合平台** 一个实时网络安全威胁情报仪表板,可聚合来自 50 多个来源的新闻、公告和威胁数据。采用深色、专业的 SOC 风格界面构建。 ## 功能 - **实时仪表板** - 威胁概览,包含威胁等级仪表盘、统计卡片、严重程度分布图和实时活动流 - **50+ 订阅源** - 聚合来自 The Hacker News、BleepingComputer、Dark Reading、Krebs on Security、SANS ISC、CISA KEV 等数十个来源的信息 - **CERT-In 公告** - 专门的印度 CERT 公告页面,支持按严重程度过滤 - **威胁情报** - 威胁行为者档案、TTPs (MITRE ATT&CK)、IOC、恶意软件家族及活动追踪 - **CVE 公告** - CVSS 评分、受影响产品、供应商信息、补丁状态和临时解决方案 - **印度范围检测** - 通过 AI 驱动的分类,识别与印度相关的威胁及全球威胁,并包含州/行业检测 - **网络相关性过滤** - 自动从信息源中过滤掉非网络安全内容 - **导出与邮件** - 将公告导出为 HTML/CSV,并使用可自定义的模板生成邮件报告 - **WebSocket 实时更新** - 当有新威胁到达时提供实时推送通知 - **RSS 订阅源输出** - `/api/news/rss` 端点用于与其他工具集成 - **多工作区支持** - 跨工作区的基于产品的威胁匹配 - **全局搜索** - 同时搜索所有新闻、威胁和公告 ## 技术栈 | 层级 | 技术 | |-------|-----------| | **前端 (Frontend)** | React 19, Vite 7, TypeScript 5.9 | | **样式 (Styling)** | Tailwind CSS v4, Radix UI, Framer Motion | | **状态 (State)** | TanStack React Query, Zustand | | **后端 (Backend)** | Express 5, Node.js 24 | | **数据库 (Database)** | PostgreSQL, Drizzle ORM | | **校验 (Validation)** | Zod v4, drizzle-zod | | **API 代码生成** | Orval (基于 OpenAPI 规范) | | **路由 (Routing)** | Wouter | | **安全 (Security)** | Helmet, express-rate-limit, CORS, 输入清理 | | **单体仓库 (Monorepo)** | pnpm workspaces | ## 项目结构 ``` CyNews/ ├── artifacts/ │ ├── api-server/ # Express API server (port 8080) │ └── cyfy-news/ # React + Vite frontend ├── lib/ │ ├── api-spec/ # OpenAPI spec + Orval codegen │ ├── api-client-react/ # Generated React Query hooks │ ├── api-zod/ # Generated Zod schemas │ ├── db/ # Drizzle ORM schema + connection │ ├── feed-aggregator/ # RSS/API feed fetcher │ ├── india-detector/ # India scope classifier │ └── cyber-relevance-detector/ # Cyber content filter ├── scripts/ # Seed, reclassify, live-feed CLI ├── docker-compose.yml ├── Dockerfile └── pnpm-workspace.yaml ``` ## 快速开始 ### 前置条件 - [Node.js 24+](https://nodejs.org/) - [pnpm 9+](https://pnpm.io/installation) - [Docker](https://docs.docker.com/get-docker/) (用于 PostgreSQL) ### 一键设置 ``` git clone https://github.com/Demos6668/CyNews.git cd CyNews cp .env.example .env pnpm run setup pnpm dev ``` 此操作将安装依赖,在 Docker 中启动 PostgreSQL,推送数据库结构,并启动 API 服务器 (`:8080`) 和前端 (`:5173`)。 ### 手动设置(逐步) ``` # 1. Clone 和 install git clone https://github.com/Demos6668/CyNews.git cd CyNews pnpm install # 2. Configure 环境 cp .env.example .env # 默认开箱即用 — 仅在需要时 edit # 3. Start PostgreSQL pnpm run db:up # 4. Push database schema pnpm run db:push:force # 5. (Optional) 填充 demo 数据 pnpm --filter @workspace/scripts run seed # 6. Start dev servers (API + frontend) pnpm dev ``` 在浏览器中打开 http://localhost:5173。API 服务器运行在 http://localhost:8080。 ### Docker(生产环境) ``` cp .env.example .env # Edit POSTGRES_PASSWORD 为一个用于 production 的强值 docker compose up -d ``` 这将在容器中启动 PostgreSQL,构建并运行 API 服务器,以及提供前端服务。 ### 实时订阅源 API 服务器会自动每 15 分钟运行一次订阅源调度器。要触发手动刷新: ``` curl -X POST http://localhost:8080/api/scheduler/refresh ``` 或运行独立的订阅源脚本: ``` # 从所有 sources 一次性 fetch pnpm --filter @workspace/scripts run live-feed # 每 15 分钟 Continuous 更新 pnpm --filter @workspace/scripts run live-feed:watch ``` ### 故障排除 | 问题 | 解决方案 | |---------|----------| | `database "cynews" does not exist` | 先运行 `pnpm run db:up` — Docker 会自动创建数据库 | | 端口 5432 上出现 `connection refused` | 确保 Docker 正在运行:`docker ps` 应显示 `cynews-db-1` 容器 | | 端口 5432 已被占用 | 本地 PostgreSQL 正在运行 — 停止它或在 `.env` 和 `docker-compose.yml` 中更改端口 | | Schema 推送失败 | 在全新数据库上使用 `pnpm run db:push:force` 进行干净推送 | | API 返回 500 错误 | 检查数据库是否包含数据表:运行 `pnpm run db:push:force` | ## API 端点 | 方法 | 路径 | 描述 | |--------|------|-------------| | GET | `/api/healthz` | 健康检查 | | GET | `/api/dashboard/stats` | 仪表板统计 | | GET | `/api/news` | 带过滤的分页新闻 | | GET | `/api/news/:id` | 新闻详情 | | GET | `/api/news/rss` | RSS 订阅源输出 | | GET | `/api/news/bookmarked` | 已加书签的项目 | | POST | `/api/news/:id/bookmark` | 切换书签 | | GET | `/api/advisories` | 分页公告 | | GET | `/api/advisories/cert-in` | CERT-In 公告 | | GET | `/api/advisories/:id` | 公告详情 | | GET | `/api/threats` | 分页威胁情报 | | GET | `/api/threats/:id` | 威胁详情 | | GET | `/api/threats/export` | 导出为 CSV/JSON | | GET | `/api/search?q=` | 全局搜索 | | GET | `/api/export/templates` | 邮件模板 | | POST | `/api/export/preview` | 预览邮件导出 | | POST | `/api/export/email` | 生成邮件导出 | | WS | `/ws` | 实时更新 | ## 订阅来源 **新闻:** The Hacker News、BleepingComputer、Dark Reading、Krebs on Security、SecurityWeek、The Record、CyberScoop、SC Magazine、Infosecurity Magazine 等 **威胁情报:** Cisco Talos、Unit 42、Mandiant、Microsoft Security、Google TAG、CrowdStrike、SentinelOne、Recorded Future、Proofpoint、Kaspersky SecureList 等 **公告:** CISA KEV、CERT-In、NVD、US-CERT **威胁信息源:** URLhaus、ThreatFox、Ransomware.live、Feodo Tracker ## 关键命令 ``` pnpm dev # Start API + frontend dev servers pnpm run setup # Full setup (install + DB + schema) pnpm run db:up # Start PostgreSQL container pnpm run db:push # Push DB schema (interactive) pnpm run db:push:force # Push DB schema (no prompts) pnpm run dev:api # Start API server only pnpm run dev:frontend # Start frontend only pnpm run typecheck # Full typecheck pnpm run build # Build all packages # 较不常见 pnpm --filter @workspace/api-spec run codegen # Regenerate API types pnpm --filter @workspace/scripts run seed # Seed demo data pnpm --filter @workspace/scripts run live-feed # Fetch real data ``` ## 许可证 MIT
标签:AI分类, CERT-In, Cloudflare, CVE漏洞库, DAST, Express, GitHub, GNU通用公共许可证, GPT, HTTP/HTTPS抓包, IT安全, MITM代理, MITRE ATT&CK, Node.js, PostgreSQL, React, Syscalls, TypeScript, 入侵指标, 威胁情报, 威胁行为者, 安全仪表盘, 安全报告, 安全插件, 安全研发, 安全运营中心, 实时处理, 密码管理, 开发者工具, 态势感知, 恶意软件分析, 情报收集, 新闻聚合, 测试用例, 漏洞研究, 漏洞管理, 漏洞警报, 网络威胁, 网络安全, 网络情报, 网络映射, 自动化攻击, 请求拦截, 隐私保护