Skip to content

Commit a1156f6

Browse files
author
isayan
committed
Burp settings対応
1 parent 941394c commit a1156f6

File tree

5 files changed

+98
-100
lines changed

5 files changed

+98
-100
lines changed
151 Bytes
Binary file not shown.

release/YaguraExtension-v3.1.jar

477 Bytes
Binary file not shown.

src/main/java/yagura/view/BurpToolBar.form

Lines changed: 31 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -8,57 +8,43 @@
88
<Property name="useNullLayout" type="boolean" value="true"/>
99
</Layout>
1010
<SubComponents>
11-
<Menu class="javax.swing.JMenu" name="mnuUserSettings">
11+
<MenuItem class="javax.swing.JMenuItem" name="mnuLoadProjectSettings">
1212
<Properties>
13-
<Property name="text" type="java.lang.String" value="User Settings"/>
13+
<Property name="text" type="java.lang.String" value="Load project settings"/>
1414
<Property name="toolTipText" type="java.lang.String" value=""/>
1515
</Properties>
16-
<SubComponents>
17-
<MenuItem class="javax.swing.JMenuItem" name="mnuLoadUserSettings">
18-
<Properties>
19-
<Property name="text" type="java.lang.String" value="Load user settings"/>
20-
<Property name="toolTipText" type="java.lang.String" value=""/>
21-
</Properties>
22-
<Events>
23-
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="mnuLoadUserSettingsActionPerformed"/>
24-
</Events>
25-
</MenuItem>
26-
<MenuItem class="javax.swing.JMenuItem" name="mnuSaveUserSettings">
27-
<Properties>
28-
<Property name="text" type="java.lang.String" value="Save user settings"/>
29-
<Property name="toolTipText" type="java.lang.String" value=""/>
30-
</Properties>
31-
<Events>
32-
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="mnuSaveUserSettingsActionPerformed"/>
33-
</Events>
34-
</MenuItem>
35-
</SubComponents>
36-
</Menu>
37-
<Menu class="javax.swing.JMenu" name="mnuProjectSettings">
16+
<Events>
17+
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="mnuLoadProjectSettingsActionPerformed"/>
18+
</Events>
19+
</MenuItem>
20+
<MenuItem class="javax.swing.JMenuItem" name="mnuSaveProjectSettings">
21+
<Properties>
22+
<Property name="text" type="java.lang.String" value="Save project settings"/>
23+
</Properties>
24+
<Events>
25+
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="mnuSaveProjectSettingsActionPerformed"/>
26+
</Events>
27+
</MenuItem>
28+
<Component class="javax.swing.JPopupMenu$Separator" name="jSeparator0">
29+
</Component>
30+
<MenuItem class="javax.swing.JMenuItem" name="mnuLoadUserSettings">
3831
<Properties>
39-
<Property name="text" type="java.lang.String" value="Project Settings"/>
32+
<Property name="text" type="java.lang.String" value="Load user settings"/>
4033
<Property name="toolTipText" type="java.lang.String" value=""/>
4134
</Properties>
42-
<SubComponents>
43-
<MenuItem class="javax.swing.JMenuItem" name="mnuLoadProjectSettings">
44-
<Properties>
45-
<Property name="text" type="java.lang.String" value="Load project settings"/>
46-
<Property name="toolTipText" type="java.lang.String" value=""/>
47-
</Properties>
48-
<Events>
49-
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="mnuLoadProjectSettingsActionPerformed"/>
50-
</Events>
51-
</MenuItem>
52-
<MenuItem class="javax.swing.JMenuItem" name="saveSaveProjectSettings">
53-
<Properties>
54-
<Property name="text" type="java.lang.String" value="Save project settings"/>
55-
</Properties>
56-
<Events>
57-
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="saveSaveProjectSettingsActionPerformed"/>
58-
</Events>
59-
</MenuItem>
60-
</SubComponents>
61-
</Menu>
35+
<Events>
36+
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="mnuLoadUserSettingsActionPerformed"/>
37+
</Events>
38+
</MenuItem>
39+
<MenuItem class="javax.swing.JMenuItem" name="mnuSaveUserSettings">
40+
<Properties>
41+
<Property name="text" type="java.lang.String" value="Save user settings"/>
42+
<Property name="toolTipText" type="java.lang.String" value=""/>
43+
</Properties>
44+
<Events>
45+
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="mnuSaveUserSettingsActionPerformed"/>
46+
</Events>
47+
</MenuItem>
6248
</SubComponents>
6349
</Container>
6450
</NonVisualComponents>

src/main/java/yagura/view/BurpToolBar.java

