1
mirror of https://github.com/rapid7/metasploit-framework synced 2024-11-12 11:52:01 +01:00

Multiple-session script execution fixed.

Build config updated for netbeans 6.9 and current tree.



git-svn-id: file:///home/svn/framework3/trunk@9830 4d416f70-5f16-0410-b530-b9f4589650da
This commit is contained in:
Matt Weeks 2010-07-14 19:27:23 +00:00
parent fb57dde60c
commit 85d07af548
9 changed files with 228 additions and 129 deletions

Binary file not shown.

View File

@ -55,6 +55,7 @@ is divided into following sections:
</target>
<target depends="-pre-init,-init-private,-init-user,-init-project,-init-macrodef-property" name="-do-init">
<available file="${manifest.file}" property="manifest.available"/>
<available file="${application.splash}" property="splashscreen.available"/>
<condition property="main.class.available">
<and>
<isset property="main.class"/>
@ -83,23 +84,40 @@ is divided into following sections:
<isset property="do.mkdist"/>
</and>
</condition>
<condition property="manifest.available+mkdist.available">
<condition property="manifest.available+main.class+mkdist.available+splashscreen.available">
<and>
<istrue value="${manifest.available}"/>
<isset property="do.mkdist"/>
<istrue value="${manifest.available+main.class+mkdist.available}"/>
<istrue value="${splashscreen.available}"/>
</and>
</condition>
<condition property="manifest.available-mkdist.available">
<or>
<istrue value="${manifest.available}"/>
<isset property="do.mkdist"/>
</or>
<condition property="do.archive">
<not>
<istrue value="${jar.archive.disabled}"/>
</not>
</condition>
<condition property="manifest.available+main.class-mkdist.available">
<or>
<condition property="do.archive+manifest.available">
<and>
<isset property="manifest.available"/>
<istrue value="${do.archive}"/>
</and>
</condition>
<condition property="do.archive+manifest.available+main.class">
<and>
<istrue value="${manifest.available+main.class}"/>
<isset property="do.mkdist"/>
</or>
<istrue value="${do.archive}"/>
</and>
</condition>
<condition property="do.archive+manifest.available+main.class+mkdist.available">
<and>
<istrue value="${manifest.available+main.class+mkdist.available}"/>
<istrue value="${do.archive}"/>
</and>
</condition>
<condition property="do.archive+manifest.available+main.class+mkdist.available+splashscreen.available">
<and>
<istrue value="${manifest.available+main.class+mkdist.available+splashscreen.available}"/>
<istrue value="${do.archive}"/>
</and>
</condition>
<condition property="have.tests">
<or>
@ -156,6 +174,8 @@ is divided into following sections:
<length length="0" string="${endorsed.classpath}" when="greater"/>
</condition>
<property name="javac.fork" value="false"/>
<property name="jar.index" value="false"/>
<available file="${meta.inf.dir}/persistence.xml" property="has.persistence.xml"/>
</target>
<target name="-post-init">
<!-- Empty placeholder for easier customization. -->
@ -182,11 +202,53 @@ is divided into following sections:
</sequential>
</macrodef>
</target>
<target name="-init-macrodef-javac">
<target depends="-init-ap-cmdline-properties" if="ap.supported.internal" name="-init-macrodef-javac-with-processors">
<macrodef name="javac" uri="http://www.netbeans.org/ns/j2se-project/3">
<attribute default="${src.dir}" name="srcdir"/>
<attribute default="${build.classes.dir}" name="destdir"/>
<attribute default="${javac.classpath}" name="classpath"/>
<attribute default="${javac.processorpath}" name="processorpath"/>
<attribute default="${build.generated.sources.dir}/ap-source-output" name="apgeneratedsrcdir"/>
<attribute default="${includes}" name="includes"/>
<attribute default="${excludes}" name="excludes"/>
<attribute default="${javac.debug}" name="debug"/>
<attribute default="${empty.dir}" name="sourcepath"/>
<attribute default="${empty.dir}" name="gensrcdir"/>
<element name="customize" optional="true"/>
<sequential>
<property location="${build.dir}/empty" name="empty.dir"/>
<mkdir dir="${empty.dir}"/>
<mkdir dir="@{apgeneratedsrcdir}"/>
<javac debug="@{debug}" deprecation="${javac.deprecation}" destdir="@{destdir}" encoding="${source.encoding}" excludes="@{excludes}" fork="${javac.fork}" includeantruntime="false" includes="@{includes}" source="${javac.source}" sourcepath="@{sourcepath}" srcdir="@{srcdir}" target="${javac.target}" tempdir="${java.io.tmpdir}">
<src>
<dirset dir="@{gensrcdir}" erroronmissingdir="false">
<include name="*"/>
</dirset>
</src>
<classpath>
<path path="@{classpath}"/>
</classpath>
<compilerarg line="${endorsed.classpath.cmd.line.arg}"/>
<compilerarg line="${javac.compilerargs}"/>
<compilerarg value="-processorpath"/>
<compilerarg path="@{processorpath}:${empty.dir}"/>
<compilerarg line="${ap.processors.internal}"/>
<compilerarg line="${annotation.processing.processor.options}"/>
<compilerarg value="-s"/>
<compilerarg path="@{apgeneratedsrcdir}"/>
<compilerarg line="${ap.proc.none.internal}"/>
<customize/>
</javac>
</sequential>
</macrodef>
</target>
<target depends="-init-ap-cmdline-properties" name="-init-macrodef-javac-without-processors" unless="ap.supported.internal">
<macrodef name="javac" uri="http://www.netbeans.org/ns/j2se-project/3">
<attribute default="${src.dir}" name="srcdir"/>
<attribute default="${build.classes.dir}" name="destdir"/>
<attribute default="${javac.classpath}" name="classpath"/>
<attribute default="${javac.processorpath}" name="processorpath"/>
<attribute default="${build.generated.sources.dir}/ap-source-output" name="apgeneratedsrcdir"/>
<attribute default="${includes}" name="includes"/>
<attribute default="${excludes}" name="excludes"/>
<attribute default="${javac.debug}" name="debug"/>
@ -211,6 +273,8 @@ is divided into following sections:
</javac>
</sequential>
</macrodef>
</target>
<target depends="-init-macrodef-javac-with-processors,-init-macrodef-javac-without-processors" name="-init-macrodef-javac">
<macrodef name="depend" uri="http://www.netbeans.org/ns/j2se-project/3">
<attribute default="${src.dir}" name="srcdir"/>
<attribute default="${build.classes.dir}" name="destdir"/>
@ -358,14 +422,65 @@ is divided into following sections:
</sequential>
</macrodef>
</target>
<target name="-init-macrodef-copylibs">
<macrodef name="copylibs" uri="http://www.netbeans.org/ns/j2se-project/3">
<element name="customize" optional="true"/>
<sequential>
<property location="${build.classes.dir}" name="build.classes.dir.resolved"/>
<pathconvert property="run.classpath.without.build.classes.dir">
<path path="${run.classpath}"/>
<map from="${build.classes.dir.resolved}" to=""/>
</pathconvert>
<pathconvert pathsep=" " property="jar.classpath">
<path path="${run.classpath.without.build.classes.dir}"/>
<chainedmapper>
<flattenmapper/>
<globmapper from="*" to="lib/*"/>
</chainedmapper>
</pathconvert>
<taskdef classname="org.netbeans.modules.java.j2seproject.copylibstask.CopyLibs" classpath="${libs.CopyLibs.classpath}" name="copylibs"/>
<copylibs compress="${jar.compress}" index="${jar.index}" jarfile="${dist.jar}" manifest="${manifest.file}" runtimeclasspath="${run.classpath.without.build.classes.dir}">
<fileset dir="${build.classes.dir}"/>
<manifest>
<attribute name="Class-Path" value="${jar.classpath}"/>
<customize/>
</manifest>
</copylibs>
</sequential>
</macrodef>
</target>
<target name="-init-presetdef-jar">
<presetdef name="jar" uri="http://www.netbeans.org/ns/j2se-project/1">
<jar compress="${jar.compress}" jarfile="${dist.jar}">
<jar compress="${jar.compress}" index="${jar.index}" jarfile="${dist.jar}">
<j2seproject1:fileset dir="${build.classes.dir}"/>
</jar>
</presetdef>
</target>
<target depends="-pre-init,-init-private,-init-user,-init-project,-do-init,-post-init,-init-check,-init-macrodef-property,-init-macrodef-javac,-init-macrodef-junit,-init-macrodef-nbjpda,-init-macrodef-debug,-init-macrodef-java,-init-presetdef-jar" name="init"/>
<target name="-init-ap-cmdline-properties">
<property name="annotation.processing.enabled" value="true"/>
<property name="annotation.processing.processors.list" value=""/>
<property name="annotation.processing.processor.options" value=""/>
<property name="annotation.processing.run.all.processors" value="true"/>
<property name="javac.processorpath" value="${javac.classpath}"/>
<property name="javac.test.processorpath" value="${javac.test.classpath}"/>
<condition property="ap.supported.internal" value="true">
<not>
<matches pattern="1\.[0-5](\..*)?" string="${javac.source}"/>
</not>
</condition>
</target>
<target depends="-init-ap-cmdline-properties" if="ap.supported.internal" name="-init-ap-cmdline-supported">
<condition else="" property="ap.processors.internal" value="-processor ${annotation.processing.processors.list}">
<isfalse value="${annotation.processing.run.all.processors}"/>
</condition>
<condition else="" property="ap.proc.none.internal" value="-proc:none">
<isfalse value="${annotation.processing.enabled}"/>
</condition>
</target>
<target depends="-init-ap-cmdline-properties,-init-ap-cmdline-supported" name="-init-ap-cmdline">
<property name="ap.cmd.line.internal" value=""/>
</target>
<target depends="-pre-init,-init-private,-init-user,-init-project,-do-init,-post-init,-init-check,-init-macrodef-property,-init-macrodef-javac,-init-macrodef-junit,-init-macrodef-nbjpda,-init-macrodef-debug,-init-macrodef-java,-init-presetdef-jar,-init-ap-cmdline" name="init"/>
<!--
===================
COMPILATION SECTION
@ -409,12 +524,18 @@ is divided into following sections:
</pathconvert>
<j2seproject3:depend srcdir="${src.dir}:${build.generated.subdirs}"/>
</target>
<target depends="init,deps-jar,-pre-pre-compile,-pre-compile,-compile-depend" if="have.sources" name="-do-compile">
<target depends="init,deps-jar,-pre-pre-compile,-pre-compile, -copy-persistence-xml,-compile-depend" if="have.sources" name="-do-compile">
<j2seproject3:javac gensrcdir="${build.generated.sources.dir}"/>
<copy todir="${build.classes.dir}">
<fileset dir="${src.dir}" excludes="${build.classes.excludes},${excludes}" includes="${includes}"/>
</copy>
</target>
<target if="has.persistence.xml" name="-copy-persistence-xml">
<mkdir dir="${build.classes.dir}/META-INF"/>
<copy todir="${build.classes.dir}/META-INF">
<fileset dir="${meta.inf.dir}" includes="persistence.xml"/>
</copy>
</target>
<target name="-post-compile">
<!-- Empty placeholder for easier customization. -->
<!-- You can override this target in the ../build.xml file. -->
@ -447,13 +568,13 @@ is divided into following sections:
<!-- Empty placeholder for easier customization. -->
<!-- You can override this target in the ../build.xml file. -->
</target>
<target depends="init,compile,-pre-pre-jar,-pre-jar" name="-do-jar-without-manifest" unless="manifest.available-mkdist.available">
<target depends="init,compile,-pre-pre-jar,-pre-jar" if="do.archive" name="-do-jar-without-manifest" unless="manifest.available">
<j2seproject1:jar/>
</target>
<target depends="init,compile,-pre-pre-jar,-pre-jar" if="manifest.available" name="-do-jar-with-manifest" unless="manifest.available+main.class-mkdist.available">
<target depends="init,compile,-pre-pre-jar,-pre-jar" if="do.archive+manifest.available" name="-do-jar-with-manifest" unless="manifest.available+main.class">
<j2seproject1:jar manifest="${manifest.file}"/>
</target>
<target depends="init,compile,-pre-pre-jar,-pre-jar" if="manifest.available+main.class" name="-do-jar-with-mainclass" unless="manifest.available+main.class+mkdist.available">
<target depends="init,compile,-pre-pre-jar,-pre-jar" if="do.archive+manifest.available+main.class" name="-do-jar-with-mainclass" unless="manifest.available+main.class+mkdist.available">
<j2seproject1:jar manifest="${manifest.file}">
<j2seproject1:manifest>
<j2seproject1:attribute name="Main-Class" value="${main.class}"/>
@ -468,78 +589,35 @@ is divided into following sections:
</pathconvert>
<echo>java -cp "${run.classpath.with.dist.jar}" ${main.class}</echo>
</target>
<target depends="init,compile,-pre-pre-jar,-pre-jar" if="manifest.available+main.class+mkdist.available" name="-do-jar-with-libraries">
<property location="${build.classes.dir}" name="build.classes.dir.resolved"/>
<pathconvert property="run.classpath.without.build.classes.dir">
<path path="${run.classpath}"/>
<map from="${build.classes.dir.resolved}" to=""/>
</pathconvert>
<pathconvert pathsep=" " property="jar.classpath">
<path path="${run.classpath.without.build.classes.dir}"/>
<chainedmapper>
<flattenmapper/>
<globmapper from="*" to="lib/*"/>
</chainedmapper>
</pathconvert>
<taskdef classname="org.netbeans.modules.java.j2seproject.copylibstask.CopyLibs" classpath="${libs.CopyLibs.classpath}" name="copylibs"/>
<copylibs compress="${jar.compress}" jarfile="${dist.jar}" manifest="${manifest.file}" runtimeclasspath="${run.classpath.without.build.classes.dir}">
<fileset dir="${build.classes.dir}"/>
<manifest>
<target depends="init,compile,-pre-pre-jar,-pre-jar,-init-macrodef-copylibs" if="do.archive+manifest.available+main.class+mkdist.available+splashscreen.available" name="-do-jar-with-libraries-and-splashscreen">
<basename file="${application.splash}" property="splashscreen.basename"/>
<mkdir dir="${build.classes.dir}/META-INF"/>
<copy failonerror="false" file="${application.splash}" todir="${build.classes.dir}/META-INF"/>
<j2seproject3:copylibs>
<customize>
<attribute name="Main-Class" value="${main.class}"/>
<attribute name="Class-Path" value="${jar.classpath}"/>
</manifest>
</copylibs>
<attribute name="SplashScreen-Image" value="META-INF/${splashscreen.basename}"/>
</customize>
</j2seproject3:copylibs>
<echo>To run this application from the command line without Ant, try:</echo>
<property location="${dist.jar}" name="dist.jar.resolved"/>
<echo>java -jar "${dist.jar.resolved}"</echo>
</target>
<target depends="init,compile,-pre-pre-jar,-pre-jar" if="manifest.available+mkdist.available" name="-do-jar-with-libraries-without-mainclass" unless="main.class.available">
<property location="${build.classes.dir}" name="build.classes.dir.resolved"/>
<pathconvert property="run.classpath.without.build.classes.dir">
<path path="${run.classpath}"/>
<map from="${build.classes.dir.resolved}" to=""/>
</pathconvert>
<pathconvert pathsep=" " property="jar.classpath">
<path path="${run.classpath.without.build.classes.dir}"/>
<chainedmapper>
<flattenmapper/>
<globmapper from="*" to="lib/*"/>
</chainedmapper>
</pathconvert>
<taskdef classname="org.netbeans.modules.java.j2seproject.copylibstask.CopyLibs" classpath="${libs.CopyLibs.classpath}" name="copylibs"/>
<copylibs compress="${jar.compress}" jarfile="${dist.jar}" manifest="${manifest.file}" runtimeclasspath="${run.classpath.without.build.classes.dir}">
<fileset dir="${build.classes.dir}"/>
<manifest>
<attribute name="Class-Path" value="${jar.classpath}"/>
</manifest>
</copylibs>
</target>
<target depends="init,compile,-pre-pre-jar,-pre-jar" if="do.mkdist" name="-do-jar-with-libraries-without-manifest" unless="manifest.available">
<property location="${build.classes.dir}" name="build.classes.dir.resolved"/>
<pathconvert property="run.classpath.without.build.classes.dir">
<path path="${run.classpath}"/>
<map from="${build.classes.dir.resolved}" to=""/>
</pathconvert>
<pathconvert pathsep=" " property="jar.classpath">
<path path="${run.classpath.without.build.classes.dir}"/>
<chainedmapper>
<flattenmapper/>
<globmapper from="*" to="lib/*"/>
</chainedmapper>
</pathconvert>
<taskdef classname="org.netbeans.modules.java.j2seproject.copylibstask.CopyLibs" classpath="${libs.CopyLibs.classpath}" name="copylibs"/>
<copylibs compress="${jar.compress}" jarfile="${dist.jar}" runtimeclasspath="${run.classpath.without.build.classes.dir}">
<fileset dir="${build.classes.dir}"/>
<manifest>
<attribute name="Class-Path" value="${jar.classpath}"/>
</manifest>
</copylibs>
<target depends="init,compile,-pre-pre-jar,-pre-jar,-init-macrodef-copylibs" if="do.archive+manifest.available+main.class+mkdist.available" name="-do-jar-with-libraries" unless="splashscreen.available">
<j2seproject3:copylibs>
<customize>
<attribute name="Main-Class" value="${main.class}"/>
</customize>
</j2seproject3:copylibs>
<echo>To run this application from the command line without Ant, try:</echo>
<property location="${dist.jar}" name="dist.jar.resolved"/>
<echo>java -jar "${dist.jar.resolved}"</echo>
</target>
<target name="-post-jar">
<!-- Empty placeholder for easier customization. -->
<!-- You can override this target in the ../build.xml file. -->
</target>
<target depends="init,compile,-pre-jar,-do-jar-with-manifest,-do-jar-without-manifest,-do-jar-with-mainclass,-do-jar-with-libraries,-do-jar-with-libraries-without-mainclass,-do-jar-with-libraries-without-manifest,-post-jar" description="Build JAR." name="jar"/>
<target depends="init,compile,-pre-jar,-do-jar-with-manifest,-do-jar-without-manifest,-do-jar-with-mainclass,-do-jar-with-libraries-and-splashscreen,-do-jar-with-libraries,-post-jar" description="Build JAR." name="jar"/>
<!--
=================
EXECUTION SECTION
@ -609,7 +687,7 @@ is divided into following sections:
JAVADOC SECTION
===============
-->
<target depends="init" name="-javadoc-build">
<target depends="init" if="have.sources" name="-javadoc-build">
<mkdir dir="${dist.javadoc.dir}"/>
<javadoc additionalparam="${javadoc.additionalparam}" author="${javadoc.author}" charset="UTF-8" destdir="${dist.javadoc.dir}" docencoding="UTF-8" encoding="${javadoc.encoding.used}" failonerror="true" noindex="${javadoc.noindex}" nonavbar="${javadoc.nonavbar}" notree="${javadoc.notree}" private="${javadoc.private}" source="${javac.source}" splitindex="${javadoc.splitindex}" use="${javadoc.use}" useexternalfile="true" version="${javadoc.version}" windowtitle="${javadoc.windowtitle}">
<classpath>
@ -643,7 +721,7 @@ is divided into following sections:
<j2seproject3:depend classpath="${javac.test.classpath}" destdir="${build.test.classes.dir}" srcdir="${test.src.dir}"/>
</target>
<target depends="init,compile,-pre-pre-compile-test,-pre-compile-test,-compile-test-depend" if="have.tests" name="-do-compile-test">
<j2seproject3:javac classpath="${javac.test.classpath}" debug="true" destdir="${build.test.classes.dir}" srcdir="${test.src.dir}"/>
<j2seproject3:javac apgeneratedsrcdir="${build.test.classes.dir}" classpath="${javac.test.classpath}" debug="true" destdir="${build.test.classes.dir}" processorpath="${javac.test.processorpath}" srcdir="${test.src.dir}"/>
<copy todir="${build.test.classes.dir}">
<fileset dir="${test.src.dir}" excludes="${build.classes.excludes},${excludes}" includes="${includes}"/>
</copy>
@ -660,7 +738,7 @@ is divided into following sections:
<target depends="init,compile,-pre-pre-compile-test,-pre-compile-test-single" if="have.tests" name="-do-compile-test-single">
<fail unless="javac.includes">Must select some files in the IDE or set javac.includes</fail>
<j2seproject3:force-recompile destdir="${build.test.classes.dir}"/>
<j2seproject3:javac classpath="${javac.test.classpath}" debug="true" destdir="${build.test.classes.dir}" excludes="" includes="${javac.includes}" sourcepath="${test.src.dir}" srcdir="${test.src.dir}"/>
<j2seproject3:javac apgeneratedsrcdir="${build.test.classes.dir}" classpath="${javac.test.classpath}" debug="true" destdir="${build.test.classes.dir}" excludes="" includes="${javac.includes}" processorpath="${javac.test.processorpath}" sourcepath="${test.src.dir}" srcdir="${test.src.dir}"/>
<copy todir="${build.test.classes.dir}">
<fileset dir="${test.src.dir}" excludes="${build.classes.excludes},${excludes}" includes="${includes}"/>
</copy>

