Multiple windows now work, developed a rudimentary window management code.
git-svn-id: file:///home/svn/framework3/trunk@3953 4d416f70-5f16-0410-b530-b9f4589650da
This commit is contained in:
parent
63c27c57f8
commit
3aefe0aea5
|
@ -1,6 +1,7 @@
|
|||
class EncodersController < ApplicationController
|
||||
|
||||
def list
|
||||
@all_encoders = Encoder.get_available()
|
||||
end
|
||||
|
||||
def view
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
class NopsController < ApplicationController
|
||||
|
||||
def list
|
||||
@all_nops = Nop.get_available()
|
||||
end
|
||||
|
||||
def view
|
||||
|
|
|
@ -1,3 +1,7 @@
|
|||
class Encoder
|
||||
|
||||
def self.get_available()
|
||||
return $msframework.encoders
|
||||
end
|
||||
|
||||
end
|
||||
|
|
|
@ -1,3 +1,7 @@
|
|||
class Nop
|
||||
|
||||
def self.get_available()
|
||||
return $msframework.nops
|
||||
end
|
||||
|
||||
end
|
||||
|
|
|
@ -1,17 +1,4 @@
|
|||
<div dojoType="FloatingPane"
|
||||
id="exploits-list"
|
||||
title="Exploits list"
|
||||
constrainToContainer="true"
|
||||
hasShadow="false"
|
||||
resizable="true"
|
||||
taskBarId="maintaskbar"
|
||||
windowState="normal"
|
||||
displayCloseAction="true";
|
||||
displayMinimizeAction="true"
|
||||
toggle="explode"
|
||||
style="width: 720px; height: 550px; position: relative; left: 100px; top: 35px; display:none"
|
||||
>
|
||||
<table dojoType="SortableTable" widgetId="ExploitsTable" headClass="fixedHeader" tbodyClass="scrollContent" enableMultipleSelect="false" enableAlternateRows="true" rowAlternateClass="alternateRow" cellpadding="0" cellspacing="0" border="0">
|
||||
<table dojoType="SortableTable" widgetId="ExploitsTable" headClass="fixedHeader" tbodyClass="scrollContent" enableMultipleSelect="false" enableAlternateRows="true" rowAlternateClass="alternateRow" cellpadding="0" cellspacing="0" border="0">
|
||||
<thead>
|
||||
<tr>
|
||||
<th field="Name" dataType="String">Name</th>
|
||||
|
@ -26,5 +13,4 @@
|
|||
<tr><td><%= m.name %></td><td><%= m.description %></td><td><%= path %></td></tr>
|
||||
<% end %>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</table>
|
|
@ -22,11 +22,6 @@
|
|||
dojo.require("dojo.widget.Tooltip");
|
||||
dojo.require("dojo.widget.ContentPane");
|
||||
dojo.require("dojo.widget.SortableTable");
|
||||
dojo.require("dojo.widget.Tree");
|
||||
dojo.require("dojo.widget.TreeRPCController");
|
||||
dojo.require("dojo.widget.TreeSelector");
|
||||
dojo.require("dojo.widget.TreeNode");
|
||||
dojo.require("dojo.widget.TreeContextMenu");
|
||||
dojo.hostenv.writeIncludes();
|
||||
</script>
|
||||
</head>
|
||||
|
@ -34,35 +29,37 @@
|
|||
<body>
|
||||
<div dojoType="PopupMenu2" widgetId="PayloadsMenu">
|
||||
<div dojoType="MenuItem2" caption="Search"></div>
|
||||
<div dojoType="MenuItem2" caption="List" onClick="main_Pane.setUrl('/payloads/list')"></div>
|
||||
<div dojoType="MenuItem2" caption="List"
|
||||
onClick="load_stateful_window('/payloads/list','payloads-list','Payloads',generate_window_style('700', '350'))"></div>
|
||||
<div dojoType="MenuItem2" caption="Generate"></div>
|
||||
</div>
|
||||
|
||||
<div dojoType="PopupMenu2" widgetId="ExploitsMenu">
|
||||
<div dojoType="MenuItem2" caption="Search"></div>
|
||||
<div dojoType="MenuItem2" caption="List" onClick="main_Pane.setUrl('/exploits/list')"></div>
|
||||
<div dojoType="MenuItem2" caption="List"
|
||||
onClick="load_stateful_window('/exploits/list','exploits-list','Exploits',generate_window_style('700', '350'))"></div>
|
||||
</div>
|
||||
|
||||
<div dojoType="PopupMenu2" widgetId="EncodersMenu">
|
||||
<div dojoType="MenuItem2" caption="Search"></div>
|
||||
<div dojoType="MenuItem2" caption="List" onClick="main_Pane.setUrl('/encoders/list')"></div>
|
||||
<div dojoType="MenuItem2" caption="List" onClick="load_stateful_window('/encoders/list','encoders-list','Encoders',generate_window_style('700', '350'))"></div>
|
||||
</div>
|
||||
|
||||
<div dojoType="PopupMenu2" widgetId="NopsMenu">
|
||||
<div dojoType="MenuItem2" caption="Search"></div>
|
||||
<div dojoType="MenuItem2" caption="List" onClick="main_Pane.setUrl('/nops/list')"></div>
|
||||
<div dojoType="MenuItem2" caption="List" onClick="load_stateful_window('/nops/list','nops-list','Nops',generate_window_style('700', '350'))"></div>
|
||||
<div dojoType="MenuItem2" caption="Generate"></div>
|
||||
</div>
|
||||
|
||||
<div dojoType="PopupMenu2" widgetId="SessionsMenu">
|
||||
<div dojoType="MenuItem2" caption="Search"></div>
|
||||
<div dojoType="MenuItem2" caption="List" onClick="main_Pane.setUrl('/sessions/list')"></div>
|
||||
<div dojoType="MenuItem2" caption="List" onClick="load_stateful_window('/sessions/list','sessions-list','Sessions',generate_window_style('700', '350'))"></div>
|
||||
<div dojoType="MenuItem2" caption="Generate"></div>
|
||||
</div>
|
||||
|
||||
<div dojoType="PopupMenu2" widgetId="JobsMenu">
|
||||
<div dojoType="MenuItem2" caption="Search"></div>
|
||||
<div dojoType="MenuItem2" caption="List" onClick="main_Pane.setUrl('/jobs/list')"></div>
|
||||
<div dojoType="MenuItem2" caption="List" onClick="load_stateful_window('/jobs/list','jobs-list','Jobs',generate_window_style('700', '350'))"></div>
|
||||
</div>
|
||||
|
||||
<div dojoType="PopupMenu2" widgetId="HelpMenu">
|
||||
|
@ -86,7 +83,7 @@
|
|||
Thanks to H.D.M for the functionality suggestions and developing a ground-breaking project: Metasploit. <br />
|
||||
<input type="button" value="Close" id="hidedialog"/>
|
||||
</div>
|
||||
|
||||
|
||||
<div dojoType="ContentPane" id="maincontent" executeScripts="true">
|
||||
<%= @content_for_layout %>
|
||||
</div>
|
||||
|
|
|
@ -0,0 +1,7 @@
|
|||
|
||||
<div class="desktop-tip">
|
||||
Use the top menu for accessing the Metasploit modules and functionality.
|
||||
Ex. <em>Exploits, Payloads, Encoders</em>. <br />
|
||||
Active windows will appear in the taskbar (look at the page bottom).
|
||||
<strong>Have phun!</strong>
|
||||
</div>
|
|
@ -1,17 +1,4 @@
|
|||
<div dojoType="FloatingPane"
|
||||
id="payloads-list"
|
||||
title="Payloads list"
|
||||
constrainToContainer="true"
|
||||
hasShadow="false"
|
||||
resizable="true"
|
||||
taskBarId="maintaskbar"
|
||||
windowState="normal"
|
||||
displayCloseAction="true";
|
||||
displayMinimizeAction="true"
|
||||
toggle="explode"
|
||||
style="width: 700px; height: 350px; position: relative; left: 100px; top: 35px; display:none"
|
||||
>
|
||||
<table dojoType="SortableTable" widgetId="PayloadsTable" headClass="fixedHeader" tbodyClass="scrollContent" enableMultipleSelect="false" enableAlternateRows="true" rowAlternateClass="alternateRow" cellpadding="0" cellspacing="0" border="0">
|
||||
<table dojoType="SortableTable" widgetId="PayloadsTable" headClass="fixedHeader" tbodyClass="scrollContent" enableMultipleSelect="false" enableAlternateRows="true" rowAlternateClass="alternateRow" cellpadding="0" cellspacing="0" border="0">
|
||||
<thead>
|
||||
<tr>
|
||||
<th field="Name" dataType="String">Name</th>
|
||||
|
@ -26,5 +13,4 @@
|
|||
<tr><td><%= m.name %></td><td><%= m.description %></td><td><%= path %></td></tr>
|
||||
<% end %>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</table>
|
|
@ -13,4 +13,49 @@ function helper_functions(e) {
|
|||
about_dlg.setCloseControl(btn);
|
||||
}
|
||||
|
||||
/* Description: Simple window management code.
|
||||
* Thanks: tk and dmachi for suggestions
|
||||
*/
|
||||
|
||||
function load_stateful_window(target_url, nid, ntitle, nstyle) {
|
||||
// create new floating pane (window)
|
||||
var new_window = create_new_window(nid, ntitle, nstyle, "normal", "maintaskbar");
|
||||
// create new content pane
|
||||
var new_contentpane = dojo.widget.createWidget("ContentPane", {href: target_url});
|
||||
// add new content pane to new floating pane as child
|
||||
new_window.addChild(new_contentpane);
|
||||
// add new floating pane to main pane
|
||||
main_Pane.addChild(new_window);
|
||||
}
|
||||
|
||||
function create_new_window(window_id, window_title, window_style, window_state, target_taskbar) {
|
||||
var myNewFloatingPane = dojo.widget.createWidget("FloatingPane",
|
||||
{
|
||||
/* floating pane params */
|
||||
id: window_id,
|
||||
title: window_title,
|
||||
constrainToContainer: "true",
|
||||
hasShadow: "false",
|
||||
resizable: "true",
|
||||
taskBarId: target_taskbar,
|
||||
windowState: window_state,
|
||||
displayCloseAction: "true",
|
||||
displayMinimizeAction: "true",
|
||||
toggle: "explode",
|
||||
style: window_style
|
||||
});
|
||||
|
||||
return myNewFloatingPane;
|
||||
}
|
||||
|
||||
function generate_window_style(width, height) {
|
||||
var generic_css = "position: relative;" +
|
||||
"left: 100px;" +
|
||||
"top: 35px;" +
|
||||
"display:none;" +
|
||||
"width: " + width +"px;" +
|
||||
"height: "+ height +"px;"
|
||||
return generic_css;
|
||||
}
|
||||
|
||||
dojo.addOnLoad(helper_functions);
|
|
@ -72,6 +72,23 @@ dojo.lang.extend(dojo.widget.html.ContentPane, {
|
|||
if(this.isShowing()||this.preload){ this.loadContents(); }
|
||||
},
|
||||
|
||||
moveChildTo: function(/*Object*/child, /*Object*/dest){
|
||||
if(!dojo.lang.isObject(child)||!dojo.lang.isObject(dest)){
|
||||
return false;
|
||||
}
|
||||
var c = (!dojo.dom.isNode(child))?((dojo.dom.isNode(child.domNode))?child.domNode:child):false;
|
||||
if(c==false){
|
||||
return c;
|
||||
}
|
||||
for(var i=0;i<this.children.length;i++){
|
||||
if(c==(dojo.dom.isNode(this.children[i]))?this.children[i]:this.children[i].domNode){
|
||||
dest.appendChild(dojo.dom.removeNode(c));
|
||||
delete(this.children[i]);
|
||||
break;
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
show: function(){
|
||||
// if refreshOnShow is true, reload the contents every time; otherwise, load only the first time
|
||||
if(this.refreshOnShow){
|
||||
|
|
|
@ -63,13 +63,26 @@ body {
|
|||
}
|
||||
|
||||
#maintaskbar .dojoTaskBarItem a {
|
||||
color: black;
|
||||
text-decoration: none;
|
||||
color: black;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.desktop-tip {
|
||||
margin-top: 1em;
|
||||
margin-left: 1em;
|
||||
font-family: Trebuchet, Sans, Arial;
|
||||
font-size: 90%;
|
||||
padding-left: 4em;
|
||||
padding-right: 1em;
|
||||
padding-top: 1em;
|
||||
padding-bottom: 1em;
|
||||
width: 400px;
|
||||
border-left: 5px solid #fff;
|
||||
background: #fff url(/images/help.png) no-repeat;
|
||||
}
|
||||
|
||||
.dojoDialog {
|
||||
background : #ddd;
|
||||
background : #fff;
|
||||
border : 2px solid #999;
|
||||
-moz-border-radius : 5px;
|
||||
padding : 5px;
|
||||
|
|
Loading…
Reference in New Issue