metasploit-framework/data/msfweb/public/javascripts/extended_debug.js

114 lines
3.3 KiB
JavaScript
Executable File

var commandHistory;
var historyIndex;
function showExtendedDebug() {
if (debugWindow != null) {
hideDebug();
}
if (debugWindow == null) {
commandHistory = new Array();
historyIndex = 0;
debugWindow = new Window('debug_window', {className: 'dialog',width:250, height:100, right:4, minWidth:250, bottom:42, zIndex:1000, opacity:1, showEffect: Element.show, resizable: true, title: "Debug"})
debugWindow.getContent().innerHTML = "<style>#debug_window .dialog_content {background:#000;}</style> <div font='monaco' id='debug' style='padding:3px;color:#0F0;font-family:monaco'></div>";
//create hourglass icon and attach events to it.
var cont = "<div id=\"debug_window_inspect\" style=\"width: 15px; height: 15px; background: transparent url(themes/default/inspect.gif) no-repeat 0 0; position:absolute; top:5px; left:70px; cursor:pointer; z-index:3000;\"></div>";
new Insertion.After('debug_window_maximize', cont);
Event.observe('debug_window_inspect', 'click', enterInspectionMode, false);
//create command text box
cont = "Eval:<input id=\"debug_window_command\" type=\"textbox\" style=\"width:150px; height: 12px; color: black;\">"
debugWindow.setStatusBar(cont);
Event.observe('debug_window_command', 'mousedown', donothing);
Event.observe('debug_window_command', 'keypress', evalJS, false);
}
debugWindow.show();
}
function donothing(evt){
Field.activate('debug_window_command');
return false;
}
function evalJS(evt){
if(evt.keyCode == Event.KEY_RETURN){
var js = $F('debug_window_command');
try{
var ret = eval(js);
if(ret != null)
debug(ret);
}catch(e){
debug(e);
}
$('debug_window_command').value = '';
Field.activate('debug_window_command');
commandHistory.push(js);
historyIndex = 0;
}
if(evt.keyCode == Event.KEY_UP){
if(commandHistory.length > historyIndex){
historyIndex++;
var js = commandHistory[commandHistory.length-historyIndex];
$('debug_window_command').value = js;
Event.stop(evt);
Field.activate('debug_window_command');
}
}
if(evt.keyCode == Event.KEY_DOWN){
if(commandHistory.length >= historyIndex && historyIndex > 1){
historyIndex--;
var js = commandHistory[commandHistory.length-historyIndex];
$('debug_window_command').value = js;
Event.stop(evt);
Field.activate('debug_window_command');
}
}
}
function enterInspectionMode(evt){
//stop observing magnifying glass
Event.stopObserving('debug_window_inspect', 'click', enterInspectionMode, false);
//change pointer
document.body.style.cursor='help';
//start observing mouse clicks
Event.observe(window, 'click', inspectItem, false);
}
function inspectItem(evt){
// the element that triggered the event
var element = Event.element(evt);
if(element.id!="debug_window_inspect"){
clearDebug()
//change pointer
document.body.style.cursor='default';
debug(element.id);
inspect(element);
//stop observing mouse clicks
Event.stopObserving(window, 'click', inspectItem, false);
//alert('doing something');
//start observing mag
Event.observe('debug_window_inspect', 'click', enterInspectionMode, false);
}
}
function clearDebug() {
var win = $('debug');
if (win == null)
return;
win.innerHTML=" ";
//clear inspections too
var divs = document.getElementsByClassName('inspector');
divs.each(function(div){
Element.remove(div);
});
}