chkpr/cyber-threat

GitHub: chkpr/cyber-threat

基于 Spring Boot 和 Angular 构建的网络威胁情报监控工具,定时从公开数据源收集、去重、评分并向用户提供每日威胁摘要。

Stars: 0 | Forks: 0

# cyber-threat — 后端 网络威胁情报监控工具。Spring Boot 后端:定时收集器从公开数据源拉取数据,进行去重和评分,路由关键条目,并向 Angular 前端提供每日摘要。 ## 环境要求 - Java 21 - 本地运行 PostgreSQL(或设置 `DB_URL` / `DB_USER` / `DB_PASSWORD`) 创建数据库: ``` CREATE DATABASE cyberthreat; CREATE USER cyberthreat WITH PASSWORD 'cyberthreat'; GRANT ALL PRIVILEGES ON DATABASE cyberthreat TO cyberthreat; ``` ## 运行 ``` ./mvnw spring-boot:run ``` 启动时,收集器会运行一次(`app.collect.run-on-startup: true`),因此摘要会立即获取到数据。之后它们将每小时运行一次。 ## API - `GET /api/digest` — 统计数据、关键警报以及评分后的摘要。 - `POST /api/items/{id}/action` — 请求体 `{ "action": "READ_LATER" | "ARCHIVE" | "IGNORE" }`。 快速检查: ``` curl http://localhost:8080/api/digest | jq ``` ## 结构 ``` config/ RestClient + CORS item/ Item entity, repository, service, controller, DTOs collect/ Collector interface, RawItem, scheduler, CISA KEV + Hacker News process/ dedup + ingestion, scoring / critical routing ``` ## 添加数据源 实现 `Collector`,并使用 `@Component` 注解。调度器会自动识别它——无需更改其他任何内容。 ## 尚未接入 - LLM 摘要(通过 Spring AI 实现的 `SummaryService`)——`Item.summary` 保持为 null。 - 将 `Source` 作为具有可学习权重的实体(目前是一个字符串 + 内存中的 map)。 - RSS + GitHub Releases 收集器(Rome 依赖项已包含)。
标签:Angular, Grype, PostgreSQL, Spring Boot, 命令控制, 域名枚举, 威胁情报, 开发者工具, 数据采集, 测试用例