Skip to content

Commit a49dee2

Browse files
committed
Add base implementation of service retrieval. 🏇
There is currently no authentication middleware on this route.
1 parent 51ce4d4 commit a49dee2

File tree

2 files changed

+124
-0
lines changed

2 files changed

+124
-0
lines changed
Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
<?php
2+
/**
3+
* Pterodactyl - Panel
4+
* Copyright (c) 2015 - 2016 Dane Everitt <dane@daneeveritt.com>.
5+
*
6+
* Permission is hereby granted, free of charge, to any person obtaining a copy
7+
* of this software and associated documentation files (the "Software"), to deal
8+
* in the Software without restriction, including without limitation the rights
9+
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10+
* copies of the Software, and to permit persons to whom the Software is
11+
* furnished to do so, subject to the following conditions:
12+
*
13+
* The above copyright notice and this permission notice shall be included in all
14+
* copies or substantial portions of the Software.
15+
*
16+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21+
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22+
* SOFTWARE.
23+
*/
24+
25+
namespace Pterodactyl\Http\Controllers\Daemon;
26+
27+
use Storage;
28+
use Pterodactyl\Models;
29+
use Illuminate\Http\Request;
30+
use Pterodactyl\Http\Controllers\Controller;
31+
32+
class ServiceController extends Controller
33+
{
34+
/**
35+
* Controller Constructor.
36+
*/
37+
public function __construct()
38+
{
39+
//
40+
}
41+
42+
/**
43+
* Returns a listing of all services currently on the system,
44+
* as well as the associated files and the file hashes for
45+
* caching purposes.
46+
*
47+
* @param \Illuminate\Http\Request $request
48+
* @return \Illuminate\Http\Response
49+
*/
50+
public function list(Request $request)
51+
{
52+
$response = [];
53+
foreach (Models\Service::all() as &$service) {
54+
$response[$service->file] = [
55+
'main.json' => sha1_file(storage_path('app/services/' . $service->file . '/main.json')),
56+
'index.js' => sha1_file(storage_path('app/services/' . $service->file . '/index.js')),
57+
];
58+
}
59+
60+
return response()->json($response);
61+
}
62+
63+
/**
64+
* Returns the contents of the requested file for the given service.
65+
*
66+
* @param \Illuminate\Http\Request $request
67+
* @param string $service
68+
* @param string $file
69+
* @return \Illuminate\Http\Response
70+
*/
71+
public function pull(Request $request, $service, $file)
72+
{
73+
if (! Storage::exists('services/' . $service . '/' . $file)) {
74+
return response()->json(['error' => 'No such file.'], 404);
75+
}
76+
77+
return response()->file(storage_path('app/services/' . $service . '/' . $file));
78+
}
79+
80+
}

app/Http/Routes/DaemonRoutes.php

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
<?php
2+
/**
3+
* Pterodactyl - Panel
4+
* Copyright (c) 2015 - 2016 Dane Everitt <dane@daneeveritt.com>
5+
*
6+
* Permission is hereby granted, free of charge, to any person obtaining a copy
7+
* of this software and associated documentation files (the "Software"), to deal
8+
* in the Software without restriction, including without limitation the rights
9+
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10+
* copies of the Software, and to permit persons to whom the Software is
11+
* furnished to do so, subject to the following conditions:
12+
*
13+
* The above copyright notice and this permission notice shall be included in all
14+
* copies or substantial portions of the Software.
15+
*
16+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21+
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22+
* SOFTWARE.
23+
*/
24+
25+
namespace Pterodactyl\Http\Routes;
26+
27+
use Illuminate\Routing\Router;
28+
29+
class DaemonRoutes {
30+
public function map(Router $router)
31+
{
32+
$router->group(['prefix' => 'daemon'], function () use ($router) {
33+
$router->get('services', [
34+
'as' => 'daemon.services',
35+
'uses' => 'Daemon\ServiceController@list',
36+
]);
37+
38+
$router->get('services/pull/{service}/{file}', [
39+
'as' => 'remote.install',
40+
'uses' => 'Daemon\ServiceController@pull',
41+
]);
42+
});
43+
}
44+
}

0 commit comments

Comments
 (0)