Added "ready" event for iframe message passing
* When shellinabox is ready it sends "ready" message to parent window. * Example file was updated with new use case.
This commit is contained in:
parent
8e28bb4c2a
commit
d4bd77ca45
2 changed files with 19 additions and 5 deletions
|
@ -14,7 +14,7 @@
|
||||||
|
|
||||||
For communication with Shell In A Box we need to set '-m' (messages-origin)
|
For communication with Shell In A Box we need to set '-m' (messages-origin)
|
||||||
command line option with appropriate messages origin. Origin should be set to
|
command line option with appropriate messages origin. Origin should be set to
|
||||||
URL of parent (this) window. If origin is set to '*' Shell In A Box won't checki
|
URL of parent (this) window. If origin is set to '*' Shell In A Box won't check
|
||||||
origin on received messages. This is usually unsafe option.
|
origin on received messages. This is usually unsafe option.
|
||||||
|
|
||||||
Command line example:
|
Command line example:
|
||||||
|
@ -59,6 +59,9 @@
|
||||||
|
|
||||||
Following types of messages can be received from shellinabox:
|
Following types of messages can be received from shellinabox:
|
||||||
|
|
||||||
|
* ready
|
||||||
|
signals that shellinabox is ready to send and receive messages
|
||||||
|
|
||||||
* output
|
* output
|
||||||
data field contains terminal output
|
data field contains terminal output
|
||||||
|
|
||||||
|
@ -140,10 +143,6 @@
|
||||||
var output = document.getElementById("output");
|
var output = document.getElementById("output");
|
||||||
var session = document.getElementById("session");
|
var session = document.getElementById("session");
|
||||||
|
|
||||||
// Add url to our iframe. We do this, only that variable 'url' can be used
|
|
||||||
// throughout the whole code where needed.
|
|
||||||
iframe.src = url;
|
|
||||||
|
|
||||||
document.getElementById("execute").addEventListener("click", function() {
|
document.getElementById("execute").addEventListener("click", function() {
|
||||||
// Send input to shellinabox
|
// Send input to shellinabox
|
||||||
var message = JSON.stringify({
|
var message = JSON.stringify({
|
||||||
|
@ -209,6 +208,15 @@
|
||||||
// Handle response according to response type
|
// Handle response according to response type
|
||||||
var decoded = JSON.parse(message.data);
|
var decoded = JSON.parse(message.data);
|
||||||
switch (decoded.type) {
|
switch (decoded.type) {
|
||||||
|
case "ready":
|
||||||
|
// Shellinabox is ready to communicate and we will enable console output
|
||||||
|
// by default.
|
||||||
|
var message = JSON.stringify({
|
||||||
|
type : 'output',
|
||||||
|
data : 'enable'
|
||||||
|
});
|
||||||
|
iframe.contentWindow.postMessage(message, url);
|
||||||
|
break;
|
||||||
case "output" :
|
case "output" :
|
||||||
// Append new output
|
// Append new output
|
||||||
output.innerHTML = output.innerHTML + decoded.data;
|
output.innerHTML = output.innerHTML + decoded.data;
|
||||||
|
@ -220,6 +228,9 @@
|
||||||
}
|
}
|
||||||
}, false);
|
}, false);
|
||||||
|
|
||||||
|
// Add url to our iframe after the event listener is installed.
|
||||||
|
iframe.src = url;
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
|
|
|
@ -406,6 +406,9 @@ ShellInABox.prototype.messageInit = function() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// After message mechanisms are in place "ready" message is sent to parent
|
||||||
|
// window.
|
||||||
|
parent.postMessage(JSON.stringify({type : 'ready', data : ''}), '*');
|
||||||
};
|
};
|
||||||
|
|
||||||
ShellInABox.prototype.messageReceive = function (message) {
|
ShellInABox.prototype.messageReceive = function (message) {
|
||||||
|
|
Loading…
Reference in a new issue