Lines changed: 61 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -51,12 +51,11 @@ public BurpToolBar(final MontoyaApi api) {
5151
private void initComponents() {
5252

5353
popupSetting = new javax.swing.JPopupMenu();
54-
mnuUserSettings = new javax.swing.JMenu();
54+
mnuLoadProjectSettings = new javax.swing.JMenuItem();
55+
mnuSaveProjectSettings = new javax.swing.JMenuItem();
56+
jSeparator0 = new javax.swing.JPopupMenu.Separator();
5557
mnuLoadUserSettings = new javax.swing.JMenuItem();
5658
mnuSaveUserSettings = new javax.swing.JMenuItem();
57-
mnuProjectSettings = new javax.swing.JMenu();
58-
mnuLoadProjectSettings = new javax.swing.JMenuItem();
59-
saveSaveProjectSettings = new javax.swing.JMenuItem();
6059
toolBar = new javax.swing.JToolBar();
6160
tglIntercept = new javax.swing.JToggleButton();
6261
jSeparator1 = new javax.swing.JToolBar.Separator();
@@ -67,8 +66,23 @@ private void initComponents() {
6766
btnScrollTabLayout = new javax.swing.JButton();
6867
btnSetting = new javax.swing.JButton();
6968

70-
mnuUserSettings.setText("User Settings");
71-
mnuUserSettings.setToolTipText("");
69+
mnuLoadProjectSettings.setText("Load project settings");
70+
mnuLoadProjectSettings.setToolTipText("");
71+
mnuLoadProjectSettings.addActionListener(new java.awt.event.ActionListener() {
72+
public void actionPerformed(java.awt.event.ActionEvent evt) {
73+
mnuLoadProjectSettingsActionPerformed(evt);
74+
}
75+
});
76+
popupSetting.add(mnuLoadProjectSettings);
77+
78+
mnuSaveProjectSettings.setText("Save project settings");
79+
mnuSaveProjectSettings.addActionListener(new java.awt.event.ActionListener() {
80+
public void actionPerformed(java.awt.event.ActionEvent evt) {
81+
mnuSaveProjectSettingsActionPerformed(evt);
82+
}
83+
});
84+
popupSetting.add(mnuSaveProjectSettings);
85+
popupSetting.add(jSeparator0);
7286

7387
mnuLoadUserSettings.setText("Load user settings");
7488
mnuLoadUserSettings.setToolTipText("");
@@ -77,7 +91,7 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
7791
mnuLoadUserSettingsActionPerformed(evt);
7892
}
7993
});
80-
mnuUserSettings.add(mnuLoadUserSettings);
94+
popupSetting.add(mnuLoadUserSettings);
8195

8296
mnuSaveUserSettings.setText("Save user settings");
8397
mnuSaveUserSettings.setToolTipText("");
@@ -86,31 +100,7 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
86100
mnuSaveUserSettingsActionPerformed(evt);
87101
}
88102
});
89-
mnuUserSettings.add(mnuSaveUserSettings);
90-
91-
popupSetting.add(mnuUserSettings);
92-
93-
mnuProjectSettings.setText("Project Settings");
94-
mnuProjectSettings.setToolTipText("");
95-
96-
mnuLoadProjectSettings.setText("Load project settings");
97-
mnuLoadProjectSettings.setToolTipText("");
98-
mnuLoadProjectSettings.addActionListener(new java.awt.event.ActionListener() {
99-
public void actionPerformed(java.awt.event.ActionEvent evt) {
100-
mnuLoadProjectSettingsActionPerformed(evt);
101-
}
102-
});
103-
mnuProjectSettings.add(mnuLoadProjectSettings);
104-
105-
saveSaveProjectSettings.setText("Save project settings");
106-
saveSaveProjectSettings.addActionListener(new java.awt.event.ActionListener() {
107-
public void actionPerformed(java.awt.event.ActionEvent evt) {
108-
saveSaveProjectSettingsActionPerformed(evt);
109-
}
110-
});
111-
mnuProjectSettings.add(saveSaveProjectSettings);
112-
113-
popupSetting.add(mnuProjectSettings);
103+
popupSetting.add(mnuSaveUserSettings);
114104

115105
setLayout(new java.awt.BorderLayout());
116106

@@ -293,7 +283,7 @@ private void btnScrollTabLayoutActionPerformed(java.awt.event.ActionEvent evt) {
293283
}//GEN-LAST:event_btnScrollTabLayoutActionPerformed
294284

295285
private void btnSettingActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnSettingActionPerformed
296-
this.popupSetting.show(this, this.btnSetting.getX()+this.btnSetting.getWidth(), this.btnSetting.getY());
286+
this.popupSetting.show(this, this.btnSetting.getX(), this.btnSetting.getY()+this.btnSetting.getHeight());
297287
}//GEN-LAST:event_btnSettingActionPerformed
298288

