Skip to content

Commit ddcfbbc

Browse files
author
githubnull
committed
fix(burp): 修复常用配置列表数据源问题,从PresetConfigDatabase获取配置
1 parent 62cfb79 commit ddcfbbc

4 files changed

Lines changed: 136 additions & 8 deletions

File tree

src/burpEx/legacy-api/src/main/java/com/sqlmapwebui/burp/SqlmapUITab.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -159,4 +159,14 @@ public void refreshPresetTable() {
159159
presetConfigPanel.refreshTable();
160160
}
161161
}
162+
163+
/**
164+
* 获取常用配置数据库
165+
*/
166+
public PresetConfigDatabase getPresetDatabase() {
167+
if (presetConfigPanel != null) {
168+
return presetConfigPanel.getDatabase();
169+
}
170+
return null;
171+
}
162172
}

src/burpEx/legacy-api/src/main/java/com/sqlmapwebui/burp/dialogs/AdvancedScanConfigDialog.java

Lines changed: 58 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -221,11 +221,9 @@ private JPanel createConfigSelectPanel() {
221221
});
222222
leftPanel.add(useDefaultCheck, BorderLayout.NORTH);
223223

224-
// 配置列表
224+
// 配置列表 - 从 PresetConfigDatabase 获取常用配置
225225
configListModel = new DefaultListModel<>();
226-
for (ConfigManager.ConfigOption option : configManager.getAllConfigOptions()) {
227-
configListModel.addElement(option);
228-
}
226+
loadConfigOptions();
229227

230228
configList = new JList<>(configListModel);
231229
configList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
@@ -266,6 +264,62 @@ private JPanel createConfigSelectPanel() {
266264
return panel;
267265
}
268266

267+
/**
268+
* 加载配置选项(从 PresetConfigDatabase 获取常用配置)
269+
*/
270+
private void loadConfigOptions() {
271+
// 默认配置
272+
ScanConfig defaultConfig = configManager.getDefaultConfig();
273+
configListModel.addElement(new ConfigManager.ConfigOption(
274+
"【默认】" + defaultConfig.getName(), defaultConfig, ConfigManager.ConfigType.DEFAULT));
275+
276+
// 分隔符
277+
configListModel.addElement(ConfigManager.ConfigOption.createSeparator("── 常用配置 ──"));
278+
279+
// 从 PresetConfigDatabase 获取常用配置
280+
PresetConfigDatabase presetDb = uiTab.getPresetDatabase();
281+
if (presetDb != null) {
282+
List<PresetConfig> presetConfigs = presetDb.findAll();
283+
for (PresetConfig preset : presetConfigs) {
284+
// 将 PresetConfig 转换为 ScanConfig
285+
ScanConfig scanConfig = convertPresetToScanConfig(preset);
286+
configListModel.addElement(new ConfigManager.ConfigOption(
287+
preset.getName(), scanConfig, ConfigManager.ConfigType.PRESET));
288+
}
289+
}
290+
291+
// 历史配置
292+
List<ScanConfig> historyConfigs = configManager.getHistoryConfigs();
293+
if (!historyConfigs.isEmpty()) {
294+
configListModel.addElement(ConfigManager.ConfigOption.createSeparator("── 历史记录 ──"));
295+
for (ScanConfig config : historyConfigs) {
296+
configListModel.addElement(new ConfigManager.ConfigOption(
297+
config.getName(), config, ConfigManager.ConfigType.HISTORY));
298+
}
299+
}
300+
}
301+
302+
/**
303+
* 将 PresetConfig 转换为 ScanConfig
304+
*/
305+
private ScanConfig convertPresetToScanConfig(PresetConfig preset) {
306+
String paramString = preset.getParameterString();
307+
if (paramString != null && !paramString.trim().isEmpty()) {
308+
ParseResult result = ScanConfigParser.parse(paramString);
309+
if (result.isSuccess() && result.getConfig() != null) {
310+
ScanConfig config = result.getConfig();
311+
config.setName(preset.getName());
312+
config.setDescription(preset.getDescription());
313+
return config;
314+
}
315+
}
316+
// 如果解析失败,返回默认配置并设置名称
317+
ScanConfig fallback = ScanConfig.createDefault();
318+
fallback.setName(preset.getName());
319+
fallback.setDescription(preset.getDescription() + " (解析失败)");
320+
return fallback;
321+
}
322+
269323
/**
270324
* 创建引导式配置面板
271325
*/

