From 937606ab1fc38c91ff46154358c5c98edc47b58b Mon Sep 17 00:00:00 2001 From: Matt Weeks Date: Thu, 19 Aug 2010 23:22:22 +0000 Subject: [PATCH] Ability to close consoles and discover old consoles. git-svn-id: file:///home/svn/framework3/trunk@10068 4d416f70-5f16-0410-b530-b9f4589650da --- data/gui/msfgui.jar | Bin 606864 -> 614185 bytes .../gui/msfguijava/src/msfgui/MainFrame.form | 6 +++ .../gui/msfguijava/src/msfgui/MainFrame.java | 51 ++++++++++++++---- .../src/msfgui/resources/MainFrame.properties | 3 +- 4 files changed, 49 insertions(+), 11 deletions(-) diff --git a/data/gui/msfgui.jar b/data/gui/msfgui.jar index 677c5130903bcce7bebe09fcab4b58cb044c3da9..495bffacb107224a66805f9f973b5e054ee5c04b 100755 GIT binary patch delta 25934 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 delta 23584 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 + + + + + + diff --git a/external/source/gui/msfguijava/src/msfgui/MainFrame.java b/external/source/gui/msfguijava/src/msfgui/MainFrame.java index 594a43edff..1ad36b9982 100644 --- a/external/source/gui/msfguijava/src/msfgui/MainFrame.java +++ b/external/source/gui/msfguijava/src/msfgui/MainFrame.java @@ -142,6 +142,31 @@ public class MainFrame extends FrameView { } catch (Exception ex) { } } + + /** Adds menu items for reopening and closing the console */ + private void registerConsole(Map res, boolean show) { + final InteractWindow iw = new InteractWindow(rpcConn, res, "console"); + iw.setVisible(show); + final String id = res.get("id").toString(); + final JMenuItem openItem = new JMenuItem(id); + existingConsoleMenu.add(openItem); + openItem.addActionListener(new RpcAction() { + public void action() throws Exception { + iw.setVisible(true); + } + }); + final JMenuItem closeItem = new JMenuItem(id); + this.closeConsoleMenu.add(closeItem); + closeItem.addActionListener(new RpcAction() { + public void action() throws Exception { + iw.setVisible(false); + iw.dispose(); + rpcConn.execute("console.destroy", new Object[]{id}); + existingConsoleMenu.remove(openItem); + closeConsoleMenu.remove(closeItem); + } + }); + } /** Set up auto session and job refresh */ private void setupSessionsPollTimer() throws HeadlessException { @@ -287,6 +312,15 @@ public class MainFrame extends FrameView { public void getModules() { searchWin = new SearchWindow(rpcConn); MsfguiApp.addRecentModules(recentMenu, rpcConn); + + //Setup consoles + try{ + Object[] consoles = (Object[]) ((Map)rpcConn.execute("console.list")).get("consoles"); + for (Object console : consoles) + registerConsole((Map)console,false); + }catch (MsfException mex){ + JOptionPane.showMessageDialog(getFrame(), mex); + } getContext().getActionMap(this).get("moduleTask").actionPerformed(new java.awt.event.ActionEvent(this,1234,"")); } @@ -387,6 +421,7 @@ public class MainFrame extends FrameView { consoleMenu = new javax.swing.JMenu(); newConsoleItem = new javax.swing.JMenuItem(); existingConsoleMenu = new javax.swing.JMenu(); + closeConsoleMenu = new javax.swing.JMenu(); helpMenu = new javax.swing.JMenu(); onlineHelpMenu = new javax.swing.JMenuItem(); javax.swing.JMenuItem aboutMenuItem = new javax.swing.JMenuItem(); @@ -657,6 +692,10 @@ public class MainFrame extends FrameView { existingConsoleMenu.setName("existingConsoleMenu"); // NOI18N consoleMenu.add(existingConsoleMenu); + closeConsoleMenu.setText(resourceMap.getString("closeConsoleMenu.text")); // NOI18N + closeConsoleMenu.setName("closeConsoleMenu"); // NOI18N + consoleMenu.add(closeConsoleMenu); + menuBar.add(consoleMenu); helpMenu.setMnemonic('H'); @@ -789,16 +828,7 @@ public class MainFrame extends FrameView { private void newConsoleItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_newConsoleItemActionPerformed try{ Map res = (Map)rpcConn.execute("console.create"); - final InteractWindow iw = new InteractWindow(rpcConn, res, "console"); - iw.setVisible(true); - String id = res.get("id").toString(); - JMenuItem tempItem = new JMenuItem(id); - existingConsoleMenu.add(tempItem); - tempItem.addActionListener(new RpcAction() { - public void action() throws Exception { - iw.setVisible(true); - } - }); + registerConsole(res, true); }catch(MsfException mex){ JOptionPane.showMessageDialog(getFrame(), mex); } @@ -1041,6 +1071,7 @@ public class MainFrame extends FrameView { private javax.swing.JMenu auxiliaryMenu; private javax.swing.JMenuItem changeLFMenuItem; private javax.swing.JMenuItem clearHistoryItem; + private javax.swing.JMenu closeConsoleMenu; private javax.swing.JMenuItem collectedCredsMenuItem; private javax.swing.JMenuItem connectRpcMenuItem; private javax.swing.JMenu consoleMenu; diff --git a/external/source/gui/msfguijava/src/msfgui/resources/MainFrame.properties b/external/source/gui/msfguijava/src/msfgui/resources/MainFrame.properties index 13887fffcd..5918a02b6d 100644 --- a/external/source/gui/msfguijava/src/msfgui/resources/MainFrame.properties +++ b/external/source/gui/msfguijava/src/msfgui/resources/MainFrame.properties @@ -52,4 +52,5 @@ collectedCredsMenuItem.text=Show collected hashes searchButton.text=Search consoleMenu.text=Console newConsoleItem.text=New -existingConsoleMenu.text=Existing +existingConsoleMenu.text=Open Existing +closeConsoleMenu.text=Close Existing