Skip to content

Commit ad25e81

Browse files
author
githubnull
committed
feat: 引导式添加配置合并为一步流程
- Web端和BurpSuite端引导式添加配置从两步合并为一步 - 在引导式编辑器顶部直接添加配置名称和描述输入框 - 名称为必填项,描述为可选项 - 编辑模式同样支持修改名称和描述 - 两端保持一致的UI和交互逻辑
1 parent e77c5c7 commit ad25e81

10 files changed

Lines changed: 721 additions & 298 deletions

File tree

.qoder/repowiki/zh/content/业务逻辑层/引导式参数编辑器.md

Lines changed: 98 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,17 +11,20 @@
1111
- [TaskRequest.py](file://src/backEnd/model/requestModel/TaskRequest.py)
1212
- [header_processor.py](file://src/backEnd/utils/header_processor.py)
1313
- [taskService.py](file://src/backEnd/service/taskService.py)
14+
- [GuidedParamEditor.vue](file://src/frontEnd/src/components/GuidedParamEditor.vue)
15+
- [GuidedParamEditorDialog.vue](file://src/frontEnd/src/components/GuidedParamEditorDialog.vue)
16+
- [paramDefinitions.ts](file://src/frontEnd/src/utils/paramDefinitions.ts)
17+
- [scanConfigParser.ts](file://src/frontEnd/src/utils/scanConfigParser.ts)
1418
- [TaskOptions.vue](file://src/frontEnd/src/views/TaskDetail/components/TaskOptions.vue)
1519
- [task.ts](file://src/frontEnd/src/stores/task.ts)
1620
</cite>
1721

1822
## 更新摘要
1923
**已修改内容**
20-
- 修复了引导式参数编辑器在解析SQLMap命令行字符串时跳过默认值参数的bug
21-
- 将ScanConfig.toOptionsMap()替换为ParseResult.getParsedParams(),确保所有参数(包括默认值)都能被正确加载
22-
- 新增getConfigValue()方法,手动从ScanConfig对象中获取参数值,覆盖80多个SQLMap参数
23-
- 增强了对未识别参数的处理,创建临时ParamMeta实例以防止数据丢失
24-
- 更新了架构概述和详细组件分析部分以反映代码变更
24+
- 新增参数定义文件 `paramDefinitions.ts` 和解析器 `scanConfigParser.ts`,支持参数搜索、分类筛选、动态输入和实时命令行预览
25+
- 新增 Vue 组件 `GuidedParamEditor.vue``GuidedParamEditorDialog.vue`,实现前端引导式参数配置界面
26+
- 更新架构概述和详细组件分析部分,反映新增的前端组件和参数定义机制
27+
- 增强了参数类型识别和值范围验证逻辑,提升参数配置的易用性和准确性
2528

2629
## 目录
2730
1. [引言](#引言)
@@ -77,15 +80,17 @@ Dialog --> Parser
7780
- [src/burpEx/montoya-api/src/main/java/com/sqlmapwebui/burp/panels/GuidedParamEditor.java](file://src/burpEx/montoya-api/src/main/java/com/sqlmapwebui/burp/panels/GuidedParamEditor.java)
7881

7982
## 核心组件
80-
引导式参数编辑器的核心由三个主要Java类构成`GuidedParamEditor``GuidedParamEditorDialog``ScanConfigParser``GuidedParamEditor`负责提供参数选择、输入和预览的UI功能;`GuidedParamEditorDialog`将其封装为模态对话框;`ScanConfigParser`则负责解析和验证参数字符串。这些组件协同工作,为用户提供完整的参数配置体验。
83+
引导式参数编辑器的核心由多个组件构成`GuidedParamEditor``GuidedParamEditorDialog``ScanConfigParser``paramDefinitions.ts``scanConfigParser.ts``GuidedParamEditor`负责提供参数选择、输入和预览的UI功能;`GuidedParamEditorDialog`将其封装为模态对话框;`ScanConfigParser`负责解析和验证参数字符串;`paramDefinitions.ts`定义了所有参数的元数据;`scanConfigParser.ts`实现了前端参数解析和生成。这些组件协同工作,为用户提供完整的参数配置体验。
8184

8285
**Section sources**
8386
- [src/burpEx/montoya-api/src/main/java/com/sqlmapwebui/burp/panels/GuidedParamEditor.java](file://src/burpEx/montoya-api/src/main/java/com/sqlmapwebui/burp/panels/GuidedParamEditor.java)
8487
- [src/burpEx/montoya-api/src/main/java/com/sqlmapwebui/burp/panels/GuidedParamEditorDialog.java](file://src/burpEx/montoya-api/src/main/java/com/sqlmapwebui/burp/panels/GuidedParamEditorDialog.java)
8588
- [src/burpEx/montoya-api/src/main/java/com/sqlmapwebui/burp/ScanConfigParser.java](file://src/burpEx/montoya-api/src/main/java/com/sqlmapwebui/burp/ScanConfigParser.java)
89+
- [src/frontEnd/src/utils/paramDefinitions.ts](file://src/frontEnd/src/utils/paramDefinitions.ts)
90+
- [src/frontEnd/src/utils/scanConfigParser.ts](file://src/frontEnd/src/utils/scanConfigParser.ts)
8691

8792
## 架构概述
88-
引导式参数编辑器采用分层架构设计,从下到上分别为数据层、逻辑层和表现层。数据层由`ParamMeta`类定义参数元数据,逻辑层由`ScanConfigParser`处理参数解析和验证,表现层由`GuidedParamEditor`提供用户交互界面。这种分层设计确保了组件的可维护性和可扩展性。
93+
引导式参数编辑器采用分层架构设计,从下到上分别为数据层、逻辑层和表现层。数据层由`ParamMeta`类和`paramDefinitions.ts`定义参数元数据,逻辑层由`ScanConfigParser``scanConfigParser.ts`处理参数解析和验证,表现层由`GuidedParamEditor``GuidedParamEditor.vue`提供用户交互界面。这种分层设计确保了组件的可维护性和可扩展性。
8994

9095
```mermaid
9196
classDiagram
@@ -142,12 +147,86 @@ class ScanConfig {
142147
+copy()
143148
+mergeFromString()
144149
}
150+
class ParamDefinition {
151+
+key : string
152+
+name : string
153+
+cliName : string
154+
+description : string
155+
+category : string
156+
+type : 'boolean' | 'integer' | 'float' | 'string' | 'select'
157+
+defaultValue? : any
158+
+min? : number
159+
+max? : number
160+
+options? : string[]
161+
}
162+
class ScanOptions {
163+
+level? : number
164+
+risk? : number
165+
+string? : string
166+
+notString? : string
167+
+regexp? : string
168+
+code? : number
169+
+smart? : boolean
170+
+textOnly? : boolean
171+
+titles? : boolean
172+
+testParameter? : string
173+
+skip? : string
174+
+skipStatic? : boolean
175+
+paramExclude? : string
176+
+dbms? : string
177+
+os? : string
178+
+prefix? : string
179+
+suffix? : string
180+
+tamper? : string
181+
+technique? : string
182+
+timeSec? : number
183+
+timeout? : number
184+
+retries? : number
185+
+delay? : number
186+
+randomAgent? : boolean
187+
+proxy? : string
188+
+tor? : boolean
189+
+forceSSL? : boolean
190+
+skipUrlEncode? : boolean
191+
+optimize? : boolean
192+
+keepAlive? : boolean
193+
+nullConnection? : boolean
194+
+threads? : number
195+
+getBanner? : boolean
196+
+getCurrentUser? : boolean
197+
+getCurrentDb? : boolean
198+
+isDba? : boolean
199+
+getUsers? : boolean
200+
+getDbs? : boolean
201+
+getTables? : boolean
202+
+getColumns? : boolean
203+
+dumpTable? : boolean
204+
+dumpAll? : boolean
205+
+db? : string
206+
+tbl? : string
207+
+col? : string
208+
+batch? : boolean
209+
+forms? : boolean
210+
+crawlDepth? : number
211+
+flushSession? : boolean
212+
+freshQueries? : boolean
213+
+verbose? : number
214+
}
215+
class ParseResult {
216+
+options : ScanOptions
217+
+errors : string[]
218+
+warnings : string[]
219+
+parsedParams : string[]
220+
}
145221
GuidedParamEditor --> ScanConfigParser : "使用"
146222
GuidedParamEditor --> ParamMeta : "使用"
147223
GuidedParamEditorDialog --> GuidedParamEditor : "包含"
148224
ScanConfigParser --> ParamMeta : "包含"
149225
ScanConfigParser --> ParseResult : "返回"
150226
ParseResult --> ScanConfig : "包含"
227+
GuidedParamEditor.vue --> scanConfigParser.ts : "使用"
228+
GuidedParamEditor.vue --> paramDefinitions.ts : "使用"
229+
scanConfigParser.ts --> ParseResult : "返回"
151230
```
152231

153232
**Diagram sources**
@@ -157,6 +236,8 @@ ParseResult --> ScanConfig : "包含"
157236
- [src/burpEx/montoya-api/src/main/java/com/sqlmapwebui/burp/ParamMeta.java](file://src/burpEx/montoya-api/src/main/java/com/sqlmapwebui/burp/ParamMeta.java)
158237
- [src/burpEx/montoya-api/src/main/java/com/sqlmapwebui/burp/ParseResult.java](file://src/burpEx/montoya-api/src/main/java/com/sqlmapwebui/burp/ParseResult.java)
159238
- [src/burpEx/montoya-api/src/main/java/com/sqlmapwebui/burp/ScanConfig.java](file://src/burpEx/montoya-api/src/main/java/com/sqlmapwebui/burp/ScanConfig.java)
239+
- [src/frontEnd/src/utils/paramDefinitions.ts](file://src/frontEnd/src/utils/paramDefinitions.ts)
240+
- [src/frontEnd/src/utils/scanConfigParser.ts](file://src/frontEnd/src/utils/scanConfigParser.ts)
160241

161242
## 详细组件分析
162243
### 引导式参数编辑器分析
@@ -263,7 +344,7 @@ ReturnResult --> End
263344
- [src/burpEx/montoya-api/src/main/java/com/sqlmapwebui/burp/ScanConfigParser.java](file://src/burpEx/montoya-api/src/main/java/com/sqlmapwebui/burp/ScanConfigParser.java)
264345

265346
## 依赖分析
266-
引导式参数编辑器依赖于多个核心组件和库。主要依赖包括Apache Commons CLI用于命令行参数解析,Swing用于UI组件,以及项目内部的`ParamMeta``ScanConfig``ParseResult`类。这些依赖关系确保了组件的功能完整性和稳定性。
347+
引导式参数编辑器依赖于多个核心组件和库。主要依赖包括Apache Commons CLI用于命令行参数解析,Swing用于UI组件,以及项目内部的`ParamMeta``ScanConfig``ParseResult`类。此外,前端组件依赖Vue 3、PrimeVue和mri库。这些依赖关系确保了组件的功能完整性和稳定性。
267348

268349
```mermaid
269350
graph TD
@@ -275,6 +356,9 @@ ScanConfigParser --> CommonsCLI
275356
ScanConfigParser --> ParamMeta
276357
ScanConfigParser --> ParseResult
277358
ParseResult --> ScanConfig
359+
GuidedParamEditor.vue --> scanConfigParser.ts
360+
GuidedParamEditor.vue --> paramDefinitions.ts
361+
scanConfigParser.ts --> mri
278362
```
279363

280364
**Diagram sources**
@@ -283,13 +367,19 @@ ParseResult --> ScanConfig
283367
- [src/burpEx/montoya-api/src/main/java/com/sqlmapwebui/burp/ParamMeta.java](file://src/burpEx/montoya-api/src/main/java/com/sqlmapwebui/burp/ParamMeta.java)
284368
- [src/burpEx/montoya-api/src/main/java/com/sqlmapwebui/burp/ParseResult.java](file://src/burpEx/montoya-api/src/main/java/com/sqlmapwebui/burp/ParseResult.java)
285369
- [src/burpEx/montoya-api/src/main/java/com/sqlmapwebui/burp/ScanConfig.java](file://src/burpEx/montoya-api/src/main/java/com/sqlmapwebui/burp/ScanConfig.java)
370+
- [src/frontEnd/src/components/GuidedParamEditor.vue](file://src/frontEnd/src/components/GuidedParamEditor.vue)
371+
- [src/frontEnd/src/utils/scanConfigParser.ts](file://src/frontEnd/src/utils/scanConfigParser.ts)
372+
- [src/frontEnd/src/utils/paramDefinitions.ts](file://src/frontEnd/src/utils/paramDefinitions.ts)
286373

287374
**Section sources**
288375
- [src/burpEx/montoya-api/src/main/java/com/sqlmapwebui/burp/panels/GuidedParamEditor.java](file://src/burpEx/montoya-api/src/main/java/com/sqlmapwebui/burp/panels/GuidedParamEditor.java)
289376
- [src/burpEx/montoya-api/src/main/java/com/sqlmapwebui/burp/ScanConfigParser.java](file://src/burpEx/montoya-api/src/main/java/com/sqlmapwebui/burp/ScanConfigParser.java)
290377
- [src/burpEx/montoya-api/src/main/java/com/sqlmapwebui/burp/ParamMeta.java](file://src/burpEx/montoya-api/src/main/java/com/sqlmapwebui/burp/ParamMeta.java)
291378
- [src/burpEx/montoya-api/src/main/java/com/sqlmapwebui/burp/ParseResult.java](file://src/burpEx/montoya-api/src/main/java/com/sqlmapwebui/burp/ParseResult.java)
292379
- [src/burpEx/montoya-api/src/main/java/com/sqlmapwebui/burp/ScanConfig.java](file://src/burpEx/montoya-api/src/main/java/com/sqlmapwebui/burp/ScanConfig.java)
380+
- [src/frontEnd/src/components/GuidedParamEditor.vue](file://src/frontEnd/src/components/GuidedParamEditor.vue)
381+
- [src/frontEnd/src/utils/scanConfigParser.ts](file://src/frontEnd/src/utils/scanConfigParser.ts)
382+
- [src/frontEnd/src/utils/paramDefinitions.ts](file://src/frontEnd/src/utils/paramDefinitions.ts)
293383

294384
## 性能考虑
295385
引导式参数编辑器在设计时考虑了性能因素。参数列表的搜索和过滤操作采用实时更新机制,但通过事件去抖和后台线程处理来避免UI卡顿。命令行预览的生成也经过优化,只在参数发生变化时重新生成,减少了不必要的计算开销。

0 commit comments

Comments
 (0)