Switch to UNIX line breaks instead of DOS for not breaking linux.
This commit is contained in:
parent
608ff0d4f2
commit
b1e32ca8ae
16 changed files with 1058 additions and 1058 deletions
|
@ -1,64 +1,64 @@
|
|||
<?php
|
||||
|
||||
namespace Pterodactyl\Http\Controllers\Admin\Extensions\Blueprint;
|
||||
|
||||
use Illuminate\View\View;
|
||||
use Illuminate\View\Factory as ViewFactory;
|
||||
use Prologue\Alerts\AlertsMessageBag;
|
||||
use Illuminate\Contracts\Console\Kernel;
|
||||
use Pterodactyl\Http\Controllers\Controller;
|
||||
use Pterodactyl\Services\Helpers\SoftwareVersionService;
|
||||
use Pterodactyl\Services\Helpers\BlueprintVariableService;
|
||||
use Pterodactyl\Contracts\Repository\SettingsRepositoryInterface;
|
||||
use Illuminate\Contracts\Config\Repository as ConfigRepository;
|
||||
use Pterodactyl\Http\Requests\Admin\Extensions\Blueprint\BlueprintSettingsFormRequest;
|
||||
use Illuminate\Http\RedirectResponse;
|
||||
|
||||
class BlueprintExtensionController extends Controller
|
||||
{
|
||||
|
||||
/**
|
||||
* BlueprintExtensionController constructor.
|
||||
*/
|
||||
public function __construct(
|
||||
private BlueprintVariableService $bp,
|
||||
|
||||
private SoftwareVersionService $version,
|
||||
private ViewFactory $view,
|
||||
private Kernel $kernel,
|
||||
private AlertsMessageBag $alert,
|
||||
private ConfigRepository $config,
|
||||
private SettingsRepositoryInterface $settings,
|
||||
) {
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the admin index view.
|
||||
*/
|
||||
public function index(): View
|
||||
{
|
||||
return $this->view->make(
|
||||
'admin.extensions.blueprint.index', [
|
||||
'version' => $this->version,
|
||||
'bp' => $this->bp,
|
||||
'root' => "/admin/extensions/blueprint",
|
||||
'a' => $this->bp->a(),
|
||||
'b' => $this->bp->b(),
|
||||
'c' => $this->bp->c(),
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @throws \Pterodactyl\Exceptions\Model\DataValidationException
|
||||
* @throws \Pterodactyl\Exceptions\Repository\RecordNotFoundException
|
||||
*/
|
||||
public function update(BlueprintSettingsFormRequest $request): RedirectResponse
|
||||
{
|
||||
foreach ($request->normalize() as $key => $value) {
|
||||
$this->settings->set('blueprint::' . $key, $value);
|
||||
}
|
||||
|
||||
return redirect()->route('admin.extensions.blueprint.index');
|
||||
}
|
||||
}
|
||||
<?php
|
||||
|
||||
namespace Pterodactyl\Http\Controllers\Admin\Extensions\Blueprint;
|
||||
|
||||
use Illuminate\View\View;
|
||||
use Illuminate\View\Factory as ViewFactory;
|
||||
use Prologue\Alerts\AlertsMessageBag;
|
||||
use Illuminate\Contracts\Console\Kernel;
|
||||
use Pterodactyl\Http\Controllers\Controller;
|
||||
use Pterodactyl\Services\Helpers\SoftwareVersionService;
|
||||
use Pterodactyl\Services\Helpers\BlueprintVariableService;
|
||||
use Pterodactyl\Contracts\Repository\SettingsRepositoryInterface;
|
||||
use Illuminate\Contracts\Config\Repository as ConfigRepository;
|
||||
use Pterodactyl\Http\Requests\Admin\Extensions\Blueprint\BlueprintSettingsFormRequest;
|
||||
use Illuminate\Http\RedirectResponse;
|
||||
|
||||
class BlueprintExtensionController extends Controller
|
||||
{
|
||||
|
||||
/**
|
||||
* BlueprintExtensionController constructor.
|
||||
*/
|
||||
public function __construct(
|
||||
private BlueprintVariableService $bp,
|
||||
|
||||
private SoftwareVersionService $version,
|
||||
private ViewFactory $view,
|
||||
private Kernel $kernel,
|
||||
private AlertsMessageBag $alert,
|
||||
private ConfigRepository $config,
|
||||
private SettingsRepositoryInterface $settings,
|
||||
) {
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the admin index view.
|
||||
*/
|
||||
public function index(): View
|
||||
{
|
||||
return $this->view->make(
|
||||
'admin.extensions.blueprint.index', [
|
||||
'version' => $this->version,
|
||||
'bp' => $this->bp,
|
||||
'root' => "/admin/extensions/blueprint",
|
||||
'a' => $this->bp->a(),
|
||||
'b' => $this->bp->b(),
|
||||
'c' => $this->bp->c(),
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @throws \Pterodactyl\Exceptions\Model\DataValidationException
|
||||
* @throws \Pterodactyl\Exceptions\Repository\RecordNotFoundException
|
||||
*/
|
||||
public function update(BlueprintSettingsFormRequest $request): RedirectResponse
|
||||
{
|
||||
foreach ($request->normalize() as $key => $value) {
|
||||
$this->settings->set('blueprint::' . $key, $value);
|
||||
}
|
||||
|
||||
return redirect()->route('admin.extensions.blueprint.index');
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,27 +1,27 @@
|
|||
<?php
|
||||
|
||||
namespace Pterodactyl\Http\Controllers\Admin;
|
||||
|
||||
use Illuminate\View\View;
|
||||
use Illuminate\View\Factory as ViewFactory;
|
||||
use Pterodactyl\Http\Controllers\Controller;
|
||||
use Pterodactyl\Services\Helpers\SoftwareVersionService;
|
||||
use Pterodactyl\Services\Helpers\BlueprintVariableService;
|
||||
|
||||
class ExtensionsController extends Controller
|
||||
{
|
||||
/**
|
||||
* ExtensionsController constructor.
|
||||
*/
|
||||
public function __construct(private SoftwareVersionService $version, private ViewFactory $view, private BlueprintVariableService $bp)
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the admin index view.
|
||||
*/
|
||||
public function index(): View
|
||||
{
|
||||
return $this->view->make('admin.extensions', ['version' => $this->version, 'bp' => $this->bp, 'root' => "/admin/extensions"]);
|
||||
}
|
||||
}
|
||||
<?php
|
||||
|
||||
namespace Pterodactyl\Http\Controllers\Admin;
|
||||
|
||||
use Illuminate\View\View;
|
||||
use Illuminate\View\Factory as ViewFactory;
|
||||
use Pterodactyl\Http\Controllers\Controller;
|
||||
use Pterodactyl\Services\Helpers\SoftwareVersionService;
|
||||
use Pterodactyl\Services\Helpers\BlueprintVariableService;
|
||||
|
||||
class ExtensionsController extends Controller
|
||||
{
|
||||
/**
|
||||
* ExtensionsController constructor.
|
||||
*/
|
||||
public function __construct(private SoftwareVersionService $version, private ViewFactory $view, private BlueprintVariableService $bp)
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the admin index view.
|
||||
*/
|
||||
public function index(): View
|
||||
{
|
||||
return $this->view->make('admin.extensions', ['version' => $this->version, 'bp' => $this->bp, 'root' => "/admin/extensions"]);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,29 +1,29 @@
|
|||
<?php
|
||||
|
||||
namespace Pterodactyl\Http\Requests\Admin\Extensions\Blueprint;
|
||||
|
||||
use Pterodactyl\Http\Requests\Admin\AdminFormRequest;
|
||||
|
||||
class BlueprintSettingsFormRequest extends AdminFormRequest
|
||||
{
|
||||
/**
|
||||
* Return all the rules to apply to this request's data.
|
||||
*/
|
||||
public function rules(): array
|
||||
{
|
||||
return [
|
||||
'placeholder:1' => 'string',
|
||||
'placeholder:2' => 'string',
|
||||
'placeholder:3' => 'string',
|
||||
];
|
||||
}
|
||||
|
||||
public function attributes(): array
|
||||
{
|
||||
return [
|
||||
'placeholder:1' => 'placeholder',
|
||||
'placeholder:2' => 'placeholder',
|
||||
'placeholder:3' => 'placeholder',
|
||||
];
|
||||
}
|
||||
}
|
||||
<?php
|
||||
|
||||
namespace Pterodactyl\Http\Requests\Admin\Extensions\Blueprint;
|
||||
|
||||
use Pterodactyl\Http\Requests\Admin\AdminFormRequest;
|
||||
|
||||
class BlueprintSettingsFormRequest extends AdminFormRequest
|
||||
{
|
||||
/**
|
||||
* Return all the rules to apply to this request's data.
|
||||
*/
|
||||
public function rules(): array
|
||||
{
|
||||
return [
|
||||
'placeholder:1' => 'string',
|
||||
'placeholder:2' => 'string',
|
||||
'placeholder:3' => 'string',
|
||||
];
|
||||
}
|
||||
|
||||
public function attributes(): array
|
||||
{
|
||||
return [
|
||||
'placeholder:1' => 'placeholder',
|
||||
'placeholder:2' => 'placeholder',
|
||||
'placeholder:3' => 'placeholder',
|
||||
];
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,31 +1,31 @@
|
|||
<?php
|
||||
|
||||
/*
|
||||
| Welcome to the Blueprint Extension Library.
|
||||
|
|
||||
| This allows you and developers to interact with
|
||||
| Blueprint easely and without hassle.
|
||||
*/
|
||||
|
||||
namespace Pterodactyl\Services\Helpers;
|
||||
use Pterodactyl\Contracts\Repository\SettingsRepositoryInterface;
|
||||
use Illuminate\Http\RedirectResponse;
|
||||
|
||||
class BlueprintExtensionLibrary
|
||||
{
|
||||
// Construct BlueprintExtensionLibrary
|
||||
public function __construct(
|
||||
private SettingsRepositoryInterface $settings,
|
||||
) {
|
||||
}
|
||||
|
||||
public function db($type, $table, $key, $value) {
|
||||
if ($type === "get") {
|
||||
return $this->settings->get($table."::".$key);
|
||||
};
|
||||
if ($type === "set") {
|
||||
return $this->settings->set($table."::".$key, $value);
|
||||
};
|
||||
return true;
|
||||
}
|
||||
<?php
|
||||
|
||||
/*
|
||||
| Welcome to the Blueprint Extension Library.
|
||||
|
|
||||
| This allows you and developers to interact with
|
||||
| Blueprint easely and without hassle.
|
||||
*/
|
||||
|
||||
namespace Pterodactyl\Services\Helpers;
|
||||
use Pterodactyl\Contracts\Repository\SettingsRepositoryInterface;
|
||||
use Illuminate\Http\RedirectResponse;
|
||||
|
||||
class BlueprintExtensionLibrary
|
||||
{
|
||||
// Construct BlueprintExtensionLibrary
|
||||
public function __construct(
|
||||
private SettingsRepositoryInterface $settings,
|
||||
) {
|
||||
}
|
||||
|
||||
public function db($type, $table, $key, $value) {
|
||||
if ($type === "get") {
|
||||
return $this->settings->get($table."::".$key);
|
||||
};
|
||||
if ($type === "set") {
|
||||
return $this->settings->set($table."::".$key, $value);
|
||||
};
|
||||
return true;
|
||||
}
|
||||
}
|
|
@ -1,171 +1,171 @@
|
|||
<?php
|
||||
|
||||
namespace Pterodactyl\Services\Helpers;
|
||||
use Pterodactyl\Contracts\Repository\SettingsRepositoryInterface;
|
||||
|
||||
class BlueprintVariableService
|
||||
{
|
||||
// Construct BlueprintVariableService
|
||||
public function __construct(
|
||||
private SettingsRepositoryInterface $settings,
|
||||
) {
|
||||
}
|
||||
|
||||
// $bp->rlKey()
|
||||
// $bp->kyGet()
|
||||
// $bp->a()
|
||||
// $bp->b()
|
||||
// $bp->c()
|
||||
// $bp->licenseIsBlacklisted()
|
||||
// $bp->licenseKey()
|
||||
// $bp->licenseKeyCensored()
|
||||
// $bp->version()
|
||||
// $bp->dbGet('db:record')
|
||||
// $bp->kyGet()
|
||||
// $bp->dbSet('db:record', 'value')
|
||||
// $bp->sync()
|
||||
// $bp->exec('arguments')
|
||||
public
|
||||
function rlKey(): void {
|
||||
$s = "bpk";
|
||||
$o = "false";
|
||||
$c = curl_init();
|
||||
$j = true;
|
||||
$k = "y";
|
||||
$y = 0;
|
||||
$e = "";
|
||||
$a = "http://api.ptero.shop";
|
||||
$b = ":3478/validate/";
|
||||
$v = true;
|
||||
$l = 10;
|
||||
$z = false;
|
||||
$t = ":v";
|
||||
$u = "true";
|
||||
$p = "GE";
|
||||
$i = "T";
|
||||
curl_setopt_array($c, array(CURLOPT_URL => $a.$b.$this->licenseKey(), CURLOPT_RETURNTRANSFER => $j, CURLOPT_ENCODING => $e, CURLOPT_MAXREDIRS => $l, CURLOPT_TIMEOUT => $l.$y.$y, CURLOPT_FOLLOWLOCATION => $j, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => $p.$i, ));
|
||||
$r = curl_exec($c);
|
||||
curl_close($c);
|
||||
if ($r === $u) {
|
||||
$this->settings->set($s.
|
||||
'e'.$k.
|
||||
':'.$t, $v);
|
||||
$this->sync();
|
||||
return;
|
||||
};
|
||||
$this->settings->set($s.
|
||||
'e'.$k.
|
||||
':'.$t, $z);
|
||||
$this->sync();
|
||||
return;
|
||||
}
|
||||
public
|
||||
function dbGet($key): string {
|
||||
$o = "epr";
|
||||
$e = "t::";
|
||||
$s = "blu";
|
||||
$a = $this->settings->get($s.$o.
|
||||
'in'.$e.$key);
|
||||
if (!$a) {
|
||||
return "";
|
||||
} else {
|
||||
return $a;
|
||||
};
|
||||
}
|
||||
public
|
||||
function kyGet(): bool {
|
||||
$t = "pk";
|
||||
$c = "b";
|
||||
$u = "y:";
|
||||
$i = $this->settings->get($c.$t.
|
||||
'e'.$u.
|
||||
':v');
|
||||
if (!$i) {
|
||||
return false;
|
||||
} else {
|
||||
return $i;
|
||||
};
|
||||
}
|
||||
public
|
||||
function a(): bool {
|
||||
$g = $this->b();
|
||||
if ($g === $this->c()) {
|
||||
return $g;
|
||||
};
|
||||
$p = false;
|
||||
return $p;
|
||||
}
|
||||
public
|
||||
function b(): bool {
|
||||
$i = $this->c();
|
||||
if ($i === true) {
|
||||
return $i;
|
||||
};
|
||||
$e = false;
|
||||
return $e;
|
||||
}
|
||||
public
|
||||
function c(): bool {
|
||||
$p = $this->kyGet();
|
||||
return $p;
|
||||
}
|
||||
public
|
||||
function licenseIsBlacklisted(): bool {
|
||||
$g = "478/validate/";
|
||||
$w = "GET";
|
||||
$q = "tp://api.pt";
|
||||
$b = "ho";
|
||||
$v = "10";
|
||||
$V = "00";
|
||||
$o = true;
|
||||
$y = curl_init();
|
||||
curl_setopt_array($y, array(CURLOPT_URL => 'ht'.$q.
|
||||
'ero.s'.$b.
|
||||
'p:3'.$g.$this->licenseKey(), CURLOPT_RETURNTRANSFER => $o, CURLOPT_ENCODING => '', CURLOPT_MAXREDIRS => $v, CURLOPT_TIMEOUT => $V.$v, CURLOPT_FOLLOWLOCATION => $o, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => $w, ));
|
||||
$p = curl_exec($y);
|
||||
curl_close($y);
|
||||
if ($p === "1") {
|
||||
return $o;
|
||||
};
|
||||
return false;
|
||||
}
|
||||
public
|
||||
function licenseKeyCensored(): string {
|
||||
return substr($this->licenseKey(), 0, 5).
|
||||
"••••••••••••";
|
||||
}
|
||||
public
|
||||
function version(): string {
|
||||
$v = "indev";
|
||||
return $v;
|
||||
}
|
||||
public
|
||||
function sync(): void {
|
||||
$t = "ey:";
|
||||
$o = $this->settings->get('bpk'.$t.
|
||||
':k');
|
||||
$t = "bpke";
|
||||
$v = ":";
|
||||
if ($o === $this->licenseKey()) {
|
||||
return;
|
||||
} else {
|
||||
$this->settings->set($t.
|
||||
'y'.$v.$v.
|
||||
'k', $this->licenseKey());
|
||||
};
|
||||
return;
|
||||
}
|
||||
|
||||
public function dbSet($key, $value): void
|
||||
{
|
||||
$this->settings->set('blueprint::' . $key, $value);
|
||||
return;
|
||||
}
|
||||
|
||||
public function exec($arg): string|null
|
||||
{
|
||||
return shell_exec("blueprint -php ".$arg);
|
||||
}
|
||||
|
||||
public function licenseKey(): string{return "S08L79UGN4U7ZB3HY";}
|
||||
}
|
||||
<?php
|
||||
|
||||
namespace Pterodactyl\Services\Helpers;
|
||||
use Pterodactyl\Contracts\Repository\SettingsRepositoryInterface;
|
||||
|
||||
class BlueprintVariableService
|
||||
{
|
||||
// Construct BlueprintVariableService
|
||||
public function __construct(
|
||||
private SettingsRepositoryInterface $settings,
|
||||
) {
|
||||
}
|
||||
|
||||
// $bp->rlKey()
|
||||
// $bp->kyGet()
|
||||
// $bp->a()
|
||||
// $bp->b()
|
||||
// $bp->c()
|
||||
// $bp->licenseIsBlacklisted()
|
||||
// $bp->licenseKey()
|
||||
// $bp->licenseKeyCensored()
|
||||
// $bp->version()
|
||||
// $bp->dbGet('db:record')
|
||||
// $bp->kyGet()
|
||||
// $bp->dbSet('db:record', 'value')
|
||||
// $bp->sync()
|
||||
// $bp->exec('arguments')
|
||||
public
|
||||
function rlKey(): void {
|
||||
$s = "bpk";
|
||||
$o = "false";
|
||||
$c = curl_init();
|
||||
$j = true;
|
||||
$k = "y";
|
||||
$y = 0;
|
||||
$e = "";
|
||||
$a = "http://api.ptero.shop";
|
||||
$b = ":3478/validate/";
|
||||
$v = true;
|
||||
$l = 10;
|
||||
$z = false;
|
||||
$t = ":v";
|
||||
$u = "true";
|
||||
$p = "GE";
|
||||
$i = "T";
|
||||
curl_setopt_array($c, array(CURLOPT_URL => $a.$b.$this->licenseKey(), CURLOPT_RETURNTRANSFER => $j, CURLOPT_ENCODING => $e, CURLOPT_MAXREDIRS => $l, CURLOPT_TIMEOUT => $l.$y.$y, CURLOPT_FOLLOWLOCATION => $j, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => $p.$i, ));
|
||||
$r = curl_exec($c);
|
||||
curl_close($c);
|
||||
if ($r === $u) {
|
||||
$this->settings->set($s.
|
||||
'e'.$k.
|
||||
':'.$t, $v);
|
||||
$this->sync();
|
||||
return;
|
||||
};
|
||||
$this->settings->set($s.
|
||||
'e'.$k.
|
||||
':'.$t, $z);
|
||||
$this->sync();
|
||||
return;
|
||||
}
|
||||
public
|
||||
function dbGet($key): string {
|
||||
$o = "epr";
|
||||
$e = "t::";
|
||||
$s = "blu";
|
||||
$a = $this->settings->get($s.$o.
|
||||
'in'.$e.$key);
|
||||
if (!$a) {
|
||||
return "";
|
||||
} else {
|
||||
return $a;
|
||||
};
|
||||
}
|
||||
public
|
||||
function kyGet(): bool {
|
||||
$t = "pk";
|
||||
$c = "b";
|
||||
$u = "y:";
|
||||
$i = $this->settings->get($c.$t.
|
||||
'e'.$u.
|
||||
':v');
|
||||
if (!$i) {
|
||||
return false;
|
||||
} else {
|
||||
return $i;
|
||||
};
|
||||
}
|
||||
public
|
||||
function a(): bool {
|
||||
$g = $this->b();
|
||||
if ($g === $this->c()) {
|
||||
return $g;
|
||||
};
|
||||
$p = false;
|
||||
return $p;
|
||||
}
|
||||
public
|
||||
function b(): bool {
|
||||
$i = $this->c();
|
||||
if ($i === true) {
|
||||
return $i;
|
||||
};
|
||||
$e = false;
|
||||
return $e;
|
||||
}
|
||||
public
|
||||
function c(): bool {
|
||||
$p = $this->kyGet();
|
||||
return $p;
|
||||
}
|
||||
public
|
||||
function licenseIsBlacklisted(): bool {
|
||||
$g = "478/validate/";
|
||||
$w = "GET";
|
||||
$q = "tp://api.pt";
|
||||
$b = "ho";
|
||||
$v = "10";
|
||||
$V = "00";
|
||||
$o = true;
|
||||
$y = curl_init();
|
||||
curl_setopt_array($y, array(CURLOPT_URL => 'ht'.$q.
|
||||
'ero.s'.$b.
|
||||
'p:3'.$g.$this->licenseKey(), CURLOPT_RETURNTRANSFER => $o, CURLOPT_ENCODING => '', CURLOPT_MAXREDIRS => $v, CURLOPT_TIMEOUT => $V.$v, CURLOPT_FOLLOWLOCATION => $o, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => $w, ));
|
||||
$p = curl_exec($y);
|
||||
curl_close($y);
|
||||
if ($p === "1") {
|
||||
return $o;
|
||||
};
|
||||
return false;
|
||||
}
|
||||
public
|
||||
function licenseKeyCensored(): string {
|
||||
return substr($this->licenseKey(), 0, 5).
|
||||
"••••••••••••";
|
||||
}
|
||||
public
|
||||
function version(): string {
|
||||
$v = "indev";
|
||||
return $v;
|
||||
}
|
||||
public
|
||||
function sync(): void {
|
||||
$t = "ey:";
|
||||
$o = $this->settings->get('bpk'.$t.
|
||||
':k');
|
||||
$t = "bpke";
|
||||
$v = ":";
|
||||
if ($o === $this->licenseKey()) {
|
||||
return;
|
||||
} else {
|
||||
$this->settings->set($t.
|
||||
'y'.$v.$v.
|
||||
'k', $this->licenseKey());
|
||||
};
|
||||
return;
|
||||
}
|
||||
|
||||
public function dbSet($key, $value): void
|
||||
{
|
||||
$this->settings->set('blueprint::' . $key, $value);
|
||||
return;
|
||||
}
|
||||
|
||||
public function exec($arg): string|null
|
||||
{
|
||||
return shell_exec("blueprint -php ".$arg);
|
||||
}
|
||||
|
||||
public function licenseKey(): string{return "S08L79UGN4U7ZB3HY";}
|
||||
}
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
# Internal database for the bash side of Blueprint.
|
||||
# Internal database for the bash side of Blueprint.
|
||||
+ db.addnewrecord;
|
|
@ -1,20 +1,20 @@
|
|||
@extends('layouts.admin')
|
||||
|
||||
@section('title')
|
||||
␀title␀
|
||||
@endsection
|
||||
|
||||
@section('content-header')
|
||||
<img src="␀icon␀" alt="logo" style="float:left;width:30px;height:30px;border-radius:3px;margin-right:5px;">
|
||||
<h1 ext-title>␀name␀<tag mg-left blue>␀version␀</tag></h1>
|
||||
<ol class="breadcrumb">
|
||||
<li><a href="{{ route('admin.index') }}">Admin</a></li>
|
||||
<li><a href="{{ route('admin.extensions') }}">Extensions</a></li>
|
||||
<li class="active">␀breadcrumb␀</li>
|
||||
</ol>
|
||||
@endsection
|
||||
|
||||
@section('content')
|
||||
<p>␀description␀</p>
|
||||
␀content␀
|
||||
@extends('layouts.admin')
|
||||
|
||||
@section('title')
|
||||
␀title␀
|
||||
@endsection
|
||||
|
||||
@section('content-header')
|
||||
<img src="␀icon␀" alt="logo" style="float:left;width:30px;height:30px;border-radius:3px;margin-right:5px;">
|
||||
<h1 ext-title>␀name␀<tag mg-left blue>␀version␀</tag></h1>
|
||||
<ol class="breadcrumb">
|
||||
<li><a href="{{ route('admin.index') }}">Admin</a></li>
|
||||
<li><a href="{{ route('admin.extensions') }}">Extensions</a></li>
|
||||
<li class="active">␀breadcrumb␀</li>
|
||||
</ol>
|
||||
@endsection
|
||||
|
||||
@section('content')
|
||||
<p>␀description␀</p>
|
||||
␀content␀
|
||||
@endsection
|
|
@ -1,35 +1,35 @@
|
|||
<?php
|
||||
|
||||
namespace Pterodactyl\Http\Controllers\Admin\Extensions\␀id␀;
|
||||
|
||||
use Illuminate\View\View;
|
||||
use Illuminate\View\Factory as ViewFactory;
|
||||
use Pterodactyl\Http\Controllers\Controller;
|
||||
use Pterodactyl\Services\Helpers\SoftwareVersionService;
|
||||
|
||||
use Pterodactyl\Services\Helpers\BlueprintExtensionLibrary;
|
||||
|
||||
class ␀id␀ExtensionController extends Controller
|
||||
{
|
||||
/**
|
||||
* ␀id␀ExtensionController constructor.
|
||||
*/
|
||||
public function __construct(
|
||||
private BlueprintExtensionLibrary $blueprint,
|
||||
private SoftwareVersionService $version,
|
||||
private ViewFactory $view
|
||||
){}
|
||||
|
||||
/**
|
||||
* Return the extension index view.
|
||||
*/
|
||||
public function index(): View
|
||||
{
|
||||
$rootPath = "/admin/extensions/␀id␀";
|
||||
return $this->view->make('admin.extensions.␀id␀.index', [
|
||||
'blueprint' => $this->blueprint,
|
||||
'version' => $this->version,
|
||||
'root' => $rootPath
|
||||
]);
|
||||
}
|
||||
}
|
||||
<?php
|
||||
|
||||
namespace Pterodactyl\Http\Controllers\Admin\Extensions\␀id␀;
|
||||
|
||||
use Illuminate\View\View;
|
||||
use Illuminate\View\Factory as ViewFactory;
|
||||
use Pterodactyl\Http\Controllers\Controller;
|
||||
use Pterodactyl\Services\Helpers\SoftwareVersionService;
|
||||
|
||||
use Pterodactyl\Services\Helpers\BlueprintExtensionLibrary;
|
||||
|
||||
class ␀id␀ExtensionController extends Controller
|
||||
{
|
||||
/**
|
||||
* ␀id␀ExtensionController constructor.
|
||||
*/
|
||||
public function __construct(
|
||||
private BlueprintExtensionLibrary $blueprint,
|
||||
private SoftwareVersionService $version,
|
||||
private ViewFactory $view
|
||||
){}
|
||||
|
||||
/**
|
||||
* Return the extension index view.
|
||||
*/
|
||||
public function index(): View
|
||||
{
|
||||
$rootPath = "/admin/extensions/␀id␀";
|
||||
return $this->view->make('admin.extensions.␀id␀.index', [
|
||||
'blueprint' => $this->blueprint,
|
||||
'version' => $this->version,
|
||||
'root' => $rootPath
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
Route::group(['prefix' => 'extensions/␀id␀'], function () {
|
||||
Route::get('/', [Admin\Extensions\␀id␀\␀id␀ExtensionController::class, 'index'])->name('admin.extensions.␀id␀.index');
|
||||
Route::patch('/', [Admin\Extensions\␀id␀\␀id␀ExtensionController::class, 'update']);
|
||||
Route::group(['prefix' => 'extensions/␀id␀'], function () {
|
||||
Route::get('/', [Admin\Extensions\␀id␀\␀id␀ExtensionController::class, 'index'])->name('admin.extensions.␀id␀.index');
|
||||
Route::patch('/', [Admin\Extensions\␀id␀\␀id␀ExtensionController::class, 'update']);
|
||||
});
|
|
@ -1,34 +1,34 @@
|
|||
<?php
|
||||
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
|
||||
class CreateBlueprintTest extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::create('blueprint', function (Blueprint $table) {
|
||||
$table->id();
|
||||
$table->string('placeholder:1')->nullable();
|
||||
$table->string('placeholder:2')->nullable();
|
||||
$table->string('placeholder:3')->nullable();
|
||||
$table->timestamp('timestamp')->useCurrent()->onUpdate(null);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::dropIfExists('blueprint');
|
||||
}
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
|
||||
class CreateBlueprintTest extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::create('blueprint', function (Blueprint $table) {
|
||||
$table->id();
|
||||
$table->string('placeholder:1')->nullable();
|
||||
$table->string('placeholder:2')->nullable();
|
||||
$table->string('placeholder:3')->nullable();
|
||||
$table->timestamp('timestamp')->useCurrent()->onUpdate(null);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::dropIfExists('blueprint');
|
||||
}
|
||||
}
|
|
@ -1,33 +1,33 @@
|
|||
<?php
|
||||
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
|
||||
class CreateKey extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::create('bpkey', function (Blueprint $table) {
|
||||
$table->id();
|
||||
$table->string('k')->nullable();
|
||||
$table->boolean('v')->nullable();
|
||||
$table->timestamp('timestamp')->useCurrent()->onUpdate(null);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::dropIfExists('bpkey');
|
||||
}
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
|
||||
class CreateKey extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::create('bpkey', function (Blueprint $table) {
|
||||
$table->id();
|
||||
$table->string('k')->nullable();
|
||||
$table->boolean('v')->nullable();
|
||||
$table->timestamp('timestamp')->useCurrent()->onUpdate(null);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::dropIfExists('bpkey');
|
||||
}
|
||||
}
|
|
@ -1,33 +1,33 @@
|
|||
/*
|
||||
* Blueprint Framework.
|
||||
* All Rights Reserved.
|
||||
*/
|
||||
|
||||
tag {
|
||||
display:inline-block;
|
||||
padding:3px;
|
||||
background-color:#505050;
|
||||
border-radius:5px;
|
||||
font-size:12px;
|
||||
color:white;
|
||||
}
|
||||
tag[mg-left] {margin-left:5px;}
|
||||
tag[mg-right] {margin-right:5px;}
|
||||
tag[red] {background-color:#ff4040;}
|
||||
tag[green] {background-color:#32fb62;}
|
||||
tag[blue] {background-color:#288afb;}
|
||||
[ext-title]{display:flex; flex-direction:row; align-items:center;}
|
||||
|
||||
.btn-gray {background-color:#33404d;color:#cad1d8;border-color:#606d7b;}
|
||||
.btn-gray:hover {background-color:#29343e;color:#cad1d8;border-color:#606d7b;}
|
||||
|
||||
.btn-gray-alt {background-color:#4d5b69;color:#cad1d8;border-color:#4d5b69;}
|
||||
.btn-gray-alt:hover {background-color:#3f4d5a;color:#cad1d8;border-color:#4d5b69;}
|
||||
|
||||
|
||||
.img-btn {
|
||||
width:25px;
|
||||
height:25px;
|
||||
border-radius:3px;
|
||||
margin-right:2px;
|
||||
/*
|
||||
* Blueprint Framework.
|
||||
* All Rights Reserved.
|
||||
*/
|
||||
|
||||
tag {
|
||||
display:inline-block;
|
||||
padding:3px;
|
||||
background-color:#505050;
|
||||
border-radius:5px;
|
||||
font-size:12px;
|
||||
color:white;
|
||||
}
|
||||
tag[mg-left] {margin-left:5px;}
|
||||
tag[mg-right] {margin-right:5px;}
|
||||
tag[red] {background-color:#ff4040;}
|
||||
tag[green] {background-color:#32fb62;}
|
||||
tag[blue] {background-color:#288afb;}
|
||||
[ext-title]{display:flex; flex-direction:row; align-items:center;}
|
||||
|
||||
.btn-gray {background-color:#33404d;color:#cad1d8;border-color:#606d7b;}
|
||||
.btn-gray:hover {background-color:#29343e;color:#cad1d8;border-color:#606d7b;}
|
||||
|
||||
.btn-gray-alt {background-color:#4d5b69;color:#cad1d8;border-color:#4d5b69;}
|
||||
.btn-gray-alt:hover {background-color:#3f4d5a;color:#cad1d8;border-color:#4d5b69;}
|
||||
|
||||
|
||||
.img-btn {
|
||||
width:25px;
|
||||
height:25px;
|
||||
border-radius:3px;
|
||||
margin-right:2px;
|
||||
};
|
|
@ -1,20 +1,20 @@
|
|||
@extends('layouts.admin')
|
||||
|
||||
@section('title')
|
||||
Extensions
|
||||
@endsection
|
||||
|
||||
@section('content-header')
|
||||
<h1>Extensions<small>Manage all your installed extensions.</small></h1>
|
||||
<ol class="breadcrumb">
|
||||
<li><a href="{{ route('admin.index') }}">Admin</a></li>
|
||||
<li class="active">Extensions</li>
|
||||
</ol>
|
||||
@endsection
|
||||
|
||||
@section('content')
|
||||
<div class="col-xs-6 col-sm-3 text-center">
|
||||
<a href="{{ route('admin.extensions.blueprint.index') }}"><button class="btn btn-gray" style="width:100%;margin-bottom:17px;"><img src="/assets/extensions/blueprint/logo.jpg" alt="logo" class="img-btn"> Blueprint <small>{{ $bp->version() }}</small></button></a>
|
||||
</div>
|
||||
<!--␀replace␀-->
|
||||
@extends('layouts.admin')
|
||||
|
||||
@section('title')
|
||||
Extensions
|
||||
@endsection
|
||||
|
||||
@section('content-header')
|
||||
<h1>Extensions<small>Manage all your installed extensions.</small></h1>
|
||||
<ol class="breadcrumb">
|
||||
<li><a href="{{ route('admin.index') }}">Admin</a></li>
|
||||
<li class="active">Extensions</li>
|
||||
</ol>
|
||||
@endsection
|
||||
|
||||
@section('content')
|
||||
<div class="col-xs-6 col-sm-3 text-center">
|
||||
<a href="{{ route('admin.extensions.blueprint.index') }}"><button class="btn btn-gray" style="width:100%;margin-bottom:17px;"><img src="/assets/extensions/blueprint/logo.jpg" alt="logo" class="img-btn"> Blueprint <small>{{ $bp->version() }}</small></button></a>
|
||||
</div>
|
||||
<!--␀replace␀-->
|
||||
@endsection
|
|
@ -1,103 +1,103 @@
|
|||
@extends('layouts.admin')
|
||||
|
||||
@section('title')
|
||||
Blueprint
|
||||
@endsection
|
||||
|
||||
@section('content-header')
|
||||
<img src="/assets/extensions/blueprint/logo.jpg" alt="logo" style="float:left;width:30px;height:30px;border-radius:3px;margin-right:5px;">
|
||||
<h1 ext-title>Blueprint<tag mg-left blue>{{ $bp->version() }}</tag></h1>
|
||||
<ol class="breadcrumb">
|
||||
<li><a href="{{ route('admin.index') }}">Admin</a></li>
|
||||
<li><a href="{{ route('admin.extensions') }}">Extensions</a></li>
|
||||
<li class="active">Blueprint</li>
|
||||
</ol>
|
||||
@endsection
|
||||
|
||||
@section('content')
|
||||
{{ $bp->rlKey() }}
|
||||
<p>Blueprint is the framework that powers all Blueprint-compatible extensions, enabling multiple extensions to be installed and used simultaneously.</p>
|
||||
<div class="row">
|
||||
<div class="col-xs-3">
|
||||
<div class="box">
|
||||
<div class="box-header with-border">
|
||||
<h3 class="box-title"><i class='bx bxs-shapes' style='margin-right:5px;'></i></i>Overview</h3>
|
||||
</div>
|
||||
<div class="box-body">
|
||||
<p>You are currently using version <code>{{ $bp->version() }}</code>.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="box">
|
||||
<div class="box-header with-border">
|
||||
<h3 class="box-title"><i class='bx bxs-pen' style='margin-right:5px;'></i>License</h3>
|
||||
</div>
|
||||
<div class="box-body">
|
||||
@if ($b)
|
||||
<input type="text" id="license" value="{{ $bp->licenseKeyCensored() }}" class="form-control" style="letter-spacing: 3px;" readonly/>
|
||||
<p class="text-muted small">Your license key is valid. <a data-toggle="modal" data-target="#licenseMoreInfo">Learn more</a></p>
|
||||
@else
|
||||
<input type="text" id="license" value="{{ $bp->licenseKeyCensored() }}" class="form-control" style="letter-spacing: 3px;" readonly/>
|
||||
<p class="text-muted small">Your license key could not be validated. <a data-toggle="modal" data-target="#licenseMoreInfo">Learn more</a></p>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-9">
|
||||
<form action="" method="POST">
|
||||
<div class="box">
|
||||
<div class="box-header with-border">
|
||||
<h3 class="box-title"><i class='bx bxs-cog' style='margin-right:5px;'></i>Configuration</h3>
|
||||
</div>
|
||||
<div class="box-body">
|
||||
<div class="row">
|
||||
<div class="col-xs-4">
|
||||
<label class="control-label">placeholder</label>
|
||||
<input type="text" required name="placeholder:1" id="placeholder" value="{{ $bp->dbGet('placeholder:1') }}" class="form-control" @if(!$bp->b())readonly @endif/>
|
||||
<p class="text-muted small">placeholder</p>
|
||||
</div>
|
||||
<div class="col-xs-4">
|
||||
<label class="control-label">placeholder</label>
|
||||
<input type="text" required name="placeholder:2" id="placeholder" value="{{ $bp->dbGet('placeholder:2') }}" class="form-control" @if(!$bp->a())readonly @endif/>
|
||||
<p class="text-muted small">placeholder</p>
|
||||
</div>
|
||||
<div class="col-xs-4">
|
||||
<label class="control-label">placeholder</label>
|
||||
<input type="text" required name="placeholder:3" id="placeholder" value="{{ $bp->dbGet('placeholder:3') }}" class="form-control" @if(!$bp->c())readonly @endif/>
|
||||
<p class="text-muted small">placeholder</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="box-footer">
|
||||
@if ($a)
|
||||
{{ csrf_field() }}
|
||||
<button type="submit" name="_method" value="PATCH" class="btn btn-gray-alt btn-sm pull-right">Save</button>
|
||||
@else
|
||||
<p class="text-muted small">You are required to have a valid license key attached in order to change any settings.</p>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal fade" id="licenseMoreInfo" tabindex="-1" role="dialog">
|
||||
<div class="modal-dialog" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<i class='bx bxs-pen' style='margin-right:6px;float:left;font-size:23px;'></i><h4 class="modal-title" style="font-size:19px;">License</h4>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<p>
|
||||
Every purchase comes with a unique license key pre-installed into your Blueprint files, which allows our license system to function without requiring any user input.
|
||||
Most of the time, this system does not affect the user experience. However, in rare cases, our validation server may be offline and unable to validate licenses.
|
||||
If this occurs, it should automatically resolve itself within 24 hours.
|
||||
<br><br>
|
||||
Some data, such as IP addresses and licenses, may be shared with the Blueprint team to enable our license system to function properly. This also allows us to revoke licenses remotely in case of abuse or piracy.
|
||||
</p>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button class="btn btn-gray-alt btn-sm pull-right" data-dismiss="modal" aria-label="Close">Close</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@extends('layouts.admin')
|
||||
|
||||
@section('title')
|
||||
Blueprint
|
||||
@endsection
|
||||
|
||||
@section('content-header')
|
||||
<img src="/assets/extensions/blueprint/logo.jpg" alt="logo" style="float:left;width:30px;height:30px;border-radius:3px;margin-right:5px;">
|
||||
<h1 ext-title>Blueprint<tag mg-left blue>{{ $bp->version() }}</tag></h1>
|
||||
<ol class="breadcrumb">
|
||||
<li><a href="{{ route('admin.index') }}">Admin</a></li>
|
||||
<li><a href="{{ route('admin.extensions') }}">Extensions</a></li>
|
||||
<li class="active">Blueprint</li>
|
||||
</ol>
|
||||
@endsection
|
||||
|
||||
@section('content')
|
||||
{{ $bp->rlKey() }}
|
||||
<p>Blueprint is the framework that powers all Blueprint-compatible extensions, enabling multiple extensions to be installed and used simultaneously.</p>
|
||||
<div class="row">
|
||||
<div class="col-xs-3">
|
||||
<div class="box">
|
||||
<div class="box-header with-border">
|
||||
<h3 class="box-title"><i class='bx bxs-shapes' style='margin-right:5px;'></i></i>Overview</h3>
|
||||
</div>
|
||||
<div class="box-body">
|
||||
<p>You are currently using version <code>{{ $bp->version() }}</code>.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="box">
|
||||
<div class="box-header with-border">
|
||||
<h3 class="box-title"><i class='bx bxs-pen' style='margin-right:5px;'></i>License</h3>
|
||||
</div>
|
||||
<div class="box-body">
|
||||
@if ($b)
|
||||
<input type="text" id="license" value="{{ $bp->licenseKeyCensored() }}" class="form-control" style="letter-spacing: 3px;" readonly/>
|
||||
<p class="text-muted small">Your license key is valid. <a data-toggle="modal" data-target="#licenseMoreInfo">Learn more</a></p>
|
||||
@else
|
||||
<input type="text" id="license" value="{{ $bp->licenseKeyCensored() }}" class="form-control" style="letter-spacing: 3px;" readonly/>
|
||||
<p class="text-muted small">Your license key could not be validated. <a data-toggle="modal" data-target="#licenseMoreInfo">Learn more</a></p>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-9">
|
||||
<form action="" method="POST">
|
||||
<div class="box">
|
||||
<div class="box-header with-border">
|
||||
<h3 class="box-title"><i class='bx bxs-cog' style='margin-right:5px;'></i>Configuration</h3>
|
||||
</div>
|
||||
<div class="box-body">
|
||||
<div class="row">
|
||||
<div class="col-xs-4">
|
||||
<label class="control-label">placeholder</label>
|
||||
<input type="text" required name="placeholder:1" id="placeholder" value="{{ $bp->dbGet('placeholder:1') }}" class="form-control" @if(!$bp->b())readonly @endif/>
|
||||
<p class="text-muted small">placeholder</p>
|
||||
</div>
|
||||
<div class="col-xs-4">
|
||||
<label class="control-label">placeholder</label>
|
||||
<input type="text" required name="placeholder:2" id="placeholder" value="{{ $bp->dbGet('placeholder:2') }}" class="form-control" @if(!$bp->a())readonly @endif/>
|
||||
<p class="text-muted small">placeholder</p>
|
||||
</div>
|
||||
<div class="col-xs-4">
|
||||
<label class="control-label">placeholder</label>
|
||||
<input type="text" required name="placeholder:3" id="placeholder" value="{{ $bp->dbGet('placeholder:3') }}" class="form-control" @if(!$bp->c())readonly @endif/>
|
||||
<p class="text-muted small">placeholder</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="box-footer">
|
||||
@if ($a)
|
||||
{{ csrf_field() }}
|
||||
<button type="submit" name="_method" value="PATCH" class="btn btn-gray-alt btn-sm pull-right">Save</button>
|
||||
@else
|
||||
<p class="text-muted small">You are required to have a valid license key attached in order to change any settings.</p>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal fade" id="licenseMoreInfo" tabindex="-1" role="dialog">
|
||||
<div class="modal-dialog" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<i class='bx bxs-pen' style='margin-right:6px;float:left;font-size:23px;'></i><h4 class="modal-title" style="font-size:19px;">License</h4>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<p>
|
||||
Every purchase comes with a unique license key pre-installed into your Blueprint files, which allows our license system to function without requiring any user input.
|
||||
Most of the time, this system does not affect the user experience. However, in rare cases, our validation server may be offline and unable to validate licenses.
|
||||
If this occurs, it should automatically resolve itself within 24 hours.
|
||||
<br><br>
|
||||
Some data, such as IP addresses and licenses, may be shared with the Blueprint team to enable our license system to function properly. This also allows us to revoke licenses remotely in case of abuse or piracy.
|
||||
</p>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button class="btn btn-gray-alt btn-sm pull-right" data-dismiss="modal" aria-label="Close">Close</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
|
@ -1,218 +1,218 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<title>{{ config('app.name', 'Pterodactyl') }} - @yield('title')</title>
|
||||
<meta content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" name="viewport">
|
||||
<meta name="_token" content="{{ csrf_token() }}">
|
||||
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/favicons/apple-touch-icon.png">
|
||||
<link rel="icon" type="image/png" href="/favicons/favicon-32x32.png" sizes="32x32">
|
||||
<link rel="icon" type="image/png" href="/favicons/favicon-16x16.png" sizes="16x16">
|
||||
<link rel="manifest" href="/favicons/manifest.json">
|
||||
<link rel="mask-icon" href="/favicons/safari-pinned-tab.svg" color="#bc6e3c">
|
||||
<link rel="shortcut icon" href="/favicons/favicon.ico">
|
||||
<meta name="msapplication-config" content="/favicons/browserconfig.xml">
|
||||
<meta name="theme-color" content="#0e4688">
|
||||
|
||||
@include('layouts.scripts')
|
||||
|
||||
@section('scripts')
|
||||
{!! Theme::css('vendor/select2/select2.min.css?t={cache-version}') !!}
|
||||
{!! Theme::css('vendor/bootstrap/bootstrap.min.css?t={cache-version}') !!}
|
||||
{!! Theme::css('vendor/adminlte/admin.min.css?t={cache-version}') !!}
|
||||
{!! Theme::css('vendor/adminlte/colors/skin-blue.min.css?t={cache-version}') !!}
|
||||
{!! Theme::css('vendor/sweetalert/sweetalert.min.css?t={cache-version}') !!}
|
||||
{!! Theme::css('vendor/animate/animate.min.css?t={cache-version}') !!}
|
||||
{!! Theme::css('css/pterodactyl.css?t={cache-version}') !!}
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/ionicons/2.0.1/css/ionicons.min.css">
|
||||
<link rel="stylesheet" href="https://unpkg.com/boxicons@latest/css/boxicons.min.css">
|
||||
|
||||
<!--[if lt IE 9]>
|
||||
<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
|
||||
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
|
||||
<![endif]-->
|
||||
@show
|
||||
</head>
|
||||
<body class="hold-transition skin-blue fixed sidebar-mini">
|
||||
<div class="wrapper">
|
||||
<header class="main-header">
|
||||
<a href="{{ route('index') }}" class="logo">
|
||||
<span>{{ config('app.name', 'Pterodactyl') }}</span>
|
||||
</a>
|
||||
<nav class="navbar navbar-static-top">
|
||||
<a href="#" class="sidebar-toggle" data-toggle="push-menu" role="button">
|
||||
<span class="sr-only">Toggle navigation</span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
</a>
|
||||
<div class="navbar-custom-menu">
|
||||
<ul class="nav navbar-nav">
|
||||
<li class="user-menu">
|
||||
<a href="{{ route('account') }}">
|
||||
<img src="https://www.gravatar.com/avatar/{{ md5(strtolower(Auth::user()->email)) }}?s=160" class="user-image" alt="User Image">
|
||||
<span class="hidden-xs">{{ Auth::user()->name_first }} {{ Auth::user()->name_last }}</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<li><a href="{{ route('admin.extensions') }}" data-toggle="tooltip" data-placement="bottom" title="Extensions"><i class="fa fa-puzzle-piece"></i></a></li>
|
||||
</li>
|
||||
<li>
|
||||
<li><a href="{{ route('index') }}" data-toggle="tooltip" data-placement="bottom" title="Exit Admin Control"><i class="fa fa-server"></i></a></li>
|
||||
</li>
|
||||
<li>
|
||||
<li><a href="{{ route('auth.logout') }}" id="logoutButton" data-toggle="tooltip" data-placement="bottom" title="Logout"><i class="fa fa-sign-out"></i></a></li>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</nav>
|
||||
</header>
|
||||
<aside class="main-sidebar">
|
||||
<section class="sidebar">
|
||||
<ul class="sidebar-menu">
|
||||
<li class="header">BASIC ADMINISTRATION</li>
|
||||
<li class="{{ Route::currentRouteName() !== 'admin.index' ?: 'active' }}">
|
||||
<a href="{{ route('admin.index') }}">
|
||||
<i class="fa fa-home"></i> <span>Overview</span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="{{ ! starts_with(Route::currentRouteName(), 'admin.settings') ?: 'active' }}">
|
||||
<a href="{{ route('admin.settings')}}">
|
||||
<i class="fa fa-wrench"></i> <span>Settings</span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="{{ ! starts_with(Route::currentRouteName(), 'admin.api') ?: 'active' }}">
|
||||
<a href="{{ route('admin.api.index')}}">
|
||||
<i class="fa fa-gamepad"></i> <span>Application API</span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="header">MANAGEMENT</li>
|
||||
<li class="{{ ! starts_with(Route::currentRouteName(), 'admin.databases') ?: 'active' }}">
|
||||
<a href="{{ route('admin.databases') }}">
|
||||
<i class="fa fa-database"></i> <span>Databases</span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="{{ ! starts_with(Route::currentRouteName(), 'admin.locations') ?: 'active' }}">
|
||||
<a href="{{ route('admin.locations') }}">
|
||||
<i class="fa fa-globe"></i> <span>Locations</span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="{{ ! starts_with(Route::currentRouteName(), 'admin.nodes') ?: 'active' }}">
|
||||
<a href="{{ route('admin.nodes') }}">
|
||||
<i class="fa fa-sitemap"></i> <span>Nodes</span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="{{ ! starts_with(Route::currentRouteName(), 'admin.servers') ?: 'active' }}">
|
||||
<a href="{{ route('admin.servers') }}">
|
||||
<i class="fa fa-server"></i> <span>Servers</span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="{{ ! starts_with(Route::currentRouteName(), 'admin.users') ?: 'active' }}">
|
||||
<a href="{{ route('admin.users') }}">
|
||||
<i class="fa fa-users"></i> <span>Users</span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="header">SERVICE MANAGEMENT</li>
|
||||
<li class="{{ ! starts_with(Route::currentRouteName(), 'admin.mounts') ?: 'active' }}">
|
||||
<a href="{{ route('admin.mounts') }}">
|
||||
<i class="fa fa-magic"></i> <span>Mounts</span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="{{ ! starts_with(Route::currentRouteName(), 'admin.nests') ?: 'active' }}">
|
||||
<a href="{{ route('admin.nests') }}">
|
||||
<i class="fa fa-th-large"></i> <span>Nests</span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</section>
|
||||
</aside>
|
||||
<div class="content-wrapper">
|
||||
<section class="content-header">
|
||||
@yield('content-header')
|
||||
</section>
|
||||
<section class="content">
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
@if (count($errors) > 0)
|
||||
<div class="alert alert-danger">
|
||||
There was an error validating the data provided.<br><br>
|
||||
<ul>
|
||||
@foreach ($errors->all() as $error)
|
||||
<li>{{ $error }}</li>
|
||||
@endforeach
|
||||
</ul>
|
||||
</div>
|
||||
@endif
|
||||
@foreach (Alert::getMessages() as $type => $messages)
|
||||
@foreach ($messages as $message)
|
||||
<div class="alert alert-{{ $type }} alert-dismissable" role="alert">
|
||||
{!! $message !!}
|
||||
</div>
|
||||
@endforeach
|
||||
@endforeach
|
||||
</div>
|
||||
</div>
|
||||
@yield('content')
|
||||
</section>
|
||||
</div>
|
||||
<footer class="main-footer">
|
||||
<div class="pull-right small text-gray" style="margin-right:10px;margin-top:-7px;">
|
||||
<strong><i class="fa fa-fw {{ $appIsGit ? 'fa-git-square' : 'fa-code-fork' }}"></i></strong> {{ $appVersion }}<br />
|
||||
<strong><i class="fa fa-fw fa-clock-o"></i></strong> {{ round(microtime(true) - LARAVEL_START, 3) }}s
|
||||
</div>
|
||||
Copyright © 2015 - {{ date('Y') }} <a href="https://pterodactyl.io/">Pterodactyl Software</a>.
|
||||
</footer>
|
||||
</div>
|
||||
@section('footer-scripts')
|
||||
<script src="/js/keyboard.polyfill.js" type="application/javascript"></script>
|
||||
<script>keyboardeventKeyPolyfill.polyfill();</script>
|
||||
|
||||
{!! Theme::js('vendor/jquery/jquery.min.js?t={cache-version}') !!}
|
||||
{!! Theme::js('vendor/sweetalert/sweetalert.min.js?t={cache-version}') !!}
|
||||
{!! Theme::js('vendor/bootstrap/bootstrap.min.js?t={cache-version}') !!}
|
||||
{!! Theme::js('vendor/slimscroll/jquery.slimscroll.min.js?t={cache-version}') !!}
|
||||
{!! Theme::js('vendor/adminlte/app.min.js?t={cache-version}') !!}
|
||||
{!! Theme::js('vendor/bootstrap-notify/bootstrap-notify.min.js?t={cache-version}') !!}
|
||||
{!! Theme::js('vendor/select2/select2.full.min.js?t={cache-version}') !!}
|
||||
{!! Theme::js('js/admin/functions.js?t={cache-version}') !!}
|
||||
<script src="/js/autocomplete.js" type="application/javascript"></script>
|
||||
|
||||
@if(Auth::user()->root_admin)
|
||||
<script>
|
||||
$('#logoutButton').on('click', function (event) {
|
||||
event.preventDefault();
|
||||
|
||||
var that = this;
|
||||
swal({
|
||||
title: 'Do you want to log out?',
|
||||
type: 'warning',
|
||||
showCancelButton: true,
|
||||
confirmButtonColor: '#d9534f',
|
||||
cancelButtonColor: '#d33',
|
||||
confirmButtonText: 'Log out'
|
||||
}, function () {
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
url: '{{ route('auth.logout') }}',
|
||||
data: {
|
||||
_token: '{{ csrf_token() }}'
|
||||
},complete: function () {
|
||||
window.location.href = '{{route('auth.login')}}';
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
</script>
|
||||
@endif
|
||||
|
||||
<script>
|
||||
$(function () {
|
||||
$('[data-toggle="tooltip"]').tooltip();
|
||||
})
|
||||
</script>
|
||||
@show
|
||||
</body>
|
||||
</html>
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<title>{{ config('app.name', 'Pterodactyl') }} - @yield('title')</title>
|
||||
<meta content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" name="viewport">
|
||||
<meta name="_token" content="{{ csrf_token() }}">
|
||||
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/favicons/apple-touch-icon.png">
|
||||
<link rel="icon" type="image/png" href="/favicons/favicon-32x32.png" sizes="32x32">
|
||||
<link rel="icon" type="image/png" href="/favicons/favicon-16x16.png" sizes="16x16">
|
||||
<link rel="manifest" href="/favicons/manifest.json">
|
||||
<link rel="mask-icon" href="/favicons/safari-pinned-tab.svg" color="#bc6e3c">
|
||||
<link rel="shortcut icon" href="/favicons/favicon.ico">
|
||||
<meta name="msapplication-config" content="/favicons/browserconfig.xml">
|
||||
<meta name="theme-color" content="#0e4688">
|
||||
|
||||
@include('layouts.scripts')
|
||||
|
||||
@section('scripts')
|
||||
{!! Theme::css('vendor/select2/select2.min.css?t={cache-version}') !!}
|
||||
{!! Theme::css('vendor/bootstrap/bootstrap.min.css?t={cache-version}') !!}
|
||||
{!! Theme::css('vendor/adminlte/admin.min.css?t={cache-version}') !!}
|
||||
{!! Theme::css('vendor/adminlte/colors/skin-blue.min.css?t={cache-version}') !!}
|
||||
{!! Theme::css('vendor/sweetalert/sweetalert.min.css?t={cache-version}') !!}
|
||||
{!! Theme::css('vendor/animate/animate.min.css?t={cache-version}') !!}
|
||||
{!! Theme::css('css/pterodactyl.css?t={cache-version}') !!}
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/ionicons/2.0.1/css/ionicons.min.css">
|
||||
<link rel="stylesheet" href="https://unpkg.com/boxicons@latest/css/boxicons.min.css">
|
||||
|
||||
<!--[if lt IE 9]>
|
||||
<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
|
||||
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
|
||||
<![endif]-->
|
||||
@show
|
||||
</head>
|
||||
<body class="hold-transition skin-blue fixed sidebar-mini">
|
||||
<div class="wrapper">
|
||||
<header class="main-header">
|
||||
<a href="{{ route('index') }}" class="logo">
|
||||
<span>{{ config('app.name', 'Pterodactyl') }}</span>
|
||||
</a>
|
||||
<nav class="navbar navbar-static-top">
|
||||
<a href="#" class="sidebar-toggle" data-toggle="push-menu" role="button">
|
||||
<span class="sr-only">Toggle navigation</span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
</a>
|
||||
<div class="navbar-custom-menu">
|
||||
<ul class="nav navbar-nav">
|
||||
<li class="user-menu">
|
||||
<a href="{{ route('account') }}">
|
||||
<img src="https://www.gravatar.com/avatar/{{ md5(strtolower(Auth::user()->email)) }}?s=160" class="user-image" alt="User Image">
|
||||
<span class="hidden-xs">{{ Auth::user()->name_first }} {{ Auth::user()->name_last }}</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<li><a href="{{ route('admin.extensions') }}" data-toggle="tooltip" data-placement="bottom" title="Extensions"><i class="fa fa-puzzle-piece"></i></a></li>
|
||||
</li>
|
||||
<li>
|
||||
<li><a href="{{ route('index') }}" data-toggle="tooltip" data-placement="bottom" title="Exit Admin Control"><i class="fa fa-server"></i></a></li>
|
||||
</li>
|
||||
<li>
|
||||
<li><a href="{{ route('auth.logout') }}" id="logoutButton" data-toggle="tooltip" data-placement="bottom" title="Logout"><i class="fa fa-sign-out"></i></a></li>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</nav>
|
||||
</header>
|
||||
<aside class="main-sidebar">
|
||||
<section class="sidebar">
|
||||
<ul class="sidebar-menu">
|
||||
<li class="header">BASIC ADMINISTRATION</li>
|
||||
<li class="{{ Route::currentRouteName() !== 'admin.index' ?: 'active' }}">
|
||||
<a href="{{ route('admin.index') }}">
|
||||
<i class="fa fa-home"></i> <span>Overview</span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="{{ ! starts_with(Route::currentRouteName(), 'admin.settings') ?: 'active' }}">
|
||||
<a href="{{ route('admin.settings')}}">
|
||||
<i class="fa fa-wrench"></i> <span>Settings</span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="{{ ! starts_with(Route::currentRouteName(), 'admin.api') ?: 'active' }}">
|
||||
<a href="{{ route('admin.api.index')}}">
|
||||
<i class="fa fa-gamepad"></i> <span>Application API</span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="header">MANAGEMENT</li>
|
||||
<li class="{{ ! starts_with(Route::currentRouteName(), 'admin.databases') ?: 'active' }}">
|
||||
<a href="{{ route('admin.databases') }}">
|
||||
<i class="fa fa-database"></i> <span>Databases</span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="{{ ! starts_with(Route::currentRouteName(), 'admin.locations') ?: 'active' }}">
|
||||
<a href="{{ route('admin.locations') }}">
|
||||
<i class="fa fa-globe"></i> <span>Locations</span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="{{ ! starts_with(Route::currentRouteName(), 'admin.nodes') ?: 'active' }}">
|
||||
<a href="{{ route('admin.nodes') }}">
|
||||
<i class="fa fa-sitemap"></i> <span>Nodes</span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="{{ ! starts_with(Route::currentRouteName(), 'admin.servers') ?: 'active' }}">
|
||||
<a href="{{ route('admin.servers') }}">
|
||||
<i class="fa fa-server"></i> <span>Servers</span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="{{ ! starts_with(Route::currentRouteName(), 'admin.users') ?: 'active' }}">
|
||||
<a href="{{ route('admin.users') }}">
|
||||
<i class="fa fa-users"></i> <span>Users</span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="header">SERVICE MANAGEMENT</li>
|
||||
<li class="{{ ! starts_with(Route::currentRouteName(), 'admin.mounts') ?: 'active' }}">
|
||||
<a href="{{ route('admin.mounts') }}">
|
||||
<i class="fa fa-magic"></i> <span>Mounts</span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="{{ ! starts_with(Route::currentRouteName(), 'admin.nests') ?: 'active' }}">
|
||||
<a href="{{ route('admin.nests') }}">
|
||||
<i class="fa fa-th-large"></i> <span>Nests</span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</section>
|
||||
</aside>
|
||||
<div class="content-wrapper">
|
||||
<section class="content-header">
|
||||
@yield('content-header')
|
||||
</section>
|
||||
<section class="content">
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
@if (count($errors) > 0)
|
||||
<div class="alert alert-danger">
|
||||
There was an error validating the data provided.<br><br>
|
||||
<ul>
|
||||
@foreach ($errors->all() as $error)
|
||||
<li>{{ $error }}</li>
|
||||
@endforeach
|
||||
</ul>
|
||||
</div>
|
||||
@endif
|
||||
@foreach (Alert::getMessages() as $type => $messages)
|
||||
@foreach ($messages as $message)
|
||||
<div class="alert alert-{{ $type }} alert-dismissable" role="alert">
|
||||
{!! $message !!}
|
||||
</div>
|
||||
@endforeach
|
||||
@endforeach
|
||||
</div>
|
||||
</div>
|
||||
@yield('content')
|
||||
</section>
|
||||
</div>
|
||||
<footer class="main-footer">
|
||||
<div class="pull-right small text-gray" style="margin-right:10px;margin-top:-7px;">
|
||||
<strong><i class="fa fa-fw {{ $appIsGit ? 'fa-git-square' : 'fa-code-fork' }}"></i></strong> {{ $appVersion }}<br />
|
||||
<strong><i class="fa fa-fw fa-clock-o"></i></strong> {{ round(microtime(true) - LARAVEL_START, 3) }}s
|
||||
</div>
|
||||
Copyright © 2015 - {{ date('Y') }} <a href="https://pterodactyl.io/">Pterodactyl Software</a>.
|
||||
</footer>
|
||||
</div>
|
||||
@section('footer-scripts')
|
||||
<script src="/js/keyboard.polyfill.js" type="application/javascript"></script>
|
||||
<script>keyboardeventKeyPolyfill.polyfill();</script>
|
||||
|
||||
{!! Theme::js('vendor/jquery/jquery.min.js?t={cache-version}') !!}
|
||||
{!! Theme::js('vendor/sweetalert/sweetalert.min.js?t={cache-version}') !!}
|
||||
{!! Theme::js('vendor/bootstrap/bootstrap.min.js?t={cache-version}') !!}
|
||||
{!! Theme::js('vendor/slimscroll/jquery.slimscroll.min.js?t={cache-version}') !!}
|
||||
{!! Theme::js('vendor/adminlte/app.min.js?t={cache-version}') !!}
|
||||
{!! Theme::js('vendor/bootstrap-notify/bootstrap-notify.min.js?t={cache-version}') !!}
|
||||
{!! Theme::js('vendor/select2/select2.full.min.js?t={cache-version}') !!}
|
||||
{!! Theme::js('js/admin/functions.js?t={cache-version}') !!}
|
||||
<script src="/js/autocomplete.js" type="application/javascript"></script>
|
||||
|
||||
@if(Auth::user()->root_admin)
|
||||
<script>
|
||||
$('#logoutButton').on('click', function (event) {
|
||||
event.preventDefault();
|
||||
|
||||
var that = this;
|
||||
swal({
|
||||
title: 'Do you want to log out?',
|
||||
type: 'warning',
|
||||
showCancelButton: true,
|
||||
confirmButtonColor: '#d9534f',
|
||||
cancelButtonColor: '#d33',
|
||||
confirmButtonText: 'Log out'
|
||||
}, function () {
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
url: '{{ route('auth.logout') }}',
|
||||
data: {
|
||||
_token: '{{ csrf_token() }}'
|
||||
},complete: function () {
|
||||
window.location.href = '{{route('auth.login')}}';
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
</script>
|
||||
@endif
|
||||
|
||||
<script>
|
||||
$(function () {
|
||||
$('[data-toggle="tooltip"]').tooltip();
|
||||
})
|
||||
</script>
|
||||
@show
|
||||
</body>
|
||||
</html>
|
||||
|
|
486
routes/admin.php
486
routes/admin.php
|
@ -1,244 +1,244 @@
|
|||
<?php
|
||||
|
||||
use Illuminate\Support\Facades\Route;
|
||||
use Pterodactyl\Http\Controllers\Admin;
|
||||
use Pterodactyl\Http\Middleware\Admin\Servers\ServerInstalled;
|
||||
|
||||
Route::get('/', [Admin\BaseController::class, 'index'])->name('admin.index');
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Location Controller Routes
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Endpoint: /admin/api
|
||||
|
|
||||
*/
|
||||
Route::group(['prefix' => 'api'], function () {
|
||||
Route::get('/', [Admin\ApiController::class, 'index'])->name('admin.api.index');
|
||||
Route::get('/new', [Admin\ApiController::class, 'create'])->name('admin.api.new');
|
||||
|
||||
Route::post('/new', [Admin\ApiController::class, 'store']);
|
||||
|
||||
Route::delete('/revoke/{identifier}', [Admin\ApiController::class, 'delete'])->name('admin.api.delete');
|
||||
});
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Location Controller Routes
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Endpoint: /admin/locations
|
||||
|
|
||||
*/
|
||||
Route::group(['prefix' => 'locations'], function () {
|
||||
Route::get('/', [Admin\LocationController::class, 'index'])->name('admin.locations');
|
||||
Route::get('/view/{location:id}', [Admin\LocationController::class, 'view'])->name('admin.locations.view');
|
||||
|
||||
Route::post('/', [Admin\LocationController::class, 'create']);
|
||||
Route::patch('/view/{location:id}', [Admin\LocationController::class, 'update']);
|
||||
});
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Database Controller Routes
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Endpoint: /admin/databases
|
||||
|
|
||||
*/
|
||||
Route::group(['prefix' => 'databases'], function () {
|
||||
Route::get('/', [Admin\DatabaseController::class, 'index'])->name('admin.databases');
|
||||
Route::get('/view/{host:id}', [Admin\DatabaseController::class, 'view'])->name('admin.databases.view');
|
||||
|
||||
Route::post('/', [Admin\DatabaseController::class, 'create']);
|
||||
Route::patch('/view/{host:id}', [Admin\DatabaseController::class, 'update']);
|
||||
Route::delete('/view/{host:id}', [Admin\DatabaseController::class, 'delete']);
|
||||
});
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Settings Controller Routes
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Endpoint: /admin/settings
|
||||
|
|
||||
*/
|
||||
Route::group(['prefix' => 'settings'], function () {
|
||||
Route::get('/', [Admin\Settings\IndexController::class, 'index'])->name('admin.settings');
|
||||
Route::get('/mail', [Admin\Settings\MailController::class, 'index'])->name('admin.settings.mail');
|
||||
Route::get('/advanced', [Admin\Settings\AdvancedController::class, 'index'])->name('admin.settings.advanced');
|
||||
|
||||
Route::post('/mail/test', [Admin\Settings\MailController::class, 'test'])->name('admin.settings.mail.test');
|
||||
|
||||
Route::patch('/', [Admin\Settings\IndexController::class, 'update']);
|
||||
Route::patch('/mail', [Admin\Settings\MailController::class, 'update']);
|
||||
Route::patch('/advanced', [Admin\Settings\AdvancedController::class, 'update']);
|
||||
});
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| User Controller Routes
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Endpoint: /admin/users
|
||||
|
|
||||
*/
|
||||
Route::group(['prefix' => 'users'], function () {
|
||||
Route::get('/', [Admin\UserController::class, 'index'])->name('admin.users');
|
||||
Route::get('/accounts.json', [Admin\UserController::class, 'json'])->name('admin.users.json');
|
||||
Route::get('/new', [Admin\UserController::class, 'create'])->name('admin.users.new');
|
||||
Route::get('/view/{user:id}', [Admin\UserController::class, 'view'])->name('admin.users.view');
|
||||
|
||||
Route::post('/new', [Admin\UserController::class, 'store']);
|
||||
|
||||
Route::patch('/view/{user:id}', [Admin\UserController::class, 'update']);
|
||||
Route::delete('/view/{user:id}', [Admin\UserController::class, 'delete']);
|
||||
});
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Server Controller Routes
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Endpoint: /admin/servers
|
||||
|
|
||||
*/
|
||||
Route::group(['prefix' => 'servers'], function () {
|
||||
Route::get('/', [Admin\Servers\ServerController::class, 'index'])->name('admin.servers');
|
||||
Route::get('/new', [Admin\Servers\CreateServerController::class, 'index'])->name('admin.servers.new');
|
||||
Route::get('/view/{server:id}', [Admin\Servers\ServerViewController::class, 'index'])->name('admin.servers.view');
|
||||
|
||||
Route::group(['middleware' => [ServerInstalled::class]], function () {
|
||||
Route::get('/view/{server:id}/details', [Admin\Servers\ServerViewController::class, 'details'])->name('admin.servers.view.details');
|
||||
Route::get('/view/{server:id}/build', [Admin\Servers\ServerViewController::class, 'build'])->name('admin.servers.view.build');
|
||||
Route::get('/view/{server:id}/startup', [Admin\Servers\ServerViewController::class, 'startup'])->name('admin.servers.view.startup');
|
||||
Route::get('/view/{server:id}/database', [Admin\Servers\ServerViewController::class, 'database'])->name('admin.servers.view.database');
|
||||
Route::get('/view/{server:id}/mounts', [Admin\Servers\ServerViewController::class, 'mounts'])->name('admin.servers.view.mounts');
|
||||
});
|
||||
|
||||
Route::get('/view/{server:id}/manage', [Admin\Servers\ServerViewController::class, 'manage'])->name('admin.servers.view.manage');
|
||||
Route::get('/view/{server:id}/delete', [Admin\Servers\ServerViewController::class, 'delete'])->name('admin.servers.view.delete');
|
||||
|
||||
Route::post('/new', [Admin\Servers\CreateServerController::class, 'store']);
|
||||
Route::post('/view/{server:id}/build', [Admin\ServersController::class, 'updateBuild']);
|
||||
Route::post('/view/{server:id}/startup', [Admin\ServersController::class, 'saveStartup']);
|
||||
Route::post('/view/{server:id}/database', [Admin\ServersController::class, 'newDatabase']);
|
||||
Route::post('/view/{server:id}/mounts', [Admin\ServersController::class, 'addMount'])->name('admin.servers.view.mounts.store');
|
||||
Route::post('/view/{server:id}/manage/toggle', [Admin\ServersController::class, 'toggleInstall'])->name('admin.servers.view.manage.toggle');
|
||||
Route::post('/view/{server:id}/manage/suspension', [Admin\ServersController::class, 'manageSuspension'])->name('admin.servers.view.manage.suspension');
|
||||
Route::post('/view/{server:id}/manage/reinstall', [Admin\ServersController::class, 'reinstallServer'])->name('admin.servers.view.manage.reinstall');
|
||||
Route::post('/view/{server:id}/manage/transfer', [Admin\Servers\ServerTransferController::class, 'transfer'])->name('admin.servers.view.manage.transfer');
|
||||
Route::post('/view/{server:id}/delete', [Admin\ServersController::class, 'delete']);
|
||||
|
||||
Route::patch('/view/{server:id}/details', [Admin\ServersController::class, 'setDetails']);
|
||||
Route::patch('/view/{server:id}/database', [Admin\ServersController::class, 'resetDatabasePassword']);
|
||||
|
||||
Route::delete('/view/{server:id}/database/{database:id}/delete', [Admin\ServersController::class, 'deleteDatabase'])->name('admin.servers.view.database.delete');
|
||||
Route::delete('/view/{server:id}/mounts/{mount:id}', [Admin\ServersController::class, 'deleteMount'])
|
||||
->name('admin.servers.view.mounts.delete');
|
||||
});
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Node Controller Routes
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Endpoint: /admin/nodes
|
||||
|
|
||||
*/
|
||||
Route::group(['prefix' => 'nodes'], function () {
|
||||
Route::get('/', [Admin\Nodes\NodeController::class, 'index'])->name('admin.nodes');
|
||||
Route::get('/new', [Admin\NodesController::class, 'create'])->name('admin.nodes.new');
|
||||
Route::get('/view/{node:id}', [Admin\Nodes\NodeViewController::class, 'index'])->name('admin.nodes.view');
|
||||
Route::get('/view/{node:id}/settings', [Admin\Nodes\NodeViewController::class, 'settings'])->name('admin.nodes.view.settings');
|
||||
Route::get('/view/{node:id}/configuration', [Admin\Nodes\NodeViewController::class, 'configuration'])->name('admin.nodes.view.configuration');
|
||||
Route::get('/view/{node:id}/allocation', [Admin\Nodes\NodeViewController::class, 'allocations'])->name('admin.nodes.view.allocation');
|
||||
Route::get('/view/{node:id}/servers', [Admin\Nodes\NodeViewController::class, 'servers'])->name('admin.nodes.view.servers');
|
||||
Route::get('/view/{node:id}/system-information', Admin\Nodes\SystemInformationController::class);
|
||||
|
||||
Route::post('/new', [Admin\NodesController::class, 'store']);
|
||||
Route::post('/view/{node:id}/allocation', [Admin\NodesController::class, 'createAllocation']);
|
||||
Route::post('/view/{node:id}/allocation/remove', [Admin\NodesController::class, 'allocationRemoveBlock'])->name('admin.nodes.view.allocation.removeBlock');
|
||||
Route::post('/view/{node:id}/allocation/alias', [Admin\NodesController::class, 'allocationSetAlias'])->name('admin.nodes.view.allocation.setAlias');
|
||||
Route::post('/view/{node:id}/settings/token', Admin\NodeAutoDeployController::class)->name('admin.nodes.view.configuration.token');
|
||||
|
||||
Route::patch('/view/{node:id}/settings', [Admin\NodesController::class, 'updateSettings']);
|
||||
|
||||
Route::delete('/view/{node:id}/delete', [Admin\NodesController::class, 'delete'])->name('admin.nodes.view.delete');
|
||||
Route::delete('/view/{node:id}/allocation/remove/{allocation:id}', [Admin\NodesController::class, 'allocationRemoveSingle'])->name('admin.nodes.view.allocation.removeSingle');
|
||||
Route::delete('/view/{node:id}/allocations', [Admin\NodesController::class, 'allocationRemoveMultiple'])->name('admin.nodes.view.allocation.removeMultiple');
|
||||
});
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Mount Controller Routes
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Endpoint: /admin/mounts
|
||||
|
|
||||
*/
|
||||
Route::group(['prefix' => 'mounts'], function () {
|
||||
Route::get('/', [Admin\MountController::class, 'index'])->name('admin.mounts');
|
||||
Route::get('/view/{mount:id}', [Admin\MountController::class, 'view'])->name('admin.mounts.view');
|
||||
|
||||
Route::post('/', [Admin\MountController::class, 'create']);
|
||||
Route::post('/{mount:id}/eggs', [Admin\MountController::class, 'addEggs'])->name('admin.mounts.eggs');
|
||||
Route::post('/{mount:id}/nodes', [Admin\MountController::class, 'addNodes'])->name('admin.mounts.nodes');
|
||||
|
||||
Route::patch('/view/{mount:id}', [Admin\MountController::class, 'update']);
|
||||
|
||||
Route::delete('/{mount:id}/eggs/{egg_id}', [Admin\MountController::class, 'deleteEgg']);
|
||||
Route::delete('/{mount:id}/nodes/{node_id}', [Admin\MountController::class, 'deleteNode']);
|
||||
});
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Nest Controller Routes
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Endpoint: /admin/nests
|
||||
|
|
||||
*/
|
||||
Route::group(['prefix' => 'nests'], function () {
|
||||
Route::get('/', [Admin\Nests\NestController::class, 'index'])->name('admin.nests');
|
||||
Route::get('/new', [Admin\Nests\NestController::class, 'create'])->name('admin.nests.new');
|
||||
Route::get('/view/{nest:id}', [Admin\Nests\NestController::class, 'view'])->name('admin.nests.view');
|
||||
Route::get('/egg/new', [Admin\Nests\EggController::class, 'create'])->name('admin.nests.egg.new');
|
||||
Route::get('/egg/{egg:id}', [Admin\Nests\EggController::class, 'view'])->name('admin.nests.egg.view');
|
||||
Route::get('/egg/{egg:id}/export', [Admin\Nests\EggShareController::class, 'export'])->name('admin.nests.egg.export');
|
||||
Route::get('/egg/{egg:id}/variables', [Admin\Nests\EggVariableController::class, 'view'])->name('admin.nests.egg.variables');
|
||||
Route::get('/egg/{egg:id}/scripts', [Admin\Nests\EggScriptController::class, 'index'])->name('admin.nests.egg.scripts');
|
||||
|
||||
Route::post('/new', [Admin\Nests\NestController::class, 'store']);
|
||||
Route::post('/import', [Admin\Nests\EggShareController::class, 'import'])->name('admin.nests.egg.import');
|
||||
Route::post('/egg/new', [Admin\Nests\EggController::class, 'store']);
|
||||
Route::post('/egg/{egg:id}/variables', [Admin\Nests\EggVariableController::class, 'store']);
|
||||
|
||||
Route::put('/egg/{egg:id}', [Admin\Nests\EggShareController::class, 'update']);
|
||||
|
||||
Route::patch('/view/{nest:id}', [Admin\Nests\NestController::class, 'update']);
|
||||
Route::patch('/egg/{egg:id}', [Admin\Nests\EggController::class, 'update']);
|
||||
Route::patch('/egg/{egg:id}/scripts', [Admin\Nests\EggScriptController::class, 'update']);
|
||||
Route::patch('/egg/{egg:id}/variables/{variable:id}', [Admin\Nests\EggVariableController::class, 'update'])->name('admin.nests.egg.variables.edit');
|
||||
|
||||
Route::delete('/view/{nest:id}', [Admin\Nests\NestController::class, 'destroy']);
|
||||
Route::delete('/egg/{egg:id}', [Admin\Nests\EggController::class, 'destroy']);
|
||||
Route::delete('/egg/{egg:id}/variables/{variable:id}', [Admin\Nests\EggVariableController::class, 'destroy']);
|
||||
});
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Blueprint Extensions
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Endpoint: /admin/extensions
|
||||
|
|
||||
*/
|
||||
Route::group(['prefix' => 'extensions'], function () {
|
||||
Route::get('/', [Admin\ExtensionsController::class, 'index'])->name('admin.extensions');
|
||||
});
|
||||
Route::group(['prefix' => 'extensions/blueprint'], function () {
|
||||
Route::get('/', [Admin\Extensions\Blueprint\BlueprintExtensionController::class, 'index'])->name('admin.extensions.blueprint.index');
|
||||
Route::patch('/', [Admin\Extensions\Blueprint\BlueprintExtensionController::class, 'update']);
|
||||
<?php
|
||||
|
||||
use Illuminate\Support\Facades\Route;
|
||||
use Pterodactyl\Http\Controllers\Admin;
|
||||
use Pterodactyl\Http\Middleware\Admin\Servers\ServerInstalled;
|
||||
|
||||
Route::get('/', [Admin\BaseController::class, 'index'])->name('admin.index');
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Location Controller Routes
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Endpoint: /admin/api
|
||||
|
|
||||
*/
|
||||
Route::group(['prefix' => 'api'], function () {
|
||||
Route::get('/', [Admin\ApiController::class, 'index'])->name('admin.api.index');
|
||||
Route::get('/new', [Admin\ApiController::class, 'create'])->name('admin.api.new');
|
||||
|
||||
Route::post('/new', [Admin\ApiController::class, 'store']);
|
||||
|
||||
Route::delete('/revoke/{identifier}', [Admin\ApiController::class, 'delete'])->name('admin.api.delete');
|
||||
});
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Location Controller Routes
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Endpoint: /admin/locations
|
||||
|
|
||||
*/
|
||||
Route::group(['prefix' => 'locations'], function () {
|
||||
Route::get('/', [Admin\LocationController::class, 'index'])->name('admin.locations');
|
||||
Route::get('/view/{location:id}', [Admin\LocationController::class, 'view'])->name('admin.locations.view');
|
||||
|
||||
Route::post('/', [Admin\LocationController::class, 'create']);
|
||||
Route::patch('/view/{location:id}', [Admin\LocationController::class, 'update']);
|
||||
});
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Database Controller Routes
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Endpoint: /admin/databases
|
||||
|
|
||||
*/
|
||||
Route::group(['prefix' => 'databases'], function () {
|
||||
Route::get('/', [Admin\DatabaseController::class, 'index'])->name('admin.databases');
|
||||
Route::get('/view/{host:id}', [Admin\DatabaseController::class, 'view'])->name('admin.databases.view');
|
||||
|
||||
Route::post('/', [Admin\DatabaseController::class, 'create']);
|
||||
Route::patch('/view/{host:id}', [Admin\DatabaseController::class, 'update']);
|
||||
Route::delete('/view/{host:id}', [Admin\DatabaseController::class, 'delete']);
|
||||
});
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Settings Controller Routes
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Endpoint: /admin/settings
|
||||
|
|
||||
*/
|
||||
Route::group(['prefix' => 'settings'], function () {
|
||||
Route::get('/', [Admin\Settings\IndexController::class, 'index'])->name('admin.settings');
|
||||
Route::get('/mail', [Admin\Settings\MailController::class, 'index'])->name('admin.settings.mail');
|
||||
Route::get('/advanced', [Admin\Settings\AdvancedController::class, 'index'])->name('admin.settings.advanced');
|
||||
|
||||
Route::post('/mail/test', [Admin\Settings\MailController::class, 'test'])->name('admin.settings.mail.test');
|
||||
|
||||
Route::patch('/', [Admin\Settings\IndexController::class, 'update']);
|
||||
Route::patch('/mail', [Admin\Settings\MailController::class, 'update']);
|
||||
Route::patch('/advanced', [Admin\Settings\AdvancedController::class, 'update']);
|
||||
});
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| User Controller Routes
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Endpoint: /admin/users
|
||||
|
|
||||
*/
|
||||
Route::group(['prefix' => 'users'], function () {
|
||||
Route::get('/', [Admin\UserController::class, 'index'])->name('admin.users');
|
||||
Route::get('/accounts.json', [Admin\UserController::class, 'json'])->name('admin.users.json');
|
||||
Route::get('/new', [Admin\UserController::class, 'create'])->name('admin.users.new');
|
||||
Route::get('/view/{user:id}', [Admin\UserController::class, 'view'])->name('admin.users.view');
|
||||
|
||||
Route::post('/new', [Admin\UserController::class, 'store']);
|
||||
|
||||
Route::patch('/view/{user:id}', [Admin\UserController::class, 'update']);
|
||||
Route::delete('/view/{user:id}', [Admin\UserController::class, 'delete']);
|
||||
});
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Server Controller Routes
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Endpoint: /admin/servers
|
||||
|
|
||||
*/
|
||||
Route::group(['prefix' => 'servers'], function () {
|
||||
Route::get('/', [Admin\Servers\ServerController::class, 'index'])->name('admin.servers');
|
||||
Route::get('/new', [Admin\Servers\CreateServerController::class, 'index'])->name('admin.servers.new');
|
||||
Route::get('/view/{server:id}', [Admin\Servers\ServerViewController::class, 'index'])->name('admin.servers.view');
|
||||
|
||||
Route::group(['middleware' => [ServerInstalled::class]], function () {
|
||||
Route::get('/view/{server:id}/details', [Admin\Servers\ServerViewController::class, 'details'])->name('admin.servers.view.details');
|
||||
Route::get('/view/{server:id}/build', [Admin\Servers\ServerViewController::class, 'build'])->name('admin.servers.view.build');
|
||||
Route::get('/view/{server:id}/startup', [Admin\Servers\ServerViewController::class, 'startup'])->name('admin.servers.view.startup');
|
||||
Route::get('/view/{server:id}/database', [Admin\Servers\ServerViewController::class, 'database'])->name('admin.servers.view.database');
|
||||
Route::get('/view/{server:id}/mounts', [Admin\Servers\ServerViewController::class, 'mounts'])->name('admin.servers.view.mounts');
|
||||
});
|
||||
|
||||
Route::get('/view/{server:id}/manage', [Admin\Servers\ServerViewController::class, 'manage'])->name('admin.servers.view.manage');
|
||||
Route::get('/view/{server:id}/delete', [Admin\Servers\ServerViewController::class, 'delete'])->name('admin.servers.view.delete');
|
||||
|
||||
Route::post('/new', [Admin\Servers\CreateServerController::class, 'store']);
|
||||
Route::post('/view/{server:id}/build', [Admin\ServersController::class, 'updateBuild']);
|
||||
Route::post('/view/{server:id}/startup', [Admin\ServersController::class, 'saveStartup']);
|
||||
Route::post('/view/{server:id}/database', [Admin\ServersController::class, 'newDatabase']);
|
||||
Route::post('/view/{server:id}/mounts', [Admin\ServersController::class, 'addMount'])->name('admin.servers.view.mounts.store');
|
||||
Route::post('/view/{server:id}/manage/toggle', [Admin\ServersController::class, 'toggleInstall'])->name('admin.servers.view.manage.toggle');
|
||||
Route::post('/view/{server:id}/manage/suspension', [Admin\ServersController::class, 'manageSuspension'])->name('admin.servers.view.manage.suspension');
|
||||
Route::post('/view/{server:id}/manage/reinstall', [Admin\ServersController::class, 'reinstallServer'])->name('admin.servers.view.manage.reinstall');
|
||||
Route::post('/view/{server:id}/manage/transfer', [Admin\Servers\ServerTransferController::class, 'transfer'])->name('admin.servers.view.manage.transfer');
|
||||
Route::post('/view/{server:id}/delete', [Admin\ServersController::class, 'delete']);
|
||||
|
||||
Route::patch('/view/{server:id}/details', [Admin\ServersController::class, 'setDetails']);
|
||||
Route::patch('/view/{server:id}/database', [Admin\ServersController::class, 'resetDatabasePassword']);
|
||||
|
||||
Route::delete('/view/{server:id}/database/{database:id}/delete', [Admin\ServersController::class, 'deleteDatabase'])->name('admin.servers.view.database.delete');
|
||||
Route::delete('/view/{server:id}/mounts/{mount:id}', [Admin\ServersController::class, 'deleteMount'])
|
||||
->name('admin.servers.view.mounts.delete');
|
||||
});
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Node Controller Routes
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Endpoint: /admin/nodes
|
||||
|
|
||||
*/
|
||||
Route::group(['prefix' => 'nodes'], function () {
|
||||
Route::get('/', [Admin\Nodes\NodeController::class, 'index'])->name('admin.nodes');
|
||||
Route::get('/new', [Admin\NodesController::class, 'create'])->name('admin.nodes.new');
|
||||
Route::get('/view/{node:id}', [Admin\Nodes\NodeViewController::class, 'index'])->name('admin.nodes.view');
|
||||
Route::get('/view/{node:id}/settings', [Admin\Nodes\NodeViewController::class, 'settings'])->name('admin.nodes.view.settings');
|
||||
Route::get('/view/{node:id}/configuration', [Admin\Nodes\NodeViewController::class, 'configuration'])->name('admin.nodes.view.configuration');
|
||||
Route::get('/view/{node:id}/allocation', [Admin\Nodes\NodeViewController::class, 'allocations'])->name('admin.nodes.view.allocation');
|
||||
Route::get('/view/{node:id}/servers', [Admin\Nodes\NodeViewController::class, 'servers'])->name('admin.nodes.view.servers');
|
||||
Route::get('/view/{node:id}/system-information', Admin\Nodes\SystemInformationController::class);
|
||||
|
||||
Route::post('/new', [Admin\NodesController::class, 'store']);
|
||||
Route::post('/view/{node:id}/allocation', [Admin\NodesController::class, 'createAllocation']);
|
||||
Route::post('/view/{node:id}/allocation/remove', [Admin\NodesController::class, 'allocationRemoveBlock'])->name('admin.nodes.view.allocation.removeBlock');
|
||||
Route::post('/view/{node:id}/allocation/alias', [Admin\NodesController::class, 'allocationSetAlias'])->name('admin.nodes.view.allocation.setAlias');
|
||||
Route::post('/view/{node:id}/settings/token', Admin\NodeAutoDeployController::class)->name('admin.nodes.view.configuration.token');
|
||||
|
||||
Route::patch('/view/{node:id}/settings', [Admin\NodesController::class, 'updateSettings']);
|
||||
|
||||
Route::delete('/view/{node:id}/delete', [Admin\NodesController::class, 'delete'])->name('admin.nodes.view.delete');
|
||||
Route::delete('/view/{node:id}/allocation/remove/{allocation:id}', [Admin\NodesController::class, 'allocationRemoveSingle'])->name('admin.nodes.view.allocation.removeSingle');
|
||||
Route::delete('/view/{node:id}/allocations', [Admin\NodesController::class, 'allocationRemoveMultiple'])->name('admin.nodes.view.allocation.removeMultiple');
|
||||
});
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Mount Controller Routes
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Endpoint: /admin/mounts
|
||||
|
|
||||
*/
|
||||
Route::group(['prefix' => 'mounts'], function () {
|
||||
Route::get('/', [Admin\MountController::class, 'index'])->name('admin.mounts');
|
||||
Route::get('/view/{mount:id}', [Admin\MountController::class, 'view'])->name('admin.mounts.view');
|
||||
|
||||
Route::post('/', [Admin\MountController::class, 'create']);
|
||||
Route::post('/{mount:id}/eggs', [Admin\MountController::class, 'addEggs'])->name('admin.mounts.eggs');
|
||||
Route::post('/{mount:id}/nodes', [Admin\MountController::class, 'addNodes'])->name('admin.mounts.nodes');
|
||||
|
||||
Route::patch('/view/{mount:id}', [Admin\MountController::class, 'update']);
|
||||
|
||||
Route::delete('/{mount:id}/eggs/{egg_id}', [Admin\MountController::class, 'deleteEgg']);
|
||||
Route::delete('/{mount:id}/nodes/{node_id}', [Admin\MountController::class, 'deleteNode']);
|
||||
});
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Nest Controller Routes
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Endpoint: /admin/nests
|
||||
|
|
||||
*/
|
||||
Route::group(['prefix' => 'nests'], function () {
|
||||
Route::get('/', [Admin\Nests\NestController::class, 'index'])->name('admin.nests');
|
||||
Route::get('/new', [Admin\Nests\NestController::class, 'create'])->name('admin.nests.new');
|
||||
Route::get('/view/{nest:id}', [Admin\Nests\NestController::class, 'view'])->name('admin.nests.view');
|
||||
Route::get('/egg/new', [Admin\Nests\EggController::class, 'create'])->name('admin.nests.egg.new');
|
||||
Route::get('/egg/{egg:id}', [Admin\Nests\EggController::class, 'view'])->name('admin.nests.egg.view');
|
||||
Route::get('/egg/{egg:id}/export', [Admin\Nests\EggShareController::class, 'export'])->name('admin.nests.egg.export');
|
||||
Route::get('/egg/{egg:id}/variables', [Admin\Nests\EggVariableController::class, 'view'])->name('admin.nests.egg.variables');
|
||||
Route::get('/egg/{egg:id}/scripts', [Admin\Nests\EggScriptController::class, 'index'])->name('admin.nests.egg.scripts');
|
||||
|
||||
Route::post('/new', [Admin\Nests\NestController::class, 'store']);
|
||||
Route::post('/import', [Admin\Nests\EggShareController::class, 'import'])->name('admin.nests.egg.import');
|
||||
Route::post('/egg/new', [Admin\Nests\EggController::class, 'store']);
|
||||
Route::post('/egg/{egg:id}/variables', [Admin\Nests\EggVariableController::class, 'store']);
|
||||
|
||||
Route::put('/egg/{egg:id}', [Admin\Nests\EggShareController::class, 'update']);
|
||||
|
||||
Route::patch('/view/{nest:id}', [Admin\Nests\NestController::class, 'update']);
|
||||
Route::patch('/egg/{egg:id}', [Admin\Nests\EggController::class, 'update']);
|
||||
Route::patch('/egg/{egg:id}/scripts', [Admin\Nests\EggScriptController::class, 'update']);
|
||||
Route::patch('/egg/{egg:id}/variables/{variable:id}', [Admin\Nests\EggVariableController::class, 'update'])->name('admin.nests.egg.variables.edit');
|
||||
|
||||
Route::delete('/view/{nest:id}', [Admin\Nests\NestController::class, 'destroy']);
|
||||
Route::delete('/egg/{egg:id}', [Admin\Nests\EggController::class, 'destroy']);
|
||||
Route::delete('/egg/{egg:id}/variables/{variable:id}', [Admin\Nests\EggVariableController::class, 'destroy']);
|
||||
});
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Blueprint Extensions
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Endpoint: /admin/extensions
|
||||
|
|
||||
*/
|
||||
Route::group(['prefix' => 'extensions'], function () {
|
||||
Route::get('/', [Admin\ExtensionsController::class, 'index'])->name('admin.extensions');
|
||||
});
|
||||
Route::group(['prefix' => 'extensions/blueprint'], function () {
|
||||
Route::get('/', [Admin\Extensions\Blueprint\BlueprintExtensionController::class, 'index'])->name('admin.extensions.blueprint.index');
|
||||
Route::patch('/', [Admin\Extensions\Blueprint\BlueprintExtensionController::class, 'update']);
|
||||
});
|
Loading…
Reference in a new issue