Skip to content

Commit 33d40ab

Browse files
chenchen
authored andcommitted
Version: 1.1 Update
1 parent fb4343c commit 33d40ab

File tree

8 files changed

+46
-27
lines changed

8 files changed

+46
-27
lines changed

src/main/java/caa/CaA.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ public class CaA implements BurpExtension {
1818
@Override
1919
public void initialize(MontoyaApi api) {
2020
// 设置扩展名称
21-
String version = "1.0.2";
21+
String version = "1.1";
2222
api.extension().setName(String.format("CaA (%s) - Collector and Analyzer", version));
2323

2424
// 加载扩展后输出的项目信息

src/main/java/caa/Config.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ public class Config {
1010

1111
public static String scopeOptions = "Suite|Target|Proxy|Scanner|Intruder|Repeater|Logger|Sequencer|Decoder|Comparer|Extensions|Organizer|Recorded login replayer";
1212

13-
public static String suffix = "3g2|3gp|7z|aac|abw|aif|aifc|aiff|apk|arc|au|avi|azw|bat|bin|bmp|bz|bz2|cmd|cmx|cod|com|csh|css|csv|dll|doc|docx|ear|eot|epub|exe|flac|flv|gif|gz|ico|ics|ief|jar|jfif|jpe|jpeg|jpg|less|m3u|mid|midi|mjs|mkv|mov|mp2|mp3|mp4|mpa|mpe|mpeg|mpg|mpkg|mpp|mpv2|odp|ods|odt|oga|ogg|ogv|ogx|otf|pbm|pdf|pgm|png|pnm|ppm|ppt|pptx|ra|ram|rar|ras|rgb|rmi|rtf|scss|sh|snd|svg|swf|tar|tif|tiff|ttf|vsd|war|wav|weba|webm|webp|wmv|woff|woff2|xbm|xls|xlsx|xpm|xul|xwd|zip";
13+
public static String suffix = "3g2|3gp|7z|aac|abw|aif|aifc|aiff|apk|arc|au|avi|azw|bat|bin|bmp|bz|bz2|cmd|cmx|cod|com|csh|css|csv|dll|doc|docx|ear|eot|epub|exe|flac|flv|gif|gz|ico|ics|ief|jar|jfif|jpe|jpeg|jpg|less|m3u|mid|midi|mjs|mkv|mov|mp2|mp3|mp4|mpa|mpe|mpeg|mpg|mpkg|mpp|mpv2|odp|ods|odt|oga|ogg|ogv|ogx|otf|pbm|pdf|pgm|png|pnm|ppm|ppt|pptx|ra|ram|rar|ras|rgb|rmi|rtf|scss|sh|snd|svg|swf|tar|tif|tiff|ttf|vsd|war|wav|weba|webm|webp|wmv|woff|woff2|xbm|xls|xlsx|xpm|xul|xwd|zip|avif";
1414

1515
public static String[] CaATableName = new String[]{
1616
"Param",

src/main/java/caa/component/Config.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,7 @@ private JPanel createConfigTablePanel(String[] mode) {
183183
buttonPanel.add(clearButton, constraints);
184184

185185
JTextField addTextField = new JTextField();
186-
UITools.addPlaceholder(addTextField, defaultText);
186+
UITools.setTextFieldPlaceholder(addTextField, defaultText);
187187

188188
inputPanelB.add(addTextField, BorderLayout.CENTER);
189189
inputPanel.add(scrollPane, BorderLayout.CENTER);

src/main/java/caa/component/Databoard.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ private void initComponents() {
9393
hostTextField.setText(defaultText);
9494
hostTextField.setForeground(Color.GRAY);
9595

96-
UITools.addPlaceholder(hostTextField, defaultText);
96+
UITools.setTextFieldPlaceholder(hostTextField, defaultText);
9797

9898
dataPanel = new JPanel();
9999
dataPanel.setLayout(new BorderLayout());

src/main/java/caa/component/member/DatatablePanel.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ public int compare(Integer s1, Integer s2) {
8888

8989
// 设置灰色默认文本
9090
String searchText = "Search";
91-
UITools.addPlaceholder(searchField, searchText);
91+
UITools.setTextFieldPlaceholder(searchField, searchText);
9292

9393
// 监听输入框内容输入、更新、删除
9494
searchField.getDocument().addDocumentListener(new DocumentListener() {

src/main/java/caa/component/member/GeneratorDialog.java

Lines changed: 20 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111
import javax.swing.*;
1212
import javax.swing.border.EmptyBorder;
1313
import javax.swing.border.TitledBorder;
14+
import javax.swing.event.TableModelEvent;
15+
import javax.swing.event.TableModelListener;
1416
import javax.swing.table.DefaultTableModel;
1517
import java.awt.*;
1618
import java.awt.event.ItemEvent;
@@ -28,7 +30,7 @@ public class GeneratorDialog extends JDialog {
2830
private final ConfigLoader configLoader;
2931
private final HttpUtils httpUtils;
3032
private final JPanel contentPanel;
31-
private final String payload;
33+
private String payload;
3234
private final Dimension dialogDimension = new Dimension(600, 700);
3335
private final JPopupMenu popupMenu;
3436
private JTable payloadTable;
@@ -200,12 +202,12 @@ private JScrollPane getPayloadPanel() {
200202
payloadTable.addMouseListener(mouseAdapter);
201203
} else {
202204
model.setColumnCount(1);
205+
203206
payloadTable.removeMouseListener(mouseAdapter);
204207
}
205-
206-
addDataToTable(payload, model);
207208
});
208209
payloadModeComboBox.setSelectedItem(tabName);
210+
addDataToTable(payload, model);
209211

210212
constraints.insets = new Insets(0, 0, 3, 0);
211213
constraints.gridy = 0;
@@ -221,7 +223,7 @@ private JScrollPane getPayloadPanel() {
221223

222224
JTextField addTextField = new JTextField();
223225
String defaultText = "Enter a new item";
224-
UITools.addPlaceholder(addTextField, defaultText);
226+
UITools.setTextFieldPlaceholder(addTextField, defaultText);
225227

226228
inputPanelB.add(addTextField, BorderLayout.CENTER);
227229
inputPanel.add(scrollPane, BorderLayout.CENTER);
@@ -268,20 +270,23 @@ private String getTableData(JTable table) {
268270
}
269271

270272
private void addDataToTable(String data, DefaultTableModel model) {
271-
if (!data.isBlank()) {
272-
String[] rows = data.split("\\r?\\n");
273-
for (String row : rows) {
274-
String[] cellData;
273+
if (data.isBlank()) {
274+
return;
275+
}
275276

276-
if (row.contains("=")) {
277-
cellData = new String[]{row.split("=")[0], httpUtils.decodeParameter(row.split("=")[1])};
278-
} else {
279-
cellData = new String[]{row};
280-
}
277+
String[] rows = data.split("\\r?\\n");
278+
for (String row : rows) {
279+
String[] cellData;
281280

282-
model.addRow(cellData);
281+
if (row.contains("=")) {
282+
cellData = new String[]{row.split("=")[0], httpUtils.decodeParameter(row.split("=")[1])};
283+
} else {
284+
cellData = new String[]{row};
283285
}
284-
UITools.deduplicateTableData(model);
286+
287+
model.addRow(cellData);
285288
}
289+
290+
UITools.deduplicateTableData(model);
286291
}
287292
}

src/main/java/caa/component/utils/UITools.java

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -74,25 +74,39 @@ public static void deduplicateTableData(DefaultTableModel model) {
7474
}
7575
}
7676

77-
public static void addPlaceholder(JTextField textField, String placeholderText) {
78-
textField.setForeground(Color.GRAY);
79-
textField.setText(placeholderText);
77+
public static void setTextFieldPlaceholder(JTextField textField, String placeholderText) {
78+
// 使用客户端属性来存储占位符文本和占位符状态
79+
textField.putClientProperty("placeholderText", placeholderText);
80+
textField.putClientProperty("isPlaceholder", true);
81+
82+
// 设置占位符文本和颜色
83+
setPlaceholderText(textField);
84+
8085
textField.addFocusListener(new FocusListener() {
8186
@Override
8287
public void focusGained(FocusEvent e) {
83-
if (textField.getText().equals(placeholderText)) {
88+
// 当获得焦点且文本是占位符时,清除文本并更改颜色
89+
if ((boolean) textField.getClientProperty("isPlaceholder")) {
8490
textField.setText("");
8591
textField.setForeground(Color.BLACK);
92+
textField.putClientProperty("isPlaceholder", false);
8693
}
8794
}
8895

8996
@Override
9097
public void focusLost(FocusEvent e) {
98+
// 当失去焦点且文本为空时,设置占位符文本和颜色
9199
if (textField.getText().isEmpty()) {
92-
textField.setForeground(Color.GRAY);
93-
textField.setText(placeholderText);
100+
setPlaceholderText(textField);
94101
}
95102
}
96103
});
97104
}
105+
106+
private static void setPlaceholderText(JTextField textField) {
107+
String placeholderText = (String) textField.getClientProperty("placeholderText");
108+
textField.setForeground(Color.GRAY);
109+
textField.setText(placeholderText);
110+
textField.putClientProperty("isPlaceholder", true);
111+
}
98112
}

src/main/java/caa/instances/Generator.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -218,7 +218,7 @@ private HttpRequest generateRequestByPostMethodWithJson(HttpRequest httpRequest)
218218
}
219219
String jsonStr = new Gson().toJson(jsonObject);
220220
String newRequestStr = String.format("%s%s", requestStrWithoutBody, jsonStr);
221-
return HttpRequest.httpRequest(httpRequest.httpService(), newRequestStr).withUpdatedHeader("Content-Length", String.valueOf(jsonStr.length()));
221+
return HttpRequest.httpRequest(httpRequest.httpService(), newRequestStr).withUpdatedHeader("Content-Length", String.valueOf(jsonStr.length())).withUpdatedHeader("Content-Type", "application/json");
222222
}
223223

224224
private HttpRequest generateRequestByMultipartMethod(HttpRequest httpRequest) {

0 commit comments

Comments
 (0)