299289
private File userSetting;
@@ -302,23 +292,35 @@ private void btnSettingActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FI
302292
private void mnuLoadUserSettingsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_mnuLoadUserSettingsActionPerformed
303293
JFileChooser filechooser = new JFileChooser();
304294
filechooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
295+
filechooser.addChoosableFileFilter(BurpConfig.BURP_CONFIG_FILTER);
296+
filechooser.setFileFilter(BurpConfig.BURP_CONFIG_FILTER);
305297
filechooser.setCurrentDirectory(this.userSetting);
306-
int selected = filechooser.showSaveDialog(this);
298+
int selected = filechooser.showOpenDialog(this);
307299
if (selected == JFileChooser.APPROVE_OPTION) {
308-
File file = filechooser.getSelectedFile();
309-
this.userSetting = file.getParentFile();
310-
this.api.burpSuite().importUserOptionsFromJson(file.getAbsolutePath());
300+
try {
301+
File file = filechooser.getSelectedFile();
302+
this.userSetting = file.getParentFile();
303+
String config = StringUtil.getStringUTF8(FileUtil.bytesFromFile(file.getAbsoluteFile()));
304+
this.api.burpSuite().importUserOptionsFromJson(config);
305+
} catch (IOException ex) {
306+
JOptionPane.showMessageDialog(this, ex.getMessage(), "User Settings", JOptionPane.OK_OPTION);
307+
}
311308
}
312309
}//GEN-LAST:event_mnuLoadUserSettingsActionPerformed
313310

314311
private void mnuSaveUserSettingsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_mnuSaveUserSettingsActionPerformed
315312
JFileChooser filechooser = new JFileChooser();
316313
filechooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
314+
filechooser.addChoosableFileFilter(BurpConfig.BURP_CONFIG_FILTER);
315+
filechooser.setFileFilter(BurpConfig.BURP_CONFIG_FILTER);
317316
filechooser.setCurrentDirectory(this.userSetting);
318-
int selected = filechooser.showOpenDialog(this);
317+
int selected = filechooser.showSaveDialog(this);
319318
if (selected == JFileChooser.APPROVE_OPTION) {
320319
try {
321320
File file = filechooser.getSelectedFile();
321+
if (!BurpConfig.BURP_CONFIG_FILTER.accept(file)) {
322+
file = new File(file.getAbsolutePath() + ".json");
323+
}
322324
this.userSetting = file.getParentFile();
323325
String config = this.api.burpSuite().exportUserOptionsAsJson();
324326
FileUtil.bytesToFile(StringUtil.getBytesUTF8(config), file);
@@ -331,47 +333,58 @@ private void mnuSaveUserSettingsActionPerformed(java.awt.event.ActionEvent evt)
331333
private void mnuLoadProjectSettingsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_mnuLoadProjectSettingsActionPerformed
332334
JFileChooser filechooser = new JFileChooser();
333335
filechooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
336+
filechooser.addChoosableFileFilter(BurpConfig.BURP_CONFIG_FILTER);
337+
filechooser.setFileFilter(BurpConfig.BURP_CONFIG_FILTER);
334338
filechooser.setCurrentDirectory(this.projectSetting);
335-
int selected = filechooser.showSaveDialog(this);
339+
int selected = filechooser.showOpenDialog(this);
336340
if (selected == JFileChooser.APPROVE_OPTION) {
337-
File file = filechooser.getSelectedFile();
338-
this.projectSetting = file.getParentFile();
339-
this.api.burpSuite().importProjectOptionsFromJson(file.getAbsolutePath());
341+
try {
342+
File file = filechooser.getSelectedFile();
343+
this.projectSetting = file.getParentFile();
344+
String config = StringUtil.getStringUTF8(FileUtil.bytesFromFile(file.getAbsoluteFile()));
345+
this.api.burpSuite().importProjectOptionsFromJson(config);
346+
} catch (IOException ex) {
347+
JOptionPane.showMessageDialog(this, ex.getMessage(), "Project Settings", JOptionPane.OK_OPTION);
348+
}
340349
}
341350
}//GEN-LAST:event_mnuLoadProjectSettingsActionPerformed
342351

343-
private void saveSaveProjectSettingsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_saveSaveProjectSettingsActionPerformed
352+
private void mnuSaveProjectSettingsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_mnuSaveProjectSettingsActionPerformed
344353
JFileChooser filechooser = new JFileChooser();
345354
filechooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
355+
filechooser.addChoosableFileFilter(BurpConfig.BURP_CONFIG_FILTER);
356+
filechooser.setFileFilter(BurpConfig.BURP_CONFIG_FILTER);
346357
filechooser.setCurrentDirectory(this.projectSetting);
347-
int selected = filechooser.showOpenDialog(this);
358+
int selected = filechooser.showSaveDialog(this);
348359
if (selected == JFileChooser.APPROVE_OPTION) {
349360
try {
350361
File file = filechooser.getSelectedFile();
362+
if (!BurpConfig.BURP_CONFIG_FILTER.accept(file)) {
363+
file = new File(file.getAbsolutePath() + ".json");
364+
}
351365
this.projectSetting = file.getParentFile();
352366
String config = this.api.burpSuite().exportProjectOptionsAsJson();
353367
FileUtil.bytesToFile(StringUtil.getBytesUTF8(config), file);
354368
} catch (IOException ex) {
355369
JOptionPane.showMessageDialog(this, ex.getMessage(), "Project Settings", JOptionPane.OK_OPTION);
356370
}
357371
}
358-
}//GEN-LAST:event_saveSaveProjectSettingsActionPerformed
372+
}//GEN-LAST:event_mnuSaveProjectSettingsActionPerformed
359373

