mirror of
https://github.com/fruithost/Panel.git
synced 2026-10-27 15:18:11 +09:00
87 lines
2.6 KiB
JavaScript
87 lines
2.6 KiB
JavaScript
/**
|
|
* fruithost | OpenSource Hosting
|
|
*
|
|
* @author Adrian Preuß
|
|
* @version 1.0.0
|
|
* @license MIT
|
|
*/
|
|
|
|
(() => {
|
|
'use strict'
|
|
window.addEventListener('DOMContentLoaded', () => {
|
|
document.body.style.overflow = 'hidden';
|
|
let destination = document.querySelector('input[name="destination"]');
|
|
let output = document.querySelector('div.output');
|
|
let command = document.querySelector('input[name="command"]');
|
|
let parser = new Terminal();
|
|
|
|
function send(cmd) {
|
|
new Ajax(destination.value).onError(function (event, error, response) {
|
|
console.warn(event, error, response);
|
|
}).onSuccess(function (response) {
|
|
if (response === '\u001B[H\u001B[2J\u001B[3J' || response === 'clear') {
|
|
output.innerHTML = '';
|
|
return;
|
|
}
|
|
|
|
output.innerHTML += parser.parse(response);
|
|
command.focus();
|
|
output.scrollTo(0, output.scrollHeight);
|
|
}).post({
|
|
action: 'command',
|
|
command: cmd
|
|
});
|
|
}
|
|
|
|
let history = [];
|
|
let position = 0;
|
|
|
|
command.addEventListener('keydown', (event) => {
|
|
switch (event.keyCode) {
|
|
/* Enter */
|
|
case 13:
|
|
let text = command.value;
|
|
history.push(text);
|
|
position = history.length;
|
|
send(text);
|
|
command.value = '';
|
|
break;
|
|
|
|
/* Up */
|
|
case 38:
|
|
if (position > 0) {
|
|
--position;
|
|
|
|
if (position < 0) {
|
|
position = history.length - 1;
|
|
}
|
|
|
|
command.blur();
|
|
command.value = history[position];
|
|
command.focus();
|
|
}
|
|
break;
|
|
|
|
/* Down */
|
|
case 40:
|
|
if (position >= history.length) {
|
|
break;
|
|
}
|
|
|
|
position++;
|
|
|
|
if (position === history.length) {
|
|
command.value = '';
|
|
} else {
|
|
command.blur();
|
|
command.focus();
|
|
command.value = history[position];
|
|
}
|
|
break;
|
|
}
|
|
});
|
|
|
|
send('motd');
|
|
command.focus();
|
|
});
|
|
})(); |