Update codebase to L5.4 (#367)
This commit is contained in:
parent
0a95d97d7f
commit
9c303456fb
25 changed files with 593 additions and 583 deletions
|
@ -19,6 +19,7 @@ This project follows [Semantic Versioning](http://semver.org) guidelines.
|
|||
* `[pre.7]` — Sidebar for file manager now is a single link rather than a dropdown.
|
||||
* Attempting to reset a password for an account that does not exist no longer returns an error, rather it displays a success message. Failed resets trigger a `Pterodactyl\Events\Auth\FailedPasswordReset` event that can be caught if needed to perform other actions.
|
||||
* Servers are no longer queued for deletion due to the general hassle and extra logic required.
|
||||
* Updated all panel components to run on Laravel v5.4 rather than 5.3 which is EOL.
|
||||
|
||||
## v0.6.0-pre.7 (Courageous Carniadactylus)
|
||||
### Fixed
|
||||
|
|
|
@ -154,6 +154,19 @@ class UpdateEnvironment extends Command
|
|||
$variables['SESSION_DRIVER'] = $this->option('session-driver');
|
||||
}
|
||||
|
||||
if (is_null($this->option('queue-driver'))) {
|
||||
$this->line('If you chose redis as your cache driver backend, you *must* have a redis server configured already.');
|
||||
$variables['QUEUE_DRIVER'] = $this->choice('Which cache driver backend would you like to use?', [
|
||||
'database' => 'Database (recommended)',
|
||||
'redis' => 'Redis',
|
||||
'sqs' => 'Amazon SQS',
|
||||
'sync' => 'Sync',
|
||||
'null' => 'None',
|
||||
], config('queue.driver', 'database'));
|
||||
} else {
|
||||
$variables['QUEUE_DRIVER'] = $this->option('queue-driver');
|
||||
}
|
||||
|
||||
$bar = $this->output->createProgressBar(count($variables));
|
||||
|
||||
foreach ($variables as $key => $value) {
|
||||
|
|
|
@ -70,6 +70,6 @@ class Handler extends ExceptionHandler
|
|||
return response()->json(['error' => 'Unauthenticated.'], 401);
|
||||
}
|
||||
|
||||
return redirect()->guest('/auth/login');
|
||||
return redirect()->guest(route('auth.login'));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -63,7 +63,7 @@ class LanguageController extends Controller
|
|||
$user->language = $language;
|
||||
$user->save();
|
||||
}
|
||||
Session::set('applocale', $language);
|
||||
Session::put('applocale', $language);
|
||||
}
|
||||
|
||||
return redirect()->back();
|
||||
|
|
|
@ -13,12 +13,9 @@ class Kernel extends HttpKernel
|
|||
*/
|
||||
protected $middleware = [
|
||||
\Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
|
||||
\Pterodactyl\Http\Middleware\EncryptCookies::class,
|
||||
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
|
||||
\Illuminate\Session\Middleware\StartSession::class,
|
||||
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
|
||||
|
||||
\Pterodactyl\Http\Middleware\LanguageMiddleware::class,
|
||||
\Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
|
||||
\Pterodactyl\Http\Middleware\TrimStrings::class,
|
||||
\Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
|
||||
\Fideloper\Proxy\TrustProxies::class,
|
||||
];
|
||||
|
||||
|
@ -35,6 +32,7 @@ class Kernel extends HttpKernel
|
|||
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
|
||||
\Pterodactyl\Http\Middleware\VerifyCsrfToken::class,
|
||||
\Illuminate\Routing\Middleware\SubstituteBindings::class,
|
||||
\Pterodactyl\Http\Middleware\LanguageMiddleware::class,
|
||||
],
|
||||
'api' => [
|
||||
'throttle:60,1',
|
||||
|
|
|
@ -44,7 +44,7 @@ class LanguageMiddleware
|
|||
if (Session::has('applocale')) {
|
||||
App::setLocale(Session::get('applocale'));
|
||||
} elseif (Auth::check() && isset(Auth::user()->language)) {
|
||||
Session::set('applocale', Auth::user()->language);
|
||||
Session::put('applocale', Auth::user()->language);
|
||||
App::setLocale(Auth::user()->language);
|
||||
} else {
|
||||
App::setLocale(Settings::get('default_language', 'en'));
|
||||
|
|
|
@ -18,7 +18,7 @@ class RedirectIfAuthenticated
|
|||
public function handle($request, Closure $next, $guard = null)
|
||||
{
|
||||
if (Auth::guard($guard)->check()) {
|
||||
return redirect('/');
|
||||
return redirect(route('index'));
|
||||
}
|
||||
|
||||
return $next($request);
|
||||
|
|
18
app/Http/Middleware/TrimStrings.php
Normal file
18
app/Http/Middleware/TrimStrings.php
Normal file
|
@ -0,0 +1,18 @@
|
|||
<?php
|
||||
|
||||
namespace Pterodactyl\Http\Middleware;
|
||||
|
||||
use Illuminate\Foundation\Http\Middleware\TrimStrings as BaseTrimmer;
|
||||
|
||||
class TrimStrings extends BaseTrimmer
|
||||
{
|
||||
/**
|
||||
* The names of the attributes that should not be trimmed.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $except = [
|
||||
'password',
|
||||
'password_confirmation',
|
||||
];
|
||||
}
|
|
@ -25,11 +25,8 @@
|
|||
namespace Pterodactyl\Observers;
|
||||
|
||||
use Cache;
|
||||
use Carbon;
|
||||
use Pterodactyl\Events;
|
||||
use Pterodactyl\Models\Server;
|
||||
use Pterodactyl\Jobs\DeleteServer;
|
||||
use Pterodactyl\Jobs\SuspendServer;
|
||||
use Pterodactyl\Notifications\ServerCreated;
|
||||
use Illuminate\Foundation\Bus\DispatchesJobs;
|
||||
|
||||
|
|
|
@ -2,7 +2,6 @@
|
|||
|
||||
namespace Pterodactyl\Providers;
|
||||
|
||||
use Illuminate\Contracts\Auth\Access\Gate as GateContract;
|
||||
use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider;
|
||||
|
||||
class AuthServiceProvider extends ServiceProvider
|
||||
|
@ -22,8 +21,8 @@ class AuthServiceProvider extends ServiceProvider
|
|||
* @param \Illuminate\Contracts\Auth\Access\Gate $gate
|
||||
* @return void
|
||||
*/
|
||||
public function boot(GateContract $gate)
|
||||
public function boot()
|
||||
{
|
||||
parent::registerPolicies($gate);
|
||||
$this->registerPolicies();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -33,7 +33,7 @@ class RouteServiceProvider extends ServiceProvider
|
|||
*/
|
||||
public function map()
|
||||
{
|
||||
Route::group(['namespace' => $this->namespace], function ($router) {
|
||||
Route::group(['namespace' => $this->namespace, 'middleware' => 'web'], function ($router) {
|
||||
foreach (glob(app_path('Http//Routes') . '/*.php') as $file) {
|
||||
$this->app->make('Pterodactyl\\Http\\Routes\\' . basename($file, '.php'))->map($router);
|
||||
}
|
||||
|
|
|
@ -25,7 +25,6 @@
|
|||
namespace Pterodactyl\Repositories;
|
||||
|
||||
use DB;
|
||||
use Log;
|
||||
use Crypt;
|
||||
use Validator;
|
||||
use Pterodactyl\Models;
|
||||
|
|
|
@ -11,34 +11,32 @@
|
|||
}
|
||||
],
|
||||
"require": {
|
||||
"php": ">=5.6.4",
|
||||
"laravel/framework": "5.3.31",
|
||||
"barryvdh/laravel-debugbar": "2.2.3",
|
||||
"doctrine/dbal": "2.5.5",
|
||||
"guzzlehttp/guzzle": "6.2.2",
|
||||
"php": ">=7.0.0",
|
||||
"laravel/framework": "5.4.16",
|
||||
"laravel/tinker": "1.0.0",
|
||||
"barryvdh/laravel-debugbar": "2.3.2",
|
||||
"doctrine/dbal": "2.5.12",
|
||||
"guzzlehttp/guzzle": "6.2.3",
|
||||
"pragmarx/google2fa": "1.0.1",
|
||||
"webpatser/laravel-uuid": "2.0.1",
|
||||
"prologue/alerts": "0.4.0",
|
||||
"prologue/alerts": "0.4.1",
|
||||
"s1lentium/iptools": "1.1.0",
|
||||
"edvinaskrucas/settings": "2.0.0",
|
||||
"igaster/laravel-theme": "1.1.3",
|
||||
"nesbot/carbon": "1.21.0",
|
||||
"mtdowling/cron-expression": "1.1.0",
|
||||
"dingo/api": "1.0.0-beta6",
|
||||
"aws/aws-sdk-php": "3.19.20",
|
||||
"igaster/laravel-theme": "1.14.0",
|
||||
"nesbot/carbon": "1.22.1",
|
||||
"mtdowling/cron-expression": "1.2.0",
|
||||
"dingo/api": "1.0.0-beta8",
|
||||
"aws/aws-sdk-php": "3.25.1",
|
||||
"predis/predis": "1.1.1",
|
||||
"fideloper/proxy": "3.2.0",
|
||||
"fideloper/proxy": "3.3.0",
|
||||
"laracasts/utilities": "2.1.0",
|
||||
"lord/laroute": "2.3.0",
|
||||
"lord/laroute": "2.4.4",
|
||||
"nicolaslopezj/searchable": "1.9.5"
|
||||
},
|
||||
"require-dev": {
|
||||
"fzaninotto/faker": "~1.4",
|
||||
"mockery/mockery": "0.9.*",
|
||||
"phpunit/phpunit": "~5.0",
|
||||
"symfony/css-selector": "3.1.*",
|
||||
"symfony/dom-crawler": "3.1.*",
|
||||
"laravel/homestead": "3.0.*",
|
||||
"phpunit/phpunit": "~5.7",
|
||||
"barryvdh/laravel-ide-helper": "^2.3"
|
||||
},
|
||||
"autoload": {
|
||||
|
@ -50,9 +48,9 @@
|
|||
}
|
||||
},
|
||||
"autoload-dev": {
|
||||
"classmap": [
|
||||
"tests/TestCase.php"
|
||||
]
|
||||
"psr-4": {
|
||||
"Tests\\": "tests/"
|
||||
}
|
||||
},
|
||||
"scripts": {
|
||||
"post-root-package-install": [
|
||||
|
@ -70,14 +68,11 @@
|
|||
"Illuminate\\Foundation\\ComposerScripts::postUpdate",
|
||||
"php artisan optimize",
|
||||
"php artisan config:cache"
|
||||
],
|
||||
"setup": [
|
||||
"composer install --ansi --no-dev",
|
||||
"php -r \"file_exists('.env') || copy('.env.example', '.env');\"",
|
||||
"php artisan key:generate"
|
||||
]
|
||||
},
|
||||
"config": {
|
||||
"preferred-install": "dist"
|
||||
"preferred-install": "dist",
|
||||
"sort-packages": true,
|
||||
"optimize-autoloader": true
|
||||
}
|
||||
}
|
||||
|
|
889
composer.lock
generated
889
composer.lock
generated
File diff suppressed because it is too large
Load diff
|
@ -6,6 +6,17 @@ return [
|
|||
|
||||
'version' => env('APP_VERSION', 'canary'),
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Application Name
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| This value is the name of your application. This value is used when the
|
||||
| framework needs to place the application's name in a notification or
|
||||
| any other location as required by the application or its packages.
|
||||
*/
|
||||
'name' => 'Pterodactyl',
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Application Debug Mode
|
||||
|
@ -99,7 +110,9 @@ return [
|
|||
|
|
||||
*/
|
||||
|
||||
'log' => 'daily',
|
||||
'log' => env('APP_LOG', 'daily'),
|
||||
|
||||
'log_level' => env('APP_LOG_LEVEL', 'debug'),
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
|
@ -141,6 +154,11 @@ return [
|
|||
Illuminate\View\ViewServiceProvider::class,
|
||||
Illuminate\Notifications\NotificationServiceProvider::class,
|
||||
|
||||
/*
|
||||
* Package Service Providers...
|
||||
*/
|
||||
Laravel\Tinker\TinkerServiceProvider::class,
|
||||
|
||||
/*
|
||||
* Application Service Providers...
|
||||
*/
|
||||
|
|
|
@ -69,11 +69,6 @@ return [
|
|||
'driver' => 'eloquent',
|
||||
'model' => Pterodactyl\Models\User::class,
|
||||
],
|
||||
|
||||
// 'users' => [
|
||||
// 'driver' => 'database',
|
||||
// 'table' => 'users',
|
||||
// ],
|
||||
],
|
||||
|
||||
/*
|
||||
|
|
|
@ -11,9 +11,10 @@ return [
|
|||
| framework when an event needs to be broadcast. You may set this to
|
||||
| any of the connections defined in the "connections" array below.
|
||||
|
|
||||
| Supported: "pusher", "redis", "log", "null"
|
||||
|
|
||||
*/
|
||||
|
||||
'default' => env('BROADCAST_DRIVER', 'pusher'),
|
||||
'default' => env('BROADCAST_DRIVER', 'null'),
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
|
@ -44,6 +45,10 @@ return [
|
|||
'driver' => 'log',
|
||||
],
|
||||
|
||||
'null' => [
|
||||
'driver' => 'null',
|
||||
],
|
||||
|
||||
],
|
||||
|
||||
];
|
||||
|
|
|
@ -38,21 +38,28 @@ return [
|
|||
|
||||
'database' => [
|
||||
'driver' => 'database',
|
||||
'table' => 'cache',
|
||||
'table' => 'cache',
|
||||
'connection' => null,
|
||||
],
|
||||
|
||||
'file' => [
|
||||
'driver' => 'file',
|
||||
'path' => storage_path('framework/cache'),
|
||||
'path' => storage_path('framework/cache/data'),
|
||||
],
|
||||
|
||||
'memcached' => [
|
||||
'driver' => 'memcached',
|
||||
'driver' => 'memcached',
|
||||
'persistent_id' => env('MEMCACHED_PERSISTENT_ID'),
|
||||
'sasl' => [
|
||||
env('MEMCACHED_USERNAME'),
|
||||
env('MEMCACHED_PASSWORD'),
|
||||
],
|
||||
'options' => [
|
||||
// Memcached::OPT_CONNECT_TIMEOUT => 2000,
|
||||
],
|
||||
'servers' => [
|
||||
[
|
||||
'host' => env('MEMCACHE_DRIVER_HOST', '127.0.0.1'),
|
||||
'port' => env('MEMCACHE_DRIVER_PORT', 11211),
|
||||
'host' => env('MEMCACHED_HOST', '127.0.0.1'),
|
||||
'port' => env('MEMCACHED_PORT', 11211),
|
||||
'weight' => 100,
|
||||
],
|
||||
],
|
||||
|
|
|
@ -2,19 +2,6 @@
|
|||
|
||||
return [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| PDO Fetch Style
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| By default, database results will be returned as instances of the PHP
|
||||
| stdClass object; however, you may desire to retrieve records in an
|
||||
| array format for simplicity. Here you can tweak the fetch style.
|
||||
|
|
||||
*/
|
||||
|
||||
'fetch' => PDO::FETCH_CLASS,
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Default Database Connection Name
|
||||
|
|
|
@ -39,45 +39,29 @@ return [
|
|||
| may even configure multiple disks of the same driver. Defaults have
|
||||
| been setup for each driver as an example of the required options.
|
||||
|
|
||||
| Supported Drivers: "local", "ftp", "s3", "rackspace"
|
||||
|
|
||||
*/
|
||||
|
||||
'disks' => [
|
||||
|
||||
'local' => [
|
||||
'driver' => 'local',
|
||||
'root' => storage_path('app'),
|
||||
'root' => storage_path('app'),
|
||||
],
|
||||
|
||||
'ftp' => [
|
||||
'driver' => 'ftp',
|
||||
'host' => 'ftp.example.com',
|
||||
'username' => 'your-username',
|
||||
'password' => 'your-password',
|
||||
|
||||
// Optional FTP Settings...
|
||||
// 'port' => 21,
|
||||
// 'root' => '',
|
||||
// 'passive' => true,
|
||||
// 'ssl' => true,
|
||||
// 'timeout' => 30,
|
||||
'public' => [
|
||||
'driver' => 'local',
|
||||
'root' => storage_path('app/public'),
|
||||
'url' => env('APP_URL') . '/storage',
|
||||
'visibility' => 'public',
|
||||
],
|
||||
|
||||
's3' => [
|
||||
'driver' => 's3',
|
||||
'key' => 'your-key',
|
||||
'secret' => 'your-secret',
|
||||
'region' => 'your-region',
|
||||
'bucket' => 'your-bucket',
|
||||
],
|
||||
|
||||
'rackspace' => [
|
||||
'driver' => 'rackspace',
|
||||
'username' => 'your-username',
|
||||
'key' => 'your-key',
|
||||
'container' => 'your-container',
|
||||
'endpoint' => 'https://identity.api.rackspacecloud.com/v2.0/',
|
||||
'region' => 'IAD',
|
||||
'url_type' => 'publicURL',
|
||||
'key' => env('AWS_KEY'),
|
||||
'secret' => env('AWS_SECRET'),
|
||||
'region' => env('AWS_REGION'),
|
||||
'bucket' => env('AWS_BUCKET'),
|
||||
],
|
||||
|
||||
],
|
||||
|
|
|
@ -11,7 +11,8 @@ return [
|
|||
| sending of e-mail. You may specify which one you're using throughout
|
||||
| your application here. By default, Laravel is setup for SMTP mail.
|
||||
|
|
||||
| Supported: "smtp", "mail", "sendmail", "mailgun", "mandrill", "ses", "log"
|
||||
| Supported: "smtp", "sendmail", "mailgun", "mandrill", "ses",
|
||||
| "sparkpost", "log", "array"
|
||||
|
|
||||
*/
|
||||
|
||||
|
@ -124,4 +125,22 @@ return [
|
|||
|
||||
'pretend' => false,
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Markdown Mail Settings
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| If you are using Markdown based email rendering, you may configure your
|
||||
| theme and component paths here, allowing you to customize the design
|
||||
| of the emails. Or, you may simply stick with the Laravel defaults!
|
||||
|
|
||||
*/
|
||||
'markdown' => [
|
||||
'theme' => 'default',
|
||||
|
||||
'paths' => [
|
||||
resource_path('views/vendor/mail'),
|
||||
],
|
||||
],
|
||||
|
||||
];
|
||||
|
|
|
@ -7,12 +7,11 @@ return [
|
|||
| Default Queue Driver
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The Laravel queue API supports a variety of back-ends via an unified
|
||||
| Laravel's queue API supports an assortment of back-ends via a single
|
||||
| API, giving you convenient access to each back-end using the same
|
||||
| syntax for each one. Here you may set the default queue driver.
|
||||
|
|
||||
| Supported: "null", "sync", "database", "beanstalkd",
|
||||
| "sqs", "iron", "redis"
|
||||
| Supported: "sync", "database", "beanstalkd", "sqs", "redis", "null"
|
||||
|
|
||||
*/
|
||||
|
||||
|
@ -39,7 +38,7 @@ return [
|
|||
'driver' => 'database',
|
||||
'table' => 'jobs',
|
||||
'queue' => env('QUEUE_STANDARD', 'standard'),
|
||||
'retry_after' => 60,
|
||||
'retry_after' => 90,
|
||||
],
|
||||
|
||||
'sqs' => [
|
||||
|
@ -55,7 +54,7 @@ return [
|
|||
'driver' => 'redis',
|
||||
'connection' => 'default',
|
||||
'queue' => env('QUEUE_STANDARD', 'standard'),
|
||||
'retry_after' => 60,
|
||||
'retry_after' => 90,
|
||||
],
|
||||
|
||||
],
|
||||
|
@ -72,7 +71,8 @@ return [
|
|||
*/
|
||||
|
||||
'failed' => [
|
||||
'database' => 'mysql', 'table' => 'failed_jobs',
|
||||
'database' => 'mysql',
|
||||
'table' => 'failed_jobs',
|
||||
],
|
||||
|
||||
];
|
||||
|
|
|
@ -29,10 +29,8 @@ return [
|
|||
'region' => 'us-east-1',
|
||||
],
|
||||
|
||||
'stripe' => [
|
||||
'model' => Pterodactyl\Models\User::class,
|
||||
'key' => env('STRIPE_KEY'),
|
||||
'secret' => env('STRIPE_SECRET'),
|
||||
'sparkpost' => [
|
||||
'secret' => env('SPARKPOST_SECRET'),
|
||||
],
|
||||
|
||||
];
|
||||
|
|
|
@ -16,7 +16,7 @@ return [
|
|||
|
|
||||
*/
|
||||
|
||||
'driver' => env('SESSION_DRIVER', 'file'),
|
||||
'driver' => env('SESSION_DRIVER', 'database'),
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
|
@ -85,6 +85,19 @@ return [
|
|||
|
||||
'table' => 'sessions',
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Session Cache Store
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| When using the "apc" or "memcached" session drivers, you may specify a
|
||||
| cache store that should be used for these sessions. This value must
|
||||
| correspond with one of the application's configured cache stores.
|
||||
|
|
||||
*/
|
||||
|
||||
'store' => null,
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Session Sweeping Lottery
|
||||
|
@ -135,7 +148,7 @@ return [
|
|||
|
|
||||
*/
|
||||
|
||||
'domain' => null,
|
||||
'domain' => env('SESSION_DOMAIN', null),
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
|
@ -148,6 +161,19 @@ return [
|
|||
|
|
||||
*/
|
||||
|
||||
'secure' => false,
|
||||
'secure' => env('SESSION_SECURE_COOKIE', false),
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| HTTP Access Only
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Setting this value to true will prevent JavaScript from accessing the
|
||||
| value of the cookie and the cookie will only be accessible through
|
||||
| the HTTP protocol. You are free to modify this option if needed.
|
||||
|
|
||||
*/
|
||||
|
||||
'http_only' => true,
|
||||
|
||||
];
|
||||
|
|
|
@ -14,7 +14,7 @@ return [
|
|||
*/
|
||||
|
||||
'paths' => [
|
||||
realpath(base_path('resources/views')),
|
||||
resource_path('views'),
|
||||
],
|
||||
|
||||
/*
|
||||
|
|
Loading…
Reference in a new issue