src/burpEx/montoya-api/src/main/java/com/sqlmapwebui/burp/SqlmapUITab.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -159,4 +159,14 @@ public void refreshPresetTable() {
159159
presetConfigPanel.refreshTable();
160160
}
161161
}
162+
163+
/**
164+
* 获取常用配置数据库
165+
*/
166+
public PresetConfigDatabase getPresetDatabase() {
167+
if (presetConfigPanel != null) {
168+
return presetConfigPanel.getDatabase();
169+
}
170+
return null;
171+
}
162172
}

src/burpEx/montoya-api/src/main/java/com/sqlmapwebui/burp/dialogs/AdvancedScanConfigDialog.java

Lines changed: 58 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -214,11 +214,9 @@ private JPanel createConfigSelectPanel() {
214214
});
215215
leftPanel.add(useDefaultCheck, BorderLayout.NORTH);
216216

217-
// 配置列表
217+
// 配置列表 - 从 PresetConfigDatabase 获取常用配置
218218
configListModel = new DefaultListModel<>();
219-
for (ConfigManager.ConfigOption option : configManager.getAllConfigOptions()) {
220-
configListModel.addElement(option);
221-
}
219+
loadConfigOptions();
222220

223221
configList = new JList<>(configListModel);
224222
configList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
@@ -259,6 +257,62 @@ private JPanel createConfigSelectPanel() {
259257
return panel;
260258
}
261259

260+
/**
261+
* 加载配置选项(从 PresetConfigDatabase 获取常用配置)
262+
*/
263+
private void loadConfigOptions() {
264+
// 默认配置
265+
ScanConfig defaultConfig = configManager.getDefaultConfig();
266+
configListModel.addElement(new ConfigManager.ConfigOption(
267+
"【默认】" + defaultConfig.getName(), defaultConfig, ConfigManager.ConfigType.DEFAULT));
268+
269+
// 分隔符
270+
configListModel.addElement(ConfigManager.ConfigOption.createSeparator("── 常用配置 ──"));
271+
272+
// 从 PresetConfigDatabase 获取常用配置
273+
PresetConfigDatabase presetDb = uiTab.getPresetDatabase();
274+
if (presetDb != null) {
275+
List<PresetConfig> presetConfigs = presetDb.findAll();
276+
for (PresetConfig preset : presetConfigs) {
277+
// 将 PresetConfig 转换为 ScanConfig
278+
ScanConfig scanConfig = convertPresetToScanConfig(preset);
279+
configListModel.addElement(new ConfigManager.ConfigOption(
280+
preset.getName(), scanConfig, ConfigManager.ConfigType.PRESET));
281+
}
282+
}
283+
284+
// 历史配置
285+
List<ScanConfig> historyConfigs = configManager.getHistoryConfigs();
286+
if (!historyConfigs.isEmpty()) {
287+
configListModel.addElement(ConfigManager.ConfigOption.createSeparator("── 历史记录 ──"));
288+
for (ScanConfig config : historyConfigs) {
289+
configListModel.addElement(new ConfigManager.ConfigOption(
290+
config.getName(), config, ConfigManager.ConfigType.HISTORY));
291+
}
292+
}
293+
}
294+
295+
/**
296+
* 将 PresetConfig 转换为 ScanConfig
297+
*/
298+
private ScanConfig convertPresetToScanConfig(PresetConfig preset) {
299+
String paramString = preset.getParameterString();
300+
if (paramString != null && !paramString.trim().isEmpty()) {
301+
ParseResult result = ScanConfigParser.parse(paramString);
302+
if (result.isSuccess() && result.getConfig() != null) {
303+
ScanConfig config = result.getConfig();
304+
config.setName(preset.getName());
305+
config.setDescription(preset.getDescription());
306+
return config;
307+
}
308+
}
309+
// 如果解析失败,返回默认配置并设置名称
310+
ScanConfig fallback = ScanConfig.createDefault();
311+
fallback.setName(preset.getName());
312+
fallback.setDescription(preset.getDescription() + " (解析失败)");
313+
return fallback;
314+
}
315+
262316
/**
263317
* 创建引导式配置面板
264318
*/

0 commit comments

Comments
 (0)