diff --git a/CHANGELOG.md b/CHANGELOG.md index fa750c24d..6ccc53c56 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,9 @@ This project follows [Semantic Versioning](http://semver.org) guidelines. * `[beta.1]` — Fixes panel looking for an old compiled classfile that is no longer used. This was causing errors relating to `missing class DingoAPI` when trying to upgrade the panel. * `[beta.1]` — Should fix render issues when trying to edit some files via the panel file editor. +### Added +* Ability to launch the console in a new window as an individual unit. https://s3.kelp.in/IrTyE.png + ## v0.6.0-beta.1 (Courageous Carniadactylus) ### Fixed * `[pre.7]` — Fixes bug with subuser checkbox display. diff --git a/app/Http/Controllers/Server/ServerController.php b/app/Http/Controllers/Server/ServerController.php index 5c3dc193d..d89a47c1c 100644 --- a/app/Http/Controllers/Server/ServerController.php +++ b/app/Http/Controllers/Server/ServerController.php @@ -65,6 +65,31 @@ class ServerController extends Controller ]); } + /** + * Renders server console as an individual item. + * + * @param \Illuminate\Http\Request $request + * @param string $uuid + * @return \Illuminate\View\View + */ + public function getConsole(Request $request, $uuid) + { + \Debugbar::disable(); + $server = Models\Server::byUuid($uuid); + + $server->js([ + 'config' => [ + 'console_count' => config('pterodactyl.console.count'), + 'console_freq' => config('pterodactyl.console.freq'), + ], + ]); + + return view('server.console', [ + 'server' => $server, + 'node' => $server->node, + ]); + } + /** * Renders file overview page. * diff --git a/public/themes/pterodactyl/js/frontend/console.js b/public/themes/pterodactyl/js/frontend/console.js index 56233cd18..b0cd9755b 100644 --- a/public/themes/pterodactyl/js/frontend/console.js +++ b/public/themes/pterodactyl/js/frontend/console.js @@ -24,8 +24,9 @@ var InitialLogSent = false; (function initConsole() { window.TerminalQueue = []; + window.ConsoleServerStatus = 0; window.Terminal = $('#terminal').terminal(function (command, term) { - Socket.emit('send command', command); + Socket.emit((ConsoleServerStatus !== 0) ? 'send command' : 'set status', command); }, { greetings: '', name: Pterodactyl.server.uuid, @@ -80,6 +81,7 @@ var InitialLogSent = false; (function setupSocketListeners() { // Update Listings on Initial Status Socket.on('initial status', function (data) { + ConsoleServerStatus = data.status; if (! InitialLogSent) { updateServerPowerControls(data.status); @@ -91,6 +93,7 @@ var InitialLogSent = false; // Update Listings on Status Socket.on('status', function (data) { + ConsoleServerStatus = data.status; updateServerPowerControls(data.status); }); @@ -134,112 +137,117 @@ $(document).ready(function () { } }); - Socket.on('proc', function (proc) { - if (CPUData.length > 10) { - CPUData.shift(); - MemoryData.shift(); - TimeLabels.shift(); + (function setupChartElements() { + if (typeof SkipConsoleCharts !== 'undefined') { + return; } - var cpuUse = (Pterodactyl.server.cpu > 0) ? parseFloat(((proc.data.cpu.total / Pterodactyl.server.cpu) * 100).toFixed(3).toString()) : proc.data.cpu.total; - CPUData.push(cpuUse); - MemoryData.push(parseInt(proc.data.memory.total / (1024 * 1024))); - - TimeLabels.push($.format.date(new Date(), 'HH:mm:ss')); - - CPUChart.update(); - MemoryChart.update(); - }); - - - var ctc = $('#chart_cpu'); - var TimeLabels = []; - var CPUData = []; - var CPUChart = new Chart(ctc, { - type: 'line', - data: { - labels: TimeLabels, - datasets: [ - { - label: "Percent Use", - fill: false, - lineTension: 0.03, - backgroundColor: "#3c8dbc", - borderColor: "#3c8dbc", - borderCapStyle: 'butt', - borderDash: [], - borderDashOffset: 0.0, - borderJoinStyle: 'miter', - pointBorderColor: "#3c8dbc", - pointBackgroundColor: "#fff", - pointBorderWidth: 1, - pointHoverRadius: 5, - pointHoverBackgroundColor: "#3c8dbc", - pointHoverBorderColor: "rgba(220,220,220,1)", - pointHoverBorderWidth: 2, - pointRadius: 1, - pointHitRadius: 10, - data: CPUData, - spanGaps: false, - } - ] - }, - options: { - title: { - display: true, - text: 'CPU Usage (as Percent Total)' - }, - legend: { - display: false, - }, - animation: { - duration: 1, + Socket.on('proc', function (proc) { + if (CPUData.length > 10) { + CPUData.shift(); + MemoryData.shift(); + TimeLabels.shift(); } - } - }); - var ctm = $('#chart_memory'); - MemoryData = []; - MemoryChart = new Chart(ctm, { - type: 'line', - data: { - labels: TimeLabels, - datasets: [ - { - label: "Memory Use", - fill: false, - lineTension: 0.03, - backgroundColor: "#3c8dbc", - borderColor: "#3c8dbc", - borderCapStyle: 'butt', - borderDash: [], - borderDashOffset: 0.0, - borderJoinStyle: 'miter', - pointBorderColor: "#3c8dbc", - pointBackgroundColor: "#fff", - pointBorderWidth: 1, - pointHoverRadius: 5, - pointHoverBackgroundColor: "#3c8dbc", - pointHoverBorderColor: "rgba(220,220,220,1)", - pointHoverBorderWidth: 2, - pointRadius: 1, - pointHitRadius: 10, - data: MemoryData, - spanGaps: false, + var cpuUse = (Pterodactyl.server.cpu > 0) ? parseFloat(((proc.data.cpu.total / Pterodactyl.server.cpu) * 100).toFixed(3).toString()) : proc.data.cpu.total; + CPUData.push(cpuUse); + MemoryData.push(parseInt(proc.data.memory.total / (1024 * 1024))); + + TimeLabels.push($.format.date(new Date(), 'HH:mm:ss')); + + CPUChart.update(); + MemoryChart.update(); + }); + + var ctc = $('#chart_cpu'); + var TimeLabels = []; + var CPUData = []; + var CPUChart = new Chart(ctc, { + type: 'line', + data: { + labels: TimeLabels, + datasets: [ + { + label: "Percent Use", + fill: false, + lineTension: 0.03, + backgroundColor: "#3c8dbc", + borderColor: "#3c8dbc", + borderCapStyle: 'butt', + borderDash: [], + borderDashOffset: 0.0, + borderJoinStyle: 'miter', + pointBorderColor: "#3c8dbc", + pointBackgroundColor: "#fff", + pointBorderWidth: 1, + pointHoverRadius: 5, + pointHoverBackgroundColor: "#3c8dbc", + pointHoverBorderColor: "rgba(220,220,220,1)", + pointHoverBorderWidth: 2, + pointRadius: 1, + pointHitRadius: 10, + data: CPUData, + spanGaps: false, + } + ] + }, + options: { + title: { + display: true, + text: 'CPU Usage (as Percent Total)' + }, + legend: { + display: false, + }, + animation: { + duration: 1, } - ] - }, - options: { - title: { - display: true, - text: 'Memory Usage (in Megabytes)' - }, - legend: { - display: false, - }, - animation: { - duration: 1, } - } - }); + }); + + var ctm = $('#chart_memory'); + MemoryData = []; + MemoryChart = new Chart(ctm, { + type: 'line', + data: { + labels: TimeLabels, + datasets: [ + { + label: "Memory Use", + fill: false, + lineTension: 0.03, + backgroundColor: "#3c8dbc", + borderColor: "#3c8dbc", + borderCapStyle: 'butt', + borderDash: [], + borderDashOffset: 0.0, + borderJoinStyle: 'miter', + pointBorderColor: "#3c8dbc", + pointBackgroundColor: "#fff", + pointBorderWidth: 1, + pointHoverRadius: 5, + pointHoverBackgroundColor: "#3c8dbc", + pointHoverBorderColor: "rgba(220,220,220,1)", + pointHoverBorderWidth: 2, + pointRadius: 1, + pointHitRadius: 10, + data: MemoryData, + spanGaps: false, + } + ] + }, + options: { + title: { + display: true, + text: 'Memory Usage (in Megabytes)' + }, + legend: { + display: false, + }, + animation: { + duration: 1, + } + } + }); + })(); }); diff --git a/public/themes/pterodactyl/js/frontend/server.socket.js b/public/themes/pterodactyl/js/frontend/server.socket.js index 4c0e77fa8..7314c7d7a 100644 --- a/public/themes/pterodactyl/js/frontend/server.socket.js +++ b/public/themes/pterodactyl/js/frontend/server.socket.js @@ -17,7 +17,10 @@ // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE // SOFTWARE. - +$('#console-popout').on('click', function (event) { + event.preventDefault(); + window.open($(this).attr('href'), 'Pterodactyl Console', 'width=800,height=400'); +}); var Server = (function () { function initSocket() { diff --git a/resources/lang/en/navigation.php b/resources/lang/en/navigation.php index 9466823b0..a8d271017 100644 --- a/resources/lang/en/navigation.php +++ b/resources/lang/en/navigation.php @@ -12,6 +12,7 @@ return [ 'server' => [ 'header' => 'SERVER MANAGEMENT', 'console' => 'Console', + 'console-pop' => 'Fullscreen Console', 'file_management' => 'File Management', 'file_browser' => 'File Browser', 'create_file' => 'Create File', diff --git a/resources/themes/pterodactyl/layouts/master.blade.php b/resources/themes/pterodactyl/layouts/master.blade.php index a2483c9fd..8b236149e 100644 --- a/resources/themes/pterodactyl/layouts/master.blade.php +++ b/resources/themes/pterodactyl/layouts/master.blade.php @@ -126,6 +126,11 @@