Skip to content

Commit 2160613

Browse files
committed
Add EULA acceptance popup when starting server
1 parent 4b40fa6 commit 2160613

File tree

7 files changed

+80
-10
lines changed

7 files changed

+80
-10
lines changed

app/Http/Controllers/Server/ServerController.php

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,15 @@ public function __construct()
2929
//
3030
}
3131

32+
public function getJavascript(Request $request, $uuid, $file)
33+
{
34+
$server = Server::getByUUID($uuid);
35+
return response()->view('server.js.' . $server->a_serviceFile . '.' . basename($file, '.js'), [
36+
'server' => $server,
37+
'node' => Node::find($server->node)
38+
])->header('Content-Type', 'application/javascript');
39+
}
40+
3241
/**
3342
* Renders server index page for specified server.
3443
*

app/Http/Routes/ServerRoutes.php

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,16 @@ public function map(Router $router) {
4141
'uses' => 'Server\ServerController@getAddFile'
4242
]);
4343

44+
$router->post('files/directory-list', [
45+
'as' => 'server.files.directory-list',
46+
'uses' => 'Server\AjaxController@postDirectoryList'
47+
]);
48+
49+
$router->post('files/save', [
50+
'as' => 'server.files.save',
51+
'uses' => 'Server\AjaxController@postSaveFile'
52+
]);
53+
4454
// Assorted AJAX Routes
4555
$router->group(['prefix' => 'ajax'], function ($server) use ($router) {
4656
// Returns Server Status
@@ -52,15 +62,16 @@ public function map(Router $router) {
5262
$router->post('set-connection', [
5363
'uses' => 'Server\AjaxController@postSetConnection'
5464
]);
65+
});
5566

56-
// Assorted File Manager URLs
57-
$router->post('files/directory-list', [
58-
'uses' => 'Server\AjaxController@postDirectoryList'
59-
]);
67+
// Assorted AJAX Routes
68+
$router->group(['prefix' => 'js'], function ($server) use ($router) {
69+
// Returns Server Status
70+
$router->get('{file}', [
71+
'as' => 'server.js',
72+
'uses' => 'Server\ServerController@getJavascript'
73+
])->where('file', '.*');
6074

61-
$router->post('files/save', [
62-
'uses' => 'Server\AjaxController@postSaveFile'
63-
]);
6475
});
6576
});
6677
}

app/Models/Server.php

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,14 +112,19 @@ public static function getByUUID($uuid)
112112
return self::$serverUUIDInstance[$uuid];
113113
}
114114

115-
$query = self::where('uuidShort', $uuid)->where('active', 1);
115+
$query = self::select('servers.*', 'services.file as a_serviceFile')
116+
->join('services', 'services.id', '=', 'servers.id')
117+
->where('uuidShort', $uuid)->where('active', 1);
116118

117119
if (self::$user->root_admin !== 1) {
118120
$query->whereIn('servers.id', Subuser::accessServers());
119121
}
120122

121123
$result = $query->first();
122124

125+
// @TODO: saving after calling this could end up resetting the daemon secret.
126+
// We probably need to just allow access to self::getUserDaemonSecret() to
127+
// get this result.
123128
if(!is_null($result)) {
124129
$result->daemonSecret = self::getUserDaemonSecret($result);
125130
}

resources/views/server/files/edit.blade.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@
6969
$('#save_file').append(' <i class="fa fa-spinner fa fa-spin"></i>').addClass('disabled');
7070
$.ajax({
7171
type: 'POST',
72-
url: '/server/{{ $server->uuidShort }}/ajax/files/save',
72+
url: '{{ route('server.files.save', $server->uuidShort) }}',
7373
headers: { 'X-CSRF-Token': '{{ csrf_token() }}' },
7474
data: {
7575
file: fileName,

resources/views/server/files/index.blade.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ function loadDirectoryContents (dir) {
114114
115115
$.ajax({
116116
type: 'POST',
117-
url: '/server/{{ $server->uuidShort }}/ajax/files/directory-list',
117+
url: '{{ route('server.files.directory-list', $server->uuidShort) }}',
118118
headers: { 'X-CSRF-Token': '{{ csrf_token() }}' },
119119
data: { directory: urlDirectory }
120120
}).done(function (data) {

resources/views/server/index.blade.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,9 @@
112112
</div>
113113
</div>
114114
</div>
115+
@if($server->a_serviceFile === 'minecraft')
116+
<script src="{{ route('server.js', [$server->uuidShort, 'minecraft/eula.js']) }}"></script>
117+
@endif
115118
<script>
116119
$(window).load(function () {
117120
$('[data-toggle="tooltip"]').tooltip();
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
$(window).load(function () {
2+
socket.on('console', function (data) {
3+
if (data.line.indexOf('You need to agree to the EULA in order to run the server') > -1) {
4+
swal({
5+
title: 'EULA Acceptance',
6+
text: 'By pressing \'I Accept\' below you are indicating your agreement to the <a href="https://account.mojang.com/documents/minecraft_eula" target="_blank">Mojang EULA</a>.',
7+
type: 'info',
8+
html: true,
9+
showCancelButton: true,
10+
showConfirmButton: true,
11+
cancelButtonText: 'I do not Accept',
12+
confirmButtonText: 'I Accept',
13+
closeOnConfirm: false,
14+
showLoaderOnConfirm: true
15+
}, function () {
16+
$.ajax({
17+
type: 'POST',
18+
url: '{{ route('server.files.save', $server->uuidShort) }}',
19+
headers: { 'X-CSRF-Token': '{{ csrf_token() }}' },
20+
data: {
21+
file: 'eula.txt',
22+
contents: 'eula=true'
23+
}
24+
}).done(function (data) {
25+
$('[data-attr="power"][data-action="start"]').trigger('click');
26+
swal({
27+
type: 'success',
28+
title: '',
29+
text: 'The EULA for this server has been accepted, restarting server now.',
30+
});
31+
}).fail(function (jqXHR) {
32+
console.error(jqXHR);
33+
swal({
34+
title: 'Whoops!',
35+
text: 'An error occured while attempting to set the EULA as accepted: ' . jqXHR.responseJSON.error,
36+
type: 'error'
37+
})
38+
});
39+
});
40+
}
41+
});
42+
});

0 commit comments

Comments
 (0)