2929use Alert ;
3030use Log ;
3131
32- use Pterodactyl \Models \Server ;
33- use Pterodactyl \Models \Node ;
34- use Pterodactyl \Models \Download ;
35- use Pterodactyl \Models \Allocation ;
36-
32+ use Pterodactyl \Models ;
3733use Pterodactyl \Exceptions \DisplayException ;
3834use Pterodactyl \Exceptions \DisplayValidationException ;
3935use Pterodactyl \Repositories \Daemon \FileRepository ;
@@ -57,10 +53,10 @@ public function __construct()
5753
5854 public function getJavascript (Request $ request , $ uuid , $ file )
5955 {
60- $ server = Server::getByUUID ($ uuid );
56+ $ server = Models \ Server::getByUUID ($ uuid );
6157 return response ()->view ('server.js. ' . $ server ->a_serviceFile . '. ' . basename ($ file , '.js ' ), [
6258 'server ' => $ server ,
63- 'node ' => Node::find ($ server ->node )
59+ 'node ' => Models \ Node::find ($ server ->node )
6460 ])->header ('Content-Type ' , 'application/javascript ' );
6561 }
6662
@@ -72,11 +68,11 @@ public function getJavascript(Request $request, $uuid, $file)
7268 */
7369 public function getIndex (Request $ request )
7470 {
75- $ server = Server::getByUUID ($ request ->route ()->server );
71+ $ server = Models \ Server::getByUUID ($ request ->route ()->server );
7672 return view ('server.index ' , [
7773 'server ' => $ server ,
78- 'allocations ' => Allocation::where ('assigned_to ' , $ server ->id )->orderBy ('ip ' , 'asc ' )->orderBy ('port ' , 'asc ' )->get (),
79- 'node ' => Node::find ($ server ->node )
74+ 'allocations ' => Models \ Allocation::where ('assigned_to ' , $ server ->id )->orderBy ('ip ' , 'asc ' )->orderBy ('port ' , 'asc ' )->get (),
75+ 'node ' => Models \ Node::find ($ server ->node )
8076 ]);
8177 }
8278
@@ -89,12 +85,12 @@ public function getIndex(Request $request)
8985 public function getFiles (Request $ request )
9086 {
9187
92- $ server = Server::getByUUID ($ request ->route ()->server );
88+ $ server = Models \ Server::getByUUID ($ request ->route ()->server );
9389 $ this ->authorize ('list-files ' , $ server );
9490
9591 return view ('server.files.index ' , [
9692 'server ' => $ server ,
97- 'node ' => Node::find ($ server ->node )
93+ 'node ' => Models \ Node::find ($ server ->node )
9894 ]);
9995 }
10096
@@ -107,12 +103,12 @@ public function getFiles(Request $request)
107103 public function getAddFile (Request $ request )
108104 {
109105
110- $ server = Server::getByUUID ($ request ->route ()->server );
106+ $ server = Models \ Server::getByUUID ($ request ->route ()->server );
111107 $ this ->authorize ('add-files ' , $ server );
112108
113109 return view ('server.files.add ' , [
114110 'server ' => $ server ,
115- 'node ' => Node::find ($ server ->node ),
111+ 'node ' => Models \ Node::find ($ server ->node ),
116112 'directory ' => (in_array ($ request ->get ('dir ' ), [null , '/ ' , '' ])) ? '' : trim ($ request ->get ('dir ' ), '/ ' ) . '/ '
117113 ]);
118114 }
@@ -128,7 +124,7 @@ public function getAddFile(Request $request)
128124 public function getEditFile (Request $ request , $ uuid , $ file )
129125 {
130126
131- $ server = Server::getByUUID ($ uuid );
127+ $ server = Models \ Server::getByUUID ($ uuid );
132128 $ this ->authorize ('edit-files ' , $ server );
133129
134130 $ fileInfo = (object ) pathinfo ($ file );
@@ -152,7 +148,7 @@ public function getEditFile(Request $request, $uuid, $file)
152148
153149 return view ('server.files.edit ' , [
154150 'server ' => $ server ,
155- 'node ' => Node::find ($ server ->node ),
151+ 'node ' => Models \ Node::find ($ server ->node ),
156152 'file ' => $ file ,
157153 'contents ' => $ fileContent ->content ,
158154 'directory ' => (in_array ($ fileInfo ->dirname , ['. ' , './ ' , '/ ' ])) ? '/ ' : trim ($ fileInfo ->dirname , '/ ' ) . '/ ' ,
@@ -172,8 +168,8 @@ public function getEditFile(Request $request, $uuid, $file)
172168 public function getDownloadFile (Request $ request , $ uuid , $ file )
173169 {
174170
175- $ server = Server::getByUUID ($ uuid );
176- $ node = Node::find ($ server ->node );
171+ $ server = Models \ Server::getByUUID ($ uuid );
172+ $ node = Models \ Node::find ($ server ->node );
177173
178174 $ this ->authorize ('download-files ' , $ server );
179175
@@ -197,16 +193,38 @@ public function getDownloadFile(Request $request, $uuid, $file)
197193 */
198194 public function getSettings (Request $ request , $ uuid )
199195 {
200- $ server = Server::getByUUID ($ uuid );
196+ $ server = Models \Server::getByUUID ($ uuid );
197+ $ variables = Models \ServiceVariables::select ('service_variables.* ' , 'server_variables.variable_value as a_serverValue ' )
198+ ->join ('server_variables ' , 'server_variables.variable_id ' , '= ' , 'service_variables.id ' )
199+ ->where ('service_variables.option_id ' , $ server ->option )
200+ ->where ('server_variables.server_id ' , $ server ->id )
201+ ->get ();
202+ $ service = Models \Service::findOrFail ($ server ->service );
203+
204+ $ serverVariables = [
205+ '{{SERVER_MEMORY}} ' => $ server ->memory ,
206+ '{{SERVER_IP}} ' => $ server ->ip ,
207+ '{{SERVER_PORT}} ' => $ server ->port ,
208+ ];
209+
210+ $ processed = str_replace (array_keys ($ serverVariables ), array_values ($ serverVariables ), $ server ->startup );
211+ foreach ($ variables as &$ variable ) {
212+ $ replace = ($ variable ->user_viewable === 1 ) ? $ variable ->a_serverValue : '** ' ;
213+ $ processed = str_replace ('{{ ' . $ variable ->env_variable . '}} ' , $ replace , $ processed );
214+ }
215+
201216 return view ('server.settings ' , [
202217 'server ' => $ server ,
203- 'node ' => Node::find ($ server ->node )
218+ 'node ' => Models \Node::find ($ server ->node ),
219+ 'variables ' => $ variables ,
220+ 'service ' => $ service ,
221+ 'processedStartup ' => $ processed ,
204222 ]);
205223 }
206224
207225 public function postSettingsSFTP (Request $ request , $ uuid )
208226 {
209- $ server = Server::getByUUID ($ uuid );
227+ $ server = Models \ Server::getByUUID ($ uuid );
210228 $ this ->authorize ('reset-sftp ' , $ server );
211229
212230 try {
@@ -224,4 +242,28 @@ public function postSettingsSFTP(Request $request, $uuid)
224242 return redirect ()->route ('server.settings ' , $ uuid );
225243 }
226244
245+ public function postSettingsStartup (Request $ request , $ uuid )
246+ {
247+ $ server = Models \Server::getByUUID ($ uuid );
248+ $ this ->authorize ('edit-startup ' , $ server );
249+
250+ try {
251+ $ repo = new ServerRepository ;
252+ $ repo ->updateStartup ($ server ->id , $ request ->except ([
253+ '_token '
254+ ]));
255+ Alert::success ('Server startup variables were successfully updated. ' )->flash ();
256+ } catch (DisplayException $ ex ) {
257+ Alert::danger ($ ex ->getMessage ())->flash ();
258+ } catch (\Exception $ ex ) {
259+ Log::error ($ ex );
260+ Alert::danger ('An unhandled exception occured while attemping to update startup variables for this server. Please try again. ' )->flash ();
261+ } finally {
262+ return redirect ()->route ('server.settings ' , [
263+ 'uuid ' => $ uuid ,
264+ 'tab ' => 'tab_startup '
265+ ])->withInput ();
266+ }
267+ }
268+
227269}
0 commit comments