360374
// Variables declaration - do not modify//GEN-BEGIN:variables
361375
private javax.swing.JButton btnOpenBrowser;
362376
private javax.swing.JButton btnScrollTabLayout;
363377
private javax.swing.JButton btnSetting;
364378
private javax.swing.JButton btnWrapTabLayout;
365379
private javax.swing.JComboBox<String> cmbProfile;
380+
private javax.swing.JPopupMenu.Separator jSeparator0;
366381
private javax.swing.JToolBar.Separator jSeparator1;
367382
private javax.swing.JToolBar.Separator jSeparator2;
368383
private javax.swing.JMenuItem mnuLoadProjectSettings;
369384
private javax.swing.JMenuItem mnuLoadUserSettings;
370-
private javax.swing.JMenu mnuProjectSettings;
385+
private javax.swing.JMenuItem mnuSaveProjectSettings;
371386
private javax.swing.JMenuItem mnuSaveUserSettings;
372-
private javax.swing.JMenu mnuUserSettings;
373387
private javax.swing.JPopupMenu popupSetting;
374-
private javax.swing.JMenuItem saveSaveProjectSettings;
375388
private javax.swing.JToggleButton tglIntercept;
376389
private javax.swing.JToolBar toolBar;
377390
// End of variables declaration//GEN-END:variables

src/main/java/yagura/view/VersionTab.java

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package yagura.view;
22

33
import burp.BurpExtension;
4+
import extension.burp.BurpConfig;
45
import extension.view.layout.VerticalFlowLayout;
56
import yagura.Version;
67
import java.awt.Component;
@@ -118,16 +119,14 @@ private void chkDebugModeStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-
118119
this.firePropertyChange(TabbetOption.VERSION_PROPERTY, null, this);
119120
}//GEN-LAST:event_chkDebugModeStateChanged
120121

121-
private final static FileFilter BURP_CONFIG_FILTER = new FileNameExtensionFilter("burp config File(*.json)", "json");
122-
123122
private File currentConigDirectory = null;
124123

125124
private void btnImportActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnImportActionPerformed
126125
File file = null;
127126
JFileChooser filechooser = new JFileChooser();
128127
filechooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
129-
filechooser.addChoosableFileFilter(BURP_CONFIG_FILTER);
130-
filechooser.setFileFilter(BURP_CONFIG_FILTER);
128+
filechooser.addChoosableFileFilter(BurpConfig.BURP_CONFIG_FILTER);
129+
filechooser.setFileFilter(BurpConfig.BURP_CONFIG_FILTER);
131130
if (this.currentConigDirectory != null) {
132131
filechooser.setCurrentDirectory(this.currentConigDirectory);
133132
}
@@ -151,8 +150,8 @@ private void btnExportActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIR
151150
File file = null;
152151
JFileChooser filechooser = new JFileChooser();
153152
filechooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
154-
filechooser.addChoosableFileFilter(BURP_CONFIG_FILTER);
155-
filechooser.setFileFilter(BURP_CONFIG_FILTER);
153+
filechooser.addChoosableFileFilter(BurpConfig.BURP_CONFIG_FILTER);
154+
filechooser.setFileFilter(BurpConfig.BURP_CONFIG_FILTER);
156155
if (file != null && file.exists()) {
157156
filechooser.setSelectedFile(file);
158157
} else {
@@ -162,7 +161,7 @@ private void btnExportActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIR
162161
if (selected == JFileChooser.APPROVE_OPTION) {
163162
try {
164163
file = filechooser.getSelectedFile();
165-
if (!BURP_CONFIG_FILTER.accept(file)) {
164+
if (!BurpConfig.BURP_CONFIG_FILTER.accept(file)) {
166165
file = new File(file.getAbsolutePath() + ".json");
167166
}
168167
OptionProperty option = BurpExtension.getInstance().getProperty();

0 commit comments

Comments
 (0)