Un-butcher task system.
This commit is contained in:
parent
0fe9a4566e
commit
7f1a97184b
12 changed files with 154 additions and 77 deletions
|
@ -24,7 +24,8 @@
|
|||
|
||||
namespace Pterodactyl\Repositories\Daemon;
|
||||
|
||||
use Pterodactyl\Models;
|
||||
use Pterodactyl\Models\User;
|
||||
use Pterodactyl\Models\Server;
|
||||
use GuzzleHttp\Exception\ConnectException;
|
||||
use Pterodactyl\Exceptions\DisplayException;
|
||||
|
||||
|
@ -37,15 +38,24 @@ class CommandRepository
|
|||
*/
|
||||
protected $server;
|
||||
|
||||
/**
|
||||
* The Eloquent Model associated with the user to run the request as.
|
||||
*
|
||||
* @var \Pterodactyl\Models\User|null
|
||||
*/
|
||||
protected $user;
|
||||
|
||||
/**
|
||||
* Constuctor for repository.
|
||||
*
|
||||
* @param int|\Pterodactyl\Models\Server $server
|
||||
* @param \Pterodactyl\Models\Server $server
|
||||
* @param \Pterodactyl\Models\User|null $user
|
||||
* @return void
|
||||
*/
|
||||
public function __construct($server)
|
||||
public function __construct(Server $server, User $user = null)
|
||||
{
|
||||
$this->server = ($server instanceof Models\Server) ? $server : Models\Server::findOrFail($server);
|
||||
$this->server = $server;
|
||||
$this->user = $user;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -62,7 +72,7 @@ class CommandRepository
|
|||
// We don't use the user's specific daemon secret here since we
|
||||
// are assuming that a call to this function has been validated.
|
||||
try {
|
||||
$response = $this->server->guzzleClient()->request('PUT', '/server/command', [
|
||||
$response = $this->server->guzzleClient($this->user)->request('POST', '/server/command', [
|
||||
'http_errors' => false,
|
||||
'json' => [
|
||||
'command' => $command,
|
||||
|
|
|
@ -24,7 +24,8 @@
|
|||
|
||||
namespace Pterodactyl\Repositories\Daemon;
|
||||
|
||||
use Pterodactyl\Models;
|
||||
use Pterodactyl\Models\User;
|
||||
use Pterodactyl\Models\Server;
|
||||
use GuzzleHttp\Exception\ConnectException;
|
||||
use Pterodactyl\Exceptions\DisplayException;
|
||||
|
||||
|
@ -37,21 +38,30 @@ class PowerRepository
|
|||
*/
|
||||
protected $server;
|
||||
|
||||
/**
|
||||
* The Eloquent Model associated with the user to run the request as.
|
||||
*
|
||||
* @var \Pterodactyl\Models\User|null
|
||||
*/
|
||||
protected $user;
|
||||
|
||||
/**
|
||||
* Constuctor for repository.
|
||||
*
|
||||
* @param int|\Pterodactyl\Models\Server $server
|
||||
* @param \Pterodactyl\Models\Server $server
|
||||
* @param \Pterodactyl\Models\User|null $user
|
||||
* @return void
|
||||
*/
|
||||
public function __construct($server)
|
||||
public function __construct(Server $server, User $user = null)
|
||||
{
|
||||
$this->server = ($server instanceof Models\Server) ? $server : Models\Server::findOrFail($server);
|
||||
$this->server = $server;
|
||||
$this->user = $user;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sends a power option to the daemon.
|
||||
*
|
||||
* @param string $action
|
||||
* @param string $action
|
||||
* @return string
|
||||
*
|
||||
* @throws \GuzzleHttp\Exception\RequestException
|
||||
|
@ -59,10 +69,8 @@ class PowerRepository
|
|||
*/
|
||||
public function do($action)
|
||||
{
|
||||
// We don't use the user's specific daemon secret here since we
|
||||
// are assuming that a call to this function has been validated.
|
||||
try {
|
||||
$response = $this->server->guzzleClient()->request('PUT', '/server/power', [
|
||||
$response = $this->server->guzzleClient($this->user)->request('PUT', '/server/power', [
|
||||
'http_errors' => false,
|
||||
'json' => [
|
||||
'action' => $action,
|
||||
|
|
|
@ -24,9 +24,12 @@
|
|||
|
||||
namespace Pterodactyl\Repositories;
|
||||
|
||||
use DB;
|
||||
use Cron;
|
||||
use Validator;
|
||||
use Pterodactyl\Models;
|
||||
use Pterodactyl\Models\Task;
|
||||
use Pterodactyl\Models\User;
|
||||
use Pterodactyl\Models\Server;
|
||||
use Pterodactyl\Exceptions\DisplayException;
|
||||
use Pterodactyl\Exceptions\DisplayValidationException;
|
||||
|
||||
|
@ -64,49 +67,42 @@ class TaskRepository
|
|||
*/
|
||||
public function delete($id)
|
||||
{
|
||||
$task = Models\Task::findOrFail($id);
|
||||
try {
|
||||
$task->delete();
|
||||
|
||||
return true;
|
||||
} catch (\Exception $ex) {
|
||||
throw $ex;
|
||||
}
|
||||
$task = Task::findOrFail($id);
|
||||
$task->delete();
|
||||
}
|
||||
|
||||
/**
|
||||
* Toggles a task active or inactive.
|
||||
*
|
||||
* @param int $id
|
||||
* @return int
|
||||
* @return bool
|
||||
*/
|
||||
public function toggle($id)
|
||||
{
|
||||
$task = Models\Task::findOrFail($id);
|
||||
try {
|
||||
$task->active = ($task->active === 1) ? 0 : 1;
|
||||
$task->queued = 0;
|
||||
$task->save();
|
||||
$task = Task::findOrFail($id);
|
||||
|
||||
return $task->active;
|
||||
} catch (\Exception $ex) {
|
||||
throw $ex;
|
||||
}
|
||||
$task->active = ! $task->active;
|
||||
$task->queued = false;
|
||||
$task->save();
|
||||
|
||||
return $task->active;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a new scheduled task for a given server.
|
||||
*
|
||||
* @param int $id
|
||||
* @param int $server
|
||||
* @param int $user
|
||||
* @param array $data
|
||||
* @return bool
|
||||
* @return \Pterodactyl\Models\Task
|
||||
*
|
||||
* @throws \Pterodactyl\Exceptions\DisplayException
|
||||
* @throws \Pterodactyl\Exceptions\DisplayValidationException
|
||||
*/
|
||||
public function create($id, $data)
|
||||
public function create($server, $user, $data)
|
||||
{
|
||||
$server = Models\Server::findOrFail($id);
|
||||
$server = Server::findOrFail($server);
|
||||
$user = User::findOrFail($user);
|
||||
|
||||
$validator = Validator::make($data, [
|
||||
'action' => 'string|required',
|
||||
|
@ -148,9 +144,9 @@ class TaskRepository
|
|||
throw $ex;
|
||||
}
|
||||
|
||||
$task = new Models\Task;
|
||||
$task->fill([
|
||||
'server' => $server->id,
|
||||
return Task::create([
|
||||
'user_id' => $user->id,
|
||||
'server_id' => $server->id,
|
||||
'active' => 1,
|
||||
'action' => $data['action'],
|
||||
'data' => $data['data'],
|
||||
|
@ -164,7 +160,5 @@ class TaskRepository
|
|||
'last_run' => null,
|
||||
'next_run' => $buildCron->getNextRunDate(),
|
||||
]);
|
||||
|
||||
return $task->save();
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue