90 lines
3.9 KiB
Java
90 lines
3.9 KiB
Java
package hae.component.config;
|
|
|
|
import burp.api.montoya.MontoyaApi;
|
|
import hae.component.rule.Rules;
|
|
import hae.utils.config.ConfigLoader;
|
|
|
|
import javax.swing.*;
|
|
import java.awt.*;
|
|
import java.awt.event.ActionEvent;
|
|
|
|
public class Config extends JPanel {
|
|
private final MontoyaApi api;
|
|
private final ConfigLoader configLoader;
|
|
private final Rules rules;
|
|
|
|
public Config(MontoyaApi api, ConfigLoader configLoader, Rules rules) {
|
|
this.api = api;
|
|
this.configLoader = configLoader;
|
|
this.rules = rules;
|
|
|
|
initComponents();
|
|
}
|
|
|
|
private void initComponents() {
|
|
setLayout(new GridBagLayout());
|
|
((GridBagLayout) getLayout()).columnWidths = new int[]{0, 0, 0, 0, 0};
|
|
((GridBagLayout) getLayout()).rowHeights = new int[]{0, 0, 0};
|
|
((GridBagLayout) getLayout()).columnWeights = new double[]{0.0, 1.0, 0.0, 0.0, 1.0E-4};
|
|
((GridBagLayout) getLayout()).rowWeights = new double[]{0.0, 0.0, 1.0E-4};
|
|
|
|
JLabel rulesFilePathLabel = new JLabel("Rules Path:");
|
|
JTextField rulesFilePathTextField = new JTextField();
|
|
JButton onlineUpdateButton = new JButton("Update");
|
|
JLabel excludeSuffixLabel = new JLabel("Exclude Suffix:");
|
|
JTextField excludeSuffixTextField = new JTextField();
|
|
JButton excludeSuffixSaveButton = new JButton("Save");
|
|
JButton reloadButton = new JButton("Reload");
|
|
|
|
rulesFilePathTextField.setEditable(false);
|
|
|
|
onlineUpdateButton.addActionListener(this::onlineUpdateActionPerformed);
|
|
excludeSuffixSaveButton.addActionListener(e -> excludeSuffixSaveActionPerformed(e, excludeSuffixTextField.getText()));
|
|
reloadButton.addActionListener(this::reloadActionPerformed);
|
|
|
|
rulesFilePathTextField.setText(configLoader.getRulesFilePath());
|
|
excludeSuffixTextField.setText(configLoader.getExcludeSuffix());
|
|
|
|
add(rulesFilePathTextField, new GridBagConstraints(1, 0, 1, 1, 0.0, 0.0,
|
|
GridBagConstraints.CENTER, GridBagConstraints.BOTH,
|
|
new Insets(5, 0, 5, 5), 0, 0));
|
|
add(rulesFilePathLabel, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0,
|
|
GridBagConstraints.WEST, GridBagConstraints.VERTICAL,
|
|
new Insets(5, 5, 5, 5), 0, 0));
|
|
add(onlineUpdateButton, new GridBagConstraints(2, 0, 1, 1, 0.0, 0.0,
|
|
GridBagConstraints.CENTER, GridBagConstraints.BOTH,
|
|
new Insets(5, 0, 5, 5), 0, 0));
|
|
add(reloadButton, new GridBagConstraints(3, 0, 1, 1, 0.0, 0.0,
|
|
GridBagConstraints.CENTER, GridBagConstraints.BOTH,
|
|
new Insets(5, 0, 5, 5), 0, 0));
|
|
add(excludeSuffixLabel, new GridBagConstraints(0, 1, 1, 1, 0.0, 0.0,
|
|
GridBagConstraints.SOUTHWEST, GridBagConstraints.NONE,
|
|
new Insets(0, 5, 5, 5), 0, 0));
|
|
add(excludeSuffixTextField, new GridBagConstraints(1, 1, 1, 1, 0.0, 0.0,
|
|
GridBagConstraints.SOUTH, GridBagConstraints.HORIZONTAL,
|
|
new Insets(0, 0, 0, 5), 0, 0));
|
|
add(excludeSuffixSaveButton, new GridBagConstraints(2, 1, 1, 1, 0.0, 0.0,
|
|
GridBagConstraints.SOUTH, GridBagConstraints.HORIZONTAL,
|
|
new Insets(0, 0, 0, 5), 0, 0));
|
|
}
|
|
|
|
private void onlineUpdateActionPerformed(ActionEvent e) {
|
|
// 添加提示框防止用户误触导致配置更新
|
|
int retCode = JOptionPane.showConfirmDialog(null, "Do you want to update rules?", "Info", JOptionPane.YES_NO_OPTION);
|
|
if (retCode == JOptionPane.YES_OPTION) {
|
|
configLoader.initRules();
|
|
reloadActionPerformed(null);
|
|
}
|
|
}
|
|
|
|
private void excludeSuffixSaveActionPerformed(ActionEvent e, String suffix) {
|
|
if (!suffix.equals(configLoader.getExcludeSuffix()) && !suffix.isEmpty()) {
|
|
configLoader.setExcludeSuffix(suffix);
|
|
}
|
|
}
|
|
|
|
private void reloadActionPerformed(ActionEvent e) {
|
|
rules.reloadRuleGroup();
|
|
}
|
|
}
|