View File

@ -1,8 +1,8 @@
build.xml.data.CRC32=84c180dd
build.xml.script.CRC32=7b4769ae
build.xml.stylesheet.CRC32=958a1d3e@1.32.1.45
build.xml.stylesheet.CRC32=28e38971@1.38.1.45
# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
nbproject/build-impl.xml.data.CRC32=84c180dd
nbproject/build-impl.xml.script.CRC32=f85285ea
nbproject/build-impl.xml.stylesheet.CRC32=576378a2@1.32.1.45
nbproject/build-impl.xml.script.CRC32=dcb7e251
nbproject/build-impl.xml.stylesheet.CRC32=78c6a6ee@1.38.1.45

View File

@ -17,7 +17,7 @@ debug.classpath=\
debug.test.classpath=\
${run.test.classpath}
# This directory is removed when the project is cleaned:
dist.dir=dist
dist.dir=../../../../data/gui/
dist.jar=${dist.dir}/msfgui.jar
dist.javadoc.dir=${dist.dir}/javadoc
endorsed.classpath=

View File

@ -11,7 +11,7 @@ public class AutorouteOptionsDialog extends OptionsDialog {
super(parent.getFrame(), "Autoroute Options", modal);
initComponents();
try{
ipField.setText(parent.session.get("tunnel_peer").toString().split(":")[0]+"/24");
ipField.setText("192.168.1.1/24");
}catch(NullPointerException nex){
}
}

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8" ?>
<?xml version="1.1" encoding="UTF-8" ?>
<Form version="1.5" maxVersion="1.7">
<Form version="1.6" maxVersion="1.7">
<NonVisualComponents>
<Container class="javax.swing.JPanel" name="mainPanel">
<Properties>
@ -20,7 +20,7 @@
<DimensionLayout dim="1">
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" alignment="1" attributes="0">
<Component id="splitPane" pref="460" max="32767" attributes="0"/>
<Component id="splitPane" pref="462" max="32767" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
</Group>
</Group>
@ -57,7 +57,7 @@
<Layout>
<DimensionLayout dim="0">
<Group type="103" groupAlignment="0" attributes="0">
<Component id="jScrollPane1" alignment="0" pref="37" max="32767" attributes="0"/>
<Component id="jScrollPane1" alignment="0" pref="38" max="32767" attributes="0"/>
<Group type="102" alignment="0" attributes="0">
<Component id="jobsLabel" min="-2" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
@ -70,7 +70,7 @@
<EmptySpace max="-2" attributes="0"/>
<Component id="jobsLabel" min="-2" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
<Component id="jScrollPane1" pref="411" max="32767" attributes="0"/>
<Component id="jScrollPane1" pref="417" max="32767" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
</Group>
</Group>
@ -124,10 +124,10 @@
<Group type="102" attributes="0">
<EmptySpace max="-2" attributes="0"/>
<Component id="sessionsLabel" min="-2" max="-2" attributes="0"/>
<EmptySpace pref="710" max="32767" attributes="0"/>
<EmptySpace pref="717" max="32767" attributes="0"/>
<Component id="searchButton" min="-2" max="-2" attributes="0"/>
</Group>
<Component id="jScrollPane2" alignment="1" pref="845" max="32767" attributes="0"/>
<Component id="jScrollPane2" alignment="1" pref="843" max="32767" attributes="0"/>
</Group>
</DimensionLayout>
<DimensionLayout dim="1">
@ -141,7 +141,7 @@
<Component id="searchButton" min="-2" max="-2" attributes="0"/>
</Group>
<EmptySpace max="-2" attributes="0"/>
<Component id="jScrollPane2" pref="412" max="32767" attributes="0"/>
<Component id="jScrollPane2" pref="417" max="32767" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
</Group>
</Group>
@ -173,6 +173,9 @@
<TableColumnModel selectionModel="0"/>
</Property>
<Property name="name" type="java.lang.String" value="sessionsTable" noResource="true"/>
<Property name="selectionModel" type="javax.swing.ListSelectionModel" editor="org.netbeans.modules.form.editors2.JTableSelectionModelEditor">
<JTableSelectionModel selectionMode="2"/>
</Property>
<Property name="tableHeader" type="javax.swing.table.JTableHeader" editor="org.netbeans.modules.form.editors2.JTableHeaderEditor">
<TableHeader reorderingAllowed="true" resizingAllowed="true"/>
</Property>
@ -417,7 +420,7 @@
<Group type="102" alignment="0" attributes="0">
<EmptySpace max="-2" attributes="0"/>
<Component id="statusMessageLabel" min="-2" max="-2" attributes="0"/>
<EmptySpace pref="736" max="32767" attributes="0"/>
<EmptySpace pref="725" max="32767" attributes="0"/>
<Component id="progressBar" min="-2" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
<Component id="statusAnimationLabel" min="-2" max="-2" attributes="0"/>

