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, 命令控制, 域名枚举, 威胁情报, 开发者工具, 数据采集, 测试用例