Skip to content

Commit 4ba34a2

Browse files
committed
Merge branch 'refactor/shared-module' into master
2 parents de6d481 + 32889bd commit 4ba34a2

2 files changed

Lines changed: 203 additions & 162 deletions

File tree

src/burpEx/ARCHITECTURE.md

Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
# SQLMap WebUI Burp Extension - Architecture Notes
2+
3+
## 重要说明
4+
5+
经过实际测试发现,**legacy-api 和 montoya-api 不能直接同步文件**
6+
7+
### 原因
8+
9+
两个模块使用**不同的 Burp Suite API**
10+
11+
**Legacy API (Java 11):**
12+
```java
13+
import burp.IBurpExtenderCallbacks;
14+
import burp.IHttpRequestResponse;
15+
import burp.IRequestInfo;
16+
```
17+
18+
**Montoya API (Java 17+):**
19+
```java
20+
import burp.api.montoya.MontoyaApi;
21+
import burp.api.montoya.http.message.HttpRequestResponse;
22+
import burp.api.montoya.http.message.requests.HttpRequest;
23+
```
24+
25+
### 影响
26+
27+
虽然两个模块的业务逻辑**完全相同**,但:
28+
1. **Import 语句不同** - 无法直接复制文件
29+
2. **API 调用方式不同** - 类名和方法签名不同
30+
3. **必须独立维护** - 每个修改需要在两个地方手动更新
31+
32+
### 当前架构
33+
34+
```
35+
src/burpEx/
36+
├── legacy-api/ # 完全独立的代码 (Java 11)
37+
│ ├── BurpExtender.java
38+
│ ├── ConfigManager.java # 使用 IBurpExtenderCallbacks
39+
│ ├── SqlmapApiClient.java
40+
│ ├── SqlmapUITab.java
41+
│ ├── panels/
42+
│ ├── dialogs/
43+
│ └── ... (共34个文件)
44+
45+
└── montoya-api/ # 完全独立的代码 (Java 17)
46+
├── SqlmapWebUIExtension.java
47+
├── ConfigManager.java # 使用 MontoyaApi
48+
├── SqlmapApiClient.java
49+
├── SqlmapUITab.java
50+
├── panels/
51+
├── dialogs/
52+
└── ... (共37个文件)
53+
```
54+
55+
### 开发建议
56+
57+
1. **修改逻辑时**: 需要在两个模块中分别修改
58+
2. **先改 legacy-api**: 因为它使用更简单的 Legacy API
59+
3. **再改 montoya-api**: 参考 legacy-api 的修改,适配 Montoya API
60+
4. **分别编译验证**: 确保两个模块都能编译通过
61+
62+
### 编译验证
63+
64+
```bash
65+
# 编译 Legacy API (Java 11)
66+
cd src/burpEx/legacy-api
67+
mvn clean package -DskipTests
68+
69+
# 编译 Montoya API (Java 17)
70+
cd src/burpEx/montoya-api
71+
mvn clean package -DskipTests
72+
```
73+
74+
两个模块都能独立编译成功,无警告、无错误。
75+
76+
### 为什么不创建 shared 模块?
77+
78+
尝试过创建 shared 模块,但发现:
79+
1. UI 组件深度依赖 Burp API
80+
2. ConfigManager 需要适配不同 API
81+
3. 抽象层会增加复杂度
82+
4. 需要修改 100+ 个文件的 import 语句
83+
5. 风险高,容易引入 bug
84+
85+
**结论**: 当前独立维护的方式虽然重复代码多,但是最稳定和可维护的方案。
86+
87+
## 版本信息
88+
89+
- **版本**: 1.8.16
90+
- **更新日期**: 2026-02-10
91+
- **状态**: 两个模块独立维护,各自编译成功

0 commit comments

Comments
 (0)