Files
HaE/src/main/java/burp/ui/RulePane.java

213 lines
9.4 KiB
Java
Raw Normal View History

2021-06-10 22:59:27 +08:00
package burp.ui;
2021-10-22 21:58:45 +08:00
import burp.yaml.SetConfig;
2021-06-10 22:59:27 +08:00
2022-05-27 13:29:32 +08:00
import java.awt.event.ComponentListener;
2021-06-10 22:59:27 +08:00
import javax.swing.*;
import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableRowSorter;
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.Vector;
2022-05-04 23:17:24 +08:00
/**
2021-06-10 22:59:27 +08:00
* @author LinChen
*/
public class RulePane extends JPanel {
2022-05-04 23:17:24 +08:00
public RulePane(Object[][] data, JTabbedPane pane) {
initComponents(data, pane);
2021-06-10 22:59:27 +08:00
}
2022-05-04 23:17:24 +08:00
private SetConfig setConfig = new SetConfig();
2021-06-10 22:59:27 +08:00
private Boolean isEdit = false;
2022-05-04 23:17:24 +08:00
private void ruleAddMouseClicked(MouseEvent e, JTabbedPane pane) {
2022-05-27 13:29:32 +08:00
RuleSetting ruleSettingPanel = new RuleSetting();
int showState = JOptionPane.showConfirmDialog(null, ruleSettingPanel, "RuleSetting - Add Rule", JOptionPane.OK_OPTION);
if(showState == 0){
Vector ruleData = new Vector();
ruleData.add(false);
ruleData.add(ruleSettingPanel.ruleNameTextField.getText());
ruleData.add(ruleSettingPanel.regexTextField.getText());
ruleData.add(ruleSettingPanel.colorComboBox.getSelectedItem().toString());
ruleData.add(ruleSettingPanel.scopeComboBox.getSelectedItem().toString());
ruleData.add(ruleSettingPanel.engineComboBox.getSelectedItem().toString());
ruleData.add(ruleSettingPanel.sensitiveComboBox.getSelectedItem());
model.insertRow(model.getRowCount(), ruleData);
2022-05-12 11:00:55 +08:00
model = (DefaultTableModel) ruleTable.getModel();
2022-05-27 13:29:32 +08:00
setConfig.add(ruleData, pane.getTitleAt(pane.getSelectedIndex()));
2021-06-10 22:59:27 +08:00
}
}
2021-06-11 12:36:30 +08:00
2022-05-04 23:17:24 +08:00
private void ruleEditMouseClicked(MouseEvent e, JTabbedPane pane){
2022-05-12 11:00:55 +08:00
if (ruleTable.getSelectedRowCount() >= 1){
2022-05-27 13:29:32 +08:00
RuleSetting ruleSettingPanel = new RuleSetting();
ruleSettingPanel.ruleNameTextField.setText(ruleTable.getValueAt(ruleTable.getSelectedRow(), 1).toString());
ruleSettingPanel.regexTextField.setText(ruleTable.getValueAt(ruleTable.getSelectedRow(), 2).toString());
ruleSettingPanel.colorComboBox.setSelectedItem(ruleTable.getValueAt(ruleTable.getSelectedRow(), 3).toString());
ruleSettingPanel.scopeComboBox.setSelectedItem(ruleTable.getValueAt(ruleTable.getSelectedRow(), 4).toString());
ruleSettingPanel.engineComboBox.setSelectedItem(ruleTable.getValueAt(ruleTable.getSelectedRow(), 5).toString());
2022-06-23 15:34:22 +08:00
ruleSettingPanel.sensitiveComboBox.setSelectedItem(ruleTable.getValueAt(ruleTable.getSelectedRow(),6));
2022-05-27 13:29:32 +08:00
ruleSettingPanel.sensitiveComboBox.setEnabled(
ruleSettingPanel.engineComboBox.getSelectedItem().toString().equals("nfa")
);
int showState = JOptionPane.showConfirmDialog(null, ruleSettingPanel, "RuleSetting - Edit Rule", JOptionPane.OK_OPTION);
if (showState == 0){
2022-05-12 11:00:55 +08:00
int select = ruleTable.convertRowIndexToModel(ruleTable.getSelectedRow());
2022-05-27 13:29:32 +08:00
model.setValueAt(ruleSettingPanel.ruleNameTextField.getText(), select, 1);
model.setValueAt(ruleSettingPanel.regexTextField.getText(), select, 2);
model.setValueAt(ruleSettingPanel.colorComboBox.getSelectedItem().toString(), select, 3);
model.setValueAt(ruleSettingPanel.scopeComboBox.getSelectedItem().toString(), select, 4);
model.setValueAt(ruleSettingPanel.engineComboBox.getSelectedItem().toString(), select, 5);
model.setValueAt(ruleSettingPanel.sensitiveComboBox.getSelectedItem(), select, 6);
2022-05-12 11:00:55 +08:00
model = (DefaultTableModel) ruleTable.getModel();
2022-05-04 23:17:24 +08:00
setConfig.edit((Vector) model.getDataVector().get(select), select, pane.getTitleAt(pane.getSelectedIndex()));
2021-06-10 22:59:27 +08:00
}
}
}
2021-06-11 12:36:30 +08:00
2022-05-04 23:17:24 +08:00
private void ruleRemoveMouseClicked(MouseEvent e, JTabbedPane pane){
2022-05-12 11:00:55 +08:00
if (ruleTable.getSelectedRowCount() >= 1){
2022-05-04 23:17:24 +08:00
int isOk = JOptionPane.showConfirmDialog(null, "Are your sure?", "RuleSetting - Delete Rule", JOptionPane.OK_OPTION);
if (isOk == 0){
2022-05-12 11:00:55 +08:00
int select = ruleTable.convertRowIndexToModel(ruleTable.getSelectedRow());
2021-06-11 12:36:30 +08:00
model.removeRow(select);
2022-05-12 11:00:55 +08:00
model = (DefaultTableModel) ruleTable.getModel();
2022-05-04 23:17:24 +08:00
setConfig.remove(select, pane.getTitleAt(pane.getSelectedIndex()));
2021-06-10 22:59:27 +08:00
}
}
}
2021-06-11 12:36:30 +08:00
2022-05-04 23:17:24 +08:00
private void ruleTableChange(TableModelEvent e, JTabbedPane pane) {
2022-05-12 11:00:55 +08:00
if (e.getColumn() == 0 && ruleTable.getSelectedRow() != -1 && !isEdit){
model = (DefaultTableModel) ruleTable.getModel();
int select = ruleTable.convertRowIndexToModel(ruleTable.getSelectedRow());
2022-05-04 23:17:24 +08:00
setConfig.edit((Vector) model.getDataVector().get(select), select, pane.getTitleAt(pane.getSelectedIndex()));
2021-06-10 22:59:27 +08:00
}
}
2022-05-04 23:17:24 +08:00
private void initComponents(Object[][] data, JTabbedPane pane) {
2021-06-10 22:59:27 +08:00
// JFormDesigner - Component initialization - DO NOT MODIFY //GEN-BEGIN:initComponents
2022-05-04 23:17:24 +08:00
addButton = new JButton();
editButton = new JButton();
2021-06-10 22:59:27 +08:00
scrollPane = new JScrollPane();
2022-05-12 11:00:55 +08:00
ruleTable = new JTable();
2022-05-04 23:17:24 +08:00
removeButton = new JButton();
2021-06-10 22:59:27 +08:00
//======== this ========
setLayout(new GridBagLayout());
((GridBagLayout)getLayout()).columnWidths = new int[] {0, 0, 0};
((GridBagLayout)getLayout()).rowHeights = new int[] {0, 0, 0, 0, 0};
((GridBagLayout)getLayout()).columnWeights = new double[] {0.0, 1.0, 1.0E-4};
((GridBagLayout)getLayout()).rowWeights = new double[] {0.0, 0.0, 0.0, 1.0, 1.0E-4};
2022-05-04 23:17:24 +08:00
//---- addButton ----
addButton.setText("Add");
addButton.addMouseListener(new MouseAdapter() {
2021-06-10 22:59:27 +08:00
@Override
public void mouseClicked(MouseEvent e) {
isEdit = true;
2022-05-04 23:17:24 +08:00
ruleAddMouseClicked(e, pane);
2022-05-12 11:00:55 +08:00
model = (DefaultTableModel) ruleTable.getModel();
2021-06-10 22:59:27 +08:00
isEdit = false;
}
});
2022-05-04 23:17:24 +08:00
2022-05-27 13:29:32 +08:00
add(addButton, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0,
GridBagConstraints.CENTER, GridBagConstraints.BOTH,
new Insets(15, 5, 3, 2), 0, 0));
2021-06-10 22:59:27 +08:00
2022-05-04 23:17:24 +08:00
//---- editButton ----
editButton.setText("Edit");
editButton.addMouseListener(new MouseAdapter() {
2021-06-10 22:59:27 +08:00
@Override
public void mouseClicked(MouseEvent e) {
isEdit = true;
2022-05-04 23:17:24 +08:00
ruleEditMouseClicked(e, pane);
2022-05-12 11:00:55 +08:00
model = (DefaultTableModel) ruleTable.getModel();
2021-06-10 22:59:27 +08:00
isEdit = false;
}
});
2022-05-04 23:17:24 +08:00
2022-05-27 13:29:32 +08:00
add(editButton, new GridBagConstraints(0, 1, 1, 1, 0.0, 0.0,
GridBagConstraints.CENTER, GridBagConstraints.BOTH,
new Insets(0, 5, 3, 2), 0, 0));
2021-06-10 22:59:27 +08:00
//======== scrollPane ========
{
//---- table ----
2022-05-12 11:00:55 +08:00
ruleTable.setShowVerticalLines(false);
ruleTable.setVerifyInputWhenFocusTarget(false);
ruleTable.setUpdateSelectionOnSort(false);
ruleTable.setShowHorizontalLines(false);
ruleTable.setModel(new DefaultTableModel());
ruleTable.setSurrendersFocusOnKeystroke(true);
scrollPane.setViewportView(ruleTable);
2021-06-10 22:59:27 +08:00
}
2022-05-04 23:17:24 +08:00
2022-05-27 13:29:32 +08:00
add(scrollPane, new GridBagConstraints(1, 0, 1, 4, 0.0, 0.0,
GridBagConstraints.CENTER, GridBagConstraints.BOTH,
new Insets(15, 5, 5, 5), 0, 0));
2021-06-10 22:59:27 +08:00
2022-05-04 23:17:24 +08:00
//---- removeButton ----
removeButton.setText("Remove");
removeButton.addMouseListener(new MouseAdapter() {
2021-06-10 22:59:27 +08:00
@Override
public void mouseClicked(MouseEvent e) {
isEdit = true;
2022-05-04 23:17:24 +08:00
ruleRemoveMouseClicked(e, pane);
2022-05-12 11:00:55 +08:00
model = (DefaultTableModel) ruleTable.getModel();
2021-06-10 22:59:27 +08:00
isEdit = false;
}
});
2022-05-04 23:17:24 +08:00
2022-05-27 13:29:32 +08:00
add(removeButton, new GridBagConstraints(0, 2, 1, 1, 0.0, 0.0,
GridBagConstraints.CENTER, GridBagConstraints.BOTH,
new Insets(0, 5, 3, 2), 0, 0));
2022-05-04 23:17:24 +08:00
2021-06-10 22:59:27 +08:00
// JFormDesigner - End of component initialization //GEN-END:initComponents
2022-05-12 11:00:55 +08:00
ruleTable.setModel(model);
2022-05-04 23:17:24 +08:00
model.setDataVector(data, title);
2021-06-10 22:59:27 +08:00
model.addTableModelListener(new TableModelListener() {
@Override
public void tableChanged(TableModelEvent e) {
2022-05-04 23:17:24 +08:00
ruleTableChange(e, pane);
2021-06-10 22:59:27 +08:00
}
});
2022-05-04 23:17:24 +08:00
2022-05-12 11:00:55 +08:00
ruleTable.setRowSorter(new TableRowSorter(model));
2021-06-10 22:59:27 +08:00
}
// JFormDesigner - Variables declaration - DO NOT MODIFY //GEN-BEGIN:variables
2022-05-04 23:17:24 +08:00
public JButton addButton;
public JButton editButton;
2021-06-10 22:59:27 +08:00
public JScrollPane scrollPane;
2022-05-12 11:00:55 +08:00
public JTable ruleTable;
2022-05-04 23:17:24 +08:00
public JButton removeButton;
2021-06-10 22:59:27 +08:00
// JFormDesigner - End of variables declaration //GEN-END:variables
2022-05-27 13:29:32 +08:00
private final String[] title = new String[]{"Loaded", "Name", "Regex", "Color", "Scope", "Engine", "Sensitive"};
2021-06-10 22:59:27 +08:00
private DefaultTableModel model = new DefaultTableModel() {
2022-04-08 17:21:40 +08:00
@Override
2022-05-04 23:17:24 +08:00
public Class<?> getColumnClass (int column){
2021-06-10 22:59:27 +08:00
if (column == 0) {
return Boolean.class;
}else{
return String.class;
}
}
2022-04-08 17:21:40 +08:00
@Override
2022-05-04 23:17:24 +08:00
public boolean isCellEditable(int row, int column){
return column == 0;
2021-06-10 22:59:27 +08:00
}
};
}