Skip to content

Commit 5a03ce7

Browse files
committed
Add support for controlling server power from API.
1 parent 745c735 commit 5a03ce7

File tree

3 files changed

+38
-4
lines changed

3 files changed

+38
-4
lines changed

app/Http/Controllers/API/User/PowerController.php renamed to app/Http/Controllers/API/User/ServerController.php

Lines changed: 27 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,14 +26,37 @@
2626
use Pterodactyl\Models;
2727
use Illuminate\Http\Request;
2828

29-
class PowerController extends BaseController
29+
use Pterodactyl\Http\Controllers\API\BaseController;
30+
31+
class ServerController extends BaseController
3032
{
31-
public function __constructor()
33+
34+
public function info(Request $request, $uuid)
3235
{
36+
// Will return server info including latest query and stats from daemon.
3337
}
3438

35-
public function pass(Request $request, $uuid)
39+
public function power(Request $request, $uuid)
3640
{
37-
//$server = Models\Server::where('id', $id)->where();
41+
$server = Models\Server::getByUUID($uuid);
42+
$node = Models\Node::getByID($server->node);
43+
$client = Models\Node::guzzleRequest($server->node);
44+
45+
$res = $client->request('PUT', '/server/power', [
46+
'headers' => [
47+
'X-Access-Server' => $server->uuid,
48+
'X-Access-Token' => $server->daemonSecret
49+
],
50+
'exceptions' => false,
51+
'json' => [
52+
'action' => $request->input('action')
53+
]
54+
]);
55+
56+
if ($res->getStatusCode() !== 204) {
57+
return $this->response->error(json_decode($res->getBody())->error, $res->getStatusCode());
58+
}
59+
60+
return $this->response->noContent();
3861
}
3962
}

app/Http/Middleware/VerifyCsrfToken.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,5 +13,6 @@ class VerifyCsrfToken extends BaseVerifier
1313
*/
1414
protected $except = [
1515
'remote/*',
16+
'api/*'
1617
];
1718
}

app/Http/Routes/APIRoutes.php

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,16 @@ public function map(Router $router) {
3737
'as' => 'api.user',
3838
'uses' => 'Pterodactyl\Http\Controllers\API\User\InfoController@me'
3939
]);
40+
41+
$api->get('/server/{uuid}', [
42+
'as' => 'api.user.server',
43+
'uses' => 'Pterodactyl\Http\Controllers\API\User\ServerController@info'
44+
]);
45+
46+
$api->put('/server/{uuid}', [
47+
'as' => 'api.user.server.power',
48+
'uses' => 'Pterodactyl\Http\Controllers\API\User\ServerController@power'
49+
]);
4050
});
4151

4252
$api->version('v1', ['prefix' => 'api', 'middleware' => 'api.auth'], function ($api) {

0 commit comments

Comments
 (0)