From 8f52ae02df3c2cc4b17423c821349b7665b01653 Mon Sep 17 00:00:00 2001 From: Matt Weeks Date: Thu, 26 Aug 2010 23:49:35 +0000 Subject: [PATCH] Tabs disabled until loaded from database, auto-load database on connect, and more simplified database calls, git-svn-id: file:///home/svn/framework3/trunk@10161 4d416f70-5f16-0410-b530-b9f4589650da --- data/gui/msfgui.jar | Bin 624631 -> 624961 bytes .../gui/msfguijava/src/msfgui/MainFrame.form | 10 +-- .../gui/msfguijava/src/msfgui/MainFrame.java | 69 +++++++++--------- 3 files changed, 40 insertions(+), 39 deletions(-) diff --git a/data/gui/msfgui.jar b/data/gui/msfgui.jar index 553abef3236dfc95404bb22417a367e499e69628..b53f64815df5bbac00e98e34a729c8c44c63a717 100755 GIT binary patch delta 25208 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 diff --git a/external/source/gui/msfguijava/src/msfgui/MainFrame.form b/external/source/gui/msfguijava/src/msfgui/MainFrame.form index 7af009f8be..506e2a60b6 100644 --- a/external/source/gui/msfguijava/src/msfgui/MainFrame.form +++ b/external/source/gui/msfguijava/src/msfgui/MainFrame.form @@ -10,20 +10,20 @@ - + - + - + - + @@ -616,7 +616,7 @@ - + diff --git a/external/source/gui/msfguijava/src/msfgui/MainFrame.java b/external/source/gui/msfguijava/src/msfgui/MainFrame.java index f1bd302773..b493ec28f6 100644 --- a/external/source/gui/msfguijava/src/msfgui/MainFrame.java +++ b/external/source/gui/msfguijava/src/msfgui/MainFrame.java @@ -4,7 +4,6 @@ package msfgui; import java.awt.Component; -import java.awt.Graphics; import java.awt.HeadlessException; import java.awt.event.WindowEvent; import javax.swing.JTable; @@ -27,7 +26,6 @@ import java.util.HashMap; import java.util.TreeMap; import java.util.ArrayList; import java.util.List; -import java.util.Vector; import javax.swing.Timer; import javax.swing.Icon; import javax.swing.JComponent; @@ -136,6 +134,9 @@ public class MainFrame extends FrameView { }); //Setup icon this.getFrame().setIconImage( resourceMap.getImageIcon("main.icon").getImage()); + //Disable tabs by default + for(int i = 2; i <= 5; i++) + tabbedPane.setEnabledAt(i, false); } private void confirmStop() { @@ -352,10 +353,10 @@ public class MainFrame extends FrameView { //Exploits and auxiliary get modulepopups; payloads get payloadpopups duh setMessage("Getting exploits"); expandList((Object[]) ((Map)rpcConn.execute("module.exploits")).get("modules"), exploitsMenu, moduleFactory, "exploit"); - setProgress(0.33f); + setProgress(0.3f); setMessage("Getting auxiliary modules"); expandList((Object[]) ((Map)rpcConn.execute("module.auxiliary")).get("modules"), auxiliaryMenu, moduleFactory, "auxiliary"); - setProgress(0.66f); + setProgress(0.5f); setMessage("Getting payloads"); expandList((Object[]) ((Map)rpcConn.execute("module.payloads")).get("modules"), payloadsMenu, new RunMenuFactory(){ public ActionListener getActor(final String modName, final String type, final RpcConnection rpcConn) { @@ -366,6 +367,9 @@ public class MainFrame extends FrameView { }; } }, "payload"); + setProgress(0.8f); + setMessage("Querying database..."); + reloadDb(); setProgress(1.0f); } catch (MsfException ex) { statusAnimationLabel.setText("Error getting module lists. " + ex); @@ -393,7 +397,7 @@ public class MainFrame extends FrameView { private void initComponents() { mainPanel = new javax.swing.JPanel(); - jTabbedPane1 = new javax.swing.JTabbedPane(); + tabbedPane = new javax.swing.JTabbedPane(); jScrollPane1 = new javax.swing.JScrollPane(); jobsList = new javax.swing.JList(); jScrollPane2 = new javax.swing.JScrollPane(); @@ -444,7 +448,7 @@ public class MainFrame extends FrameView { mainPanel.setName("mainPanel"); // NOI18N - jTabbedPane1.setName("jTabbedPane1"); // NOI18N + tabbedPane.setName("tabbedPane"); // NOI18N jScrollPane1.setName("jScrollPane1"); // NOI18N jScrollPane1.setPreferredSize(new java.awt.Dimension(10, 10)); @@ -453,7 +457,7 @@ public class MainFrame extends FrameView { jScrollPane1.setViewportView(jobsList); org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance(msfgui.MsfguiApp.class).getContext().getResourceMap(MainFrame.class); - jTabbedPane1.addTab(resourceMap.getString("jScrollPane1.TabConstraints.tabTitle"), jScrollPane1); // NOI18N + tabbedPane.addTab(resourceMap.getString("jScrollPane1.TabConstraints.tabTitle"), jScrollPane1); // NOI18N jScrollPane2.setName("jScrollPane2"); // NOI18N @@ -469,7 +473,7 @@ public class MainFrame extends FrameView { sessionsTable.setSelectionMode(javax.swing.ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); jScrollPane2.setViewportView(sessionsTable); - jTabbedPane1.addTab(resourceMap.getString("jScrollPane2.TabConstraints.tabTitle"), jScrollPane2); // NOI18N + tabbedPane.addTab(resourceMap.getString("jScrollPane2.TabConstraints.tabTitle"), jScrollPane2); // NOI18N jScrollPane3.setName("jScrollPane3"); // NOI18N @@ -505,7 +509,7 @@ public class MainFrame extends FrameView { hostsTable.getColumnModel().getColumn(11).setHeaderValue(resourceMap.getString("hostsTable.columnModel.title11")); // NOI18N hostsTable.getColumnModel().getColumn(12).setHeaderValue(resourceMap.getString("hostsTable.columnModel.title12")); // NOI18N - jTabbedPane1.addTab(resourceMap.getString("jScrollPane3.TabConstraints.tabTitle"), jScrollPane3); // NOI18N + tabbedPane.addTab(resourceMap.getString("jScrollPane3.TabConstraints.tabTitle"), jScrollPane3); // NOI18N jScrollPane4.setName("jScrollPane4"); // NOI18N @@ -528,7 +532,7 @@ public class MainFrame extends FrameView { servicesTable.setName("servicesTable"); // NOI18N jScrollPane4.setViewportView(servicesTable); - jTabbedPane1.addTab(resourceMap.getString("jScrollPane4.TabConstraints.tabTitle"), jScrollPane4); // NOI18N + tabbedPane.addTab(resourceMap.getString("jScrollPane4.TabConstraints.tabTitle"), jScrollPane4); // NOI18N jScrollPane5.setName("jScrollPane5"); // NOI18N @@ -551,7 +555,7 @@ public class MainFrame extends FrameView { vulnsTable.setName("vulnsTable"); // NOI18N jScrollPane5.setViewportView(vulnsTable); - jTabbedPane1.addTab(resourceMap.getString("jScrollPane5.TabConstraints.tabTitle"), jScrollPane5); // NOI18N + tabbedPane.addTab(resourceMap.getString("jScrollPane5.TabConstraints.tabTitle"), jScrollPane5); // NOI18N jScrollPane6.setName("jScrollPane6"); // NOI18N @@ -574,19 +578,19 @@ public class MainFrame extends FrameView { eventsTable.setName("eventsTable"); // NOI18N jScrollPane6.setViewportView(eventsTable); - jTabbedPane1.addTab(resourceMap.getString("jScrollPane6.TabConstraints.tabTitle"), jScrollPane6); // NOI18N + tabbedPane.addTab(resourceMap.getString("jScrollPane6.TabConstraints.tabTitle"), jScrollPane6); // NOI18N - jTabbedPane1.setSelectedIndex(1); + tabbedPane.setSelectedIndex(1); javax.swing.GroupLayout mainPanelLayout = new javax.swing.GroupLayout(mainPanel); mainPanel.setLayout(mainPanelLayout); mainPanelLayout.setHorizontalGroup( mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(jTabbedPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 882, Short.MAX_VALUE) + .addComponent(tabbedPane, javax.swing.GroupLayout.DEFAULT_SIZE, 882, Short.MAX_VALUE) ); mainPanelLayout.setVerticalGroup( mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(jTabbedPane1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 532, Short.MAX_VALUE) + .addComponent(tabbedPane, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 532, Short.MAX_VALUE) ); menuBar.setName("menuBar"); // NOI18N @@ -942,26 +946,14 @@ public class MainFrame extends FrameView { /** Refreshes the database tables. */ private void reloadDb() { - try { - Object[] hosts = (Object[]) ((Map)rpcConn.execute("db.hosts",new Object[]{new HashMap()})).get("hosts"); - reAdd(hostsTable,hosts,new String[]{"created_at","address","address6","mac","name","state","os_name", + reAddQuery(hostsTable,2,"hosts",new String[]{"created_at","address","address6","mac","name","state","os_name", "os_flavor","os_sp","os_lang","updated_at","purpose","info"}); - } catch (MsfException mex) { - } - try { - Object[] services = (Object[]) ((Map)rpcConn.execute("db.services",new Object[]{new HashMap()})).get("services"); - reAdd(servicesTable, services, new String[]{"host","created_at","updated_at","port","proto","state","name","info"}); - } catch (MsfException mex) { - } - try { - Object[] vulns = (Object[]) ((Map)rpcConn.execute("db.vulns",new Object[]{new HashMap()})).get("vulns"); - reAdd(vulnsTable,vulns,new String[]{"port","proto","time","host","name","refs"}); - } catch (MsfException mex) { - } + reAddQuery(servicesTable, 3, "services", new String[]{"host","created_at","updated_at","port","proto","state","name","info"}); + reAddQuery(vulnsTable,4,"vulns",new String[]{"port","proto","time","host","name","refs"}); try { Object wspace = ((Map) rpcConn.execute("db.current_workspace")).get("workspace"); Object[] events = (Object[]) ((Map)rpcConn.execute("db.events",new Object[]{wspace})).get("events"); - reAdd(eventsTable,events,new String[]{"host","created_at","updated_at","name","critical","username","info"}); + reAdd(eventsTable,5,events,new String[]{"host","created_at","updated_at","name","critical","username","info"}); } catch (MsfException mex) { } } @@ -1253,7 +1245,6 @@ public class MainFrame extends FrameView { private javax.swing.JScrollPane jScrollPane5; private javax.swing.JScrollPane jScrollPane6; private javax.swing.JPopupMenu.Separator jSeparator1; - private javax.swing.JTabbedPane jTabbedPane1; private javax.swing.JList jobsList; private javax.swing.JMenuItem killSessionsMenuItem; private javax.swing.JMenuItem logGenerateMenuItem; @@ -1275,6 +1266,7 @@ public class MainFrame extends FrameView { private javax.swing.JLabel statusAnimationLabel; private javax.swing.JLabel statusMessageLabel; private javax.swing.JPanel statusPanel; + private javax.swing.JTabbedPane tabbedPane; private javax.swing.JTable vulnsTable; // End of variables declaration//GEN-END:variables private final Timer messageTimer; @@ -1306,8 +1298,16 @@ public class MainFrame extends FrameView { } } - /** Clear a table's contents, and replace with contents of data */ - private void reAdd(JTable table, Object[] data, String[] cols) { + /** Clear a table's contents, reenabling the tab, and replace with contents of data returned from a db call */ + private void reAddQuery(JTable table, int tabIndex, String call, String[] cols) { + try { + Object[] data = (Object[]) ((Map)rpcConn.execute("db."+call,new Object[]{new HashMap()})).get(call); + reAdd(hostsTable,tabIndex, data,cols); + } catch (MsfException mex) { + } + } + /** Clear a table's contents, reenabling the tab, and replace with contents of data */ + private void reAdd(JTable table, int tabIndex, Object[] data, String[] cols) { DefaultTableModel mod = (DefaultTableModel) table.getModel(); while (mod.getRowCount() > 0) mod.removeRow(0); @@ -1318,6 +1318,7 @@ public class MainFrame extends FrameView { mod.addRow(row); } TableHelper.fitColumnWidths(mod, table); + tabbedPane.setEnabledAt(tabIndex, true); } }