forked from Alex/Pterodactyl-Panel
Cleanup mount code; automatically include the mount in the configuration
This commit is contained in:
parent
8c6c271916
commit
9a21584c42
@ -4,9 +4,8 @@ namespace Pterodactyl\Contracts\Repository;
|
|||||||
|
|
||||||
use Pterodactyl\Models\Pack;
|
use Pterodactyl\Models\Pack;
|
||||||
use Illuminate\Contracts\Pagination\LengthAwarePaginator;
|
use Illuminate\Contracts\Pagination\LengthAwarePaginator;
|
||||||
use Pterodactyl\Contracts\Repository\Attributes\SearchableInterface;
|
|
||||||
|
|
||||||
interface PackRepositoryInterface extends RepositoryInterface, SearchableInterface
|
interface PackRepositoryInterface extends RepositoryInterface
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* Return a pack with the associated server models attached to it.
|
* Return a pack with the associated server models attached to it.
|
||||||
|
@ -12,6 +12,7 @@ namespace Pterodactyl\Http\Controllers\Admin;
|
|||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use Pterodactyl\Models\Pack;
|
use Pterodactyl\Models\Pack;
|
||||||
use Prologue\Alerts\AlertsMessageBag;
|
use Prologue\Alerts\AlertsMessageBag;
|
||||||
|
use Spatie\QueryBuilder\QueryBuilder;
|
||||||
use Pterodactyl\Http\Controllers\Controller;
|
use Pterodactyl\Http\Controllers\Controller;
|
||||||
use Pterodactyl\Services\Packs\ExportPackService;
|
use Pterodactyl\Services\Packs\ExportPackService;
|
||||||
use Pterodactyl\Services\Packs\PackUpdateService;
|
use Pterodactyl\Services\Packs\PackUpdateService;
|
||||||
@ -114,7 +115,7 @@ class PackController extends Controller
|
|||||||
public function index(Request $request)
|
public function index(Request $request)
|
||||||
{
|
{
|
||||||
return view('admin.packs.index', [
|
return view('admin.packs.index', [
|
||||||
'packs' => $this->repository->setSearchTerm($request->input('query'))->paginateWithEggAndServerCount(),
|
'packs' => $this->repository->paginateWithEggAndServerCount(),
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
23
app/Models/MountNode.php
Normal file
23
app/Models/MountNode.php
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Pterodactyl\Models;
|
||||||
|
|
||||||
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
|
||||||
|
class MountNode extends Model
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
protected $table = 'mount_node';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var null
|
||||||
|
*/
|
||||||
|
protected $primaryKey = null;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var bool
|
||||||
|
*/
|
||||||
|
public $incrementing = false;
|
||||||
|
}
|
23
app/Models/MountServer.php
Normal file
23
app/Models/MountServer.php
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Pterodactyl\Models;
|
||||||
|
|
||||||
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
|
||||||
|
class MountServer extends Model
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
protected $table = 'mount_server';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var null
|
||||||
|
*/
|
||||||
|
protected $primaryKey = null;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var bool
|
||||||
|
*/
|
||||||
|
public $incrementing = false;
|
||||||
|
}
|
@ -33,6 +33,7 @@ use Illuminate\Contracts\Encryption\Encrypter;
|
|||||||
* @property \Carbon\Carbon $updated_at
|
* @property \Carbon\Carbon $updated_at
|
||||||
*
|
*
|
||||||
* @property \Pterodactyl\Models\Location $location
|
* @property \Pterodactyl\Models\Location $location
|
||||||
|
* @property \Pterodactyl\Models\Mount[]|\Illuminate\Database\Eloquent\Collection $mounts
|
||||||
* @property \Pterodactyl\Models\Server[]|\Illuminate\Database\Eloquent\Collection $servers
|
* @property \Pterodactyl\Models\Server[]|\Illuminate\Database\Eloquent\Collection $servers
|
||||||
* @property \Pterodactyl\Models\Allocation[]|\Illuminate\Database\Eloquent\Collection $allocations
|
* @property \Pterodactyl\Models\Allocation[]|\Illuminate\Database\Eloquent\Collection $allocations
|
||||||
*/
|
*/
|
||||||
@ -182,6 +183,7 @@ class Node extends Model
|
|||||||
'bind_port' => $this->daemonSFTP,
|
'bind_port' => $this->daemonSFTP,
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
|
'allowed_mounts' => $this->mounts->pluck('source')->toArray(),
|
||||||
'remote' => route('index'),
|
'remote' => route('index'),
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
@ -219,6 +221,14 @@ class Node extends Model
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return \Illuminate\Database\Eloquent\Relations\HasManyThrough
|
||||||
|
*/
|
||||||
|
public function mounts()
|
||||||
|
{
|
||||||
|
return $this->hasManyThrough(Mount::class, MountNode::class, 'node_id', 'id', 'id', 'mount_id');
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the location associated with a node.
|
* Gets the location associated with a node.
|
||||||
*
|
*
|
||||||
|
@ -367,10 +367,10 @@ class Server extends Model
|
|||||||
/**
|
/**
|
||||||
* Returns all mounts that have this server has mounted.
|
* Returns all mounts that have this server has mounted.
|
||||||
*
|
*
|
||||||
* @return \Illuminate\Database\Eloquent\Relations\BelongsToMany
|
* @return \Illuminate\Database\Eloquent\Relations\HasManyThrough
|
||||||
*/
|
*/
|
||||||
public function mounts()
|
public function mounts()
|
||||||
{
|
{
|
||||||
return $this->belongsToMany(Mount::class);
|
return $this->hasManyThrough(Mount::class, MountServer::class, 'server_id', 'id', 'id', 'mount_id');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -47,7 +47,6 @@ class PackRepository extends EloquentRepository implements PackRepositoryInterfa
|
|||||||
public function paginateWithEggAndServerCount(): LengthAwarePaginator
|
public function paginateWithEggAndServerCount(): LengthAwarePaginator
|
||||||
{
|
{
|
||||||
return $this->getBuilder()->with('egg')->withCount('servers')
|
return $this->getBuilder()->with('egg')->withCount('servers')
|
||||||
->search($this->getSearchTerm())
|
|
||||||
->paginate(50, $this->getColumns());
|
->paginate(50, $this->getColumns());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -9,6 +9,7 @@
|
|||||||
|
|
||||||
namespace Pterodactyl\Services\Servers;
|
namespace Pterodactyl\Services\Servers;
|
||||||
|
|
||||||
|
use Pterodactyl\Models\Mount;
|
||||||
use Pterodactyl\Models\Server;
|
use Pterodactyl\Models\Server;
|
||||||
use Pterodactyl\Contracts\Repository\ServerRepositoryInterface;
|
use Pterodactyl\Contracts\Repository\ServerRepositoryInterface;
|
||||||
|
|
||||||
@ -66,22 +67,9 @@ class ServerConfigurationStructureService
|
|||||||
*
|
*
|
||||||
* @param \Pterodactyl\Models\Server $server
|
* @param \Pterodactyl\Models\Server $server
|
||||||
* @return array
|
* @return array
|
||||||
*
|
|
||||||
* @throws \Pterodactyl\Exceptions\Repository\RecordNotFoundException
|
|
||||||
*/
|
*/
|
||||||
protected function returnCurrentFormat(Server $server)
|
protected function returnCurrentFormat(Server $server)
|
||||||
{
|
{
|
||||||
$mounts = $server->mounts;
|
|
||||||
foreach ($mounts as $mount) {
|
|
||||||
unset($mount->id);
|
|
||||||
unset($mount->uuid);
|
|
||||||
unset($mount->name);
|
|
||||||
unset($mount->description);
|
|
||||||
$mount->read_only = $mount->read_only == 1;
|
|
||||||
unset($mount->user_mountable);
|
|
||||||
unset($mount->pivot);
|
|
||||||
}
|
|
||||||
|
|
||||||
return [
|
return [
|
||||||
'uuid' => $server->uuid,
|
'uuid' => $server->uuid,
|
||||||
'suspended' => (bool) $server->suspended,
|
'suspended' => (bool) $server->suspended,
|
||||||
@ -108,7 +96,13 @@ class ServerConfigurationStructureService
|
|||||||
],
|
],
|
||||||
'mappings' => $server->getAllocationMappings(),
|
'mappings' => $server->getAllocationMappings(),
|
||||||
],
|
],
|
||||||
'mounts' => $mounts,
|
'mounts' => $server->mounts->map(function (Mount $mount) {
|
||||||
|
return [
|
||||||
|
'source' => $mount->source,
|
||||||
|
'target' => $mount->target,
|
||||||
|
'read_only' => $mount->read_only,
|
||||||
|
];
|
||||||
|
}),
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user