View File

@ -48,7 +48,7 @@ public class MainFrame extends FrameView {
private SessionsTable sessionsTableModel;
private JPopupMenu jobPopupMenu, shellPopupMenu, meterpreterPopupMenu, sessionPopupMenu;
private String clickedJob;
public Map session;
public Map[] selectedSessions;
private SearchWindow searchWin;
public MainFrame(SingleFrameApplication app) {
@ -132,8 +132,10 @@ public class MainFrame extends FrameView {
sessionsPollTimer = new SwingWorker(){
@Override
protected List doInBackground() throws Exception {
int delay = 500;
while(true){
try {
Thread.sleep(delay);
//update sessions
Map slist = (Map) rpcConn.execute("session.list");
ArrayList sessionList = new ArrayList();
@ -165,9 +167,9 @@ public class MainFrame extends FrameView {
i++;
}
publish((Object)jobStrings);
Thread.sleep(500);
} catch (MsfException xre) {
JOptionPane.showMessageDialog(null, xre);
delay *= 2;
} catch (InterruptedException iex){
}
}
@ -209,7 +211,7 @@ public class MainFrame extends FrameView {
searchNext = false;
Component [] compsCopy = comps;
for (Component menu : compsCopy) {
if (menu.getName().equals(names[i])) {
if (menu.getName().equals(names[i]) && menu instanceof JMenu) {
if (i < names.length - 1)
currentMenu = (JMenu) menu;
found = true;
@ -429,6 +431,7 @@ public class MainFrame extends FrameView {
}
));
sessionsTable.setName("sessionsTable"); // NOI18N
sessionsTable.setSelectionMode(javax.swing.ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
jScrollPane2.setViewportView(sessionsTable);
searchButton.setText(resourceMap.getString("searchButton.text")); // NOI18N
@ -723,9 +726,9 @@ public class MainFrame extends FrameView {
private void killSessionsMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_killSessionsMenuItemActionPerformed
for( Object sesObj : sessionsTableModel.sessions ){
try{
rpcConn.execute("session.stop", new Object[]{session.get("id")});
rpcConn.execute("session.stop", new Object[]{((Map)sesObj).get("id")});
} catch (MsfException xre) {
statusMessageLabel.setText("Error killing session "+session.get("id"));
statusMessageLabel.setText("Error killing session "+((Map)sesObj).get("id"));
}
}
}//GEN-LAST:event_killSessionsMenuItemActionPerformed
@ -761,7 +764,8 @@ public class MainFrame extends FrameView {
return RpcConnection.startRpcConn(this);
}
public void showInteractWindow() {
((InteractWindow)(sessionPopupMap.get(session.get("uuid")))).setVisible(true);
for(Map session : selectedSessions)
((InteractWindow)(sessionPopupMap.get(session.get("uuid")))).setVisible(true);
}
/* Master function to setup popup menus for jobs and sessions
* First handles jobs, then shell sessions, then meterpreter sessions,
@ -804,18 +808,19 @@ public class MainFrame extends FrameView {
//SESSION POPUP MENUS
sessionsTable.addMouseListener(new PopupMouseListener() {
public void doubleClicked(MouseEvent e){ //show interaction window on double-click
int clickedSession = sessionsTable.rowAtPoint(e.getPoint());
if (clickedSession == -1)
return;
session = (Map) sessionsTableModel.getSessionList().get(clickedSession);
showInteractWindow();
int[] selrows = sessionsTable.getSelectedRows();
selectedSessions = new HashMap[selrows.length];
for(int i = 0; i < selrows.length; i++)
selectedSessions[i] = (Map)sessionsTableModel.getSessionList().get(selrows[i]);
}
public void showPopup(MouseEvent e) {
//must have a row selected
int clickedSession = sessionsTable.rowAtPoint(e.getPoint());
if (!e.isPopupTrigger() || clickedSession == -1)
if (!e.isPopupTrigger())
return;
session = (Map) sessionsTableModel.getSessionList().get(clickedSession);
doubleClicked(e);
if(selectedSessions.length == 0)
return;
Map session = selectedSessions[0];
if (session.get("type").equals("shell"))
shellPopupMenu.show(e.getComponent(), e.getX(), e.getY());
else if (session.get("type").equals("meterpreter"))
@ -837,13 +842,13 @@ public class MainFrame extends FrameView {
//Setup meterpreter menu
meterpreterPopupMenu = new JPopupMenu();
addSessionItem("Access Filesystem",meterpreterPopupMenu,new RpcAction() {
public void action() throws Exception {
addSessionItem("Access Filesystem",meterpreterPopupMenu,new RpcAction(this) {
public void action(Map session) throws Exception {
new MeterpFileBrowser(rpcConn, session, sessionPopupMap).setVisible(true);
}
});
addSessionItem("Processes",meterpreterPopupMenu,new RpcAction() {
public void action() throws Exception {
addSessionItem("Processes",meterpreterPopupMenu,new RpcAction(this) {
public void action(Map session) throws Exception {
new ProcessList(rpcConn,session,sessionPopupMap).setVisible(true);
}
});
@ -863,8 +868,8 @@ public class MainFrame extends FrameView {
meterpreterPopupMenu.add(monitorMenu);
addScript("Start keylogger",monitorMenu,"keylogrecorder");
addScript("Start packet recorder",monitorMenu,"packetrecorder");
addScript("Screenshot",monitorMenu,new RpcAction() {
public void action() throws Exception {
addScript("Screenshot",monitorMenu,new RpcAction(this) {
public void action(Map session) throws Exception {
rpcConn.execute("session.meterpreter_write", new Object[]{session.get("id"),
Base64.encode("screenshot\n".getBytes())});
}
@ -896,8 +901,8 @@ public class MainFrame extends FrameView {
return "gettelnet.rb "+UserPassDialog.getUserPassOpts(getFrame());
}
});
addScript("Add admin user",accessMenu,new RpcAction() {
public void action() throws Exception {
addScript("Add admin user",accessMenu,new RpcAction(this) {
public void action(Map session) throws Exception {
String[] userPass = UserPassDialog.showUserPassDialog(getFrame());
if(userPass == null)
return;
@ -938,6 +943,8 @@ public class MainFrame extends FrameView {
}
/** Adds a named session menu item to a given popup menu */
private void addSessionItem(String name, JComponent menu,ActionListener action) {
if(action == null)
action = new RpcAction(null,this);
JMenuItem tempItem = new JMenuItem(name);
menu.add(tempItem);
tempItem.addActionListener(action);
@ -961,8 +968,8 @@ public class MainFrame extends FrameView {
}
/** Adds a kill session menu item to a given popup menu */
private void addSessionKillItem(JComponent popupMenu) throws HeadlessException {
addSessionItem("Kill session",popupMenu,new RpcAction() {
public void action() throws Exception {
addSessionItem("Kill session",popupMenu,new RpcAction(this) {
public void action(Map session) throws Exception {
rpcConn.execute("session.stop", new Object[]{session.get("id")});
}
});

View File

@ -2,6 +2,7 @@ package msfgui;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Map;
import javax.swing.JOptionPane;
/**
@ -16,24 +17,34 @@ public class RpcAction implements ActionListener {
}
public RpcAction(){
}
public RpcAction( MainFrame parent){
this.parent = parent;
}
public RpcAction(Object arg, MainFrame parent){
this.arg = arg;
this.parent = parent;
}
public void actionPerformed(ActionEvent e){
try{
action();
if(parent == null)
action();
else
for(Map session : parent.selectedSessions)
action(session);
}catch(Exception ex){
if(!ex.getMessage().equals("cancelled"))
JOptionPane.showMessageDialog(null, "Error in RPC call: "+ex);
}
}
/* Default action executes session.meterpreter_script and shows console window. */
/** action() with no args provided as an exception-handling action listener. */
public void action() throws Exception{
if(arg != null)
parent.rpcConn.execute("session.meterpreter_script", new Object[]{parent.session.get("id"), getCmd()});
else if (parent == null)
if (parent == null)
throw new MsfException("Error: no parent. If using default constructor, must override action().");
}
/** Default action executes session.meterpreter_script and shows console window. */
public void action(Map session) throws Exception{
if(arg != null)
parent.rpcConn.execute("session.meterpreter_script", new Object[]{session.get("id"), getCmd()});
parent.showInteractWindow();
}
}

View File

@ -254,12 +254,12 @@ public class RpcConnection {
root.setAttribute("host", "127.0.0.1");
root.setAttribute("port", Integer.toString(defaultPort));
setMessage("Starting msfrpcd. \"msfrpcd -P " + defaultPass + " -S -U metasploit -a 127.0.0.1\"");
setMessage("Starting msfrpcd. \"msfrpcd -P " + defaultPass + " -t Basic -S -U metasploit -a 127.0.0.1\"");
setProgress(0.2f);
Process proc = null;
try {
proc = MsfguiApp.startMsfProc(new String[]{
"msfrpcd","-P",defaultPass,"-S","-U",defaultUser,"-a","127.0.0.1"});
"msfrpcd","-P",defaultPass,"-t","Basic","-S","-U",defaultUser,"-a","127.0.0.1"});
} catch (MsfException ex) {
setMessage("msfrpcd not found.");
setProgress(1f);