From 5678d643cd9e1bdfcad53e0c9cee423def61643f Mon Sep 17 00:00:00 2001 From: Dane Everitt Date: Sat, 13 Feb 2016 00:18:32 -0500 Subject: [PATCH] Very basic view of databases and database servers on the system --- .../Controllers/Admin/DatabaseController.php | 65 ++++++++++ app/Http/Routes/AdminRoutes.php | 22 ++++ .../views/admin/databases/index.blade.php | 111 ++++++++++++++++++ resources/views/admin/databases/new.blade.php | 0 resources/views/layouts/admin.blade.php | 2 + 5 files changed, 200 insertions(+) create mode 100644 app/Http/Controllers/Admin/DatabaseController.php create mode 100644 resources/views/admin/databases/index.blade.php create mode 100644 resources/views/admin/databases/new.blade.php diff --git a/app/Http/Controllers/Admin/DatabaseController.php b/app/Http/Controllers/Admin/DatabaseController.php new file mode 100644 index 000000000..5d658a641 --- /dev/null +++ b/app/Http/Controllers/Admin/DatabaseController.php @@ -0,0 +1,65 @@ + + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * 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. + */ +namespace Pterodactyl\Http\Controllers\Admin; + +use DB; + +use Pterodactyl\Models; + +use Pterodactyl\Http\Controllers\Controller; +use Illuminate\Http\Request; + +class DatabaseController extends Controller +{ + + /** + * Controller Constructor + */ + public function __construct() + { + // + } + + public function getIndex(Request $request) + { + return view('admin.databases.index', [ + 'databases' => Models\Database::select( + 'databases.*', + 'database_servers.host as a_host', + 'database_servers.port as a_port', + 'servers.id as a_serverId', + 'servers.name as a_serverName' + )->join('database_servers', 'database_servers.id', '=', 'databases.db_server') + ->join('servers', 'databases.server', '=', 'servers.id') + ->paginate(20), + 'dbh' => Models\DatabaseServer::select( + 'database_servers.*', + 'nodes.name as a_linkedNode', + DB::raw('(SELECT COUNT(*) FROM `databases` WHERE `databases`.`db_server` = database_servers.id) as c_databases') + )->join('nodes', 'nodes.id', '=', 'database_servers.linked_node') + ->paginate(20) + ]); + } + +} diff --git a/app/Http/Routes/AdminRoutes.php b/app/Http/Routes/AdminRoutes.php index 3164e5c14..09647db16 100644 --- a/app/Http/Routes/AdminRoutes.php +++ b/app/Http/Routes/AdminRoutes.php @@ -308,6 +308,28 @@ class AdminRoutes { ]); }); + // Database Routes + $router->group([ + 'prefix' => 'admin/databases', + 'middleware' => [ + 'auth', + 'admin', + 'csrf' + ] + ], function () use ($router) { + $router->get('/', [ + 'as' => 'admin.databases', + 'uses' => 'Admin\DatabaseController@getIndex' + ]); + $router->get('/new', [ + 'as' => 'admin.databases.new', + 'uses' => 'Admin\DatabaseController@getNew' + ]); + $router->post('/new', [ + 'uses' => 'Admin\DatabaseController@postNew' + ]); + }); + } } diff --git a/resources/views/admin/databases/index.blade.php b/resources/views/admin/databases/index.blade.php new file mode 100644 index 000000000..1c145c856 --- /dev/null +++ b/resources/views/admin/databases/index.blade.php @@ -0,0 +1,111 @@ +{{-- Copyright (c) 2015 - 2016 Dane Everitt --}} + +{{-- Permission is hereby granted, free of charge, to any person obtaining a copy --}} +{{-- of this software and associated documentation files (the "Software"), to deal --}} +{{-- in the Software without restriction, including without limitation the rights --}} +{{-- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell --}} +{{-- copies of the Software, and to permit persons to whom the Software is --}} +{{-- furnished to do so, subject to the following conditions: --}} + +{{-- The above copyright notice and this permission notice shall be included in all --}} +{{-- copies or substantial portions of the Software. --}} + +{{-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR --}} +{{-- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, --}} +{{-- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE --}} +{{-- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER --}} +{{-- 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. --}} +@extends('layouts.admin') + +@section('title') + Server List +@endsection + +@section('content') +
+ +

Manage Databases


+ +
+
+
+
+
+ + + + + + + + + + + + @foreach($databases as $db) + + + + + + + + @endforeach + +
ServerDatabaseUsernameConnection
{{ $db->a_serverName }}{{ $db->database }}{{ $db->username }} ({{ $db->remote }}){{ $db->a_host }}:{{ $db->a_port }}
+
+ {{ $databases->render() }} +
+
+
+
+
+
+
+
+ + + + + + + + + + + + + @foreach($dbh as $db) + + + + + + + + + @endforeach + +
NameConnectionUsernameDatabasesLinked Node
{{ $db->name }}{{ $db->host }}:{{ $db->port }}{{ $db->username }}{{ $db->c_databases }}@if(is_null($db->a_linkedNode))unlinked@else{{ $db->a_linkedNode }}@endif
+
+ {{ $dbh->render() }} +
+
+
+
+
+
+ +@endsection diff --git a/resources/views/admin/databases/new.blade.php b/resources/views/admin/databases/new.blade.php new file mode 100644 index 000000000..e69de29bb diff --git a/resources/views/layouts/admin.blade.php b/resources/views/layouts/admin.blade.php index f67aedd08..203aeca3b 100644 --- a/resources/views/layouts/admin.blade.php +++ b/resources/views/layouts/admin.blade.php @@ -61,6 +61,7 @@
  • Admin Index
  • General Settings
  • API Management
  • +
  • Database Management