diff --git a/app/Console/Commands/InfoCommand.php b/app/Console/Commands/InfoCommand.php new file mode 100644 index 00000000..42f6df2b --- /dev/null +++ b/app/Console/Commands/InfoCommand.php @@ -0,0 +1,123 @@ +. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +namespace Pterodactyl\Console\Commands; + +use Illuminate\Console\Command; +use Pterodactyl\Services\Helpers\SoftwareVersionService; +use Illuminate\Contracts\Config\Repository as ConfigRepository; + +class InfoCommand extends Command +{ + /** + * @var \Illuminate\Contracts\Config\Repository + */ + protected $config; + + /** + * @var string + */ + protected $signature = 'p:info'; + + /** + * @var \Pterodactyl\Services\Helpers\SoftwareVersionService + */ + protected $versionService; + + /** + * VersionCommand constructor. + * + * @param \Illuminate\Contracts\Config\Repository $config + * @param \Pterodactyl\Services\Helpers\SoftwareVersionService $versionService + */ + public function __construct(ConfigRepository $config, SoftwareVersionService $versionService) + { + parent::__construct(); + + $this->config = $config; + $this->versionService = $versionService; + } + + /** + * Handle execution of command. + */ + public function handle() + { + $this->output->title('Version Information'); + $this->table([], [ + ['Panel Version', $this->config->get('app.version')], + ['Latest Version', $this->versionService->getPanel()], + ['Up-to-Date', $this->versionService->isLatestPanel() ? 'Yes' : $this->formatText('No', 'bg=red')], + ['Unique Identifier', $this->config->get('pterodactyl.service.author')], + ], 'compact'); + + $this->output->title('Application Configuration'); + $this->table([], [ + ['Environment', $this->formatText($this->config->get('app.env'), $this->config->get('app.env') === 'production' ?: 'bg=red')], + ['Debug Mode', $this->formatText($this->config->get('app.debug') ? 'Yes' : 'No', ! $this->config->get('app.debug') ?: 'bg=red')], + ['Installation URL', $this->config->get('app.url')], + ['Installation Directory', base_path()], + ['Timezone', $this->config->get('app.timezone')], + ['Cache Driver', $this->config->get('cache.default')], + ['Queue Driver', $this->config->get('queue.default')], + ['Session Driver', $this->config->get('session.driver')], + ['Filesystem Driver', $this->config->get('filesystems.default')], + ['Default Theme', $this->config->get('themes.active')], + ['Proxies', $this->config->get('trustedproxies.proxies')], + ], 'compact'); + + $this->output->title('Database Configuration'); + $driver = $this->config->get('database.default'); + $this->table([], [ + ['Driver', $driver], + ['Host', $this->config->get("database.connections.{$driver}.host")], + ['Port', $this->config->get("database.connections.{$driver}.port")], + ['Database', $this->config->get("database.connections.{$driver}.database")], + ['Usernamne', $this->config->get("database.connections.{$driver}.username")], + ], 'compact'); + + $this->output->title('Email Configuration'); + $this->table([], [ + ['Driver', $this->config->get('mail.driver')], + ['Host', $this->config->get('mail.host')], + ['Port', $this->config->get('mail.port')], + ['Username', $this->config->get('mail.username')], + ['From Address', $this->config->get('mail.from.address')], + ['From Name', $this->config->get('mail.from.name')], + ['Encryption', $this->config->get('mail.encryption')], + ], 'compact'); + } + + /** + * Format output in a Name: Value manner. + * + * @param string $value + * @param string $opts + * @return string + */ + private function formatText($value, $opts = '') + { + return sprintf('<%s>%s', $opts, $value); + } +} diff --git a/app/Console/Commands/MakeUser.php b/app/Console/Commands/MakeUser.php deleted file mode 100644 index 3625e7be..00000000 --- a/app/Console/Commands/MakeUser.php +++ /dev/null @@ -1,95 +0,0 @@ -. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -namespace Pterodactyl\Console\Commands; - -use Illuminate\Console\Command; -use Pterodactyl\Services\Users\UserCreationService; - -class MakeUser extends Command -{ - /** - * The name and signature of the console command. - * - * @var string - */ - protected $signature = 'pterodactyl:user - {--firstname= : First name to use for this account.} - {--lastname= : Last name to use for this account.} - {--username= : Username to use for this account.} - {--email= : Email address to use for this account.} - {--password= : Password to assign to the user.} - {--admin= : Boolean flag for if user should be an admin.}'; - - /** - * The console command description. - * - * @var string - */ - protected $description = 'Create a user within the panel.'; - - /** - * @var \Pterodactyl\Services\Users\UserCreationService - */ - protected $creationService; - - /** - * Create a new command instance. - */ - public function __construct( - UserCreationService $creationService - ) { - parent::__construct(); - $this->creationService = $creationService; - } - - /** - * Execute the console command. - * - * @return mixed - */ - public function handle() - { - $data['name_first'] = is_null($this->option('firstname')) ? $this->ask('First Name') : $this->option('firstname'); - $data['name_last'] = is_null($this->option('lastname')) ? $this->ask('Last Name') : $this->option('lastname'); - $data['username'] = is_null($this->option('username')) ? $this->ask('Username') : $this->option('username'); - $data['email'] = is_null($this->option('email')) ? $this->ask('Email') : $this->option('email'); - $data['password'] = is_null($this->option('password')) ? $this->secret('Password') : $this->option('password'); - $password_confirmation = is_null($this->option('password')) ? $this->secret('Confirm Password') : $this->option('password'); - - if ($data['password'] !== $password_confirmation) { - return $this->error('The passwords provided did not match!'); - } - - $data['root_admin'] = is_null($this->option('admin')) ? $this->confirm('Is this user a root administrator?') : $this->option('admin'); - - try { - $this->creationService->handle($data); - - return $this->info('User successfully created.'); - } catch (\Exception $ex) { - return $this->error($ex->getMessage()); - } - } -} diff --git a/app/Console/Commands/ShowVersion.php b/app/Console/Commands/ShowVersion.php deleted file mode 100644 index a5a91bfa..00000000 --- a/app/Console/Commands/ShowVersion.php +++ /dev/null @@ -1,63 +0,0 @@ -. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -namespace Pterodactyl\Console\Commands; - -use Version; -use Illuminate\Console\Command; - -class ShowVersion extends Command -{ - /** - * The name and signature of the console command. - * - * @var string - */ - protected $signature = 'pterodactyl:version'; - - /** - * The console command description. - * - * @var string - */ - protected $description = 'Display current panel version.'; - - /** - * Create a new command instance. - */ - public function __construct() - { - parent::__construct(); - } - - /** - * Execute the console command. - * - * @return mixed - */ - public function handle() - { - $this->info('You are running Pterodactyl Panel v' . Version::getCurrentPanel() . ' (' . ((Version::isLatestPanel()) ? 'Up to Date' : 'Latest: ' . Version::getDaemon()) . ')'); - } -} diff --git a/app/Console/Kernel.php b/app/Console/Kernel.php index 0a0ddad8..f937d4a3 100644 --- a/app/Console/Kernel.php +++ b/app/Console/Kernel.php @@ -3,6 +3,7 @@ namespace Pterodactyl\Console; use Illuminate\Console\Scheduling\Schedule; +use Pterodactyl\Console\Commands\InfoCommand; use Pterodactyl\Console\Commands\User\MakeUserCommand; use Pterodactyl\Console\Commands\User\DeleteUserCommand; use Illuminate\Foundation\Console\Kernel as ConsoleKernel; @@ -21,6 +22,7 @@ class Kernel extends ConsoleKernel DeleteLocationCommand::class, DeleteUserCommand::class, DisableTwoFactorCommand::class, + InfoCommand::class, MakeLocationCommand::class, MakeUserCommand::class, // \Pterodactyl\Console\Commands\MakeUser::class,